diff options
Diffstat (limited to 'include/acpi/acobject.h')
-rw-r--r-- | include/acpi/acobject.h | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/include/acpi/acobject.h b/include/acpi/acobject.h index e9657dac69b7..eb6f038b03d9 100644 --- a/include/acpi/acobject.h +++ b/include/acpi/acobject.h | |||
@@ -308,18 +308,34 @@ struct acpi_object_addr_handler { | |||
308 | *****************************************************************************/ | 308 | *****************************************************************************/ |
309 | 309 | ||
310 | /* | 310 | /* |
311 | * The Reference object type is used for these opcodes: | 311 | * The Reference object is used for these opcodes: |
312 | * Arg[0-6], Local[0-7], index_op, name_op, zero_op, one_op, ones_op, debug_op | 312 | * Arg[0-6], Local[0-7], index_op, name_op, ref_of_op, load_op, load_table_op, debug_op |
313 | * The Reference.Class differentiates these types. | ||
313 | */ | 314 | */ |
314 | struct acpi_object_reference { | 315 | struct acpi_object_reference { |
315 | ACPI_OBJECT_COMMON_HEADER u8 target_type; /* Used for index_op */ | 316 | ACPI_OBJECT_COMMON_HEADER u8 class; /* Reference Class */ |
316 | u16 opcode; | 317 | u8 target_type; /* Used for Index Op */ |
318 | u8 reserved; | ||
317 | void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */ | 319 | void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */ |
318 | struct acpi_namespace_node *node; | 320 | struct acpi_namespace_node *node; /* ref_of or Namepath */ |
319 | union acpi_operand_object **where; | 321 | union acpi_operand_object **where; /* Target of Index */ |
320 | u32 offset; /* Used for arg_op, local_op, and index_op */ | 322 | u32 value; /* Used for Local/Arg/Index/ddb_handle */ |
321 | }; | 323 | }; |
322 | 324 | ||
325 | /* Values for Reference.Class above */ | ||
326 | |||
327 | typedef enum { | ||
328 | ACPI_REFCLASS_LOCAL = 0, /* Method local */ | ||
329 | ACPI_REFCLASS_ARG = 1, /* Method argument */ | ||
330 | ACPI_REFCLASS_REFOF = 2, /* Result of ref_of() TBD: Split to Ref/Node and Ref/operand_obj? */ | ||
331 | ACPI_REFCLASS_INDEX = 3, /* Result of Index() */ | ||
332 | ACPI_REFCLASS_TABLE = 4, /* ddb_handle - Load(), load_table() */ | ||
333 | ACPI_REFCLASS_NAME = 5, /* Reference to a named object */ | ||
334 | ACPI_REFCLASS_DEBUG = 6, /* Debug object */ | ||
335 | |||
336 | ACPI_REFCLASS_MAX = 6 | ||
337 | } ACPI_REFERENCE_CLASSES; | ||
338 | |||
323 | /* | 339 | /* |
324 | * Extra object is used as additional storage for types that | 340 | * Extra object is used as additional storage for types that |
325 | * have AML code in their declarations (term_args) that must be | 341 | * have AML code in their declarations (term_args) that must be |
@@ -379,6 +395,13 @@ union acpi_operand_object { | |||
379 | struct acpi_object_extra extra; | 395 | struct acpi_object_extra extra; |
380 | struct acpi_object_data data; | 396 | struct acpi_object_data data; |
381 | struct acpi_object_cache_list cache; | 397 | struct acpi_object_cache_list cache; |
398 | |||
399 | /* | ||
400 | * Add namespace node to union in order to simplify code that accepts both | ||
401 | * ACPI_OPERAND_OBJECTs and ACPI_NAMESPACE_NODEs. The structures share | ||
402 | * a common descriptor_type field in order to differentiate them. | ||
403 | */ | ||
404 | struct acpi_namespace_node node; | ||
382 | }; | 405 | }; |
383 | 406 | ||
384 | /****************************************************************************** | 407 | /****************************************************************************** |