]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
pull asus sony thinkpad into release branch
authorLen Brown <len.brown@intel.com>
Sun, 12 Aug 2007 04:17:12 +0000 (00:17 -0400)
committerLen Brown <len.brown@intel.com>
Sun, 12 Aug 2007 04:17:12 +0000 (00:17 -0400)
Documentation/thinkpad-acpi.txt
drivers/acpi/asus_acpi.c
drivers/char/sonypi.c
drivers/misc/Kconfig
drivers/misc/sony-laptop.c
drivers/misc/thinkpad_acpi.c
drivers/misc/thinkpad_acpi.h

index 6711fbcf408078644bf237b2f46466b69b7040ff..eb2f5986e1eb911e94c760c5107dccef5b053f76 100644 (file)
@@ -105,10 +105,10 @@ The version of thinkpad-acpi's sysfs interface is exported by the driver
 as a driver attribute (see below).
 
 Sysfs driver attributes are on the driver's sysfs attribute space,
-for 2.6.20 this is /sys/bus/platform/drivers/thinkpad-acpi/.
+for 2.6.20 this is /sys/bus/platform/drivers/thinkpad_acpi/.
 
 Sysfs device attributes are on the driver's sysfs attribute space,
-for 2.6.20 this is /sys/devices/platform/thinkpad-acpi/.
+for 2.6.20 this is /sys/devices/platform/thinkpad_acpi/.
 
 Driver version
 --------------
index 9c4bd220c44fdf30381046b169c336365f10214a..86fd142f4bf3929731a7b43ef3dc1d1d825f696d 100644 (file)
@@ -1192,6 +1192,7 @@ static int asus_hotk_get_info(void)
                        break;
                default:
                        kfree(model);
+                       model = NULL;
                        break;
                }
        }
index 73037a4d3c5023f2e7b31fccf804f61a8ece0b08..aeec67e27264463c5697ac4652212d8a8e13fb73 100644 (file)
@@ -1147,10 +1147,15 @@ static int sonypi_acpi_remove(struct acpi_device *device, int type)
        return 0;
 }
 
+const static struct acpi_device_id sonypi_device_ids[] = {
+       {"SNY6001", 0},
+       {"", 0},
+};
+
 static struct acpi_driver sonypi_acpi_driver = {
        .name           = "sonypi",
        .class          = "hkey",
-       .ids            = "SNY6001",
+       .ids            = sonypi_device_ids,
        .ops            = {
                           .add = sonypi_acpi_add,
                           .remove = sonypi_acpi_remove,
index aaaa61ea4217a5013da3933b768da1e99d261ed3..518d5d33546489e2d4de6fca87e5a9983ce05fb0 100644 (file)
@@ -200,14 +200,22 @@ config THINKPAD_ACPI_BAY
 config THINKPAD_ACPI_INPUT_ENABLED
        bool "Enable input layer support by default"
        depends on THINKPAD_ACPI
-       default y
+       default n
        ---help---
-         Enables hot key handling over the input layer by default.  If unset,
-         the driver does not enable any hot key handling by default, and also
-         starts up with a mostly empty keymap.
-
-         If you are not sure, say Y here.  Say N to retain the deprecated
-         behavior of ibm-acpi, and thinkpad-acpi for kernels up to 2.6.21.
+         This option enables thinkpad-acpi hot key handling over the input
+         layer at driver load time.  When it is unset, the driver does not
+         enable hot key handling by default, and also starts up with a mostly
+         empty keymap.
+
+         This option should be enabled if you have a new enough HAL or other
+         userspace support that properly handles the thinkpad-acpi event
+         device.  It auto-tunes the hot key support to those reported by the
+         firmware and enables it automatically.
+
+         If unsure, say N here to retain the old behaviour of ibm-acpi, and
+         thinkpad-acpi up to kernel 2.6.21: userspace will have to enable and
+         set up the thinkpad-acpi hot key handling using the sysfs interace
+         after loading the driver.
 
 
 endif # MISC_DEVICES
index 14ee06c8f12727ebd3d0a950b7e870d440616305..91da6880ae9390fc2e46490836cd7de97ba27367 100644 (file)
@@ -845,7 +845,7 @@ static struct sony_nc_event sony_C_events[] = {
 };
 
 /* SNC-only model map */
-struct dmi_system_id sony_nc_ids[] = {
+static struct dmi_system_id sony_nc_ids[] = {
                {
                        .ident = "Sony Vaio FE Series",
                        .callback = sony_nc_C_enable,
@@ -942,6 +942,11 @@ static int sony_nc_resume(struct acpi_device *device)
                }
        }
 
+       /* set the last requested brightness level */
+       if (sony_backlight_device &&
+                       !sony_backlight_update_status(sony_backlight_device))
+               printk(KERN_WARNING DRV_PFX "unable to restore brightness level");
+
        /* re-initialize models with specific requirements */
        dmi_check_system(sony_nc_ids);
 
index fa80f355e522ffc65f6a67caa96659e1e7f2e7d0..f6cd34a3dbaca218cf0ff8a19ff94d03c41cb8d7 100644 (file)
@@ -4668,12 +4668,15 @@ static int __init thinkpad_acpi_module_init(void)
                thinkpad_acpi_module_exit();
                return ret;
        }
+       tp_features.platform_drv_registered = 1;
+
        ret = tpacpi_create_driver_attributes(&tpacpi_pdriver.driver);
        if (ret) {
                printk(IBM_ERR "unable to create sysfs driver attributes\n");
                thinkpad_acpi_module_exit();
                return ret;
        }
+       tp_features.platform_drv_attrs_registered = 1;
 
 
        /* Device initialization */
@@ -4756,8 +4759,11 @@ static void thinkpad_acpi_module_exit(void)
        if (tpacpi_pdev)
                platform_device_unregister(tpacpi_pdev);
 
-       tpacpi_remove_driver_attributes(&tpacpi_pdriver.driver);
-       platform_driver_unregister(&tpacpi_pdriver);
+       if (tp_features.platform_drv_attrs_registered)
+               tpacpi_remove_driver_attributes(&tpacpi_pdriver.driver);
+
+       if (tp_features.platform_drv_registered)
+               platform_driver_unregister(&tpacpi_pdriver);
 
        if (proc_dir)
                remove_proc_entry(IBM_PROC_DIR, acpi_root_dir);
index 88af089d64945b41a5150e545a5064ce1b6f0a5a..eee8809a50d9aed1ed796a20fe6f4c5a6ae4ae5c 100644 (file)
@@ -246,6 +246,8 @@ static struct {
        u16 wan:1;
        u16 fan_ctrl_status_undef:1;
        u16 input_device_registered:1;
+       u16 platform_drv_registered:1;
+       u16 platform_drv_attrs_registered:1;
 } tp_features;
 
 struct thinkpad_id_data {