diff options
author | Benjamin Tissoires <benjamin.tissoires@gmail.com> | 2012-11-14 10:59:13 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2012-11-15 04:06:28 -0500 |
commit | 37cf6e6fc34e2fca4e7c565697e7cd5c317bc316 (patch) | |
tree | 8a33a35b0e8cfbc95ac8e7ea79141ef0c05edc1d /drivers/hid | |
parent | 976bacef40c66443173283cc02b537e37a62c981 (diff) |
HID: export hidinput_calc_abs_res
Exporting the function allows us to calculate the resolution in third
party drivers like hid-multitouch.
This patch also complete the function with additional valid axes.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Acked-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r-- | drivers/hid/hid-input.c | 9 | ||||
-rw-r--r-- | drivers/hid/hid-multitouch.c | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index d917c0d53685..d1ec571bdb3b 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c | |||
@@ -208,7 +208,7 @@ static int hidinput_setkeycode(struct input_dev *dev, | |||
208 | * Only exponent 1 length units are processed. Centimeters and inches are | 208 | * Only exponent 1 length units are processed. Centimeters and inches are |
209 | * converted to millimeters. Degrees are converted to radians. | 209 | * converted to millimeters. Degrees are converted to radians. |
210 | */ | 210 | */ |
211 | static __s32 hidinput_calc_abs_res(const struct hid_field *field, __u16 code) | 211 | __s32 hidinput_calc_abs_res(const struct hid_field *field, __u16 code) |
212 | { | 212 | { |
213 | __s32 unit_exponent = field->unit_exponent; | 213 | __s32 unit_exponent = field->unit_exponent; |
214 | __s32 logical_extents = field->logical_maximum - | 214 | __s32 logical_extents = field->logical_maximum - |
@@ -229,6 +229,12 @@ static __s32 hidinput_calc_abs_res(const struct hid_field *field, __u16 code) | |||
229 | case ABS_X: | 229 | case ABS_X: |
230 | case ABS_Y: | 230 | case ABS_Y: |
231 | case ABS_Z: | 231 | case ABS_Z: |
232 | case ABS_MT_POSITION_X: | ||
233 | case ABS_MT_POSITION_Y: | ||
234 | case ABS_MT_TOOL_X: | ||
235 | case ABS_MT_TOOL_Y: | ||
236 | case ABS_MT_TOUCH_MAJOR: | ||
237 | case ABS_MT_TOUCH_MINOR: | ||
232 | if (field->unit == 0x11) { /* If centimeters */ | 238 | if (field->unit == 0x11) { /* If centimeters */ |
233 | /* Convert to millimeters */ | 239 | /* Convert to millimeters */ |
234 | unit_exponent += 1; | 240 | unit_exponent += 1; |
@@ -283,6 +289,7 @@ static __s32 hidinput_calc_abs_res(const struct hid_field *field, __u16 code) | |||
283 | /* Calculate resolution */ | 289 | /* Calculate resolution */ |
284 | return logical_extents / physical_extents; | 290 | return logical_extents / physical_extents; |
285 | } | 291 | } |
292 | EXPORT_SYMBOL_GPL(hidinput_calc_abs_res); | ||
286 | 293 | ||
287 | #ifdef CONFIG_HID_BATTERY_STRENGTH | 294 | #ifdef CONFIG_HID_BATTERY_STRENGTH |
288 | static enum power_supply_property hidinput_battery_props[] = { | 295 | static enum power_supply_property hidinput_battery_props[] = { |
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c index 7867d69f0efe..3687f797b731 100644 --- a/drivers/hid/hid-multitouch.c +++ b/drivers/hid/hid-multitouch.c | |||
@@ -297,6 +297,7 @@ static void set_abs(struct input_dev *input, unsigned int code, | |||
297 | int fmax = field->logical_maximum; | 297 | int fmax = field->logical_maximum; |
298 | int fuzz = snratio ? (fmax - fmin) / snratio : 0; | 298 | int fuzz = snratio ? (fmax - fmin) / snratio : 0; |
299 | input_set_abs_params(input, code, fmin, fmax, fuzz, 0); | 299 | input_set_abs_params(input, code, fmin, fmax, fuzz, 0); |
300 | input_abs_set_res(input, code, hidinput_calc_abs_res(field, code)); | ||
300 | } | 301 | } |
301 | 302 | ||
302 | static void mt_store_field(struct hid_usage *usage, struct mt_device *td, | 303 | static void mt_store_field(struct hid_usage *usage, struct mt_device *td, |