aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hid/hid-input.c9
-rw-r--r--drivers/hid/hid-multitouch.c1
-rw-r--r--include/linux/hid.h1
3 files changed, 10 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 */
211static __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}
292EXPORT_SYMBOL_GPL(hidinput_calc_abs_res);
286 293
287#ifdef CONFIG_HID_BATTERY_STRENGTH 294#ifdef CONFIG_HID_BATTERY_STRENGTH
288static enum power_supply_property hidinput_battery_props[] = { 295static 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
302static void mt_store_field(struct hid_usage *usage, struct mt_device *td, 303static void mt_store_field(struct hid_usage *usage, struct mt_device *td,
diff --git a/include/linux/hid.h b/include/linux/hid.h
index c076041a069e..c6bef8f54a82 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -706,6 +706,7 @@ int hid_input_report(struct hid_device *, int type, u8 *, int, int);
706int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field); 706int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field);
707struct hid_field *hidinput_get_led_field(struct hid_device *hid); 707struct hid_field *hidinput_get_led_field(struct hid_device *hid);
708unsigned int hidinput_count_leds(struct hid_device *hid); 708unsigned int hidinput_count_leds(struct hid_device *hid);
709__s32 hidinput_calc_abs_res(const struct hid_field *field, __u16 code);
709void hid_output_report(struct hid_report *report, __u8 *data); 710void hid_output_report(struct hid_report *report, __u8 *data);
710struct hid_device *hid_allocate_device(void); 711struct hid_device *hid_allocate_device(void);
711struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id); 712struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id);