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 <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel