All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits
@ 2015-12-16 21:37 Jason Gerecke
  2015-12-16 21:37 ` [PATCH 2/4] HID: wacom: Report 'strip2' values in ABS_RY Jason Gerecke
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Jason Gerecke @ 2015-12-16 21:37 UTC (permalink / raw)
  To: linux-input
  Cc: Jiri Kosina, Ping Cheng, Aaron Skomra, Jason Gerecke, Jason Gerecke

Commit c7f0522 uses sixteen bits of data in the construction of 'strip1'
and 'strip2'. This can cause problems in some cases, however, since some
tablets store flags in the MSB of data[2] and data[4] that should not be
included in these values. This restores the 0x1f mask that used prior
to c7f0522.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
---
 drivers/hid/wacom_wac.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index 22d3225..cf87810 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -545,8 +545,8 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
 			          ((data[6] & 0x0F) << 4)  |
 			          (data[5] & 0x0F);
 		}
-		strip1 = (data[1] << 8) | data[2];
-		strip2 = (data[3] << 8) | data[4];
+		strip1 = ((data[1] & 0x1f) << 8) | data[2];
+		strip2 = ((data[3] & 0x1f) << 8) | data[4];
 	}
 
 	prox = (buttons & ~(~0 << nbuttons)) | (keys & ~(~0 << nkeys)) |
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/4] HID: wacom: Report 'strip2' values in ABS_RY
  2015-12-16 21:37 [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits Jason Gerecke
@ 2015-12-16 21:37 ` Jason Gerecke
  2015-12-16 21:37 ` [PATCH 3/4] HID: wacom: Fix touchring value reporting Jason Gerecke
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Jason Gerecke @ 2015-12-16 21:37 UTC (permalink / raw)
  To: linux-input
  Cc: Jiri Kosina, Ping Cheng, Aaron Skomra, Jason Gerecke, Jason Gerecke

Commit c7f0522 accidentally used ABS_RX for reporting both 'strip1' and
'strip2', when the latter should actually be reported through ABS_RY.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
---
 drivers/hid/wacom_wac.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index cf87810..94dffde 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -558,7 +558,7 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
 		input_report_key(input, KEY_PROG1 + i, keys & (1 << i));
 
 	input_report_abs(input, ABS_RX, strip1);
-	input_report_abs(input, ABS_RX, strip2);
+	input_report_abs(input, ABS_RY, strip2);
 
 	input_report_abs(input, ABS_WHEEL,    ring1 & 0x7f ? ring1 : 0);
 	input_report_abs(input, ABS_THROTTLE, ring2 & 0x07 ? ring2 : 0);
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/4] HID: wacom: Fix touchring value reporting
  2015-12-16 21:37 [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits Jason Gerecke
  2015-12-16 21:37 ` [PATCH 2/4] HID: wacom: Report 'strip2' values in ABS_RY Jason Gerecke
@ 2015-12-16 21:37 ` Jason Gerecke
  2015-12-16 21:37 ` [PATCH 4/4] HID: wacom: Fix pad button range for CINTIQ_COMPANION_2 Jason Gerecke
  2015-12-17 23:04 ` [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits Jiri Kosina
  3 siblings, 0 replies; 5+ messages in thread
From: Jason Gerecke @ 2015-12-16 21:37 UTC (permalink / raw)
  To: linux-input
  Cc: Jiri Kosina, Ping Cheng, Aaron Skomra, Jason Gerecke, Jason Gerecke

Commit c7f0522 reports incorrect touchring values to userspace. This is
due to its incorrect handling of the 'touched' bit present in the 'ring1'
and 'ring2' variables. Instead of using this bit when determining if a
value should be sent, the ABS_WHEEL and ABS_INPUT check (different?!)
portions of the position bits. Furthermore, the full values of 'ring1'
and 'ring2' are reported to userspace, despite the 'touched' flag
needing to be trimmed beforehand. This commit addresses both issues.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
---
 drivers/hid/wacom_wac.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index 94dffde..23212af 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -560,8 +560,8 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
 	input_report_abs(input, ABS_RX, strip1);
 	input_report_abs(input, ABS_RY, strip2);
 
-	input_report_abs(input, ABS_WHEEL,    ring1 & 0x7f ? ring1 : 0);
-	input_report_abs(input, ABS_THROTTLE, ring2 & 0x07 ? ring2 : 0);
+	input_report_abs(input, ABS_WHEEL,    (ring1 & 0x80) ? (ring1 & 0x7f) : 0);
+	input_report_abs(input, ABS_THROTTLE, (ring2 & 0x80) ? (ring2 & 0x7f) : 0);
 
 	input_report_key(input, wacom->tool[1], prox ? 1 : 0);
 	input_report_abs(input, ABS_MISC, prox ? PAD_DEVICE_ID : 0);
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 4/4] HID: wacom: Fix pad button range for CINTIQ_COMPANION_2
  2015-12-16 21:37 [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits Jason Gerecke
  2015-12-16 21:37 ` [PATCH 2/4] HID: wacom: Report 'strip2' values in ABS_RY Jason Gerecke
  2015-12-16 21:37 ` [PATCH 3/4] HID: wacom: Fix touchring value reporting Jason Gerecke
@ 2015-12-16 21:37 ` Jason Gerecke
  2015-12-17 23:04 ` [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits Jiri Kosina
  3 siblings, 0 replies; 5+ messages in thread
From: Jason Gerecke @ 2015-12-16 21:37 UTC (permalink / raw)
  To: linux-input
  Cc: Jiri Kosina, Ping Cheng, Aaron Skomra, Jason Gerecke, Jason Gerecke

Commit c7f0522 incorrectly constructs the 'buttons' variable for the
CINTIQ_COMPANION_2 case. The high nybble of data[2] is shifted four
bits too far, leaving the bits associated with BTN_7 through BTN_A
unset.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
---
 drivers/hid/wacom_wac.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index 23212af..f706604 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -516,7 +516,7 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
 		 * d-pad down   -> data[4] & 0x80
 		 * d-pad center -> data[3] & 0x01
 		 */
-		buttons = ((data[2] & 0xF0) << 7) |
+		buttons = ((data[2] >> 4) << 7) |
 		          ((data[1] & 0x04) << 6) |
 		          ((data[2] & 0x0F) << 2) |
 		          (data[1] & 0x03);
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits
  2015-12-16 21:37 [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits Jason Gerecke
                   ` (2 preceding siblings ...)
  2015-12-16 21:37 ` [PATCH 4/4] HID: wacom: Fix pad button range for CINTIQ_COMPANION_2 Jason Gerecke
@ 2015-12-17 23:04 ` Jiri Kosina
  3 siblings, 0 replies; 5+ messages in thread
From: Jiri Kosina @ 2015-12-17 23:04 UTC (permalink / raw)
  To: Jason Gerecke; +Cc: linux-input, Ping Cheng, Aaron Skomra, Jason Gerecke

I've applied the series to for-4.5/wacom.

Thanks,

-- 
Jiri Kosina
SUSE Labs


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-12-17 23:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-16 21:37 [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits Jason Gerecke
2015-12-16 21:37 ` [PATCH 2/4] HID: wacom: Report 'strip2' values in ABS_RY Jason Gerecke
2015-12-16 21:37 ` [PATCH 3/4] HID: wacom: Fix touchring value reporting Jason Gerecke
2015-12-16 21:37 ` [PATCH 4/4] HID: wacom: Fix pad button range for CINTIQ_COMPANION_2 Jason Gerecke
2015-12-17 23:04 ` [PATCH 1/4] HID: wacom: Limit touchstrip data to 13 bits Jiri Kosina

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.