diff mbox

[v3] input: wacom - Pass touch resolution to clients through input_absinfo

Message ID 1295980279-5610-1-git-send-email-pinglinux@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ping Cheng Jan. 25, 2011, 6:31 p.m. UTC
None
diff mbox

Patch

diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index f44c822..57bac83 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -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);