ACPI: DMI: quirk for FSC ESPRIMO Mobile V5505
authorLen Brown <len.brown@intel.com>
Thu, 14 Feb 2008 04:13:25 +0000 (23:13 -0500)
committerLen Brown <len.brown@intel.com>
Thu, 14 Feb 2008 07:43:39 +0000 (02:43 -0500)
http://bugzilla.kernel.org/show_bug.cgi?id=9939

Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/blacklist.c
drivers/acpi/osl.c
include/linux/acpi.h

index dfa4ac8e9982a0ebe1525134cdea2674895725c6..ea92bac42c53dd438fae0c82b2e310b8098f7dff 100644 (file)
@@ -186,6 +186,12 @@ static int __init dmi_unknown_osi_linux(const struct dmi_system_id *d)
        acpi_dmi_osi_linux(-1, d);      /* unknown */
        return 0;
 }
+static int __init dmi_disable_osi_vista(const struct dmi_system_id *d)
+{
+       printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident);
+       acpi_osi_setup("!Windows 2006");
+       return 0;
+}
 
 /*
  * Most BIOS that invoke OSI(Linux) do nothing with it.
@@ -434,6 +440,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
                     DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
                },
        },
+       {
+       .callback = dmi_disable_osi_vista,
+       .ident = "Fujitsu Siemens",
+       .matches = {
+                    DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+                    DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"),
+               },
+       },
        /*
         * Disable OSI(Linux) warnings on all "Hewlett-Packard"
         *
index 15e602377655349d22423c82afe62f33623c2929..0467171dbdb8776f6bf8b2fbdf2f08156c0d1cc5 100644 (file)
@@ -1109,7 +1109,7 @@ void __init acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d)
  * string starting with '!' disables that string
  * otherwise string is added to list, augmenting built-in strings
  */
-static int __init acpi_osi_setup(char *str)
+int __init acpi_osi_setup(char *str)
 {
        if (str == NULL || *str == '\0') {
                printk(KERN_INFO PREFIX "_OSI method disabled\n");
index ddbe7efe590e96bdf25e8c1afa96038126f7a329..2c7e003356ac184f4d7848b44a98468df65e01ec 100644 (file)
@@ -203,6 +203,7 @@ extern bool wmi_has_guid(const char *guid);
 extern int acpi_blacklisted(void);
 #ifdef CONFIG_DMI
 extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d);
+extern int acpi_osi_setup(char *str);
 #endif
 
 #ifdef CONFIG_ACPI_NUMA