diff options
author | Bob Moore <robert.moore@intel.com> | 2011-11-16 00:39:07 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2012-01-17 03:36:29 -0500 |
commit | 9ce81784c9c0396a6a6be05248928a71134fe60b (patch) | |
tree | cccb8fc3a3514276ed0b1801f7bb26ba2319d62d /drivers/acpi/acpica/exprep.c | |
parent | ffef68273b6278e98a99dd4051671d4854b20fe0 (diff) |
ACPI 5.0: Implement Connection() and AccessAs() changes
Support within the interpreter and operation region dispatch.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/exprep.c')
-rw-r--r-- | drivers/acpi/acpica/exprep.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/exprep.c b/drivers/acpi/acpica/exprep.c index cc95e2000406..18b75fed626e 100644 --- a/drivers/acpi/acpica/exprep.c +++ b/drivers/acpi/acpica/exprep.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include "acinterp.h" | 47 | #include "acinterp.h" |
48 | #include "amlcode.h" | 48 | #include "amlcode.h" |
49 | #include "acnamesp.h" | 49 | #include "acnamesp.h" |
50 | #include "acdispat.h" | ||
50 | 51 | ||
51 | #define _COMPONENT ACPI_EXECUTER | 52 | #define _COMPONENT ACPI_EXECUTER |
52 | ACPI_MODULE_NAME("exprep") | 53 | ACPI_MODULE_NAME("exprep") |
@@ -455,6 +456,30 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info) | |||
455 | obj_desc->field.region_obj = | 456 | obj_desc->field.region_obj = |
456 | acpi_ns_get_attached_object(info->region_node); | 457 | acpi_ns_get_attached_object(info->region_node); |
457 | 458 | ||
459 | /* Fields specific to generic_serial_bus fields */ | ||
460 | |||
461 | obj_desc->field.access_length = info->access_length; | ||
462 | |||
463 | if (info->connection_node) { | ||
464 | second_desc = info->connection_node->object; | ||
465 | if (!(second_desc->common.flags & AOPOBJ_DATA_VALID)) { | ||
466 | status = | ||
467 | acpi_ds_get_buffer_arguments(second_desc); | ||
468 | if (ACPI_FAILURE(status)) { | ||
469 | acpi_ut_delete_object_desc(obj_desc); | ||
470 | return_ACPI_STATUS(status); | ||
471 | } | ||
472 | } | ||
473 | |||
474 | obj_desc->field.resource_buffer = | ||
475 | second_desc->buffer.pointer; | ||
476 | obj_desc->field.resource_length = | ||
477 | (u16)second_desc->buffer.length; | ||
478 | } else if (info->resource_buffer) { | ||
479 | obj_desc->field.resource_buffer = info->resource_buffer; | ||
480 | obj_desc->field.resource_length = info->resource_length; | ||
481 | } | ||
482 | |||
458 | /* Allow full data read from EC address space */ | 483 | /* Allow full data read from EC address space */ |
459 | 484 | ||
460 | if ((obj_desc->field.region_obj->region.space_id == | 485 | if ((obj_desc->field.region_obj->region.space_id == |