Input: wacom - use hidinput_calc_abs_res instead of duplicating its code
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Thu, 24 Jul 2014 20:03:05 +0000 (13:03 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 26 Jul 2014 01:53:55 +0000 (18:53 -0700)
This may infer a small difference with the previous implementation
due to the DIV_ROUND_CLOSEST() in the hid implementation.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: Jason Gerecke <killertofu@gmail.com>
Tested-by: Jason Gerecke <killertofu@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/tablet/wacom_sys.c

index ed27e7d..06e304b 100644 (file)
@@ -85,49 +85,19 @@ static void wacom_close(struct input_dev *dev)
 }
 
 /*
- * Calculate the resolution of the X or Y axis, given appropriate HID data.
- * This function is little more than hidinput_calc_abs_res stripped down.
+ * Calculate the resolution of the X or Y axis using hidinput_calc_abs_res.
  */
 static int wacom_calc_hid_res(int logical_extents, int physical_extents,
                               unsigned unit, int exponent)
 {
-       int prev;
-       int unit_exponent = exponent;
-
-       /* Check if the extents are sane */
-       if (logical_extents <= 0 || physical_extents <= 0)
-               return 0;
-
-       /* Convert physical_extents to millimeters */
-       if (unit == 0x11) {             /* If centimeters */
-               unit_exponent += 1;
-       } else if (unit == 0x13) {      /* If inches */
-               prev = physical_extents;
-               physical_extents *= 254;
-               if (physical_extents < prev)
-                       return 0;
-               unit_exponent -= 1;
-       } else {
-               return 0;
-       }
-
-       /* Apply negative unit exponent */
-       for (; unit_exponent < 0; unit_exponent++) {
-               prev = logical_extents;
-               logical_extents *= 10;
-               if (logical_extents < prev)
-                       return 0;
-       }
-       /* Apply positive unit exponent */
-       for (; unit_exponent > 0; unit_exponent--) {
-               prev = physical_extents;
-               physical_extents *= 10;
-               if (physical_extents < prev)
-                       return 0;
-       }
-
-       /* Calculate resolution */
-       return logical_extents / physical_extents;
+       struct hid_field field = {
+               .logical_maximum = logical_extents,
+               .physical_maximum = physical_extents,
+               .unit = unit,
+               .unit_exponent = exponent,
+       };
+
+       return hidinput_calc_abs_res(&field, ABS_X);
 }
 
 static void wacom_feature_mapping(struct hid_device *hdev,