diff options
Diffstat (limited to 'drivers/acpi/dispatcher/dswload.c')
-rw-r--r-- | drivers/acpi/dispatcher/dswload.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/drivers/acpi/dispatcher/dswload.c b/drivers/acpi/dispatcher/dswload.c index 8ab9d1b29a4c..ec68c1df3932 100644 --- a/drivers/acpi/dispatcher/dswload.c +++ b/drivers/acpi/dispatcher/dswload.c | |||
@@ -443,6 +443,15 @@ acpi_status acpi_ds_load1_end_op(struct acpi_walk_state *walk_state) | |||
443 | if (ACPI_FAILURE(status)) { | 443 | if (ACPI_FAILURE(status)) { |
444 | return_ACPI_STATUS(status); | 444 | return_ACPI_STATUS(status); |
445 | } | 445 | } |
446 | } else if (op->common.aml_opcode == AML_DATA_REGION_OP) { | ||
447 | status = | ||
448 | acpi_ex_create_region(op->named.data, | ||
449 | op->named.length, | ||
450 | REGION_DATA_TABLE, | ||
451 | walk_state); | ||
452 | if (ACPI_FAILURE(status)) { | ||
453 | return_ACPI_STATUS(status); | ||
454 | } | ||
446 | } | 455 | } |
447 | } | 456 | } |
448 | #endif | 457 | #endif |
@@ -823,6 +832,7 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) | |||
823 | struct acpi_namespace_node *new_node; | 832 | struct acpi_namespace_node *new_node; |
824 | #ifndef ACPI_NO_METHOD_EXECUTION | 833 | #ifndef ACPI_NO_METHOD_EXECUTION |
825 | u32 i; | 834 | u32 i; |
835 | u8 region_space; | ||
826 | #endif | 836 | #endif |
827 | 837 | ||
828 | ACPI_FUNCTION_TRACE(ds_load2_end_op); | 838 | ACPI_FUNCTION_TRACE(ds_load2_end_op); |
@@ -1003,11 +1013,6 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) | |||
1003 | status = acpi_ex_create_event(walk_state); | 1013 | status = acpi_ex_create_event(walk_state); |
1004 | break; | 1014 | break; |
1005 | 1015 | ||
1006 | case AML_DATA_REGION_OP: | ||
1007 | |||
1008 | status = acpi_ex_create_table_region(walk_state); | ||
1009 | break; | ||
1010 | |||
1011 | case AML_ALIAS_OP: | 1016 | case AML_ALIAS_OP: |
1012 | 1017 | ||
1013 | status = acpi_ex_create_alias(walk_state); | 1018 | status = acpi_ex_create_alias(walk_state); |
@@ -1035,6 +1040,15 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) | |||
1035 | switch (op->common.aml_opcode) { | 1040 | switch (op->common.aml_opcode) { |
1036 | #ifndef ACPI_NO_METHOD_EXECUTION | 1041 | #ifndef ACPI_NO_METHOD_EXECUTION |
1037 | case AML_REGION_OP: | 1042 | case AML_REGION_OP: |
1043 | case AML_DATA_REGION_OP: | ||
1044 | |||
1045 | if (op->common.aml_opcode == AML_REGION_OP) { | ||
1046 | region_space = (acpi_adr_space_type) | ||
1047 | ((op->common.value.arg)->common.value. | ||
1048 | integer); | ||
1049 | } else { | ||
1050 | region_space = REGION_DATA_TABLE; | ||
1051 | } | ||
1038 | 1052 | ||
1039 | /* | 1053 | /* |
1040 | * If we are executing a method, initialize the region | 1054 | * If we are executing a method, initialize the region |
@@ -1043,10 +1057,7 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) | |||
1043 | status = | 1057 | status = |
1044 | acpi_ex_create_region(op->named.data, | 1058 | acpi_ex_create_region(op->named.data, |
1045 | op->named.length, | 1059 | op->named.length, |
1046 | (acpi_adr_space_type) | 1060 | region_space, |
1047 | ((op->common.value. | ||
1048 | arg)->common.value. | ||
1049 | integer), | ||
1050 | walk_state); | 1061 | walk_state); |
1051 | if (ACPI_FAILURE(status)) { | 1062 | if (ACPI_FAILURE(status)) { |
1052 | return (status); | 1063 | return (status); |