Mr Morton & Greg,
Attached patch is a small hdaps update:
- Handle dmi_system_check() elegantly, now that my bugfix
is upstream.
- Add support for the X41 and R52.
- Cleanup some comments do I do not have to keep updating
them with each new whitelisted laptop.
Diffed and tested against 2.6.14-rc2-git1.
Robert Love
--
Small hdaps update.
Signed-off-by: Robert Love <[email protected]>
drivers/hwmon/Kconfig | 9 ++++-----
drivers/hwmon/hdaps.c | 21 +++++++++------------
2 files changed, 13 insertions(+), 17 deletions(-)
diff -urN linux-2.6.14-rc2-git1/drivers/hwmon/hdaps.c linux/drivers/hwmon/hdaps.c
--- linux-2.6.14-rc2-git1/drivers/hwmon/hdaps.c 2005-09-22 10:48:51.000000000 -0400
+++ linux/drivers/hwmon/hdaps.c 2005-09-22 13:42:44.000000000 -0400
@@ -4,9 +4,9 @@
* Copyright (C) 2005 Robert Love <[email protected]>
* Copyright (C) 2005 Jesper Juhl <[email protected]>
*
- * The HardDisk Active Protection System (hdaps) is present in the IBM ThinkPad
- * T41, T42, T43, R50, R50p, R51, and X40, at least. It provides a basic
- * two-axis accelerometer and other data, such as the device's temperature.
+ * The HardDisk Active Protection System (hdaps) is present in IBM ThinkPads
+ * starting with the R40, T41, and X40. It provides a basic two-axis
+ * accelerometer and other data, such as the device's temperature.
*
* This driver is based on the document by Mark A. Smith available at
* http://www.almaden.ibm.com/cs/people/marksmith/tpaps.html and a lot of trial
@@ -487,24 +487,19 @@
/* Module stuff */
-/*
- * XXX: We should be able to return nonzero and halt the detection process.
- * But there is a bug in dmi_check_system() where a nonzero return from the
- * first match will result in a return of failure from dmi_check_system().
- * I fixed this; the patch is 2.6-git. Once in a released tree, we can make
- * hdaps_dmi_match_invert() return hdaps_dmi_match(), which in turn returns 1.
- */
+/* hdaps_dmi_match - found a match. return one, short-circuiting the hunt. */
static int hdaps_dmi_match(struct dmi_system_id *id)
{
printk(KERN_INFO "hdaps: %s detected.\n", id->ident);
- return 0;
+ return 1;
}
+/* hdaps_dmi_match_invert - found an inverted match. */
static int hdaps_dmi_match_invert(struct dmi_system_id *id)
{
hdaps_invert = 1;
printk(KERN_INFO "hdaps: inverting axis readings.\n");
- return 0;
+ return hdaps_dmi_match(id);
}
#define HDAPS_DMI_MATCH_NORMAL(model) { \
@@ -534,6 +529,7 @@
HDAPS_DMI_MATCH_INVERT("ThinkPad R50p"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad R50"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad R51"),
+ HDAPS_DMI_MATCH_NORMAL("ThinkPad R52"),
HDAPS_DMI_MATCH_INVERT("ThinkPad T41p"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad T41"),
HDAPS_DMI_MATCH_INVERT("ThinkPad T42p"),
@@ -541,6 +537,7 @@
HDAPS_DMI_MATCH_NORMAL("ThinkPad T43"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad X40"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad X41 Tablet"),
+ HDAPS_DMI_MATCH_NORMAL("ThinkPad X41"),
{ .ident = NULL }
};
diff -urN linux-2.6.14-rc2-git1/drivers/hwmon/Kconfig linux/drivers/hwmon/Kconfig
--- linux-2.6.14-rc2-git1/drivers/hwmon/Kconfig 2005-09-22 10:48:51.000000000 -0400
+++ linux/drivers/hwmon/Kconfig 2005-09-22 10:55:26.000000000 -0400
@@ -418,12 +418,11 @@
help
This driver provides support for the IBM Hard Drive Active Protection
System (hdaps), which provides an accelerometer and other misc. data.
- Supported laptops include the IBM ThinkPad T41, T42, T43, and R51.
- The accelerometer data is readable via sysfs.
+ ThinkPads starting with the R50, T41, and X40 are supported. The
+ accelerometer data is readable via sysfs.
- This driver also provides an input class device, allowing the
- laptop to act as a pinball machine-esque mouse. This is off by
- default but enabled via sysfs or the module parameter "mousedev".
+ This driver also provides an absolute input class device, allowing
+ the laptop to act as a pinball machine-esque joystick.
Say Y here if you have an applicable laptop and want to experience
the awesome power of hdaps.