Aaron Armstrong Skomra
2017-04-13 19:22:31 UTC
Kernels 3.16 and before have a "generic" touch path which is used
by newer devices. Here generic means devices added to the driver
after the switch the generic code path upstream.
For devices which use this "generic" path in older kernels, use
ABS_MT_TOUCH_* instead of ABS_MT_WIDTH_*.
Signed-off-by: Aaron Armstrong Skomra <***@wacom.com>
---
2.6.38/wacom_wac.c | 15 +++++++++++----
3.7/wacom_wac.c | 15 +++++++++++----
2 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/2.6.38/wacom_wac.c b/2.6.38/wacom_wac.c
index 8cfcb6c..6a5fb77 100644
--- a/2.6.38/wacom_wac.c
+++ b/2.6.38/wacom_wac.c
@@ -1124,8 +1124,8 @@ static void wacom_multitouch_generic_finger(struct wacom_wac *wacom,
input_report_abs(input, ABS_MT_POSITION_Y, y);
if (w >= 0 && h >= 0) {
- input_report_abs(input, ABS_MT_WIDTH_MAJOR, max(w, h));
- input_report_abs(input, ABS_MT_WIDTH_MINOR, min(w, h));
+ input_report_abs(input, ABS_MT_TOUCH_MAJOR, max(w, h));
+ input_report_abs(input, ABS_MT_TOUCH_MINOR, min(w, h));
input_report_abs(input, ABS_MT_ORIENTATION, w > h);
}
}
@@ -2468,12 +2468,19 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
}
break;
- case WACOM_MSPROT:
case WACOM_24HDT:
if (features->device_type == BTN_TOOL_FINGER) {
- input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR, 0, features->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR, 0, features->y_max, 0, 0);
+ }
+ /* fall through */
+
+ case WACOM_MSPROT:
+ if (features->device_type == BTN_TOOL_FINGER) {
+ input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0);
+ if (features->type != WACOM_24HDT)
+ input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR,
+ 0, features->y_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 1, 0, 0);
}
/* fall through */
diff --git a/3.7/wacom_wac.c b/3.7/wacom_wac.c
index 3fb1c33..667b40e 100644
--- a/3.7/wacom_wac.c
+++ b/3.7/wacom_wac.c
@@ -1105,8 +1105,8 @@ static void wacom_multitouch_generic_finger(struct wacom_wac *wacom,
input_report_abs(input, ABS_MT_POSITION_Y, y);
if (w >= 0 && h >= 0) {
- input_report_abs(input, ABS_MT_WIDTH_MAJOR, max(w, h));
- input_report_abs(input, ABS_MT_WIDTH_MINOR, min(w, h));
+ input_report_abs(input, ABS_MT_TOUCH_MAJOR, max(w, h));
+ input_report_abs(input, ABS_MT_TOUCH_MINOR, min(w, h));
input_report_abs(input, ABS_MT_ORIENTATION, w > h);
}
}
@@ -2432,12 +2432,19 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
__set_bit(INPUT_PROP_POINTER, input_dev->propbit);
break;
- case WACOM_MSPROT:
case WACOM_24HDT:
if (features->device_type == BTN_TOOL_FINGER) {
- input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR, 0, features->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR, 0, features->y_max, 0, 0);
+ }
+ /* fall through */
+
+ case WACOM_MSPROT:
+ if (features->device_type == BTN_TOOL_FINGER) {
+ input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0);
+ if (features->type != WACOM_24HDT)
+ input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR,
+ 0, features->y_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 1, 0, 0);
}
/* fall through */
by newer devices. Here generic means devices added to the driver
after the switch the generic code path upstream.
For devices which use this "generic" path in older kernels, use
ABS_MT_TOUCH_* instead of ABS_MT_WIDTH_*.
Signed-off-by: Aaron Armstrong Skomra <***@wacom.com>
---
2.6.38/wacom_wac.c | 15 +++++++++++----
3.7/wacom_wac.c | 15 +++++++++++----
2 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/2.6.38/wacom_wac.c b/2.6.38/wacom_wac.c
index 8cfcb6c..6a5fb77 100644
--- a/2.6.38/wacom_wac.c
+++ b/2.6.38/wacom_wac.c
@@ -1124,8 +1124,8 @@ static void wacom_multitouch_generic_finger(struct wacom_wac *wacom,
input_report_abs(input, ABS_MT_POSITION_Y, y);
if (w >= 0 && h >= 0) {
- input_report_abs(input, ABS_MT_WIDTH_MAJOR, max(w, h));
- input_report_abs(input, ABS_MT_WIDTH_MINOR, min(w, h));
+ input_report_abs(input, ABS_MT_TOUCH_MAJOR, max(w, h));
+ input_report_abs(input, ABS_MT_TOUCH_MINOR, min(w, h));
input_report_abs(input, ABS_MT_ORIENTATION, w > h);
}
}
@@ -2468,12 +2468,19 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
}
break;
- case WACOM_MSPROT:
case WACOM_24HDT:
if (features->device_type == BTN_TOOL_FINGER) {
- input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR, 0, features->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR, 0, features->y_max, 0, 0);
+ }
+ /* fall through */
+
+ case WACOM_MSPROT:
+ if (features->device_type == BTN_TOOL_FINGER) {
+ input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0);
+ if (features->type != WACOM_24HDT)
+ input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR,
+ 0, features->y_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 1, 0, 0);
}
/* fall through */
diff --git a/3.7/wacom_wac.c b/3.7/wacom_wac.c
index 3fb1c33..667b40e 100644
--- a/3.7/wacom_wac.c
+++ b/3.7/wacom_wac.c
@@ -1105,8 +1105,8 @@ static void wacom_multitouch_generic_finger(struct wacom_wac *wacom,
input_report_abs(input, ABS_MT_POSITION_Y, y);
if (w >= 0 && h >= 0) {
- input_report_abs(input, ABS_MT_WIDTH_MAJOR, max(w, h));
- input_report_abs(input, ABS_MT_WIDTH_MINOR, min(w, h));
+ input_report_abs(input, ABS_MT_TOUCH_MAJOR, max(w, h));
+ input_report_abs(input, ABS_MT_TOUCH_MINOR, min(w, h));
input_report_abs(input, ABS_MT_ORIENTATION, w > h);
}
}
@@ -2432,12 +2432,19 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
__set_bit(INPUT_PROP_POINTER, input_dev->propbit);
break;
- case WACOM_MSPROT:
case WACOM_24HDT:
if (features->device_type == BTN_TOOL_FINGER) {
- input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR, 0, features->x_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR, 0, features->y_max, 0, 0);
+ }
+ /* fall through */
+
+ case WACOM_MSPROT:
+ if (features->device_type == BTN_TOOL_FINGER) {
+ input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0);
+ if (features->type != WACOM_24HDT)
+ input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR,
+ 0, features->y_max, 0, 0);
input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 1, 0, 0);
}
/* fall through */
--
1.7.9.5
1.7.9.5