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>
This commit is contained in:
@@ -133,7 +133,8 @@ acpi_ds_create_buffer_field(union acpi_parse_object *op,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We could put the returned object (Node) on the object stack for later,
|
/*
|
||||||
|
* We could put the returned object (Node) on the object stack for later,
|
||||||
* but for now, we will put it in the "op" object that the parser uses,
|
* but for now, we will put it in the "op" object that the parser uses,
|
||||||
* so we can get it again at the end of this scope
|
* so we can get it again at the end of this scope
|
||||||
*/
|
*/
|
||||||
@@ -514,8 +515,33 @@ acpi_ds_create_bank_field(union acpi_parse_object *op,
|
|||||||
|
|
||||||
/* Third arg is the bank_value */
|
/* Third arg is the bank_value */
|
||||||
|
|
||||||
|
/* TBD: This arg is a term_arg, not a constant, and must be evaluated */
|
||||||
|
|
||||||
arg = arg->common.next;
|
arg = arg->common.next;
|
||||||
info.bank_value = (u32) arg->common.value.integer;
|
|
||||||
|
/* Currently, only the following constants are supported */
|
||||||
|
|
||||||
|
switch (arg->common.aml_opcode) {
|
||||||
|
case AML_ZERO_OP:
|
||||||
|
info.bank_value = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AML_ONE_OP:
|
||||||
|
info.bank_value = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AML_BYTE_OP:
|
||||||
|
case AML_WORD_OP:
|
||||||
|
case AML_DWORD_OP:
|
||||||
|
case AML_QWORD_OP:
|
||||||
|
info.bank_value = (u32) arg->common.value.integer;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
info.bank_value = 0;
|
||||||
|
ACPI_ERROR((AE_INFO,
|
||||||
|
"Non-constant BankValue for BankField is not implemented"));
|
||||||
|
}
|
||||||
|
|
||||||
/* Fourth arg is the field flags */
|
/* Fourth arg is the field flags */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user