@@ -1101,6 +1101,15 @@ void wacom_setup_device_quirks(struct wacom_features *features)
}
}
+static int wacom_touch_resolution(struct wacom_features *features, int axe)
+{
+ /* touch physical size is in hundredths of a mm */
+ if (!axe)
+ return (100 * features->x_max / features->x_phy);
+ else
+ return (100 * features->y_max / features->y_phy);
+}
+
void wacom_setup_input_capabilities(struct input_dev *input_dev,
struct wacom_wac *wacom_wac)
{
@@ -1228,8 +1237,11 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
case TABLETPC:
if (features->device_type == BTN_TOOL_DOUBLETAP ||
features->device_type == BTN_TOOL_TRIPLETAP) {
- input_set_abs_params(input_dev, ABS_RX, 0, features->x_phy, 0, 0);
- input_set_abs_params(input_dev, ABS_RY, 0, features->y_phy, 0, 0);
+ /* set touch resolution in points/mm */
+ input_abs_set_res(input_dev, ABS_X,
+ wacom_touch_resolution(features, 0));
+ input_abs_set_res(input_dev, ABS_Y,
+ wacom_touch_resolution(features, 1));
__set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit);
}
@@ -1272,6 +1284,11 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
input_set_abs_params(input_dev, ABS_MT_PRESSURE,
0, features->pressure_max,
features->pressure_fuzz, 0);
+ /* set touch resolution in points/mm */
+ input_abs_set_res(input_dev, ABS_X,
+ wacom_touch_resolution(features, 0));
+ input_abs_set_res(input_dev, ABS_Y,
+ wacom_touch_resolution(features, 0));
} else if (features->device_type == BTN_TOOL_PEN) {
__set_bit(BTN_TOOL_RUBBER, input_dev->keybit);
__set_bit(BTN_TOOL_PEN, input_dev->keybit);