diff options
-rw-r--r-- | drivers/acpi/acpica/aclocal.h | 2 | ||||
-rw-r--r-- | drivers/acpi/acpica/acopcode.h | 2 | ||||
-rw-r--r-- | drivers/acpi/acpica/amlcode.h | 1 | ||||
-rw-r--r-- | drivers/acpi/acpica/dsutils.c | 11 | ||||
-rw-r--r-- | drivers/acpi/acpica/exoparg3.c | 13 | ||||
-rw-r--r-- | drivers/acpi/acpica/psopcode.c | 8 | ||||
-rw-r--r-- | drivers/acpi/acpica/psopinfo.c | 2 |
7 files changed, 35 insertions, 4 deletions
diff --git a/drivers/acpi/acpica/aclocal.h b/drivers/acpi/acpica/aclocal.h index 7add32e5d8c5..87b27521fcac 100644 --- a/drivers/acpi/acpica/aclocal.h +++ b/drivers/acpi/acpica/aclocal.h | |||
@@ -53,7 +53,7 @@ typedef u32 acpi_mutex_handle; | |||
53 | 53 | ||
54 | /* Total number of aml opcodes defined */ | 54 | /* Total number of aml opcodes defined */ |
55 | 55 | ||
56 | #define AML_NUM_OPCODES 0x81 | 56 | #define AML_NUM_OPCODES 0x82 |
57 | 57 | ||
58 | /* Forward declarations */ | 58 | /* Forward declarations */ |
59 | 59 | ||
diff --git a/drivers/acpi/acpica/acopcode.h b/drivers/acpi/acpica/acopcode.h index a5f17de45ac6..fd85ad05a24a 100644 --- a/drivers/acpi/acpica/acopcode.h +++ b/drivers/acpi/acpica/acopcode.h | |||
@@ -111,6 +111,7 @@ | |||
111 | #define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA) | 111 | #define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA) |
112 | #define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST) | 112 | #define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST) |
113 | #define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME) | 113 | #define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME) |
114 | #define ARGP_EXTERNAL_OP ARGP_LIST3 (ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_BYTEDATA) | ||
114 | #define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG) | 115 | #define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG) |
115 | #define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST) | 116 | #define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST) |
116 | #define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) | 117 | #define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) |
@@ -243,6 +244,7 @@ | |||
243 | #define ARGI_DWORD_OP ARGI_INVALID_OPCODE | 244 | #define ARGI_DWORD_OP ARGI_INVALID_OPCODE |
244 | #define ARGI_ELSE_OP ARGI_INVALID_OPCODE | 245 | #define ARGI_ELSE_OP ARGI_INVALID_OPCODE |
245 | #define ARGI_EVENT_OP ARGI_INVALID_OPCODE | 246 | #define ARGI_EVENT_OP ARGI_INVALID_OPCODE |
247 | #define ARGI_EXTERNAL_OP ARGI_LIST3 (ARGI_STRING, ARGI_INTEGER, ARGI_INTEGER) | ||
246 | #define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER) | 248 | #define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER) |
247 | #define ARGI_FIELD_OP ARGI_INVALID_OPCODE | 249 | #define ARGI_FIELD_OP ARGI_INVALID_OPCODE |
248 | #define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) | 250 | #define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) |
diff --git a/drivers/acpi/acpica/amlcode.h b/drivers/acpi/acpica/amlcode.h index 3a95068fc119..2c47b2533144 100644 --- a/drivers/acpi/acpica/amlcode.h +++ b/drivers/acpi/acpica/amlcode.h | |||
@@ -65,6 +65,7 @@ | |||
65 | #define AML_PACKAGE_OP (u16) 0x12 | 65 | #define AML_PACKAGE_OP (u16) 0x12 |
66 | #define AML_VAR_PACKAGE_OP (u16) 0x13 /* ACPI 2.0 */ | 66 | #define AML_VAR_PACKAGE_OP (u16) 0x13 /* ACPI 2.0 */ |
67 | #define AML_METHOD_OP (u16) 0x14 | 67 | #define AML_METHOD_OP (u16) 0x14 |
68 | #define AML_EXTERNAL_OP (u16) 0x15 /* ACPI 6.0 */ | ||
68 | #define AML_DUAL_NAME_PREFIX (u16) 0x2e | 69 | #define AML_DUAL_NAME_PREFIX (u16) 0x2e |
69 | #define AML_MULTI_NAME_PREFIX_OP (u16) 0x2f | 70 | #define AML_MULTI_NAME_PREFIX_OP (u16) 0x2f |
70 | #define AML_NAME_CHAR_SUBSEQ (u16) 0x30 | 71 | #define AML_NAME_CHAR_SUBSEQ (u16) 0x30 |
diff --git a/drivers/acpi/acpica/dsutils.c b/drivers/acpi/acpica/dsutils.c index e5ff89bcb3f5..deeddd6d2f05 100644 --- a/drivers/acpi/acpica/dsutils.c +++ b/drivers/acpi/acpica/dsutils.c | |||
@@ -564,6 +564,17 @@ acpi_ds_create_operand(struct acpi_walk_state *walk_state, | |||
564 | acpi_operand_object, | 564 | acpi_operand_object, |
565 | acpi_gbl_root_node); | 565 | acpi_gbl_root_node); |
566 | status = AE_OK; | 566 | status = AE_OK; |
567 | } else if (parent_op->common.aml_opcode == | ||
568 | AML_EXTERNAL_OP) { | ||
569 | |||
570 | /* TBD: May only be temporary */ | ||
571 | |||
572 | obj_desc = | ||
573 | acpi_ut_create_string_object((acpi_size) name_length); | ||
574 | |||
575 | ACPI_STRNCPY(obj_desc->string.pointer, | ||
576 | name_string, name_length); | ||
577 | status = AE_OK; | ||
567 | } else { | 578 | } else { |
568 | /* | 579 | /* |
569 | * We just plain didn't find it -- which is a | 580 | * We just plain didn't find it -- which is a |
diff --git a/drivers/acpi/acpica/exoparg3.c b/drivers/acpi/acpica/exoparg3.c index b813fed95e56..1c64a988cbee 100644 --- a/drivers/acpi/acpica/exoparg3.c +++ b/drivers/acpi/acpica/exoparg3.c | |||
@@ -114,7 +114,18 @@ acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state) | |||
114 | /* Might return while OS is shutting down, just continue */ | 114 | /* Might return while OS is shutting down, just continue */ |
115 | 115 | ||
116 | ACPI_FREE(fatal); | 116 | ACPI_FREE(fatal); |
117 | break; | 117 | goto cleanup; |
118 | |||
119 | case AML_EXTERNAL_OP: | ||
120 | /* | ||
121 | * If the interpreter sees this opcode, just ignore it. The External | ||
122 | * op is intended for use by disassemblers in order to properly | ||
123 | * disassemble control method invocations. The opcode or group of | ||
124 | * opcodes should be surrounded by an "if (0)" clause to ensure that | ||
125 | * AML interpreters never see the opcode. | ||
126 | */ | ||
127 | status = AE_OK; | ||
128 | goto cleanup; | ||
118 | 129 | ||
119 | default: | 130 | default: |
120 | 131 | ||
diff --git a/drivers/acpi/acpica/psopcode.c b/drivers/acpi/acpica/psopcode.c index 1af4a405e351..ed90fddf2487 100644 --- a/drivers/acpi/acpica/psopcode.c +++ b/drivers/acpi/acpica/psopcode.c | |||
@@ -646,7 +646,13 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = { | |||
646 | AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS), | 646 | AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS), |
647 | /* 80 */ ACPI_OP("-ExtAccessField-", ARGP_CONNECTFIELD_OP, | 647 | /* 80 */ ACPI_OP("-ExtAccessField-", ARGP_CONNECTFIELD_OP, |
648 | ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY, | 648 | ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY, |
649 | AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0) | 649 | AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), |
650 | |||
651 | /* ACPI 6.0 opcodes */ | ||
652 | |||
653 | /* 81 */ ACPI_OP("External", ARGP_EXTERNAL_OP, ARGI_EXTERNAL_OP, | ||
654 | ACPI_TYPE_ANY, AML_CLASS_EXECUTE, /* ? */ | ||
655 | AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R) | ||
650 | 656 | ||
651 | /*! [End] no source code translation !*/ | 657 | /*! [End] no source code translation !*/ |
652 | }; | 658 | }; |
diff --git a/drivers/acpi/acpica/psopinfo.c b/drivers/acpi/acpica/psopinfo.c index e18e7c47f482..20e1a35169fc 100644 --- a/drivers/acpi/acpica/psopinfo.c +++ b/drivers/acpi/acpica/psopinfo.c | |||
@@ -210,7 +210,7 @@ const u8 acpi_gbl_short_op_index[256] = { | |||
210 | /* 8 9 A B C D E F */ | 210 | /* 8 9 A B C D E F */ |
211 | /* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK, | 211 | /* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK, |
212 | /* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK, | 212 | /* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK, |
213 | /* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK, _UNK, _UNK, | 213 | /* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, 0x81, _UNK, _UNK, |
214 | /* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, | 214 | /* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, |
215 | /* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, | 215 | /* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, |
216 | /* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX, | 216 | /* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX, |