Commit 3b6919e5 authored by Len Brown's avatar Len Brown

pull asus sony thinkpad into release branch

...@@ -105,10 +105,10 @@ The version of thinkpad-acpi's sysfs interface is exported by the driver ...@@ -105,10 +105,10 @@ The version of thinkpad-acpi's sysfs interface is exported by the driver
as a driver attribute (see below). as a driver attribute (see below).
Sysfs driver attributes are on the driver's sysfs attribute space, 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, 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 Driver version
-------------- --------------
......
...@@ -1192,6 +1192,7 @@ static int asus_hotk_get_info(void) ...@@ -1192,6 +1192,7 @@ static int asus_hotk_get_info(void)
break; break;
default: default:
kfree(model); kfree(model);
model = NULL;
break; break;
} }
} }
......
...@@ -1147,10 +1147,15 @@ static int sonypi_acpi_remove(struct acpi_device *device, int type) ...@@ -1147,10 +1147,15 @@ static int sonypi_acpi_remove(struct acpi_device *device, int type)
return 0; return 0;
} }
const static struct acpi_device_id sonypi_device_ids[] = {
{"SNY6001", 0},
{"", 0},
};
static struct acpi_driver sonypi_acpi_driver = { static struct acpi_driver sonypi_acpi_driver = {
.name = "sonypi", .name = "sonypi",
.class = "hkey", .class = "hkey",
.ids = "SNY6001", .ids = sonypi_device_ids,
.ops = { .ops = {
.add = sonypi_acpi_add, .add = sonypi_acpi_add,
.remove = sonypi_acpi_remove, .remove = sonypi_acpi_remove,
......
...@@ -200,14 +200,22 @@ config THINKPAD_ACPI_BAY ...@@ -200,14 +200,22 @@ config THINKPAD_ACPI_BAY
config THINKPAD_ACPI_INPUT_ENABLED config THINKPAD_ACPI_INPUT_ENABLED
bool "Enable input layer support by default" bool "Enable input layer support by default"
depends on THINKPAD_ACPI depends on THINKPAD_ACPI
default y default n
---help--- ---help---
Enables hot key handling over the input layer by default. If unset, This option enables thinkpad-acpi hot key handling over the input
the driver does not enable any hot key handling by default, and also layer at driver load time. When it is unset, the driver does not
starts up with a mostly empty keymap. enable 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 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 endif # MISC_DEVICES
...@@ -845,7 +845,7 @@ static struct sony_nc_event sony_C_events[] = { ...@@ -845,7 +845,7 @@ static struct sony_nc_event sony_C_events[] = {
}; };
/* SNC-only model map */ /* SNC-only model map */
struct dmi_system_id sony_nc_ids[] = { static struct dmi_system_id sony_nc_ids[] = {
{ {
.ident = "Sony Vaio FE Series", .ident = "Sony Vaio FE Series",
.callback = sony_nc_C_enable, .callback = sony_nc_C_enable,
...@@ -942,6 +942,11 @@ static int sony_nc_resume(struct acpi_device *device) ...@@ -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 */ /* re-initialize models with specific requirements */
dmi_check_system(sony_nc_ids); dmi_check_system(sony_nc_ids);
......
...@@ -4668,12 +4668,15 @@ static int __init thinkpad_acpi_module_init(void) ...@@ -4668,12 +4668,15 @@ static int __init thinkpad_acpi_module_init(void)
thinkpad_acpi_module_exit(); thinkpad_acpi_module_exit();
return ret; return ret;
} }
tp_features.platform_drv_registered = 1;
ret = tpacpi_create_driver_attributes(&tpacpi_pdriver.driver); ret = tpacpi_create_driver_attributes(&tpacpi_pdriver.driver);
if (ret) { if (ret) {
printk(IBM_ERR "unable to create sysfs driver attributes\n"); printk(IBM_ERR "unable to create sysfs driver attributes\n");
thinkpad_acpi_module_exit(); thinkpad_acpi_module_exit();
return ret; return ret;
} }
tp_features.platform_drv_attrs_registered = 1;
/* Device initialization */ /* Device initialization */
...@@ -4756,8 +4759,11 @@ static void thinkpad_acpi_module_exit(void) ...@@ -4756,8 +4759,11 @@ static void thinkpad_acpi_module_exit(void)
if (tpacpi_pdev) if (tpacpi_pdev)
platform_device_unregister(tpacpi_pdev); platform_device_unregister(tpacpi_pdev);
tpacpi_remove_driver_attributes(&tpacpi_pdriver.driver); if (tp_features.platform_drv_attrs_registered)
platform_driver_unregister(&tpacpi_pdriver); tpacpi_remove_driver_attributes(&tpacpi_pdriver.driver);
if (tp_features.platform_drv_registered)
platform_driver_unregister(&tpacpi_pdriver);
if (proc_dir) if (proc_dir)
remove_proc_entry(IBM_PROC_DIR, acpi_root_dir); remove_proc_entry(IBM_PROC_DIR, acpi_root_dir);
......
...@@ -246,6 +246,8 @@ static struct { ...@@ -246,6 +246,8 @@ static struct {
u16 wan:1; u16 wan:1;
u16 fan_ctrl_status_undef:1; u16 fan_ctrl_status_undef:1;
u16 input_device_registered:1; u16 input_device_registered:1;
u16 platform_drv_registered:1;
u16 platform_drv_attrs_registered:1;
} tp_features; } tp_features;
struct thinkpad_id_data { struct thinkpad_id_data {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment