diff options
| -rw-r--r-- | drivers/acpi/blacklist.c | 14 | ||||
| -rw-r--r-- | drivers/acpi/osl.c | 2 | ||||
| -rw-r--r-- | include/linux/acpi.h | 1 |
3 files changed, 16 insertions, 1 deletions
diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c index dfa4ac8e9982..ea92bac42c53 100644 --- a/drivers/acpi/blacklist.c +++ b/drivers/acpi/blacklist.c | |||
| @@ -186,6 +186,12 @@ static int __init dmi_unknown_osi_linux(const struct dmi_system_id *d) | |||
| 186 | acpi_dmi_osi_linux(-1, d); /* unknown */ | 186 | acpi_dmi_osi_linux(-1, d); /* unknown */ |
| 187 | return 0; | 187 | return 0; |
| 188 | } | 188 | } |
| 189 | static int __init dmi_disable_osi_vista(const struct dmi_system_id *d) | ||
| 190 | { | ||
| 191 | printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident); | ||
| 192 | acpi_osi_setup("!Windows 2006"); | ||
| 193 | return 0; | ||
| 194 | } | ||
| 189 | 195 | ||
| 190 | /* | 196 | /* |
| 191 | * Most BIOS that invoke OSI(Linux) do nothing with it. | 197 | * Most BIOS that invoke OSI(Linux) do nothing with it. |
| @@ -434,6 +440,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { | |||
| 434 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | 440 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), |
| 435 | }, | 441 | }, |
| 436 | }, | 442 | }, |
| 443 | { | ||
| 444 | .callback = dmi_disable_osi_vista, | ||
| 445 | .ident = "Fujitsu Siemens", | ||
| 446 | .matches = { | ||
| 447 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
| 448 | DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"), | ||
| 449 | }, | ||
| 450 | }, | ||
| 437 | /* | 451 | /* |
| 438 | * Disable OSI(Linux) warnings on all "Hewlett-Packard" | 452 | * Disable OSI(Linux) warnings on all "Hewlett-Packard" |
| 439 | * | 453 | * |
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index 15e602377655..0467171dbdb8 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c | |||
| @@ -1109,7 +1109,7 @@ void __init acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d) | |||
| 1109 | * string starting with '!' disables that string | 1109 | * string starting with '!' disables that string |
| 1110 | * otherwise string is added to list, augmenting built-in strings | 1110 | * otherwise string is added to list, augmenting built-in strings |
| 1111 | */ | 1111 | */ |
| 1112 | static int __init acpi_osi_setup(char *str) | 1112 | int __init acpi_osi_setup(char *str) |
| 1113 | { | 1113 | { |
| 1114 | if (str == NULL || *str == '\0') { | 1114 | if (str == NULL || *str == '\0') { |
| 1115 | printk(KERN_INFO PREFIX "_OSI method disabled\n"); | 1115 | printk(KERN_INFO PREFIX "_OSI method disabled\n"); |
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index ddbe7efe590e..2c7e003356ac 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h | |||
| @@ -203,6 +203,7 @@ extern bool wmi_has_guid(const char *guid); | |||
| 203 | extern int acpi_blacklisted(void); | 203 | extern int acpi_blacklisted(void); |
| 204 | #ifdef CONFIG_DMI | 204 | #ifdef CONFIG_DMI |
| 205 | extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d); | 205 | extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d); |
| 206 | extern int acpi_osi_setup(char *str); | ||
| 206 | #endif | 207 | #endif |
| 207 | 208 | ||
| 208 | #ifdef CONFIG_ACPI_NUMA | 209 | #ifdef CONFIG_ACPI_NUMA |
