]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branches 'release', 'dmi', 'idle' and 'misc' into release
authorLen Brown <len.brown@intel.com>
Thu, 14 Feb 2008 07:44:28 +0000 (02:44 -0500)
committerLen Brown <len.brown@intel.com>
Thu, 14 Feb 2008 07:44:28 +0000 (02:44 -0500)
drivers/acpi/blacklist.c
drivers/acpi/event.c
drivers/acpi/hardware/hwsleep.c
drivers/acpi/osl.c
drivers/acpi/processor_idle.c
drivers/misc/thinkpad_acpi.c
drivers/pnp/pnpacpi/core.c
include/linux/acpi.h

index 9ce983ed60f00f762af1c950455f5088ecc64161..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.
@@ -228,10 +234,10 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
         * DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 5520"),
         * DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 6460"),
         * DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 7510"),
-        * DMI_MATCH(DMI_PRODUCT_NAME, "Extensa 5220"),
         *
         * _OSI(Linux) is a NOP:
         * DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5315"),
+        * DMI_MATCH(DMI_PRODUCT_NAME, "Extensa 5220"),
         */
        {
        .callback = dmi_disable_osi_linux,
@@ -327,12 +333,20 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
        },
        { /* OSI(Linux) effect unknown */
        .callback = dmi_unknown_osi_linux,
-       .ident = "Dell OP GX620",
+       .ident = "Dell OptiPlex GX620",
        .matches = {
                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
                     DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex GX620"),
                },
        },
+       { /* OSI(Linux) causes some USB initialization to not run */
+       .callback = dmi_unknown_osi_linux,
+       .ident = "Dell OptiPlex 755",
+       .matches = {
+                    DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+                    DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 755"),
+               },
+       },
        { /* OSI(Linux) effect unknown */
        .callback = dmi_unknown_osi_linux,
        .ident = "Dell PE 1900",
@@ -342,6 +356,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
                },
        },
        { /* OSI(Linux) is a NOP */
+       .callback = dmi_unknown_osi_linux,
+       .ident = "Dell PE 1950",
+       .matches = {
+                    DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+                    DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1950"),
+               },
+       },
+       { /* OSI(Linux) is a NOP */
        .callback = dmi_disable_osi_linux,
        .ident = "Dell PE R200",
        .matches = {
@@ -357,6 +379,22 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
                     DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation 390"),
                },
        },
+       { /* OSI(Linux) touches USB */
+       .callback = dmi_unknown_osi_linux,
+       .ident = "Dell PR 390",
+       .matches = {
+                    DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+                    DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation 690"),
+               },
+       },
+       { /* OSI(Linux) unknown - ASL looks benign, but may effect dock/SMM */
+       .callback = dmi_unknown_osi_linux,
+       .ident = "Dell PR M4300",
+       .matches = {
+                    DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+                    DMI_MATCH(DMI_PRODUCT_NAME, "Precision M4300"),
+               },
+       },
        { /* OSI(Linux) is a NOP */
        .callback = dmi_disable_osi_linux,
        .ident = "Dell Vostro 1000",
@@ -390,10 +428,10 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
         * DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pi 1536"),
         * DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pi 1556"),
         * DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xi 1546"),
+        * DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"),
         * _OSI(Linux) unknown effect:
         * DMI_MATCH(DMI_PRODUCT_NAME, "Amilo M1425"),
         * DMI_MATCH(DMI_PRODUCT_NAME, "Amilo Si 1520"),
-        * DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"),
         */
        {
        .callback = dmi_disable_osi_linux,
@@ -402,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"
         *
@@ -443,10 +489,11 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
         * _OSI(Linux) helps sound
         * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad R61"),
         * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T61"),
+        * _OSI(Linux) has Linux specific hooks
+        * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"),
         * _OSI(Linux) is a NOP:
         * DMI_MATCH(DMI_PRODUCT_VERSION, "3000 N100"),
-        * _OSI(Linux) effect unknown
-        * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"),
+        * DMI_MATCH(DMI_PRODUCT_VERSION, "LENOVO3000 V100"),
         */
        {
        .callback = dmi_enable_osi_linux,
@@ -465,7 +512,7 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
                },
        },
        {
-       .callback = dmi_unknown_osi_linux,
+       .callback = dmi_enable_osi_linux,
        .ident = "Lenovo ThinkPad X61",
        .matches = {
                     DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
@@ -473,7 +520,7 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
                },
        },
        {
-       .callback = dmi_unknown_osi_linux,
+       .callback = dmi_disable_osi_linux,
        .ident = "Lenovo 3000 V100",
        .matches = {
                     DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
@@ -543,8 +590,9 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
         * Disable OSI(Linux) warnings on all "Sony Corporation"
         *
         * _OSI(Linux) is a NOP:
-        * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ650N"),
+        * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NR11S_S"),
         * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ38GP_C"),
+        * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ650N"),
         * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-TZ21MN_N"),
         * _OSI(Linux) unknown effect:
         * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FZ11M"),
index 5479dc0eeeecdfe6401d0d81fd435af69ac67e42..abec1ca94cf4bb4f54a387121c93168c944e7d9e 100644 (file)
@@ -110,7 +110,7 @@ static const struct file_operations acpi_system_event_ops = {
 #endif /* CONFIG_ACPI_PROC_EVENT */
 
 /* ACPI notifier chain */
-BLOCKING_NOTIFIER_HEAD(acpi_chain_head);
+static BLOCKING_NOTIFIER_HEAD(acpi_chain_head);
 
 int acpi_notifier_call_chain(struct acpi_device *dev, u32 type, u32 data)
 {
index 058d0be5cbe2983ee747ead0f40b396bfd8f9b66..4290e0193097d28fd2405b814ac0352a0cf5fb93 100644 (file)
@@ -616,6 +616,7 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state)
                return_ACPI_STATUS(status);
        }
 
+       arg.integer.value = sleep_state;
        status = acpi_evaluate_object(NULL, METHOD_NAME__WAK, &arg_list, NULL);
        if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
                ACPI_EXCEPTION((AE_INFO, status, "During Method _WAK"));
index 15e602377655349d22423c82afe62f33623c2929..8edba7b678eb9d33493f422472dc16fdb4c6f84e 100644 (file)
@@ -325,7 +325,7 @@ acpi_os_predefined_override(const struct acpi_predefined_names *init_val,
 }
 
 #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
-struct acpi_table_header *acpi_find_dsdt_initrd(void)
+static struct acpi_table_header *acpi_find_dsdt_initrd(void)
 {
        struct file *firmware_file;
        mm_segment_t oldfs;
@@ -419,7 +419,7 @@ acpi_os_table_override(struct acpi_table_header * existing_table,
 }
 
 #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
-int __init acpi_no_initrd_override_setup(char *s)
+static int __init acpi_no_initrd_override_setup(char *s)
 {
        acpi_no_initrd_override = 1;
        return 1;
@@ -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 baa389b908e2bd827f1b22cf6619bf6e585f2e81..980e1c33e6c5eeb11a7ec91132c2aa1cb614ef0a 100644 (file)
@@ -1425,6 +1425,14 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,
                return 0;
 
        local_irq_disable();
+
+       /* Do not access any ACPI IO ports in suspend path */
+       if (acpi_idle_suspend) {
+               acpi_safe_halt();
+               local_irq_enable();
+               return 0;
+       }
+
        if (pr->flags.bm_check)
                acpi_idle_update_bm_rld(pr, cx);
 
index 7ba1acad54025d1fd3cccf9ec9756345fe6bb27c..e2c7edd206a6b0677894ec6bddfd779cd0851543 100644 (file)
@@ -1689,7 +1689,7 @@ static ssize_t hotkey_wakeup_reason_show(struct device *dev,
 static struct device_attribute dev_attr_hotkey_wakeup_reason =
        __ATTR(wakeup_reason, S_IRUGO, hotkey_wakeup_reason_show, NULL);
 
-void hotkey_wakeup_reason_notify_change(void)
+static void hotkey_wakeup_reason_notify_change(void)
 {
        if (tp_features.hotkey_mask)
                sysfs_notify(&tpacpi_pdev->dev.kobj, NULL,
@@ -1708,7 +1708,7 @@ static struct device_attribute dev_attr_hotkey_wakeup_hotunplug_complete =
        __ATTR(wakeup_hotunplug_complete, S_IRUGO,
               hotkey_wakeup_hotunplug_complete_show, NULL);
 
-void hotkey_wakeup_hotunplug_complete_notify_change(void)
+static void hotkey_wakeup_hotunplug_complete_notify_change(void)
 {
        if (tp_features.hotkey_mask)
                sysfs_notify(&tpacpi_pdev->dev.kobj, NULL,
index 662b4c279cfcaff775739eb3e35f128bc065c12c..c283a9a70d8321063d92bd4a3c40607255f4459d 100644 (file)
@@ -36,7 +36,7 @@ static int num = 0;
  * have irqs (PIC, Timer) because we call acpi_register_gsi.
  * Finally, only devices that have a CRS method need to be in this list.
  */
-static struct __initdata acpi_device_id excluded_id_list[] = {
+static struct acpi_device_id excluded_id_list[] __initdata = {
        {"PNP0C09", 0},         /* EC */
        {"PNP0C0F", 0},         /* Link device */
        {"PNP0000", 0},         /* PIC */
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