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 <aaron.sko...@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 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel