diff options
Diffstat (limited to 'drivers/acpi/dispatcher/dsfield.c')
-rw-r--r-- | drivers/acpi/dispatcher/dsfield.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/drivers/acpi/dispatcher/dsfield.c b/drivers/acpi/dispatcher/dsfield.c index a6d77efb41a0..f049639bac35 100644 --- a/drivers/acpi/dispatcher/dsfield.c +++ b/drivers/acpi/dispatcher/dsfield.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2006, R. Byron Moore | 8 | * Copyright (C) 2000 - 2007, R. Byron Moore |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -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 | ||