diff options
author | Bob Moore <robert.moore@intel.com> | 2007-02-02 11:48:18 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2007-02-02 21:14:21 -0500 |
commit | 9c52657a2ac8aac5149e11049497b10918e1f58f (patch) | |
tree | 32f4720bf911efad34cbc4b72c1374f62cf8813f /drivers/acpi/dispatcher/dsfield.c | |
parent | 6b366e2fe1b68bd9af55caf166eaaf0609ba18a9 (diff) |
ACPICA: Temporary fix for BankValue parameter
Temporary fix for BankValue parameter of a Bank
Field to support all constant values, including Zero
and One. Must eventually be converted to a full TermArg
evaluation.
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/dispatcher/dsfield.c')
-rw-r--r-- | drivers/acpi/dispatcher/dsfield.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/drivers/acpi/dispatcher/dsfield.c b/drivers/acpi/dispatcher/dsfield.c index a6d77efb41a0..379dd71f55eb 100644 --- a/drivers/acpi/dispatcher/dsfield.c +++ b/drivers/acpi/dispatcher/dsfield.c | |||
@@ -133,7 +133,8 @@ acpi_ds_create_buffer_field(union acpi_parse_object *op, | |||
133 | } | 133 | } |
134 | } | 134 | } |
135 | 135 | ||
136 | /* We could put the returned object (Node) on the object stack for later, | 136 | /* |
137 | * We could put the returned object (Node) on the object stack for later, | ||
137 | * but for now, we will put it in the "op" object that the parser uses, | 138 | * but for now, we will put it in the "op" object that the parser uses, |
138 | * so we can get it again at the end of this scope | 139 | * so we can get it again at the end of this scope |
139 | */ | 140 | */ |
@@ -514,8 +515,33 @@ acpi_ds_create_bank_field(union acpi_parse_object *op, | |||
514 | 515 | ||
515 | /* Third arg is the bank_value */ | 516 | /* Third arg is the bank_value */ |
516 | 517 | ||
518 | /* TBD: This arg is a term_arg, not a constant, and must be evaluated */ | ||
519 | |||
517 | arg = arg->common.next; | 520 | arg = arg->common.next; |
518 | info.bank_value = (u32) arg->common.value.integer; | 521 | |
522 | /* Currently, only the following constants are supported */ | ||
523 | |||
524 | switch (arg->common.aml_opcode) { | ||
525 | case AML_ZERO_OP: | ||
526 | info.bank_value = 0; | ||
527 | break; | ||
528 | |||
529 | case AML_ONE_OP: | ||
530 | info.bank_value = 1; | ||
531 | break; | ||
532 | |||
533 | case AML_BYTE_OP: | ||
534 | case AML_WORD_OP: | ||
535 | case AML_DWORD_OP: | ||
536 | case AML_QWORD_OP: | ||
537 | info.bank_value = (u32) arg->common.value.integer; | ||
538 | break; | ||
539 | |||
540 | default: | ||
541 | info.bank_value = 0; | ||
542 | ACPI_ERROR((AE_INFO, | ||
543 | "Non-constant BankValue for BankField is not implemented")); | ||
544 | } | ||
519 | 545 | ||
520 | /* Fourth arg is the field flags */ | 546 | /* Fourth arg is the field flags */ |
521 | 547 | ||