aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/utilities
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2007-05-29 18:43:33 -0400
committerLen Brown <len.brown@intel.com>2007-05-29 18:43:33 -0400
commitae00d812436dc968f4a5dea7757b6a94910b6dc4 (patch)
tree6acd68850bead001cc74597369307a82bc711f6e /drivers/acpi/utilities
parentc420bc9f09a0926b708c3edb27eacba434a4f4ba (diff)
ACPI: extend "acpi_osi=" boot option
The boot option "acpi_osi=" has always disabled Linux _OSI support, thus disabling all OS Interface strings which are advertised by Linux to the BIOS. Now... acpi_osi="string" adds the interface string, and acpi_osi="!string" invalidates the pre-defined interface string eg. acpi_osi="!Windows 2006" would disable Linux's claim of Vista compatibility. Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/utilities')
-rw-r--r--drivers/acpi/utilities/uteval.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/drivers/acpi/utilities/uteval.c b/drivers/acpi/utilities/uteval.c
index 13d5879cd98b..a10120ad6982 100644
--- a/drivers/acpi/utilities/uteval.c
+++ b/drivers/acpi/utilities/uteval.c
@@ -59,7 +59,7 @@ acpi_ut_translate_one_cid(union acpi_operand_object *obj_desc,
59/* 59/*
60 * Strings supported by the _OSI predefined (internal) method. 60 * Strings supported by the _OSI predefined (internal) method.
61 */ 61 */
62static const char *acpi_interfaces_supported[] = { 62static char *acpi_interfaces_supported[] = {
63 /* Operating System Vendor Strings */ 63 /* Operating System Vendor Strings */
64 64
65 "Linux", 65 "Linux",
@@ -158,6 +158,31 @@ acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state)
158 158
159/******************************************************************************* 159/*******************************************************************************
160 * 160 *
161 * FUNCTION: acpi_osi_invalidate
162 *
163 * PARAMETERS: interface_string
164 *
165 * RETURN: Status
166 *
167 * DESCRIPTION: invalidate string in pre-defiend _OSI string list
168 *
169 ******************************************************************************/
170
171acpi_status acpi_osi_invalidate(char *interface)
172{
173 int i;
174
175 for (i = 0; i < ACPI_ARRAY_LENGTH(acpi_interfaces_supported); i++) {
176 if (!ACPI_STRCMP(interface, acpi_interfaces_supported[i])) {
177 *acpi_interfaces_supported[i] = '\0';
178 return AE_OK;
179 }
180 }
181 return AE_NOT_FOUND;
182}
183
184/*******************************************************************************
185 *
161 * FUNCTION: acpi_ut_evaluate_object 186 * FUNCTION: acpi_ut_evaluate_object
162 * 187 *
163 * PARAMETERS: prefix_node - Starting node 188 * PARAMETERS: prefix_node - Starting node