The pre-3.17 kernels set up their tilt axis ranges to be 0..127 rather than -64..+63 like with the HID kernels. We need to add a correction for this to the wacom_mspro_pen_irq function so that userspace properly interprets the data. Without this fix, any physical tilt angle will be interprted as being to the upper-left (and any amount of actual up/left tilt angle will be saturated at -64 degrees).
Fixes: cd79aac597 ("backport: MobileStudio Pro to 3.7, 2.6.38, 2.6.36, 2.6.30") Signed-off-by: Jason Gerecke <jason.gere...@wacom.com> --- 2.6.30/wacom_wac.c | 4 ++++ 2.6.36/wacom_wac.c | 4 ++++ 2.6.38/wacom_wac.c | 4 ++++ 3.7/wacom_wac.c | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/2.6.30/wacom_wac.c b/2.6.30/wacom_wac.c index ae3e1b4..1484a1a 100644 --- a/2.6.30/wacom_wac.c +++ b/2.6.30/wacom_wac.c @@ -1653,6 +1653,10 @@ static int wacom_mspro_pen_irq(struct wacom_wac *wacom) if (rotation > 899) rotation -= 1800; + /* Fix tilt zero-point: wacom_setup_cintiq declares 0..127, not -63..+64 */ + tilt_x += 64; + tilt_y += 64; + input_report_key(input, BTN_TOUCH, proximity ? tip : 0); input_report_key(input, BTN_STYLUS, proximity ? sw1 : 0); input_report_key(input, BTN_STYLUS2, proximity ? sw2 : 0); diff --git a/2.6.36/wacom_wac.c b/2.6.36/wacom_wac.c index 85683d6..1d5ee35 100644 --- a/2.6.36/wacom_wac.c +++ b/2.6.36/wacom_wac.c @@ -1490,6 +1490,10 @@ static int wacom_mspro_pen_irq(struct wacom_wac *wacom) if (rotation > 899) rotation -= 1800; + /* Fix tilt zero-point: wacom_setup_cintiq declares 0..127, not -63..+64 */ + tilt_x += 64; + tilt_y += 64; + input_report_key(input, BTN_TOUCH, proximity ? tip : 0); input_report_key(input, BTN_STYLUS, proximity ? sw1 : 0); input_report_key(input, BTN_STYLUS2, proximity ? sw2 : 0); diff --git a/2.6.38/wacom_wac.c b/2.6.38/wacom_wac.c index 0b8b15f..d6797a5 100644 --- a/2.6.38/wacom_wac.c +++ b/2.6.38/wacom_wac.c @@ -1953,6 +1953,10 @@ static int wacom_mspro_pen_irq(struct wacom_wac *wacom) if (rotation > 899) rotation -= 1800; + /* Fix tilt zero-point: wacom_setup_cintiq declares 0..127, not -63..+64 */ + tilt_x += 64; + tilt_y += 64; + input_report_key(input, BTN_TOUCH, proximity ? tip : 0); input_report_key(input, BTN_STYLUS, proximity ? sw1 : 0); input_report_key(input, BTN_STYLUS2, proximity ? sw2 : 0); diff --git a/3.7/wacom_wac.c b/3.7/wacom_wac.c index 08d375e..cde8d22 100644 --- a/3.7/wacom_wac.c +++ b/3.7/wacom_wac.c @@ -1933,6 +1933,10 @@ static int wacom_mspro_pen_irq(struct wacom_wac *wacom) if (rotation > 899) rotation -= 1800; + /* Fix tilt zero-point: wacom_setup_cintiq declares 0..127, not -63..+64 */ + tilt_x += 64; + tilt_y += 64; + input_report_key(input, BTN_TOUCH, proximity ? tip : 0); input_report_key(input, BTN_STYLUS, proximity ? sw1 : 0); input_report_key(input, BTN_STYLUS2, proximity ? sw2 : 0); -- 2.15.0 ------------------------------------------------------------------------------ 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