diff options
Diffstat (limited to 'drivers/acpi/acpica/exprep.c')
-rw-r--r-- | drivers/acpi/acpica/exprep.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/drivers/acpi/acpica/exprep.c b/drivers/acpi/acpica/exprep.c index cc95e200040..30157f5a12d 100644 --- a/drivers/acpi/acpica/exprep.c +++ b/drivers/acpi/acpica/exprep.c | |||
@@ -6,7 +6,7 @@ | |||
6 | *****************************************************************************/ | 6 | *****************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2011, Intel Corp. | 9 | * Copyright (C) 2000 - 2012, Intel Corp. |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
@@ -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 == |