aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2015-07-01 02:44:44 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-07-01 17:17:55 -0400
commitfde175e385fc28c31a50be2608113689449a4b75 (patch)
treef4ad3465040dc706b2460e55473919e2bc960e08
parentdc00203b6c6fb1b0ce99f37118d9a3e7a6807d7b (diff)
ACPICA: Cleanup output for the ASL Debug object
ACPICA commit d4a53a396fe5d384425251b0257f8d125bbed617 Especially for use of the Index operator. For buffers and strings, only output the actual byte pointed to by the index. For packages, only print the package element decoded by the index. Link: https://github.com/acpica/acpica/commit/d4a53a39 Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/acpi/acpica/acobject.h1
-rw-r--r--drivers/acpi/acpica/exdebug.c42
-rw-r--r--drivers/acpi/acpica/exdump.c9
-rw-r--r--drivers/acpi/acpica/exoparg2.c4
4 files changed, 50 insertions, 6 deletions
diff --git a/drivers/acpi/acpica/acobject.h b/drivers/acpi/acpica/acobject.h
index 3e9720e1f34f..c81d98d09cac 100644
--- a/drivers/acpi/acpica/acobject.h
+++ b/drivers/acpi/acpica/acobject.h
@@ -335,6 +335,7 @@ struct acpi_object_reference {
335 void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */ 335 void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */
336 struct acpi_namespace_node *node; /* ref_of or Namepath */ 336 struct acpi_namespace_node *node; /* ref_of or Namepath */
337 union acpi_operand_object **where; /* Target of Index */ 337 union acpi_operand_object **where; /* Target of Index */
338 u8 *index_pointer; /* Used for Buffers and Strings */
338 u32 value; /* Used for Local/Arg/Index/ddb_handle */ 339 u32 value; /* Used for Local/Arg/Index/ddb_handle */
339}; 340};
340 341
diff --git a/drivers/acpi/acpica/exdebug.c b/drivers/acpi/acpica/exdebug.c
index e67d0aca3fe6..815442bbd051 100644
--- a/drivers/acpi/acpica/exdebug.c
+++ b/drivers/acpi/acpica/exdebug.c
@@ -76,6 +76,8 @@ acpi_ex_do_debug_object(union acpi_operand_object *source_desc,
76{ 76{
77 u32 i; 77 u32 i;
78 u32 timer; 78 u32 timer;
79 union acpi_operand_object *object_desc;
80 u32 value;
79 81
80 ACPI_FUNCTION_TRACE_PTR(ex_do_debug_object, source_desc); 82 ACPI_FUNCTION_TRACE_PTR(ex_do_debug_object, source_desc);
81 83
@@ -254,8 +256,44 @@ acpi_ex_do_debug_object(union acpi_operand_object *source_desc,
254 object)->object, 256 object)->object,
255 level + 4, 0); 257 level + 4, 0);
256 } else { 258 } else {
257 acpi_ex_do_debug_object(source_desc->reference. 259 object_desc = source_desc->reference.object;
258 object, level + 4, 0); 260 value = source_desc->reference.value;
261
262 switch (object_desc->common.type) {
263 case ACPI_TYPE_BUFFER:
264
265 acpi_os_printf("Buffer[%u] = 0x%2.2X\n",
266 value,
267 *source_desc->reference.
268 index_pointer);
269 break;
270
271 case ACPI_TYPE_STRING:
272
273 acpi_os_printf
274 ("String[%u] = \"%c\" (0x%2.2X)\n",
275 value,
276 *source_desc->reference.
277 index_pointer,
278 *source_desc->reference.
279 index_pointer);
280 break;
281
282 case ACPI_TYPE_PACKAGE:
283
284 acpi_os_printf("Package[%u] = ", value);
285 acpi_ex_do_debug_object(*source_desc->
286 reference.where,
287 level + 4, 0);
288 break;
289
290 default:
291
292 acpi_os_printf
293 ("Unknown Reference object type %X\n",
294 object_desc->common.type);
295 break;
296 }
259 } 297 }
260 } 298 }
261 break; 299 break;
diff --git a/drivers/acpi/acpica/exdump.c b/drivers/acpi/acpica/exdump.c
index 1da52bef632e..401e7edcd419 100644
--- a/drivers/acpi/acpica/exdump.c
+++ b/drivers/acpi/acpica/exdump.c
@@ -224,7 +224,7 @@ static struct acpi_exdump_info acpi_ex_dump_index_field[5] = {
224 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(index_field.data_obj), "Data Object"} 224 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(index_field.data_obj), "Data Object"}
225}; 225};
226 226
227static struct acpi_exdump_info acpi_ex_dump_reference[8] = { 227static struct acpi_exdump_info acpi_ex_dump_reference[9] = {
228 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_reference), NULL}, 228 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_reference), NULL},
229 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(reference.class), "Class"}, 229 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(reference.class), "Class"},
230 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(reference.target_type), "Target Type"}, 230 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(reference.target_type), "Target Type"},
@@ -232,6 +232,8 @@ static struct acpi_exdump_info acpi_ex_dump_reference[8] = {
232 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(reference.object), "Object Desc"}, 232 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(reference.object), "Object Desc"},
233 {ACPI_EXD_NODE, ACPI_EXD_OFFSET(reference.node), "Node"}, 233 {ACPI_EXD_NODE, ACPI_EXD_OFFSET(reference.node), "Node"},
234 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(reference.where), "Where"}, 234 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(reference.where), "Where"},
235 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(reference.index_pointer),
236 "Index Pointer"},
235 {ACPI_EXD_REFERENCE, 0, NULL} 237 {ACPI_EXD_REFERENCE, 0, NULL}
236}; 238};
237 239
@@ -1005,14 +1007,13 @@ static void acpi_ex_dump_reference_obj(union acpi_operand_object *obj_desc)
1005 } else if (obj_desc->reference.object) { 1007 } else if (obj_desc->reference.object) {
1006 if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) == 1008 if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) ==
1007 ACPI_DESC_TYPE_OPERAND) { 1009 ACPI_DESC_TYPE_OPERAND) {
1008 acpi_os_printf(" Target: %p", 1010 acpi_os_printf("%22s %p", "Target :",
1009 obj_desc->reference.object); 1011 obj_desc->reference.object);
1010 if (obj_desc->reference.class == ACPI_REFCLASS_TABLE) { 1012 if (obj_desc->reference.class == ACPI_REFCLASS_TABLE) {
1011 acpi_os_printf(" Table Index: %X\n", 1013 acpi_os_printf(" Table Index: %X\n",
1012 obj_desc->reference.value); 1014 obj_desc->reference.value);
1013 } else { 1015 } else {
1014 acpi_os_printf(" Target: %p [%s]\n", 1016 acpi_os_printf(" [%s]\n",
1015 obj_desc->reference.object,
1016 acpi_ut_get_type_name(((union 1017 acpi_ut_get_type_name(((union
1017 acpi_operand_object 1018 acpi_operand_object
1018 *) 1019 *)
diff --git a/drivers/acpi/acpica/exoparg2.c b/drivers/acpi/acpica/exoparg2.c
index fcc618aa2061..6fac5e0a698a 100644
--- a/drivers/acpi/acpica/exoparg2.c
+++ b/drivers/acpi/acpica/exoparg2.c
@@ -380,6 +380,8 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
380 380
381 return_desc->reference.target_type = 381 return_desc->reference.target_type =
382 ACPI_TYPE_BUFFER_FIELD; 382 ACPI_TYPE_BUFFER_FIELD;
383 return_desc->reference.index_pointer =
384 &(operand[0]->buffer.pointer[index]);
383 break; 385 break;
384 386
385 case ACPI_TYPE_BUFFER: 387 case ACPI_TYPE_BUFFER:
@@ -391,6 +393,8 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
391 393
392 return_desc->reference.target_type = 394 return_desc->reference.target_type =
393 ACPI_TYPE_BUFFER_FIELD; 395 ACPI_TYPE_BUFFER_FIELD;
396 return_desc->reference.index_pointer =
397 &(operand[0]->buffer.pointer[index]);
394 break; 398 break;
395 399
396 case ACPI_TYPE_PACKAGE: 400 case ACPI_TYPE_PACKAGE: