diff options
Diffstat (limited to 'drivers/acpi/dispatcher/dswload.c')
-rw-r--r-- | drivers/acpi/dispatcher/dswload.c | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/drivers/acpi/dispatcher/dswload.c b/drivers/acpi/dispatcher/dswload.c index 8ab9d1b29a4c..dff7a3e445a8 100644 --- a/drivers/acpi/dispatcher/dswload.c +++ b/drivers/acpi/dispatcher/dswload.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
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 |
@@ -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 |
@@ -767,6 +776,12 @@ acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state, | |||
767 | acpi_ns_lookup(walk_state->scope_info, buffer_ptr, | 776 | acpi_ns_lookup(walk_state->scope_info, buffer_ptr, |
768 | object_type, ACPI_IMODE_LOAD_PASS2, flags, | 777 | object_type, ACPI_IMODE_LOAD_PASS2, flags, |
769 | walk_state, &node); | 778 | walk_state, &node); |
779 | |||
780 | if (ACPI_SUCCESS(status) && (flags & ACPI_NS_TEMPORARY)) { | ||
781 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, | ||
782 | "***New Node [%4.4s] %p is temporary\n", | ||
783 | acpi_ut_get_node_name(node), node)); | ||
784 | } | ||
770 | break; | 785 | break; |
771 | } | 786 | } |
772 | 787 | ||
@@ -823,6 +838,7 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) | |||
823 | struct acpi_namespace_node *new_node; | 838 | struct acpi_namespace_node *new_node; |
824 | #ifndef ACPI_NO_METHOD_EXECUTION | 839 | #ifndef ACPI_NO_METHOD_EXECUTION |
825 | u32 i; | 840 | u32 i; |
841 | u8 region_space; | ||
826 | #endif | 842 | #endif |
827 | 843 | ||
828 | ACPI_FUNCTION_TRACE(ds_load2_end_op); | 844 | ACPI_FUNCTION_TRACE(ds_load2_end_op); |
@@ -1003,11 +1019,6 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) | |||
1003 | status = acpi_ex_create_event(walk_state); | 1019 | status = acpi_ex_create_event(walk_state); |
1004 | break; | 1020 | break; |
1005 | 1021 | ||
1006 | case AML_DATA_REGION_OP: | ||
1007 | |||
1008 | status = acpi_ex_create_table_region(walk_state); | ||
1009 | break; | ||
1010 | |||
1011 | case AML_ALIAS_OP: | 1022 | case AML_ALIAS_OP: |
1012 | 1023 | ||
1013 | status = acpi_ex_create_alias(walk_state); | 1024 | status = acpi_ex_create_alias(walk_state); |
@@ -1035,6 +1046,15 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) | |||
1035 | switch (op->common.aml_opcode) { | 1046 | switch (op->common.aml_opcode) { |
1036 | #ifndef ACPI_NO_METHOD_EXECUTION | 1047 | #ifndef ACPI_NO_METHOD_EXECUTION |
1037 | case AML_REGION_OP: | 1048 | case AML_REGION_OP: |
1049 | case AML_DATA_REGION_OP: | ||
1050 | |||
1051 | if (op->common.aml_opcode == AML_REGION_OP) { | ||
1052 | region_space = (acpi_adr_space_type) | ||
1053 | ((op->common.value.arg)->common.value. | ||
1054 | integer); | ||
1055 | } else { | ||
1056 | region_space = REGION_DATA_TABLE; | ||
1057 | } | ||
1038 | 1058 | ||
1039 | /* | 1059 | /* |
1040 | * If we are executing a method, initialize the region | 1060 | * If we are executing a method, initialize the region |
@@ -1043,10 +1063,7 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) | |||
1043 | status = | 1063 | status = |
1044 | acpi_ex_create_region(op->named.data, | 1064 | acpi_ex_create_region(op->named.data, |
1045 | op->named.length, | 1065 | op->named.length, |
1046 | (acpi_adr_space_type) | 1066 | region_space, |
1047 | ((op->common.value. | ||
1048 | arg)->common.value. | ||
1049 | integer), | ||
1050 | walk_state); | 1067 | walk_state); |
1051 | if (ACPI_FAILURE(status)) { | 1068 | if (ACPI_FAILURE(status)) { |
1052 | return (status); | 1069 | return (status); |