[PATCH] hdaps: small 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.

Signed-off-by: Robert Love <rml@novell.com>

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Robert Love 2005-09-22 21:44:00 -07:00 committed by Linus Torvalds
parent 609725f877
commit 4c87b74c72
2 changed files with 13 additions and 17 deletions

View file

@ -418,12 +418,11 @@ config SENSORS_HDAPS
help help
This driver provides support for the IBM Hard Drive Active Protection This driver provides support for the IBM Hard Drive Active Protection
System (hdaps), which provides an accelerometer and other misc. data. System (hdaps), which provides an accelerometer and other misc. data.
Supported laptops include the IBM ThinkPad T41, T42, T43, and R51. ThinkPads starting with the R50, T41, and X40 are supported. The
The accelerometer data is readable via sysfs. accelerometer data is readable via sysfs.
This driver also provides an input class device, allowing the This driver also provides an absolute input class device, allowing
laptop to act as a pinball machine-esque mouse. This is off by the laptop to act as a pinball machine-esque joystick.
default but enabled via sysfs or the module parameter "mousedev".
Say Y here if you have an applicable laptop and want to experience Say Y here if you have an applicable laptop and want to experience
the awesome power of hdaps. the awesome power of hdaps.

View file

@ -4,9 +4,9 @@
* Copyright (C) 2005 Robert Love <rml@novell.com> * Copyright (C) 2005 Robert Love <rml@novell.com>
* Copyright (C) 2005 Jesper Juhl <jesper.juhl@gmail.com> * Copyright (C) 2005 Jesper Juhl <jesper.juhl@gmail.com>
* *
* The HardDisk Active Protection System (hdaps) is present in the IBM ThinkPad * The HardDisk Active Protection System (hdaps) is present in IBM ThinkPads
* T41, T42, T43, R50, R50p, R51, and X40, at least. It provides a basic * starting with the R40, T41, and X40. It provides a basic two-axis
* two-axis accelerometer and other data, such as the device's temperature. * accelerometer and other data, such as the device's temperature.
* *
* This driver is based on the document by Mark A. Smith available at * 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 * http://www.almaden.ibm.com/cs/people/marksmith/tpaps.html and a lot of trial
@ -487,24 +487,19 @@ static struct attribute_group hdaps_attribute_group = {
/* Module stuff */ /* Module stuff */
/* /* hdaps_dmi_match - found a match. return one, short-circuiting the hunt. */
* 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.
*/
static int hdaps_dmi_match(struct dmi_system_id *id) static int hdaps_dmi_match(struct dmi_system_id *id)
{ {
printk(KERN_INFO "hdaps: %s detected.\n", id->ident); 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) static int hdaps_dmi_match_invert(struct dmi_system_id *id)
{ {
hdaps_invert = 1; hdaps_invert = 1;
printk(KERN_INFO "hdaps: inverting axis readings.\n"); printk(KERN_INFO "hdaps: inverting axis readings.\n");
return 0; return hdaps_dmi_match(id);
} }
#define HDAPS_DMI_MATCH_NORMAL(model) { \ #define HDAPS_DMI_MATCH_NORMAL(model) { \
@ -534,6 +529,7 @@ static int __init hdaps_init(void)
HDAPS_DMI_MATCH_INVERT("ThinkPad R50p"), HDAPS_DMI_MATCH_INVERT("ThinkPad R50p"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad R50"), HDAPS_DMI_MATCH_NORMAL("ThinkPad R50"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad R51"), HDAPS_DMI_MATCH_NORMAL("ThinkPad R51"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad R52"),
HDAPS_DMI_MATCH_INVERT("ThinkPad T41p"), HDAPS_DMI_MATCH_INVERT("ThinkPad T41p"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad T41"), HDAPS_DMI_MATCH_NORMAL("ThinkPad T41"),
HDAPS_DMI_MATCH_INVERT("ThinkPad T42p"), HDAPS_DMI_MATCH_INVERT("ThinkPad T42p"),
@ -541,6 +537,7 @@ static int __init hdaps_init(void)
HDAPS_DMI_MATCH_NORMAL("ThinkPad T43"), HDAPS_DMI_MATCH_NORMAL("ThinkPad T43"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad X40"), HDAPS_DMI_MATCH_NORMAL("ThinkPad X40"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad X41 Tablet"), HDAPS_DMI_MATCH_NORMAL("ThinkPad X41 Tablet"),
HDAPS_DMI_MATCH_NORMAL("ThinkPad X41"),
{ .ident = NULL } { .ident = NULL }
}; };