diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2009-02-18 17:48:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-18 18:37:54 -0500 |
commit | 9ccf3b5e8409927835c4d38cb2f380c9e4349e76 (patch) | |
tree | b10e951d376aef142d15eec40b634e7cfe339251 | |
parent | 137bad32342a613586347341d1307c2b9812ef44 (diff) |
lis3lv02d: add axes knowledge of HP Pavilion dv5 models
Add support for HP Pavilion dv5.
Since Intel-based models have an inverted x axis, while AMD-based models
have an inverted y axis, we introduce a new macro that special-cases axis
orientation based on two DMI entries: HP dv5 axis configuration is then
based on both the PRODUCT and BOARD name.
Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Cc: Eric Piel <Eric.Piel@tremplin-utc.net>
Cc: Pavel Machek <pavel@suse.cz>
Tested-by: Palatis Tseng <palatis@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/hwmon/hp_accel.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/hwmon/hp_accel.c b/drivers/hwmon/hp_accel.c index 6b16566c4e6c..29c83b5b9697 100644 --- a/drivers/hwmon/hp_accel.c +++ b/drivers/hwmon/hp_accel.c | |||
@@ -166,6 +166,18 @@ static struct axis_conversion lis3lv02d_axis_xy_swap_yz_inverted = {2, -1, -3}; | |||
166 | }, \ | 166 | }, \ |
167 | .driver_data = &lis3lv02d_axis_##_axis \ | 167 | .driver_data = &lis3lv02d_axis_##_axis \ |
168 | } | 168 | } |
169 | |||
170 | #define AXIS_DMI_MATCH2(_ident, _class1, _name1, \ | ||
171 | _class2, _name2, \ | ||
172 | _axis) { \ | ||
173 | .ident = _ident, \ | ||
174 | .callback = lis3lv02d_dmi_matched, \ | ||
175 | .matches = { \ | ||
176 | DMI_MATCH(DMI_##_class1, _name1), \ | ||
177 | DMI_MATCH(DMI_##_class2, _name2), \ | ||
178 | }, \ | ||
179 | .driver_data = &lis3lv02d_axis_##_axis \ | ||
180 | } | ||
169 | static struct dmi_system_id lis3lv02d_dmi_ids[] = { | 181 | static struct dmi_system_id lis3lv02d_dmi_ids[] = { |
170 | /* product names are truncated to match all kinds of a same model */ | 182 | /* product names are truncated to match all kinds of a same model */ |
171 | AXIS_DMI_MATCH("NC64x0", "HP Compaq nc64", x_inverted), | 183 | AXIS_DMI_MATCH("NC64x0", "HP Compaq nc64", x_inverted), |
@@ -179,6 +191,16 @@ static struct dmi_system_id lis3lv02d_dmi_ids[] = { | |||
179 | AXIS_DMI_MATCH("NC673x", "HP Compaq 673", xy_rotated_left_usd), | 191 | AXIS_DMI_MATCH("NC673x", "HP Compaq 673", xy_rotated_left_usd), |
180 | AXIS_DMI_MATCH("NC651xx", "HP Compaq 651", xy_rotated_right), | 192 | AXIS_DMI_MATCH("NC651xx", "HP Compaq 651", xy_rotated_right), |
181 | AXIS_DMI_MATCH("NC671xx", "HP Compaq 671", xy_swap_yz_inverted), | 193 | AXIS_DMI_MATCH("NC671xx", "HP Compaq 671", xy_swap_yz_inverted), |
194 | /* Intel-based HP Pavilion dv5 */ | ||
195 | AXIS_DMI_MATCH2("HPDV5_I", | ||
196 | PRODUCT_NAME, "HP Pavilion dv5", | ||
197 | BOARD_NAME, "3603", | ||
198 | x_inverted), | ||
199 | /* AMD-based HP Pavilion dv5 */ | ||
200 | AXIS_DMI_MATCH2("HPDV5_A", | ||
201 | PRODUCT_NAME, "HP Pavilion dv5", | ||
202 | BOARD_NAME, "3600", | ||
203 | y_inverted), | ||
182 | { NULL, } | 204 | { NULL, } |
183 | /* Laptop models without axis info (yet): | 205 | /* Laptop models without axis info (yet): |
184 | * "NC6910" "HP Compaq 6910" | 206 | * "NC6910" "HP Compaq 6910" |