public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* ACPI patches for Linux-2.6.25-rc2
@ 2008-02-21  9:25 Len Brown
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
  0 siblings, 1 reply; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi


Once again, the queue for rc2...

Sorry if you've seen this before --
the latest git and vger.kernel.org seem to be
unhappy with each other.

(this attempt is with git v1.5.4.2)

thanks,
-Len



^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 01/26] ACPI: EC: Use proper handle for boot EC
  2008-02-21  9:25 ACPI patches for Linux-2.6.25-rc2 Len Brown
@ 2008-02-21  9:25 ` Len Brown
  2008-02-21  9:25   ` [PATCH 02/26] kernel-doc: fix pci-acpi warning Len Brown
                     ` (24 more replies)
  0 siblings, 25 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Alexey Starikovskiy, Len Brown

From: Alexey Starikovskiy <astarikovskiy@suse.de>

Fall back to ACPI_ROOT_HANDLE only in case of error.

ACPI: EC: EC description table is found, configuring boot EC
ACPI Error (evregion-0316): No handler for Region [ECOR] (ffff81007a651620) [EmbeddedControl] [20070126]
ACPI Error (exfldio-0289): Region EmbeddedControl(3) has no handler [20070126]

http://bugzilla.kernel.org/show_bug.cgi?id=9916

Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/ec.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 7222a18..caf873c 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -943,7 +943,11 @@ int __init acpi_ec_ecdt_probe(void)
 		boot_ec->command_addr = ecdt_ptr->control.address;
 		boot_ec->data_addr = ecdt_ptr->data.address;
 		boot_ec->gpe = ecdt_ptr->gpe;
-		boot_ec->handle = ACPI_ROOT_OBJECT;
+		if (ACPI_FAILURE(acpi_get_handle(NULL, ecdt_ptr->id,
+				&boot_ec->handle))) {
+			pr_info("Failed to locate handle for boot EC\n");
+			boot_ec->handle = ACPI_ROOT_OBJECT;
+		}
 	} else {
 		/* This workaround is needed only on some broken machines,
 		 * which require early EC, but fail to provide ECDT */
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 02/26] kernel-doc: fix pci-acpi warning
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 03/26] thermal: validate input parameters Len Brown
                     ` (23 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Randy Dunlap, Len Brown

From: Randy Dunlap <randy.dunlap@oracle.com>

Fix PCI kernel-doc warning:
Warning(linux-2.6.24-git12//drivers/pci/pci-acpi.c:166): No description found for parameter 'hid'

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/pci/pci-acpi.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index e569645..2f2d308 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -158,6 +158,7 @@ run_osc_out:
 /**
  * __pci_osc_support_set - register OS support to Firmware
  * @flags: OS support bits
+ * @hid: hardware ID
  *
  * Update OS support fields and doing a _OSC Query to obtain an update
  * from Firmware on supported control bits.
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 03/26] thermal: validate input parameters
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
  2008-02-21  9:25   ` [PATCH 02/26] kernel-doc: fix pci-acpi warning Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 04/26] thermal: use ERR_PTR for returning error Len Brown
                     ` (22 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Thomas Sujith, Len Brown

From: Thomas Sujith <sujith.thomas@intel.com>

Added sanity check to make sure that thermal zone
and cooling device exists.

Signed-off-by: Thomas Sujith <sujith.thomas@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/thermal/thermal.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c
index e782b3e..5f1d318 100644
--- a/drivers/thermal/thermal.c
+++ b/drivers/thermal/thermal.c
@@ -306,12 +306,23 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
 {
 	struct thermal_cooling_device_instance *dev;
 	struct thermal_cooling_device_instance *pos;
+	struct thermal_zone_device *pos1;
+	struct thermal_cooling_device *pos2;
 	int result;
 
 	if (trip >= tz->trips || (trip < 0 && trip != THERMAL_TRIPS_NONE))
 		return -EINVAL;
 
-	if (!tz || !cdev)
+	list_for_each_entry(pos1, &thermal_tz_list, node) {
+		if (pos1 == tz)
+			break;
+	}
+	list_for_each_entry(pos2, &thermal_cdev_list, node) {
+		if (pos2 == cdev)
+			break;
+	}
+
+	if (tz != pos1 || cdev != pos2)
 		return -EINVAL;
 
 	dev =
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 04/26] thermal: use ERR_PTR for returning error
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
  2008-02-21  9:25   ` [PATCH 02/26] kernel-doc: fix pci-acpi warning Len Brown
  2008-02-21  9:25   ` [PATCH 03/26] thermal: validate input parameters Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 05/26] ACPI fan: extract return values using PTR_ERR Len Brown
                     ` (21 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Thomas Sujith, Len Brown

From: Thomas Sujith <sujith.thomas@intel.com>

Need to return using ERR_PTR instead of NULL
in case of errors.

Signed-off-by: Thomas Sujith <sujith.thomas@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/thermal/thermal.c |   26 +++++++++++++-------------
 1 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c
index 5f1d318..8b86e53 100644
--- a/drivers/thermal/thermal.c
+++ b/drivers/thermal/thermal.c
@@ -448,20 +448,20 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type,
 	int result;
 
 	if (strlen(type) >= THERMAL_NAME_LENGTH)
-		return NULL;
+		return ERR_PTR(-EINVAL);
 
 	if (!ops || !ops->get_max_state || !ops->get_cur_state ||
 	    !ops->set_cur_state)
-		return NULL;
+		return ERR_PTR(-EINVAL);
 
 	cdev = kzalloc(sizeof(struct thermal_cooling_device), GFP_KERNEL);
 	if (!cdev)
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 
 	result = get_idr(&thermal_cdev_idr, &thermal_idr_lock, &cdev->id);
 	if (result) {
 		kfree(cdev);
-		return NULL;
+		return ERR_PTR(result);
 	}
 
 	strcpy(cdev->type, type);
@@ -473,7 +473,7 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type,
 	if (result) {
 		release_idr(&thermal_cdev_idr, &thermal_idr_lock, cdev->id);
 		kfree(cdev);
-		return NULL;
+		return ERR_PTR(result);
 	}
 
 	/* sys I/F */
@@ -509,7 +509,7 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type,
       unregister:
 	release_idr(&thermal_cdev_idr, &thermal_idr_lock, cdev->id);
 	device_unregister(&cdev->device);
-	return NULL;
+	return ERR_PTR(result);
 }
 
 EXPORT_SYMBOL(thermal_cooling_device_register);
@@ -581,17 +581,17 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
 	int count;
 
 	if (strlen(type) >= THERMAL_NAME_LENGTH)
-		return NULL;
+		return ERR_PTR(-EINVAL);
 
 	if (trips > THERMAL_MAX_TRIPS || trips < 0)
-		return NULL;
+		return ERR_PTR(-EINVAL);
 
 	if (!ops || !ops->get_temp)
-		return NULL;
+		return ERR_PTR(-EINVAL);
 
 	tz = kzalloc(sizeof(struct thermal_zone_device), GFP_KERNEL);
 	if (!tz)
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 
 	INIT_LIST_HEAD(&tz->cooling_devices);
 	idr_init(&tz->idr);
@@ -599,7 +599,7 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
 	result = get_idr(&thermal_tz_idr, &thermal_idr_lock, &tz->id);
 	if (result) {
 		kfree(tz);
-		return NULL;
+		return ERR_PTR(result);
 	}
 
 	strcpy(tz->type, type);
@@ -612,7 +612,7 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
 	if (result) {
 		release_idr(&thermal_tz_idr, &thermal_idr_lock, tz->id);
 		kfree(tz);
-		return NULL;
+		return ERR_PTR(result);
 	}
 
 	/* sys I/F */
@@ -654,7 +654,7 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
       unregister:
 	release_idr(&thermal_tz_idr, &thermal_idr_lock, tz->id);
 	device_unregister(&tz->device);
-	return NULL;
+	return ERR_PTR(result);
 }
 
 EXPORT_SYMBOL(thermal_zone_device_register);
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 05/26] ACPI fan: extract return values using PTR_ERR
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (2 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 04/26] thermal: use ERR_PTR for returning error Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 06/26] ACPI: thermal: Check whether cooling device exists before unregistering Len Brown
                     ` (20 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Thomas Sujith, Len Brown

From: Thomas Sujith <sujith.thomas@intel.com>

Need to extract errors using PTR_ERR macro and
process accordingly.  thermal_cooling_device_register
returning NULL means that CONFIG_THERMAL=n and in that
case no need to create symbolic links.

Signed-off-by: Thomas Sujith <sujith.thomas@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/fan.c |   30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c
index 48cb705..c8e3cba 100644
--- a/drivers/acpi/fan.c
+++ b/drivers/acpi/fan.c
@@ -256,22 +256,28 @@ static int acpi_fan_add(struct acpi_device *device)
 
 	cdev = thermal_cooling_device_register("Fan", device,
 						&fan_cooling_ops);
-	if (cdev)
+	if (IS_ERR(cdev)) {
+		result = PTR_ERR(cdev);
+		goto end;
+	}
+	if (cdev) {
 		printk(KERN_INFO PREFIX
 			"%s is registered as cooling_device%d\n",
 			device->dev.bus_id, cdev->id);
-	else
-		goto end;
-	acpi_driver_data(device) = cdev;
-	result = sysfs_create_link(&device->dev.kobj, &cdev->device.kobj,
-					"thermal_cooling");
-	if (result)
-		return result;
 
-	result = sysfs_create_link(&cdev->device.kobj, &device->dev.kobj,
-                                       "device");
-        if (result)
-                return result;
+		acpi_driver_data(device) = cdev;
+		result = sysfs_create_link(&device->dev.kobj,
+					   &cdev->device.kobj,
+					   "thermal_cooling");
+		if (result)
+			return result;
+
+		result = sysfs_create_link(&cdev->device.kobj,
+					   &device->dev.kobj,
+					   "device");
+		if (result)
+			return result;
+	}
 
 	result = acpi_fan_add_fs(device);
 	if (result)
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 06/26] ACPI: thermal: Check whether cooling device exists before unregistering
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (3 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 05/26] ACPI fan: extract return values using PTR_ERR Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 07/26] ACPI thermal: extract return values using PTR_ERR Len Brown
                     ` (19 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Zhao Yakui, Len Brown

From: Zhao Yakui <yakui.zhao@intel.com>

OS should check whether the cooling device exists before it is unregistered.
If it doesn't exists, it is unnecessary to remove the sysfs link
and call the function of thermal_cooling_device_unregister.

http://bugzilla.kernel.org/show_bug.cgi?id=9982

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Tested-by    : Dhaval Giani <dhaval@linux.vnet.ibm.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/processor_core.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index 75ccf5d..697335c 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -809,10 +809,12 @@ static int acpi_processor_remove(struct acpi_device *device, int type)
 
 	acpi_processor_remove_fs(device);
 
-	sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
-	sysfs_remove_link(&pr->cdev->device.kobj, "device");
-	thermal_cooling_device_unregister(pr->cdev);
-	pr->cdev = NULL;
+	if (pr->cdev) {
+		sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
+		sysfs_remove_link(&pr->cdev->device.kobj, "device");
+		thermal_cooling_device_unregister(pr->cdev);
+		pr->cdev = NULL;
+	}
 
 	processors[pr->id] = NULL;
 
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 07/26] ACPI thermal: extract return values using PTR_ERR
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (4 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 06/26] ACPI: thermal: Check whether cooling device exists before unregistering Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 08/26] ACPI video: check for error from thermal_cooling_device_register Len Brown
                     ` (18 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Thomas Sujith, Len Brown

From: Thomas Sujith <sujith.thomas@intel.com>

Need to extract errors using PTR_ERR macro and
process accordingly.thermal_cooling_device_register
returning NULL means that CONFIG_THERMAL=n and in that
case no need to create symbolic links.

Signed-off-by: Thomas Sujith <sujith.thomas@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/processor_core.c |   37 ++++++++++++++++++++++---------------
 1 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index 75ccf5d..b020069 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -670,21 +670,26 @@ static int __cpuinit acpi_processor_start(struct acpi_device *device)
 
 	pr->cdev = thermal_cooling_device_register("Processor", device,
 						&processor_cooling_ops);
-	if (pr->cdev)
+	if (IS_ERR(pr->cdev)) {
+		result = PTR_ERR(pr->cdev);
+		goto end;
+	}
+	if (pr->cdev) {
 		printk(KERN_INFO PREFIX
 			"%s is registered as cooling_device%d\n",
 			device->dev.bus_id, pr->cdev->id);
-	else
-		goto end;
 
-	result = sysfs_create_link(&device->dev.kobj, &pr->cdev->device.kobj,
-					"thermal_cooling");
-	if (result)
-		return result;
-	result = sysfs_create_link(&pr->cdev->device.kobj, &device->dev.kobj,
-					"device");
-	if (result)
-		return result;
+		result = sysfs_create_link(&device->dev.kobj,
+					   &pr->cdev->device.kobj,
+					   "thermal_cooling");
+		if (result)
+			return result;
+		result = sysfs_create_link(&pr->cdev->device.kobj,
+					   &device->dev.kobj,
+					   "device");
+		if (result)
+			return result;
+	}
 
 	if (pr->flags.throttling) {
 		printk(KERN_INFO PREFIX "%s [%s] (supports",
@@ -809,10 +814,12 @@ static int acpi_processor_remove(struct acpi_device *device, int type)
 
 	acpi_processor_remove_fs(device);
 
-	sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
-	sysfs_remove_link(&pr->cdev->device.kobj, "device");
-	thermal_cooling_device_unregister(pr->cdev);
-	pr->cdev = NULL;
+	if (pr->cdev) {
+		sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
+		sysfs_remove_link(&pr->cdev->device.kobj, "device");
+		thermal_cooling_device_unregister(pr->cdev);
+		pr->cdev = NULL;
+	}
 
 	processors[pr->id] = NULL;
 
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 08/26] ACPI video: check for error from thermal_cooling_device_register
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (5 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 07/26] ACPI thermal: extract return values using PTR_ERR Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 09/26] intel_menlo: extract return values using PTR_ERR Len Brown
                     ` (17 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Thomas Sujith, Len Brown

From: Thomas Sujith <sujith.thomas@intel.com>

Need to check whether thermal_cooling_device_register
returned ERROR or not.

Signed-off-by: Thomas Sujith <sujith.thomas@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/video.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 7f714fa..12cce69 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -731,6 +731,9 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
 
 		device->cdev = thermal_cooling_device_register("LCD",
 					device->dev, &video_cooling_ops);
+		if (IS_ERR(device->cdev))
+			return;
+
 		if (device->cdev) {
 			printk(KERN_INFO PREFIX
 				"%s is registered as cooling_device%d\n",
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 09/26] intel_menlo: extract return values using PTR_ERR
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (6 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 08/26] ACPI video: check for error from thermal_cooling_device_register Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 10/26] ACPI: thinkpad-acpi: trivial fix to module_desc typo Len Brown
                     ` (16 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Thomas Sujith, Len Brown

From: Thomas Sujith <sujith.thomas@intel.com>

Need to extract errors using PTR_ERR macro and
process accordingly.thermal_cooling_device_register
returning NULL means that CONFIG_THERMAL=n and in that
case no need to create symbolic links.

Signed-off-by: Thomas Sujith <sujith.thomas@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/misc/intel_menlow.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/misc/intel_menlow.c b/drivers/misc/intel_menlow.c
index f70984a..de16e88 100644
--- a/drivers/misc/intel_menlow.c
+++ b/drivers/misc/intel_menlow.c
@@ -170,10 +170,13 @@ static int intel_menlow_memory_add(struct acpi_device *device)
 
 	cdev = thermal_cooling_device_register("Memory controller", device,
 					       &memory_cooling_ops);
-	acpi_driver_data(device) = cdev;
-	if (!cdev)
-		result = -ENODEV;
-	else {
+	if (IS_ERR(cdev)) {
+		result = PTR_ERR(cdev);
+		goto end;
+	}
+
+	if (cdev) {
+		acpi_driver_data(device) = cdev;
 		result = sysfs_create_link(&device->dev.kobj,
 					&cdev->device.kobj, "thermal_cooling");
 		if (result)
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 10/26] ACPI: thinkpad-acpi: trivial fix to module_desc typo
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (7 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 09/26] intel_menlo: extract return values using PTR_ERR Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 11/26] ACPI: thinkpad-acpi: trivial fix to documentation Len Brown
                     ` (15 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

Thanks to Damjan <gdamjan@mail.net.mk> for noticing this one.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/misc/thinkpad_acpi.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index e2c7edd..723d37b 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -5918,7 +5918,7 @@ MODULE_PARM_DESC(hotkey_report_mode,
 
 #define TPACPI_PARAM(feature) \
 	module_param_call(feature, set_ibm_param, NULL, NULL, 0); \
-	MODULE_PARM_DESC(feature, "Simulates thinkpad-aci procfs command " \
+	MODULE_PARM_DESC(feature, "Simulates thinkpad-acpi procfs command " \
 			 "at module load, see documentation")
 
 TPACPI_PARAM(hotkey);
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 11/26] ACPI: thinkpad-acpi: trivial fix to documentation
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (8 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 10/26] ACPI: thinkpad-acpi: trivial fix to module_desc typo Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 12/26] ACPI: thinkpad-acpi: always track input device open/close Len Brown
                     ` (14 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

Fix a stray ibm-acpi that should have been replaced with thinkpad-acpi.
Thanks to Damjan <gdamjan@mail.net.mk> for noticing this one.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 Documentation/laptops/thinkpad-acpi.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index 6c24777..33d6e5a 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -1309,7 +1309,7 @@ Enabling debugging output
 The module takes a debug parameter which can be used to selectively
 enable various classes of debugging output, for example:
 
-	 modprobe ibm_acpi debug=0xffff
+	 modprobe thinkpad_acpi debug=0xffff
 
 will enable all debugging output classes.  It takes a bitmask, so
 to enable more than one output class, just add their values.
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 12/26] ACPI: thinkpad-acpi: always track input device open/close
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (9 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 11/26] ACPI: thinkpad-acpi: trivial fix to documentation Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 13/26] ACPI: thinkpad-acpi: synchronize input device switches Len Brown
                     ` (13 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

The open() and close() hooks for the input device are useful even when
hotkey NVRAM polling support is not in use, so it is better to always have
them around.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/misc/thinkpad_acpi.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index 723d37b..6da3f40 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -1417,6 +1417,14 @@ static void hotkey_poll_setup_safe(int may_warn)
 	mutex_unlock(&hotkey_mutex);
 }
 
+#else /* CONFIG_THINKPAD_ACPI_HOTKEY_POLL */
+
+static void hotkey_poll_setup_safe(int __unused)
+{
+}
+
+#endif /* CONFIG_THINKPAD_ACPI_HOTKEY_POLL */
+
 static int hotkey_inputdev_open(struct input_dev *dev)
 {
 	switch (tpacpi_lifecycle) {
@@ -1444,7 +1452,6 @@ static void hotkey_inputdev_close(struct input_dev *dev)
 	if (tpacpi_lifecycle == TPACPI_LIFE_RUNNING)
 		hotkey_poll_setup_safe(0);
 }
-#endif /* CONFIG_THINKPAD_ACPI_HOTKEY_POLL */
 
 /* sysfs hotkey enable ------------------------------------------------- */
 static ssize_t hotkey_enable_show(struct device *dev,
@@ -2023,12 +2030,10 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
 				(hotkey_report_mode < 2) ?
 					"enabled" : "disabled");
 
-#ifdef CONFIG_THINKPAD_ACPI_HOTKEY_POLL
 		tpacpi_inputdev->open = &hotkey_inputdev_open;
 		tpacpi_inputdev->close = &hotkey_inputdev_close;
 
 		hotkey_poll_setup_safe(1);
-#endif
 	}
 
 	return (tp_features.hotkey)? 0 : 1;
@@ -2221,9 +2226,7 @@ static void hotkey_resume(void)
 	hotkey_radio_sw_notify_change();
 	hotkey_wakeup_reason_notify_change();
 	hotkey_wakeup_hotunplug_complete_notify_change();
-#ifdef CONFIG_THINKPAD_ACPI_HOTKEY_POLL
 	hotkey_poll_setup_safe(0);
-#endif
 }
 
 /* procfs -------------------------------------------------------------- */
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 13/26] ACPI: thinkpad-acpi: synchronize input device switches
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (10 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 12/26] ACPI: thinkpad-acpi: always track input device open/close Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 14/26] ACPI: thinkpad-acpi: make the video output feature optional Len Brown
                     ` (12 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

Issue EV_SW events at module init time to synchronize the input device with
the current state of the switch, otherwise we might lose the first event.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/misc/thinkpad_acpi.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index 6da3f40..02f9465 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -2034,6 +2034,7 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
 		tpacpi_inputdev->close = &hotkey_inputdev_close;
 
 		hotkey_poll_setup_safe(1);
+		tpacpi_input_send_radiosw();
 	}
 
 	return (tp_features.hotkey)? 0 : 1;
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 14/26] ACPI: thinkpad-acpi: make the video output feature optional
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (11 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 13/26] ACPI: thinkpad-acpi: synchronize input device switches Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 15/26] ACPI: thinkpad-acpi: issue input events for tablet swivel events Len Brown
                     ` (11 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

The video output port control feature is not very useful on many ThinkPads
(especially when a X server is running), and lately userspace is getting
better and better at it, so it makes sense to allow users to stripe out the
thinkpad-acpi video feature from their kernels and save at least 2KB.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/misc/Kconfig         |   17 +++++++++++++++++
 drivers/misc/thinkpad_acpi.c |   20 +++++++++++++-------
 2 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 1abc95c..982e27b 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -258,6 +258,23 @@ config THINKPAD_ACPI_BAY
 
 	  If you are not sure, say Y here.
 
+config THINKPAD_ACPI_VIDEO
+	bool "Video output control support"
+	depends on THINKPAD_ACPI
+	default y
+	---help---
+	  Allows the thinkpad_acpi driver to provide an interface to control
+	  the various video output ports.
+
+	  This feature often won't work well, depending on ThinkPad model,
+	  display state, video output devices in use, whether there is a X
+	  server running, phase of the moon, and the current mood of
+	  Schroedinger's cat.  If you can use X.org's RandR to control
+	  your ThinkPad's video output ports instead of this feature,
+	  don't think twice: do it and say N here to save some memory.
+
+	  If you are not sure, say Y here.
+
 config THINKPAD_ACPI_HOTKEY_POLL
 	bool "Suport NVRAM polling for hot keys"
 	depends on THINKPAD_ACPI
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index 02f9465..4ea3866 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -301,6 +301,13 @@ TPACPI_HANDLE(hkey, ec, "\\_SB.HKEY",	/* 600e/x, 770e, 770x */
 	   "HKEY",		/* all others */
 	   );			/* 570 */
 
+TPACPI_HANDLE(vid, root, "\\_SB.PCI.AGP.VGA",	/* 570 */
+	   "\\_SB.PCI0.AGP0.VID0",	/* 600e/x, 770x */
+	   "\\_SB.PCI0.VID0",	/* 770e */
+	   "\\_SB.PCI0.VID",	/* A21e, G4x, R50e, X30, X40 */
+	   "\\_SB.PCI0.AGP.VID",	/* all others */
+	   );				/* R30, R31 */
+
 
 /*************************************************************************
  * ACPI helpers
@@ -2680,6 +2687,8 @@ static struct ibm_struct wan_driver_data = {
  * Video subdriver
  */
 
+#ifdef CONFIG_THINKPAD_ACPI_VIDEO
+
 enum video_access_mode {
 	TPACPI_VIDEO_NONE = 0,
 	TPACPI_VIDEO_570,	/* 570 */
@@ -2707,13 +2716,6 @@ static int video_orig_autosw;
 static int video_autosw_get(void);
 static int video_autosw_set(int enable);
 
-TPACPI_HANDLE(vid, root, "\\_SB.PCI.AGP.VGA",	/* 570 */
-	   "\\_SB.PCI0.AGP0.VID0",	/* 600e/x, 770x */
-	   "\\_SB.PCI0.VID0",	/* 770e */
-	   "\\_SB.PCI0.VID",	/* A21e, G4x, R50e, X30, X40 */
-	   "\\_SB.PCI0.AGP.VID",	/* all others */
-	   );				/* R30, R31 */
-
 TPACPI_HANDLE(vid2, root, "\\_SB.PCI0.AGPB.VID");	/* G41 */
 
 static int __init video_init(struct ibm_init_struct *iibm)
@@ -3023,6 +3025,8 @@ static struct ibm_struct video_driver_data = {
 	.exit = video_exit,
 };
 
+#endif /* CONFIG_THINKPAD_ACPI_VIDEO */
+
 /*************************************************************************
  * Light (thinklight) subdriver
  */
@@ -5807,10 +5811,12 @@ static struct ibm_init_struct ibms_init[] __initdata = {
 		.init = wan_init,
 		.data = &wan_driver_data,
 	},
+#ifdef CONFIG_THINKPAD_ACPI_VIDEO
 	{
 		.init = video_init,
 		.data = &video_driver_data,
 	},
+#endif
 	{
 		.init = light_init,
 		.data = &light_driver_data,
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 15/26] ACPI: thinkpad-acpi: issue input events for tablet swivel events
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (12 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 14/26] ACPI: thinkpad-acpi: make the video output feature optional Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 16/26] ACPI: thinkpad-acpi: improve thinkpad-acpi input device documentation Len Brown
                     ` (10 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

Issue EV_SW SW_TABLET_MODE events for HKEY events 0x5009 and 0x500A on the
X41t/X60t/X61t.  As usual, we suppress the HKEY events on the netlink
interface to avoid sending duplicate events to userspace.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 Documentation/laptops/thinkpad-acpi.txt |    4 ++--
 drivers/misc/thinkpad_acpi.c            |   22 ++++++++++++++++++++--
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index 33d6e5a..0ae5708 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -491,6 +491,8 @@ generate input device EV_KEY events.
 Non hot-key ACPI HKEY event map:
 0x5001		Lid closed
 0x5002		Lid opened
+0x5009		Tablet swivel: switched to tablet mode
+0x500A		Tablet swivel: switched to normal mode
 0x7000		Radio Switch may have changed state
 
 The above events are not propagated by the driver, except for legacy
@@ -505,8 +507,6 @@ The above events are never propagated by the driver.
 
 0x3003		Bay ejection (see 0x2x05) complete, can sleep again
 0x4003		Undocked (see 0x2x04), can sleep again
-0x5009		Tablet swivel: switched to tablet mode
-0x500A		Tablet swivel: switched to normal mode
 0x500B		Tablet pen insterted into its storage bay
 0x500C		Tablet pen removed from its storage bay
 0x5010		Brightness level changed (newer Lenovo BIOSes)
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index 4ea3866..3548350 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -1172,6 +1172,17 @@ static void tpacpi_input_send_radiosw(void)
 	mutex_unlock(&tpacpi_inputdev_send_mutex);
 }
 
+static void tpacpi_input_send_tabletsw(unsigned int state)
+{
+	mutex_lock(&tpacpi_inputdev_send_mutex);
+
+	input_report_switch(tpacpi_inputdev,
+			    SW_TABLET_MODE, !!state);
+	input_sync(tpacpi_inputdev);
+
+	mutex_unlock(&tpacpi_inputdev_send_mutex);
+}
+
 static void tpacpi_input_send_key(unsigned int scancode)
 {
 	unsigned int keycode;
@@ -2020,6 +2031,10 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
 			set_bit(EV_SW, tpacpi_inputdev->evbit);
 			set_bit(SW_RADIO, tpacpi_inputdev->swbit);
 		}
+		if (thinkpad_id.vendor == PCI_VENDOR_ID_LENOVO) {
+			set_bit(EV_SW, tpacpi_inputdev->evbit);
+			set_bit(SW_TABLET_MODE, tpacpi_inputdev->swbit);
+		}
 
 		dbg_printk(TPACPI_DBG_INIT,
 				"enabling hot key handling\n");
@@ -2169,11 +2184,14 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
 			/* 0x5000-0x5FFF: human interface helpers */
 			switch (hkey) {
 			case 0x5010: /* Lenovo new BIOS: brightness changed */
-			case 0x5009: /* X61t: swivel up (tablet mode) */
-			case 0x500a: /* X61t: swivel down (normal mode) */
 			case 0x500b: /* X61t: tablet pen inserted into bay */
 			case 0x500c: /* X61t: tablet pen removed from bay */
 				break;
+			case 0x5009: /* X61t: swivel up (tablet mode) */
+			case 0x500a: /* X61t: swivel down (normal mode) */
+				tpacpi_input_send_tabletsw((hkey == 0x5009));
+				send_acpi_ev = 0;
+				break;
 			case 0x5001:
 			case 0x5002:
 				/* LID switch events.  Do not propagate */
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 16/26] ACPI: thinkpad-acpi: improve thinkpad-acpi input device documentation
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (13 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 15/26] ACPI: thinkpad-acpi: issue input events for tablet swivel events Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 17/26] ACPI: thinkpad-acpi: minor hotkey_radio_sw fixes Len Brown
                     ` (9 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

Fix a few spelling errors, and also document the EV_SW events thinkpad-acpi
can issue.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 Documentation/laptops/thinkpad-acpi.txt |   48 +++++++++++++++++-------------
 1 files changed, 27 insertions(+), 21 deletions(-)

diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index 0ae5708..91f688c 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -160,7 +160,7 @@ Hot keys
 procfs: /proc/acpi/ibm/hotkey
 sysfs device attribute: hotkey_*
 
-In a ThinkPad, the ACPI HKEY handler is responsible for comunicating
+In a ThinkPad, the ACPI HKEY handler is responsible for communicating
 some important events and also keyboard hot key presses to the operating
 system.  Enabling the hotkey functionality of thinkpad-acpi signals the
 firmware that such a driver is present, and modifies how the ThinkPad
@@ -193,7 +193,7 @@ Not all bits in the mask can be modified.  Not all bits that can be
 modified do anything.  Not all hot keys can be individually controlled
 by the mask.  Some models do not support the mask at all, and in those
 models, hot keys cannot be controlled individually.  The behaviour of
-the mask is, therefore, higly dependent on the ThinkPad model.
+the mask is, therefore, highly dependent on the ThinkPad model.
 
 Note that unmasking some keys prevents their default behavior.  For
 example, if Fn+F5 is unmasked, that key will no longer enable/disable
@@ -288,7 +288,7 @@ sysfs notes:
 		in ACPI event mode, volume up/down/mute are reported as
 		separate events, but this behaviour may be corrected in
 		future releases of this driver, in which case the
-		ThinkPad volume mixer user interface semanthics will be
+		ThinkPad volume mixer user interface semantics will be
 		enforced.
 
 	hotkey_poll_freq:
@@ -308,7 +308,7 @@ sysfs notes:
 	hotkey_radio_sw:
 		if the ThinkPad has a hardware radio switch, this
 		attribute will read 0 if the switch is in the "radios
-		disabled" postition, and 1 if the switch is in the
+		disabled" position, and 1 if the switch is in the
 		"radios enabled" position.
 
 		This attribute has poll()/select() support.
@@ -339,7 +339,7 @@ sysfs notes:
 	wakeup_hotunplug_complete:
 		Set to 1 if the system was waken up because of an
 		undock or bay ejection request, and that request
-		was sucessfully completed.  At this point, it might
+		was successfully completed.  At this point, it might
 		be useful to send the system back to sleep, at the
 		user's choice.  Refer to HKEY events 0x4003 and
 		0x3003, below.
@@ -392,7 +392,7 @@ event	code	Key		Notes
 				Lenovo: battery
 
 0x1004	0x03	FN+F4		Sleep button (ACPI sleep button
-				semanthics, i.e. sleep-to-RAM).
+				semantics, i.e. sleep-to-RAM).
 				It is always generate some kind
 				of event, either the hot key
 				event or a ACPI sleep button
@@ -403,12 +403,12 @@ event	code	Key		Notes
 				time passes.
 
 0x1005	0x04	FN+F5		Radio.  Enables/disables
-				the internal BlueTooth hardware
+				the internal Bluetooth hardware
 				and W-WAN card if left in control
 				of the firmware.  Does not affect
 				the WLAN card.
 				Should be used to turn on/off all
-				radios (bluetooth+W-WAN+WLAN),
+				radios (Bluetooth+W-WAN+WLAN),
 				really.
 
 0x1006	0x05	FN+F6		-
@@ -417,7 +417,7 @@ event	code	Key		Notes
 				Do you feel lucky today?
 
 0x1008	0x07	FN+F8		IBM: toggle screen expand
-				Lenovo: configure ultranav
+				Lenovo: configure UltraNav
 
 0x1009	0x08	FN+F9		-
 	..	..		..
@@ -447,7 +447,7 @@ event	code	Key		Notes
 0x1011	0x10	FN+END		Brightness down.  See brightness
 				up for details.
 
-0x1012	0x11	FN+PGUP		Thinklight toggle.  This key is
+0x1012	0x11	FN+PGUP		ThinkLight toggle.  This key is
 				always handled by the firmware,
 				even when unmasked.
 
@@ -469,7 +469,7 @@ event	code	Key		Notes
 				key is always handled by the
 				firmware, even when unmasked.
 
-0x1018	0x17	THINKPAD	Thinkpad/Access IBM/Lenovo key
+0x1018	0x17	THINKPAD	ThinkPad/Access IBM/Lenovo key
 
 0x1019	0x18	unknown
 ..	..	..
@@ -488,6 +488,12 @@ If a key is mapped to KEY_UNKNOWN, it generates an input event that
 includes an scan code.  If a key is mapped to anything else, it will
 generate input device EV_KEY events.
 
+In addition to the EV_KEY events, thinkpad-acpi may also issue EV_SW
+events for switches:
+
+SW_RADIO	T60 and later hardare rfkill rocker switch
+SW_TABLET_MODE	Tablet ThinkPads HKEY events 0x5009 and 0x500A
+
 Non hot-key ACPI HKEY event map:
 0x5001		Lid closed
 0x5002		Lid opened
@@ -507,7 +513,7 @@ The above events are never propagated by the driver.
 
 0x3003		Bay ejection (see 0x2x05) complete, can sleep again
 0x4003		Undocked (see 0x2x04), can sleep again
-0x500B		Tablet pen insterted into its storage bay
+0x500B		Tablet pen inserted into its storage bay
 0x500C		Tablet pen removed from its storage bay
 0x5010		Brightness level changed (newer Lenovo BIOSes)
 
@@ -539,7 +545,7 @@ sysfs (it is read-only).
 If the hotkey_report_mode module parameter is set to 1 or 2, it cannot
 be changed later through sysfs (any writes will return -EPERM to signal
 that hotkey_report_mode was locked.  On 2.6.23 and later, where
-hotkey_report_mode cannot be changed at all, writes will return -EACES).
+hotkey_report_mode cannot be changed at all, writes will return -EACCES).
 
 hotkey_report_mode set to 1 makes the driver export through the procfs
 ACPI event interface all hot key presses (which are *also* sent to the
@@ -584,7 +590,7 @@ Sysfs notes:
 		0: disables Bluetooth / Bluetooth is disabled
 		1: enables Bluetooth / Bluetooth is enabled.
 
-	Note: this interface will be probably be superseeded by the
+	Note: this interface will be probably be superseded by the
 	generic rfkill class, so it is NOT to be considered stable yet.
 
 Video output control -- /proc/acpi/ibm/video
@@ -791,12 +797,12 @@ on the X40 (tpb is the ThinkPad Buttons utility):
 	1 - Related to "Volume up" key press
 	2 - Related to "Mute on" key press
 	3 - Related to "Access IBM" key press
-	4 - Related to "LCD brightness up" key pess
+	4 - Related to "LCD brightness up" key press
 	5 - Related to "LCD brightness down" key press
 	11 - Related to "toggle screen expansion" key press/function
 	12 - Related to "ThinkLight on"
 	13 - Related to "ThinkLight off"
-	14 - Related to "ThinkLight" key press (toggle thinklight)
+	14 - Related to "ThinkLight" key press (toggle ThinkLight)
 
 The cmos command interface is prone to firmware split-brain problems, as
 in newer ThinkPads it is just a compatibility layer.  Do not use it, it is
@@ -1024,7 +1030,7 @@ There are two interfaces to the firmware for direct brightness control,
 EC and CMOS.  To select which one should be used, use the
 brightness_mode module parameter: brightness_mode=1 selects EC mode,
 brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
-and CMOS.  The driver tries to autodetect which interface to use.
+and CMOS.  The driver tries to auto-detect which interface to use.
 
 When display backlight brightness controls are available through the
 standard ACPI interface, it is best to use it instead of this direct
@@ -1266,8 +1272,8 @@ experimental=1 parameter when loading the module.
 This feature shows the presence and current state of a W-WAN (Sierra
 Wireless EV-DO) device.
 
-It was tested on a Lenovo Thinkpad X60. It should probably work on other
-Thinkpad models which come with this module installed.
+It was tested on a Lenovo ThinkPad X60. It should probably work on other
+ThinkPad models which come with this module installed.
 
 Procfs notes:
 
@@ -1286,7 +1292,7 @@ Sysfs notes:
 		0: disables WWAN card / WWAN card is disabled
 		1: enables WWAN card / WWAN card is enabled.
 
-	Note: this interface will be probably be superseeded by the
+	Note: this interface will be probably be superseded by the
 	generic rfkill class, so it is NOT to be considered stable yet.
 
 Multiple Commands, Module Parameters
@@ -1356,7 +1362,7 @@ Sysfs interface changelog:
 		NVRAM is compiled out by the user because it is
 		unneeded/undesired in the first place).
 0x020101:	Marker for thinkpad-acpi with hot key NVRAM polling
-		and proper hotkey_mask semanthics (version 8 of the
+		and proper hotkey_mask semantics (version 8 of the
 		NVRAM polling patch).  Some development snapshots of
 		0.18 had an earlier version that did strange things
 		to hotkey_mask.
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 17/26] ACPI: thinkpad-acpi: minor hotkey_radio_sw fixes
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (14 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 16/26] ACPI: thinkpad-acpi: improve thinkpad-acpi input device documentation Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 18/26] ACPI: thinkpad-acpi: add tablet-mode reporting Len Brown
                     ` (8 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

Fixes some minor points in the radio switch code and docs.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 Documentation/laptops/thinkpad-acpi.txt |    2 +-
 drivers/misc/thinkpad_acpi.c            |    8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index 91f688c..606af16 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -306,7 +306,7 @@ sysfs notes:
 		The recommended polling frequency is 10Hz.
 
 	hotkey_radio_sw:
-		if the ThinkPad has a hardware radio switch, this
+		If the ThinkPad has a hardware radio switch, this
 		attribute will read 0 if the switch is in the "radios
 		disabled" position, and 1 if the switch is in the
 		"radios enabled" position.
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index 3548350..c119cf2 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -1161,15 +1161,15 @@ static void tpacpi_input_send_radiosw(void)
 {
 	int wlsw;
 
-	mutex_lock(&tpacpi_inputdev_send_mutex);
-
 	if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&wlsw)) {
+		mutex_lock(&tpacpi_inputdev_send_mutex);
+
 		input_report_switch(tpacpi_inputdev,
 				    SW_RADIO, !!wlsw);
 		input_sync(tpacpi_inputdev);
-	}
 
-	mutex_unlock(&tpacpi_inputdev_send_mutex);
+		mutex_unlock(&tpacpi_inputdev_send_mutex);
+	}
 }
 
 static void tpacpi_input_send_tabletsw(unsigned int state)
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 18/26] ACPI: thinkpad-acpi: add tablet-mode reporting
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (15 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 17/26] ACPI: thinkpad-acpi: minor hotkey_radio_sw fixes Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 19/26] ACPI: sparse fix, replace macro with static function Len Brown
                     ` (7 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Henrique de Moraes Holschuh, Len Brown

From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>

A quick study of the 0x5009/0x500A HKEY event on the X61t DSDT revealed the
existence of the EC HTAB register (EC 0x0f, bit 7), and a compare with the
X41t DSDT shows that HKEY.MHKG can be used to verify if the ThinkPad is
tablet-capable (MHKG present), and in tablet mode (bit 3 of MHKG return is
set).

Add an attribute to report this information, "hotkey_tablet_mode".  This
attribute has poll()/select() support, and can be used along with EV_SW
SW_TABLET_MODE to hook userspace to tablet events.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 Documentation/laptops/thinkpad-acpi.txt |    7 +++
 drivers/misc/thinkpad_acpi.c            |   79 ++++++++++++++++++++++++++----
 2 files changed, 75 insertions(+), 11 deletions(-)

diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index 606af16..76cb428 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -313,6 +313,13 @@ sysfs notes:
 
 		This attribute has poll()/select() support.
 
+	hotkey_tablet_mode:
+		If the ThinkPad has tablet capabilities, this attribute
+		will read 0 if the ThinkPad is in normal mode, and
+		1 if the ThinkPad is in tablet mode.
+
+		This attribute has poll()/select() support.
+
 	hotkey_report_mode:
 		Returns the state of the procfs ACPI event report mode
 		filter for hot keys.  If it is set to 1 (the default),
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index c119cf2..bb269d0 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -221,6 +221,7 @@ static struct {
 	u32 hotkey:1;
 	u32 hotkey_mask:1;
 	u32 hotkey_wlsw:1;
+	u32 hotkey_tablet:1;
 	u32 light:1;
 	u32 light_status:1;
 	u32 bright_16levels:1;
@@ -1060,6 +1061,9 @@ static struct attribute_set *hotkey_dev_attributes;
 #define HOTKEY_CONFIG_CRITICAL_END
 #endif /* CONFIG_THINKPAD_ACPI_HOTKEY_POLL */
 
+/* HKEY.MHKG() return bits */
+#define TP_HOTKEY_TABLET_MASK (1 << 3)
+
 static int hotkey_get_wlsw(int *status)
 {
 	if (!acpi_evalf(hkey_handle, status, "WLSW", "d"))
@@ -1067,6 +1071,16 @@ static int hotkey_get_wlsw(int *status)
 	return 0;
 }
 
+static int hotkey_get_tablet_mode(int *status)
+{
+	int s;
+
+	if (!acpi_evalf(hkey_handle, &s, "MHKG", "d"))
+		return -EIO;
+
+	return ((s & TP_HOTKEY_TABLET_MASK) != 0);
+}
+
 /*
  * Call with hotkey_mutex held
  */
@@ -1172,15 +1186,20 @@ static void tpacpi_input_send_radiosw(void)
 	}
 }
 
-static void tpacpi_input_send_tabletsw(unsigned int state)
+static void tpacpi_input_send_tabletsw(void)
 {
-	mutex_lock(&tpacpi_inputdev_send_mutex);
+	int state;
 
-	input_report_switch(tpacpi_inputdev,
-			    SW_TABLET_MODE, !!state);
-	input_sync(tpacpi_inputdev);
+	if (tp_features.hotkey_tablet &&
+	    !hotkey_get_tablet_mode(&state)) {
+		mutex_lock(&tpacpi_inputdev_send_mutex);
 
-	mutex_unlock(&tpacpi_inputdev_send_mutex);
+		input_report_switch(tpacpi_inputdev,
+				    SW_TABLET_MODE, !!state);
+		input_sync(tpacpi_inputdev);
+
+		mutex_unlock(&tpacpi_inputdev_send_mutex);
+	}
 }
 
 static void tpacpi_input_send_key(unsigned int scancode)
@@ -1691,6 +1710,29 @@ static void hotkey_radio_sw_notify_change(void)
 			     "hotkey_radio_sw");
 }
 
+/* sysfs hotkey tablet mode (pollable) --------------------------------- */
+static ssize_t hotkey_tablet_mode_show(struct device *dev,
+			   struct device_attribute *attr,
+			   char *buf)
+{
+	int res, s;
+	res = hotkey_get_tablet_mode(&s);
+	if (res < 0)
+		return res;
+
+	return snprintf(buf, PAGE_SIZE, "%d\n", !!s);
+}
+
+static struct device_attribute dev_attr_hotkey_tablet_mode =
+	__ATTR(hotkey_tablet_mode, S_IRUGO, hotkey_tablet_mode_show, NULL);
+
+static void hotkey_tablet_mode_notify_change(void)
+{
+	if (tp_features.hotkey_tablet)
+		sysfs_notify(&tpacpi_pdev->dev.kobj, NULL,
+			     "hotkey_tablet_mode");
+}
+
 /* sysfs hotkey report_mode -------------------------------------------- */
 static ssize_t hotkey_report_mode_show(struct device *dev,
 			   struct device_attribute *attr,
@@ -1903,7 +1945,7 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
 		str_supported(tp_features.hotkey));
 
 	if (tp_features.hotkey) {
-		hotkey_dev_attributes = create_attr_set(12, NULL);
+		hotkey_dev_attributes = create_attr_set(13, NULL);
 		if (!hotkey_dev_attributes)
 			return -ENOMEM;
 		res = add_many_to_attr_set(hotkey_dev_attributes,
@@ -1982,6 +2024,18 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
 					&dev_attr_hotkey_radio_sw.attr);
 		}
 
+		/* For X41t, X60t, X61t Tablets... */
+		if (!res && acpi_evalf(hkey_handle, &status, "MHKG", "qd")) {
+			tp_features.hotkey_tablet = 1;
+			printk(TPACPI_INFO
+				"possible tablet mode switch found; "
+				"ThinkPad in %s mode\n",
+				(status & TP_HOTKEY_TABLET_MASK)?
+					"tablet" : "laptop");
+			res = add_to_attr_set(hotkey_dev_attributes,
+					&dev_attr_hotkey_tablet_mode.attr);
+		}
+
 		if (!res)
 			res = register_attr_set_with_sysfs(
 					hotkey_dev_attributes,
@@ -2031,7 +2085,7 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
 			set_bit(EV_SW, tpacpi_inputdev->evbit);
 			set_bit(SW_RADIO, tpacpi_inputdev->swbit);
 		}
-		if (thinkpad_id.vendor == PCI_VENDOR_ID_LENOVO) {
+		if (tp_features.hotkey_tablet) {
 			set_bit(EV_SW, tpacpi_inputdev->evbit);
 			set_bit(SW_TABLET_MODE, tpacpi_inputdev->swbit);
 		}
@@ -2057,6 +2111,7 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
 
 		hotkey_poll_setup_safe(1);
 		tpacpi_input_send_radiosw();
+		tpacpi_input_send_tabletsw();
 	}
 
 	return (tp_features.hotkey)? 0 : 1;
@@ -2187,9 +2242,10 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
 			case 0x500b: /* X61t: tablet pen inserted into bay */
 			case 0x500c: /* X61t: tablet pen removed from bay */
 				break;
-			case 0x5009: /* X61t: swivel up (tablet mode) */
-			case 0x500a: /* X61t: swivel down (normal mode) */
-				tpacpi_input_send_tabletsw((hkey == 0x5009));
+			case 0x5009: /* X41t-X61t: swivel up (tablet mode) */
+			case 0x500a: /* X41t-X61t: swivel down (normal mode) */
+				tpacpi_input_send_tabletsw();
+				hotkey_tablet_mode_notify_change();
 				send_acpi_ev = 0;
 				break;
 			case 0x5001:
@@ -2250,6 +2306,7 @@ static void hotkey_resume(void)
 		       "from firmware\n");
 	tpacpi_input_send_radiosw();
 	hotkey_radio_sw_notify_change();
+	hotkey_tablet_mode_notify_change();
 	hotkey_wakeup_reason_notify_change();
 	hotkey_wakeup_hotunplug_complete_notify_change();
 	hotkey_poll_setup_safe(0);
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 19/26] ACPI: sparse fix, replace macro with static function
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (16 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 18/26] ACPI: thinkpad-acpi: add tablet-mode reporting Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 20/26] acer-wmi: Add DMI match for mail LED on Acer TravelMate 4200 series Len Brown
                     ` (6 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Harvey Harrison, Len Brown

From: Harvey Harrison <harvey.harrison@gmail.com>

replace acpi_util_eval_error macro with static function.

Avoid these sparse warnings due to using buffer within the macro.
drivers/acpi/utils.c:273:3: warning: symbol 'buffer' shadows an earlier one
drivers/acpi/utils.c:259:21: originally declared here
drivers/acpi/utils.c:279:3: warning: symbol 'buffer' shadows an earlier one
drivers/acpi/utils.c:259:21: originally declared here
drivers/acpi/utils.c:368:3: warning: symbol 'buffer' shadows an earlier one
drivers/acpi/utils.c:348:21: originally declared here
drivers/acpi/utils.c:375:3: warning: symbol 'buffer' shadows an earlier one
drivers/acpi/utils.c:348:21: originally declared here
drivers/acpi/utils.c:382:3: warning: symbol 'buffer' shadows an earlier one
drivers/acpi/utils.c:348:21: originally declared here
drivers/acpi/utils.c:402:4: warning: symbol 'buffer' shadows an earlier one
drivers/acpi/utils.c:348:21: originally declared here

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/utils.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index 34f1575..eba55b7 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -36,16 +36,20 @@ ACPI_MODULE_NAME("utils");
 /* --------------------------------------------------------------------------
                             Object Evaluation Helpers
    -------------------------------------------------------------------------- */
+static void
+acpi_util_eval_error(acpi_handle h, acpi_string p, acpi_status s)
+{
 #ifdef ACPI_DEBUG_OUTPUT
-#define acpi_util_eval_error(h,p,s) {\
-	char prefix[80] = {'\0'};\
-	struct acpi_buffer buffer = {sizeof(prefix), prefix};\
-	acpi_get_name(h, ACPI_FULL_PATHNAME, &buffer);\
-	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluate [%s.%s]: %s\n",\
-		(char *) prefix, p, acpi_format_exception(s))); }
+	char prefix[80] = {'\0'};
+	struct acpi_buffer buffer = {sizeof(prefix), prefix};
+	acpi_get_name(h, ACPI_FULL_PATHNAME, &buffer);
+	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluate [%s.%s]: %s\n",
+		(char *) prefix, p, acpi_format_exception(s)));
 #else
-#define acpi_util_eval_error(h,p,s)
+	return;
 #endif
+}
+
 acpi_status
 acpi_extract_package(union acpi_object *package,
 		     struct acpi_buffer *format, struct acpi_buffer *buffer)
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 20/26] acer-wmi: Add DMI match for mail LED on Acer TravelMate 4200 series
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (17 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 19/26] ACPI: sparse fix, replace macro with static function Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 21/26] ACPI: remove is_processor_present prototype Len Brown
                     ` (5 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Carlos Corbacho, Len Brown

From: Carlos Corbacho <carlos@strangeworlds.co.uk>

The TM4200 series use the same method as the TM2490 series to control the
mail LED, so add a DMI based quirk for these laptops.

Signed-off-by: Carlos Corbacho <carlos@strangeworlds.co.uk>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/misc/acer-wmi.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/misc/acer-wmi.c b/drivers/misc/acer-wmi.c
index d7aea93..74d12b4 100644
--- a/drivers/misc/acer-wmi.c
+++ b/drivers/misc/acer-wmi.c
@@ -273,6 +273,15 @@ static struct dmi_system_id acer_quirks[] = {
 	},
 	{
 		.callback = dmi_matched,
+		.ident = "Acer TravelMate 4200",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 4200"),
+		},
+		.driver_data = &quirk_acer_travelmate_2490,
+	},
+	{
+		.callback = dmi_matched,
 		.ident = "Medion MD 98300",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 21/26] ACPI: remove is_processor_present prototype
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (18 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 20/26] acer-wmi: Add DMI match for mail LED on Acer TravelMate 4200 series Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 22/26] ACPI: TSC breaks atkbd suspend Len Brown
                     ` (4 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Glauber Costa, Andrew Morton, Len Brown

From: Glauber Costa <gcosta@redhat.com>

The function itself is defined just below, so this prototype is not really
useful.

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/processor_core.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index 75ccf5d..923fddb 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -826,8 +826,6 @@ static int acpi_processor_remove(struct acpi_device *device, int type)
  * 	Acpi processor hotplug support 				       	    *
  ****************************************************************************/
 
-static int is_processor_present(acpi_handle handle);
-
 static int is_processor_present(acpi_handle handle)
 {
 	acpi_status status;
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 22/26] ACPI: TSC breaks atkbd suspend
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (19 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 21/26] ACPI: remove is_processor_present prototype Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 23/26] ACPI: fix build warning Len Brown
                     ` (3 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Pavel Machek, Pavel Machek, Len Brown

From: Pavel Machek <pavel@ucw.cz>

TSC is used even on machines when CONFIG_X86_TSC is not set (X86_TSC
means _require_ TSC), but it is not properly disabled when it is
unusable, because ACPI code understood the config switch as "may use
TSC".

This actually fixes suspend problems on my x60.

Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/processor_idle.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 980e1c3..6f3b217 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -364,7 +364,7 @@ int acpi_processor_resume(struct acpi_device * device)
 	return 0;
 }
 
-#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
+#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
 static int tsc_halts_in_c(int state)
 {
 	switch (boot_cpu_data.x86_vendor) {
@@ -544,7 +544,7 @@ static void acpi_processor_idle(void)
 		/* Get end time (ticks) */
 		t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
 
-#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
+#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
 		/* TSC halts in C2, so notify users */
 		if (tsc_halts_in_c(ACPI_STATE_C2))
 			mark_tsc_unstable("possible TSC halt in C2");
@@ -609,7 +609,7 @@ static void acpi_processor_idle(void)
 			acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0);
 		}
 
-#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
+#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
 		/* TSC halts in C3, so notify users */
 		if (tsc_halts_in_c(ACPI_STATE_C3))
 			mark_tsc_unstable("TSC halts in C3");
@@ -1500,7 +1500,7 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
 	acpi_idle_do_entry(cx);
 	t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
 
-#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
+#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
 	/* TSC could halt in idle, so notify users */
 	if (tsc_halts_in_c(cx->type))
 		mark_tsc_unstable("TSC halts in idle");;
@@ -1614,7 +1614,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
 		spin_unlock(&c3_lock);
 	}
 
-#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
+#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
 	/* TSC could halt in idle, so notify users */
 	if (tsc_halts_in_c(ACPI_STATE_C3))
 		mark_tsc_unstable("TSC halts in idle");
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 23/26] ACPI: fix build warning
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (20 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 22/26] ACPI: TSC breaks atkbd suspend Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 24/26] Hibernation: Handle DEBUG_PAGEALLOC on x86 Len Brown
                     ` (2 subsequent siblings)
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Ming Lin, Len Brown

From: Ming Lin <ming.m.lin@intel.com>

CC      drivers/acpi/executer/exregion.o
drivers/acpi/executer/exregion.c: In function
‘acpi_ex_pci_config_space_handler’:
drivers/acpi/executer/exregion.c:369: attention : passing argument 3 of
‘acpi_os_read_pci_configuration’ from incompatible pointer type

exposed by 10270d4838bdc493781f5a1cf2e90e9c34c9142f

http://bugzilla.kernel.org/show_bug.cgi?id=9989

Signed-off-by: Ming Lin <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/executer/exregion.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/executer/exregion.c b/drivers/acpi/executer/exregion.c
index 2e9ce94..3f51b7e 100644
--- a/drivers/acpi/executer/exregion.c
+++ b/drivers/acpi/executer/exregion.c
@@ -338,6 +338,7 @@ acpi_ex_pci_config_space_handler(u32 function,
 	acpi_status status = AE_OK;
 	struct acpi_pci_id *pci_id;
 	u16 pci_register;
+	u32 value32;
 
 	ACPI_FUNCTION_TRACE(ex_pci_config_space_handler);
 
@@ -364,9 +365,9 @@ acpi_ex_pci_config_space_handler(u32 function,
 	switch (function) {
 	case ACPI_READ:
 
-		*value = 0;
 		status = acpi_os_read_pci_configuration(pci_id, pci_register,
-							value, bit_width);
+							&value32, bit_width);
+		*value = value32;
 		break;
 
 	case ACPI_WRITE:
-- 
1.5.4.2

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 24/26] Hibernation: Handle DEBUG_PAGEALLOC on x86
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (21 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 23/26] ACPI: fix build warning Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 25/26] PCI ACPI: Fix comment describing acpi_pci_choose_state Len Brown
  2008-02-21  9:25   ` [PATCH 26/26] PM: Make suspend_device() static Len Brown
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Rafael J. Wysocki, Len Brown

From: Rafael J. Wysocki <rjw@sisk.pl>

Make hibernation work with CONFIG_DEBUG_PAGEALLOC set on x86, by
checking if the pages to be copied are marked as present in the
kernel mapping and temporarily marking them as present if that's not
the case.  No functional modifications are introduced if
CONFIG_DEBUG_PAGEALLOC is unset.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 arch/x86/mm/pageattr.c  |   19 ++++++++++++++++++-
 include/linux/mm.h      |    6 ++++++
 kernel/power/snapshot.c |   42 +++++++++++++++++++++++++++++-------------
 3 files changed, 53 insertions(+), 14 deletions(-)

diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index e2a74ea..464d8fc 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -899,7 +899,24 @@ void kernel_map_pages(struct page *page, int numpages, int enable)
 	 */
 	cpa_fill_pool();
 }
-#endif
+
+#ifdef CONFIG_HIBERNATION
+
+bool kernel_page_present(struct page *page)
+{
+	unsigned int level;
+	pte_t *pte;
+
+	if (PageHighMem(page))
+		return false;
+
+	pte = lookup_address((unsigned long)page_address(page), &level);
+	return (pte_val(*pte) & _PAGE_PRESENT);
+}
+
+#endif /* CONFIG_HIBERNATION */
+
+#endif /* CONFIG_DEBUG_PAGEALLOC */
 
 /*
  * The testcases use internal knowledge of the implementation that shouldn't
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 26c7124..3b3e134 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1171,12 +1171,18 @@ static inline void enable_debug_pagealloc(void)
 {
 	debug_pagealloc_enabled = 1;
 }
+#ifdef CONFIG_HIBERNATION
+extern bool kernel_page_present(struct page *page);
+#endif /* CONFIG_HIBERNATION */
 #else
 static inline void
 kernel_map_pages(struct page *page, int numpages, int enable) {}
 static inline void enable_debug_pagealloc(void)
 {
 }
+#ifdef CONFIG_HIBERNATION
+static inline bool kernel_page_present(struct page *page) { return true; }
+#endif /* CONFIG_HIBERNATION */
 #endif
 
 extern struct vm_area_struct *get_gate_vma(struct task_struct *tsk);
diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index 95250d7..72a020c 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -875,8 +875,8 @@ static inline void *saveable_highmem_page(unsigned long pfn) { return NULL; }
 #endif /* CONFIG_HIGHMEM */
 
 /**
- *	saveable - Determine whether a non-highmem page should be included in
- *	the suspend image.
+ *	saveable_page - Determine whether a non-highmem page should be included
+ *	in the suspend image.
  *
  *	We should save the page if it isn't Nosave, and is not in the range
  *	of pages statically defined as 'unsaveable', and it isn't a part of
@@ -897,7 +897,8 @@ static struct page *saveable_page(unsigned long pfn)
 	if (swsusp_page_is_forbidden(page) || swsusp_page_is_free(page))
 		return NULL;
 
-	if (PageReserved(page) && pfn_is_nosave(pfn))
+	if (PageReserved(page)
+	    && (!kernel_page_present(page) || pfn_is_nosave(pfn)))
 		return NULL;
 
 	return page;
@@ -938,6 +939,25 @@ static inline void do_copy_page(long *dst, long *src)
 		*dst++ = *src++;
 }
 
+
+/**
+ *	safe_copy_page - check if the page we are going to copy is marked as
+ *		present in the kernel page tables (this always is the case if
+ *		CONFIG_DEBUG_PAGEALLOC is not set and in that case
+ *		kernel_page_present() always returns 'true').
+ */
+static void safe_copy_page(void *dst, struct page *s_page)
+{
+	if (kernel_page_present(s_page)) {
+		do_copy_page(dst, page_address(s_page));
+	} else {
+		kernel_map_pages(s_page, 1, 1);
+		do_copy_page(dst, page_address(s_page));
+		kernel_map_pages(s_page, 1, 0);
+	}
+}
+
+
 #ifdef CONFIG_HIGHMEM
 static inline struct page *
 page_is_saveable(struct zone *zone, unsigned long pfn)
@@ -946,8 +966,7 @@ page_is_saveable(struct zone *zone, unsigned long pfn)
 			saveable_highmem_page(pfn) : saveable_page(pfn);
 }
 
-static inline void
-copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
+static void copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
 {
 	struct page *s_page, *d_page;
 	void *src, *dst;
@@ -961,29 +980,26 @@ copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
 		kunmap_atomic(src, KM_USER0);
 		kunmap_atomic(dst, KM_USER1);
 	} else {
-		src = page_address(s_page);
 		if (PageHighMem(d_page)) {
 			/* Page pointed to by src may contain some kernel
 			 * data modified by kmap_atomic()
 			 */
-			do_copy_page(buffer, src);
+			safe_copy_page(buffer, s_page);
 			dst = kmap_atomic(pfn_to_page(dst_pfn), KM_USER0);
 			memcpy(dst, buffer, PAGE_SIZE);
 			kunmap_atomic(dst, KM_USER0);
 		} else {
-			dst = page_address(d_page);
-			do_copy_page(dst, src);
+			safe_copy_page(page_address(d_page), s_page);
 		}
 	}
 }
 #else
 #define page_is_saveable(zone, pfn)	saveable_page(pfn)
 
-static inline void
-copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
+static inline void copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
 {
-	do_copy_page(page_address(pfn_to_page(dst_pfn)),
-			page_address(pfn_to_page(src_pfn)));
+	safe_copy_page(page_address(pfn_to_page(dst_pfn)),
+				pfn_to_page(src_pfn));
 }
 #endif /* CONFIG_HIGHMEM */
 
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 25/26] PCI ACPI: Fix comment describing acpi_pci_choose_state
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (22 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 24/26] Hibernation: Handle DEBUG_PAGEALLOC on x86 Len Brown
@ 2008-02-21  9:25   ` Len Brown
  2008-02-21  9:25   ` [PATCH 26/26] PM: Make suspend_device() static Len Brown
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Rafael J. Wysocki, Len Brown

From: Rafael J. Wysocki <rjw@sisk.pl>

The last line of the comment preceding the definition of
acpi_pci_choose_state() is incorrect.  Remove it.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/pci/pci-acpi.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index e569645..e818e52 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -241,8 +241,6 @@ EXPORT_SYMBOL(pci_osc_control_set);
  *	choose from highest power _SxD to lowest power _SxW
  * else // no _PRW at S-state x
  * 	choose highest power _SxD or any lower power
- *
- * currently we simply return _SxD, if present.
  */
 
 static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev,
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 26/26] PM: Make suspend_device() static
  2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
                     ` (23 preceding siblings ...)
  2008-02-21  9:25   ` [PATCH 25/26] PCI ACPI: Fix comment describing acpi_pci_choose_state Len Brown
@ 2008-02-21  9:25   ` Len Brown
  24 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:25 UTC (permalink / raw)
  To: linux-acpi; +Cc: Adrian Bunk, Rafael J. Wysocki, Len Brown

From: Adrian Bunk <bunk@kernel.org>

suspend_device() can become static.

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/base/power/main.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index bdc03f7..a96ca86 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -415,7 +415,7 @@ EXPORT_SYMBOL_GPL(device_power_down);
  *	@dev:	Device.
  *	@state:	Power state device is entering.
  */
-int suspend_device(struct device *dev, pm_message_t state)
+static int suspend_device(struct device *dev, pm_message_t state)
 {
 	int error = 0;
 
-- 
1.5.4.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* ACPI patches for Linux-2.6.25-rc2
@ 2008-02-21  9:37 Len Brown
  2008-02-21 11:18 ` Holger Macht
  0 siblings, 1 reply; 30+ messages in thread
From: Len Brown @ 2008-02-21  9:37 UTC (permalink / raw)
  To: linux-acpi

sorry if this is a repeat.
backing down to git 1.5.4 to see if it can send
messages that vger.kernel.org likes...

thanks,
-Len



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: ACPI patches for Linux-2.6.25-rc2
  2008-02-21  9:37 ACPI patches for Linux-2.6.25-rc2 Len Brown
@ 2008-02-21 11:18 ` Holger Macht
  2008-02-21 12:26   ` Len Brown
  0 siblings, 1 reply; 30+ messages in thread
From: Holger Macht @ 2008-02-21 11:18 UTC (permalink / raw)
  To: Len Brown; +Cc: linux-acpi

On Thu 21. Feb - 04:37:45, Len Brown wrote:
> sorry if this is a repeat.
> backing down to git 1.5.4 to see if it can send
> messages that vger.kernel.org likes...

Any specific reason why the patch I sent one week ago should not not go
into 2.6.25-rc2?

  ACPI: Do not pass NULL to acpi_get_handle() when looking for _EJD

Thanks,
	Holger

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: ACPI patches for Linux-2.6.25-rc2
  2008-02-21 11:18 ` Holger Macht
@ 2008-02-21 12:26   ` Len Brown
  0 siblings, 0 replies; 30+ messages in thread
From: Len Brown @ 2008-02-21 12:26 UTC (permalink / raw)
  To: linux-acpi

On Thursday 21 February 2008 06:18, Holger Macht wrote:
> On Thu 21. Feb - 04:37:45, Len Brown wrote:
> > sorry if this is a repeat.
> > backing down to git 1.5.4 to see if it can send
> > messages that vger.kernel.org likes...
> 
> Any specific reason why the patch I sent one week ago should not not go
> into 2.6.25-rc2?
> 
>   ACPI: Do not pass NULL to acpi_get_handle() when looking for _EJD
> 

I didn't notice that one.

it is on the test branch now.

thanks,
-Len

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2008-02-21 12:27 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-21  9:25 ACPI patches for Linux-2.6.25-rc2 Len Brown
2008-02-21  9:25 ` [PATCH 01/26] ACPI: EC: Use proper handle for boot EC Len Brown
2008-02-21  9:25   ` [PATCH 02/26] kernel-doc: fix pci-acpi warning Len Brown
2008-02-21  9:25   ` [PATCH 03/26] thermal: validate input parameters Len Brown
2008-02-21  9:25   ` [PATCH 04/26] thermal: use ERR_PTR for returning error Len Brown
2008-02-21  9:25   ` [PATCH 05/26] ACPI fan: extract return values using PTR_ERR Len Brown
2008-02-21  9:25   ` [PATCH 06/26] ACPI: thermal: Check whether cooling device exists before unregistering Len Brown
2008-02-21  9:25   ` [PATCH 07/26] ACPI thermal: extract return values using PTR_ERR Len Brown
2008-02-21  9:25   ` [PATCH 08/26] ACPI video: check for error from thermal_cooling_device_register Len Brown
2008-02-21  9:25   ` [PATCH 09/26] intel_menlo: extract return values using PTR_ERR Len Brown
2008-02-21  9:25   ` [PATCH 10/26] ACPI: thinkpad-acpi: trivial fix to module_desc typo Len Brown
2008-02-21  9:25   ` [PATCH 11/26] ACPI: thinkpad-acpi: trivial fix to documentation Len Brown
2008-02-21  9:25   ` [PATCH 12/26] ACPI: thinkpad-acpi: always track input device open/close Len Brown
2008-02-21  9:25   ` [PATCH 13/26] ACPI: thinkpad-acpi: synchronize input device switches Len Brown
2008-02-21  9:25   ` [PATCH 14/26] ACPI: thinkpad-acpi: make the video output feature optional Len Brown
2008-02-21  9:25   ` [PATCH 15/26] ACPI: thinkpad-acpi: issue input events for tablet swivel events Len Brown
2008-02-21  9:25   ` [PATCH 16/26] ACPI: thinkpad-acpi: improve thinkpad-acpi input device documentation Len Brown
2008-02-21  9:25   ` [PATCH 17/26] ACPI: thinkpad-acpi: minor hotkey_radio_sw fixes Len Brown
2008-02-21  9:25   ` [PATCH 18/26] ACPI: thinkpad-acpi: add tablet-mode reporting Len Brown
2008-02-21  9:25   ` [PATCH 19/26] ACPI: sparse fix, replace macro with static function Len Brown
2008-02-21  9:25   ` [PATCH 20/26] acer-wmi: Add DMI match for mail LED on Acer TravelMate 4200 series Len Brown
2008-02-21  9:25   ` [PATCH 21/26] ACPI: remove is_processor_present prototype Len Brown
2008-02-21  9:25   ` [PATCH 22/26] ACPI: TSC breaks atkbd suspend Len Brown
2008-02-21  9:25   ` [PATCH 23/26] ACPI: fix build warning Len Brown
2008-02-21  9:25   ` [PATCH 24/26] Hibernation: Handle DEBUG_PAGEALLOC on x86 Len Brown
2008-02-21  9:25   ` [PATCH 25/26] PCI ACPI: Fix comment describing acpi_pci_choose_state Len Brown
2008-02-21  9:25   ` [PATCH 26/26] PM: Make suspend_device() static Len Brown
  -- strict thread matches above, loose matches on Subject: below --
2008-02-21  9:37 ACPI patches for Linux-2.6.25-rc2 Len Brown
2008-02-21 11:18 ` Holger Macht
2008-02-21 12:26   ` Len Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox