- IBM ThinkPad ACPI Extras Driver
+ ThinkPad ACPI Extras Driver
- Version 0.13
- 31 December 2006
+ Version 0.14
+ March 26th, 2007
Borislav Deianov <borislav@users.sf.net>
Henrique de Moraes Holschuh <hmh@hmh.eng.br>
http://ibm-acpi.sf.net/
-This is a Linux ACPI driver for the IBM ThinkPad laptops. It supports
-various features of these laptops which are accessible through the
-ACPI framework but not otherwise fully supported by the generic Linux
-ACPI drivers.
+This is a Linux driver for the IBM and Lenovo ThinkPad laptops. It
+supports various features of these laptops which are accessible
+through the ACPI and ACPI EC framework, but not otherwise fully
+supported by the generic Linux ACPI drivers.
+
+This driver used to be named ibm-acpi until kernel 2.6.21 and release
+0.13-20070314. It used to be in the drivers/acpi tree, but it was
+moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel
+2.6.22, and release 0.14.
Status
- ThinkPad model name
- a copy of your DSDT, from /proc/acpi/dsdt
+ - a copy of the output of dmidecode, with serial numbers
+ and UUIDs masked off
- which driver features work and which don't
- the observed behavior of non-working features
------------
If you are compiling this driver as included in the Linux kernel
-sources, simply enable the CONFIG_ACPI_IBM option (Power Management /
-ACPI / IBM ThinkPad Laptop Extras).
+sources, simply enable the CONFIG_THINKPAD_ACPI option, and optionally
+enable the CONFIG_THINKPAD_ACPI_BAY option if you want the
+thinkpad-specific bay functionality.
Features
--------
booted while not in the dock, the following message is shown in the
logs:
- Mar 17 01:42:34 aero kernel: ibm_acpi: dock device not present
+ Mar 17 01:42:34 aero kernel: thinkpad_acpi: dock device not present
In this case, no dock-related events are generated but the dock and
undock commands described below still work. They can be executed
in the Linux ACPI framework. If the laptop was booted without the
UltraBay, the following message is shown in the logs:
- Mar 17 01:42:34 aero kernel: ibm_acpi: bay device not present
+ Mar 17 01:42:34 aero kernel: thinkpad_acpi: bay device not present
In this case, no bay-related events are generated but the eject
command described below still works. It can be executed manually or
The ThinkPad's ACPI DSDT code will reprogram the fan on its own when
certain conditions are met. It will override any fan programming done
-through ibm-acpi.
+through thinkpad-acpi.
-The ibm-acpi kernel driver can be programmed to revert the fan level
-to a safe setting if userspace does not issue one of the fan commands:
-"enable", "disable", "level" or "watchdog" within a configurable
-ammount of time. To do this, use the "watchdog" command.
+The thinkpad-acpi kernel driver can be programmed to revert the fan
+level to a safe setting if userspace does not issue one of the fan
+commands: "enable", "disable", "level" or "watchdog" within a
+configurable ammount of time. To do this, use the "watchdog" command.
echo 'watchdog <interval>' > /proc/acpi/ibm/fan
echo enable,0xffff > /proc/acpi/ibm/hotkey
echo lcd_disable,crt_enable > /proc/acpi/ibm/video
-Commands can also be specified when loading the ibm_acpi module, for
-example:
+Commands can also be specified when loading the thinkpad-acpi module,
+for example:
- modprobe ibm_acpi hotkey=enable,0xffff video=auto_disable
+ modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disable
/*
- * ibm_acpi.c - IBM ThinkPad ACPI Extras
+ * thinkpad_acpi.c - ThinkPad ACPI Extras
*
*
* Copyright (C) 2004-2005 Borislav Deianov <borislav@users.sf.net>
* 02110-1301, USA.
*/
-#define IBM_VERSION "0.13"
+#define IBM_VERSION "0.14"
/*
* Changelog:
+ * 2007-03-27 0.14 renamed to thinkpad_acpi and moved to
+ * drivers/misc.
*
* 2006-11-22 0.13 new maintainer
* changelog now lives in git commit history, and will
}
acpi_driver_data(ibm->device) = ibm;
- sprintf(acpi_device_class(ibm->device), "%s/%s", IBM_NAME, ibm->name);
+ sprintf(acpi_device_class(ibm->device), "%s/%s",
+ IBM_ACPI_EVENT_PREFIX,
+ ibm->name);
status = acpi_install_notify_handler(*ibm->handle, ibm->type,
dispatch_notify, ibm);
* ibm-acpi init subdriver
*/
-static int ibm_acpi_driver_init(void)
+static int thinkpad_acpi_driver_init(void)
{
printk(IBM_INFO "%s v%s\n", IBM_DESC, IBM_VERSION);
printk(IBM_INFO "%s\n", IBM_URL);
return 0;
}
-static int ibm_acpi_driver_read(char *p)
+static int thinkpad_acpi_driver_read(char *p)
{
int len = 0;
static struct ibm_struct ibms[] = {
{
.name = "driver",
- .init = ibm_acpi_driver_init,
- .read = ibm_acpi_driver_read,
+ .init = thinkpad_acpi_driver_init,
+ .read = thinkpad_acpi_driver_read,
},
{
.name = "hotkey",
/*
- * ibm_acpi.h - IBM ThinkPad ACPI Extras
+ * thinkpad_acpi.h - ThinkPad ACPI Extras
*
*
* Copyright (C) 2004-2005 Borislav Deianov <borislav@users.sf.net>
* 02110-1301, USA.
*/
-#ifndef __IBM_ACPI_H__
-#define __IBM_ACPI_H__
+#ifndef __THINKPAD_ACPI_H__
+#define __THINKPAD_ACPI_H__
#include <linux/kernel.h>
#include <linux/module.h>
* Main driver
*/
-#define IBM_NAME "ibm"
-#define IBM_DESC "IBM ThinkPad ACPI Extras"
-#define IBM_FILE "ibm_acpi"
+#define IBM_NAME "thinkpad"
+#define IBM_DESC "ThinkPad ACPI Extras"
+#define IBM_FILE "thinkpad_acpi"
#define IBM_URL "http://ibm-acpi.sf.net/"
-#define IBM_DIR IBM_NAME
+#define IBM_DIR "ibm"
+#define IBM_ACPI_EVENT_PREFIX "ibm"
#define IBM_LOG IBM_FILE ": "
#define IBM_ERR KERN_ERR IBM_LOG
/* procfs support */
static struct proc_dir_entry *proc_dir;
-static int ibm_acpi_driver_init(void);
-static int ibm_acpi_driver_read(char *p);
+static int thinkpad_acpi_driver_init(void);
+static int thinkpad_acpi_driver_read(char *p);
/* procfs helpers */
static int dispatch_read(char *page, char **start, off_t off, int count,
static int wan_write(char *buf);
-#endif /* __IBM_ACPI_H */
+#endif /* __THINKPAD_ACPI_H */