summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/parser/psargs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/parser/psargs.c')
-rw-r--r--drivers/acpi/parser/psargs.c90
1 files changed, 16 insertions, 74 deletions
diff --git a/drivers/acpi/parser/psargs.c b/drivers/acpi/parser/psargs.c
index 21315b331..35d623668 100644
--- a/drivers/acpi/parser/psargs.c
+++ b/drivers/acpi/parser/psargs.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psargs - Parse AML opcode arguments
- * $Revision: 35 $
+ * $Revision: 42 $
*
*****************************************************************************/
@@ -33,20 +33,6 @@
MODULE_NAME ("psargs")
-u32
-acpi_ps_pkg_length_encoding_size (
- u32 first_byte)
-{
-
- /*
- * Bits 6-7 contain the number of bytes
- * in the encoded package length (-1)
- */
-
- return ((first_byte >> 6) + 1);
-}
-
-
/*******************************************************************************
*
* FUNCTION: Acpi_ps_get_next_package_length
@@ -61,55 +47,6 @@ acpi_ps_pkg_length_encoding_size (
******************************************************************************/
u32
-xxx_acpi_ps_get_next_package_length (
- ACPI_PARSE_STATE *parser_state)
-{
- u32 encoding_length;
- u32 package_length = 0;
- u8 *aml_ptr = parser_state->aml;
-
-
- encoding_length = acpi_ps_pkg_length_encoding_size ((u32) GET8 (aml_ptr));
-
-
- switch (encoding_length)
- {
- case 1: /* 1-byte encoding (bits 0-5) */
-
- package_length = ((u32) GET8 (aml_ptr) & 0x3f);
- break;
-
-
- case 2: /* 2-byte encoding (next byte + bits 0-3) */
-
- package_length = ((((u32) GET8 (aml_ptr + 1)) << 4) |
- (((u32) GET8 (aml_ptr)) & 0x0f));
- break;
-
-
- case 3: /* 3-byte encoding (next 2 bytes + bits 0-3) */
-
- package_length = ((((u32) GET8 (aml_ptr + 2)) << 12) |
- (((u32) GET8 (aml_ptr + 1)) << 4) |
- (((u32) GET8 (aml_ptr)) & 0x0f));
- break;
-
-
- case 4: /* 4-byte encoding (next 3 bytes + bits 0-3) */
-
- package_length = ((((u32) GET8 (aml_ptr + 3)) << 20) |
- (((u32) GET8 (aml_ptr + 2)) << 12) |
- (((u32) GET8 (aml_ptr + 1)) << 4) |
- (((u32) GET8 (aml_ptr)) & 0x0f));
- break;
- }
-
- parser_state->aml += encoding_length;
-
- return (package_length);
-}
-
-u32
acpi_ps_get_next_package_length (
ACPI_PARSE_STATE *parser_state)
{
@@ -125,32 +62,33 @@ acpi_ps_get_next_package_length (
{
case 0: /* 1-byte encoding (bits 0-5) */
- length = (encoded_length & 0x3f);
+ length = (encoded_length & 0x3F);
break;
case 1: /* 2-byte encoding (next byte + bits 0-3) */
- length = (GET8 (parser_state->aml) << 4) | (encoded_length & 0xf);
+ length = ((GET8 (parser_state->aml) << 04) |
+ (encoded_length & 0x0F));
parser_state->aml++;
break;
case 2: /* 3-byte encoding (next 2 bytes + bits 0-3) */
- length = ( (GET8 (parser_state->aml + 1) << 12)
- | (GET8 (parser_state->aml) << 4)
- | (encoded_length & 0xf));
+ length = ((GET8 (parser_state->aml + 1) << 12) |
+ (GET8 (parser_state->aml) << 04) |
+ (encoded_length & 0x0F));
parser_state->aml += 2;
break;
case 3: /* 4-byte encoding (next 3 bytes + bits 0-3) */
- length = ( (GET8 (parser_state->aml + 2) << 20)
- | (GET8 (parser_state->aml + 1) << 12)
- | (GET8 (parser_state->aml) << 4)
- | (encoded_length & 0xf));
+ length = ((GET8 (parser_state->aml + 2) << 20) |
+ (GET8 (parser_state->aml + 1) << 12) |
+ (GET8 (parser_state->aml) << 04) |
+ (encoded_length & 0x0F));
parser_state->aml += 3;
break;
}
@@ -442,6 +380,10 @@ acpi_ps_get_next_namepath (
name_op->node = method_node;
acpi_ps_append_arg (arg, name_op);
+ if (!(ACPI_OPERAND_OBJECT *) method_node->object) {
+ return;
+ }
+
*arg_count = ((ACPI_OPERAND_OBJECT *) method_node->object)->method.param_count;
}
@@ -459,7 +401,7 @@ acpi_ps_get_next_namepath (
/*
* Either we didn't find the object in the namespace, or the object is
* something other than a control method. Just initialize the Op with the
- * pathname
+ * pathname.
*/
acpi_ps_init_op (arg, AML_NAMEPATH_OP);