diff options
Diffstat (limited to 'drivers/acpi/utilities/utmisc.c')
-rw-r--r-- | drivers/acpi/utilities/utmisc.c | 102 |
1 files changed, 89 insertions, 13 deletions
diff --git a/drivers/acpi/utilities/utmisc.c b/drivers/acpi/utilities/utmisc.c index 6d8a8211be90..50133fffe420 100644 --- a/drivers/acpi/utilities/utmisc.c +++ b/drivers/acpi/utilities/utmisc.c | |||
@@ -5,7 +5,7 @@ | |||
5 | ******************************************************************************/ | 5 | ******************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2006, R. Byron Moore | 8 | * Copyright (C) 2000 - 2007, R. Byron Moore |
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 |
@@ -51,6 +51,78 @@ ACPI_MODULE_NAME("utmisc") | |||
51 | 51 | ||
52 | /******************************************************************************* | 52 | /******************************************************************************* |
53 | * | 53 | * |
54 | * FUNCTION: acpi_ut_validate_exception | ||
55 | * | ||
56 | * PARAMETERS: Status - The acpi_status code to be formatted | ||
57 | * | ||
58 | * RETURN: A string containing the exception text. NULL if exception is | ||
59 | * not valid. | ||
60 | * | ||
61 | * DESCRIPTION: This function validates and translates an ACPI exception into | ||
62 | * an ASCII string. | ||
63 | * | ||
64 | ******************************************************************************/ | ||
65 | const char *acpi_ut_validate_exception(acpi_status status) | ||
66 | { | ||
67 | acpi_status sub_status; | ||
68 | const char *exception = NULL; | ||
69 | |||
70 | ACPI_FUNCTION_ENTRY(); | ||
71 | |||
72 | /* | ||
73 | * Status is composed of two parts, a "type" and an actual code | ||
74 | */ | ||
75 | sub_status = (status & ~AE_CODE_MASK); | ||
76 | |||
77 | switch (status & AE_CODE_MASK) { | ||
78 | case AE_CODE_ENVIRONMENTAL: | ||
79 | |||
80 | if (sub_status <= AE_CODE_ENV_MAX) { | ||
81 | exception = acpi_gbl_exception_names_env[sub_status]; | ||
82 | } | ||
83 | break; | ||
84 | |||
85 | case AE_CODE_PROGRAMMER: | ||
86 | |||
87 | if (sub_status <= AE_CODE_PGM_MAX) { | ||
88 | exception = | ||
89 | acpi_gbl_exception_names_pgm[sub_status - 1]; | ||
90 | } | ||
91 | break; | ||
92 | |||
93 | case AE_CODE_ACPI_TABLES: | ||
94 | |||
95 | if (sub_status <= AE_CODE_TBL_MAX) { | ||
96 | exception = | ||
97 | acpi_gbl_exception_names_tbl[sub_status - 1]; | ||
98 | } | ||
99 | break; | ||
100 | |||
101 | case AE_CODE_AML: | ||
102 | |||
103 | if (sub_status <= AE_CODE_AML_MAX) { | ||
104 | exception = | ||
105 | acpi_gbl_exception_names_aml[sub_status - 1]; | ||
106 | } | ||
107 | break; | ||
108 | |||
109 | case AE_CODE_CONTROL: | ||
110 | |||
111 | if (sub_status <= AE_CODE_CTRL_MAX) { | ||
112 | exception = | ||
113 | acpi_gbl_exception_names_ctrl[sub_status - 1]; | ||
114 | } | ||
115 | break; | ||
116 | |||
117 | default: | ||
118 | break; | ||
119 | } | ||
120 | |||
121 | return (ACPI_CAST_PTR(const char, exception)); | ||
122 | } | ||
123 | |||
124 | /******************************************************************************* | ||
125 | * | ||
54 | * FUNCTION: acpi_ut_is_aml_table | 126 | * FUNCTION: acpi_ut_is_aml_table |
55 | * | 127 | * |
56 | * PARAMETERS: Table - An ACPI table | 128 | * PARAMETERS: Table - An ACPI table |
@@ -62,14 +134,15 @@ ACPI_MODULE_NAME("utmisc") | |||
62 | * data tables that do not contain AML code. | 134 | * data tables that do not contain AML code. |
63 | * | 135 | * |
64 | ******************************************************************************/ | 136 | ******************************************************************************/ |
137 | |||
65 | u8 acpi_ut_is_aml_table(struct acpi_table_header *table) | 138 | u8 acpi_ut_is_aml_table(struct acpi_table_header *table) |
66 | { | 139 | { |
67 | 140 | ||
68 | /* These are the only tables that contain executable AML */ | 141 | /* These are the only tables that contain executable AML */ |
69 | 142 | ||
70 | if (ACPI_COMPARE_NAME(table->signature, DSDT_SIG) || | 143 | if (ACPI_COMPARE_NAME(table->signature, ACPI_SIG_DSDT) || |
71 | ACPI_COMPARE_NAME(table->signature, PSDT_SIG) || | 144 | ACPI_COMPARE_NAME(table->signature, ACPI_SIG_PSDT) || |
72 | ACPI_COMPARE_NAME(table->signature, SSDT_SIG)) { | 145 | ACPI_COMPARE_NAME(table->signature, ACPI_SIG_SSDT)) { |
73 | return (TRUE); | 146 | return (TRUE); |
74 | } | 147 | } |
75 | 148 | ||
@@ -418,7 +491,7 @@ u32 acpi_ut_dword_byte_swap(u32 value) | |||
418 | void acpi_ut_set_integer_width(u8 revision) | 491 | void acpi_ut_set_integer_width(u8 revision) |
419 | { | 492 | { |
420 | 493 | ||
421 | if (revision <= 1) { | 494 | if (revision < 2) { |
422 | 495 | ||
423 | /* 32-bit case */ | 496 | /* 32-bit case */ |
424 | 497 | ||
@@ -582,26 +655,25 @@ u8 acpi_ut_valid_acpi_name(u32 name) | |||
582 | * | 655 | * |
583 | ******************************************************************************/ | 656 | ******************************************************************************/ |
584 | 657 | ||
585 | acpi_name acpi_ut_repair_name(acpi_name name) | 658 | acpi_name acpi_ut_repair_name(char *name) |
586 | { | 659 | { |
587 | char *name_ptr = ACPI_CAST_PTR(char, &name); | ||
588 | char new_name[ACPI_NAME_SIZE]; | ||
589 | acpi_native_uint i; | 660 | acpi_native_uint i; |
661 | char new_name[ACPI_NAME_SIZE]; | ||
590 | 662 | ||
591 | for (i = 0; i < ACPI_NAME_SIZE; i++) { | 663 | for (i = 0; i < ACPI_NAME_SIZE; i++) { |
592 | new_name[i] = name_ptr[i]; | 664 | new_name[i] = name[i]; |
593 | 665 | ||
594 | /* | 666 | /* |
595 | * Replace a bad character with something printable, yet technically | 667 | * Replace a bad character with something printable, yet technically |
596 | * still invalid. This prevents any collisions with existing "good" | 668 | * still invalid. This prevents any collisions with existing "good" |
597 | * names in the namespace. | 669 | * names in the namespace. |
598 | */ | 670 | */ |
599 | if (!acpi_ut_valid_acpi_char(name_ptr[i], i)) { | 671 | if (!acpi_ut_valid_acpi_char(name[i], i)) { |
600 | new_name[i] = '*'; | 672 | new_name[i] = '*'; |
601 | } | 673 | } |
602 | } | 674 | } |
603 | 675 | ||
604 | return (*ACPI_CAST_PTR(u32, new_name)); | 676 | return (*(u32 *) new_name); |
605 | } | 677 | } |
606 | 678 | ||
607 | /******************************************************************************* | 679 | /******************************************************************************* |
@@ -996,9 +1068,13 @@ acpi_ut_info(char *module_name, u32 line_number, char *format, ...) | |||
996 | { | 1068 | { |
997 | va_list args; | 1069 | va_list args; |
998 | 1070 | ||
999 | acpi_os_printf("ACPI (%s-%04d): ", module_name, line_number); | 1071 | /* |
1072 | * Removed module_name, line_number, and acpica version, not needed | ||
1073 | * for info output | ||
1074 | */ | ||
1075 | acpi_os_printf("ACPI: "); | ||
1000 | 1076 | ||
1001 | va_start(args, format); | 1077 | va_start(args, format); |
1002 | acpi_os_vprintf(format, args); | 1078 | acpi_os_vprintf(format, args); |
1003 | acpi_os_printf(" [%X]\n", ACPI_CA_VERSION); | 1079 | acpi_os_printf("\n"); |
1004 | } | 1080 | } |