All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] HID: wacom: Add tilt reporting for Intuos4 WL
@ 2012-05-04 17:00 ` Przemo Firszt
  0 siblings, 0 replies; 3+ messages in thread
From: Przemo Firszt @ 2012-05-04 17:00 UTC (permalink / raw)
  To: pinglinux, jkosina, linux-kernel
  Cc: linuxwacom-devel, linux-input, Przemo Firszt

Tile is reported to input subsystem as reported by the device without
any modifications. It means that tilt X/Y range is 0 to 127 and it's
not centered on zero.

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
---
 drivers/hid/hid-wacom.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
index fb0fe16..a66e1aa 100644
--- a/drivers/hid/hid-wacom.c
+++ b/drivers/hid/hid-wacom.c
@@ -363,6 +363,7 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
 {
 	__u16 x, y, pressure;
 	__u8 distance;
+	__u8 tilt_x, tilt_y;
 
 	switch (data[1]) {
 	case 0x80: /* Out of proximity report */
@@ -399,6 +400,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
 		pressure = (data[6] << 3) | ((data[7] & 0xC0) >> 5)
 			| (data[1] & 0x01);
 		distance = (data[9] >> 2) & 0x3f;
+		tilt_x = ((data[7] << 1) & 0x7e) | (data[8] >> 7);
+		tilt_y = data[8] & 0x7f;
 
 		input_report_key(input, BTN_TOUCH, pressure > 1);
 
@@ -409,6 +412,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
 		input_report_abs(input, ABS_Y, y);
 		input_report_abs(input, ABS_PRESSURE, pressure);
 		input_report_abs(input, ABS_DISTANCE, distance);
+		input_report_abs(input, ABS_TILT_X, tilt_x);
+		input_report_abs(input, ABS_TILT_Y, tilt_y);
 		input_report_abs(input, ABS_MISC, wdata->id);
 		input_event(input, EV_MSC, MSC_SERIAL, wdata->serial);
 		input_report_key(input, wdata->tool, 1);
@@ -548,6 +553,8 @@ static int wacom_input_mapped(struct hid_device *hdev, struct hid_input *hi,
 		input_set_abs_params(input, ABS_Y, 0, 25400, 4, 0);
 		input_set_abs_params(input, ABS_PRESSURE, 0, 2047, 0, 0);
 		input_set_abs_params(input, ABS_DISTANCE, 0, 63, 0, 0);
+		input_set_abs_params(input, ABS_TILT_X, 0, 127, 0, 0);
+		input_set_abs_params(input, ABS_TILT_Y, 0, 127, 0, 0);
 		break;
 	}
 
-- 
1.7.10


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

* [PATCH] HID: wacom: Add tilt reporting for Intuos4 WL
@ 2012-05-04 17:00 ` Przemo Firszt
  0 siblings, 0 replies; 3+ messages in thread
From: Przemo Firszt @ 2012-05-04 17:00 UTC (permalink / raw)
  To: pinglinux-Re5JQEeQqe8AvxtiuMwx3w, jkosina-AlSwsSmVLrQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: linuxwacom-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-input-u79uwXL29TY76Z2rM5mHXA

Tile is reported to input subsystem as reported by the device without
any modifications. It means that tilt X/Y range is 0 to 127 and it's
not centered on zero.

Signed-off-by: Przemo Firszt <przemo-q9SP4D9nreWHXe+LvDLADg@public.gmane.org>
---
 drivers/hid/hid-wacom.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
index fb0fe16..a66e1aa 100644
--- a/drivers/hid/hid-wacom.c
+++ b/drivers/hid/hid-wacom.c
@@ -363,6 +363,7 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
 {
 	__u16 x, y, pressure;
 	__u8 distance;
+	__u8 tilt_x, tilt_y;
 
 	switch (data[1]) {
 	case 0x80: /* Out of proximity report */
@@ -399,6 +400,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
 		pressure = (data[6] << 3) | ((data[7] & 0xC0) >> 5)
 			| (data[1] & 0x01);
 		distance = (data[9] >> 2) & 0x3f;
+		tilt_x = ((data[7] << 1) & 0x7e) | (data[8] >> 7);
+		tilt_y = data[8] & 0x7f;
 
 		input_report_key(input, BTN_TOUCH, pressure > 1);
 
@@ -409,6 +412,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
 		input_report_abs(input, ABS_Y, y);
 		input_report_abs(input, ABS_PRESSURE, pressure);
 		input_report_abs(input, ABS_DISTANCE, distance);
+		input_report_abs(input, ABS_TILT_X, tilt_x);
+		input_report_abs(input, ABS_TILT_Y, tilt_y);
 		input_report_abs(input, ABS_MISC, wdata->id);
 		input_event(input, EV_MSC, MSC_SERIAL, wdata->serial);
 		input_report_key(input, wdata->tool, 1);
@@ -548,6 +553,8 @@ static int wacom_input_mapped(struct hid_device *hdev, struct hid_input *hi,
 		input_set_abs_params(input, ABS_Y, 0, 25400, 4, 0);
 		input_set_abs_params(input, ABS_PRESSURE, 0, 2047, 0, 0);
 		input_set_abs_params(input, ABS_DISTANCE, 0, 63, 0, 0);
+		input_set_abs_params(input, ABS_TILT_X, 0, 127, 0, 0);
+		input_set_abs_params(input, ABS_TILT_Y, 0, 127, 0, 0);
 		break;
 	}
 
-- 
1.7.10


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/

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

* Re: [PATCH] HID: wacom: Add tilt reporting for Intuos4 WL
  2012-05-04 17:00 ` Przemo Firszt
  (?)
@ 2012-05-07 13:03 ` Jiri Kosina
  -1 siblings, 0 replies; 3+ messages in thread
From: Jiri Kosina @ 2012-05-07 13:03 UTC (permalink / raw)
  To: Przemo Firszt; +Cc: pinglinux, linux-kernel, linuxwacom-devel, linux-input

On Fri, 4 May 2012, Przemo Firszt wrote:

> Tile is reported to input subsystem as reported by the device without
> any modifications. It means that tilt X/Y range is 0 to 127 and it's
> not centered on zero.
> 
> Signed-off-by: Przemo Firszt <przemo@firszt.eu>
> ---
>  drivers/hid/hid-wacom.c |    7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
> index fb0fe16..a66e1aa 100644
> --- a/drivers/hid/hid-wacom.c
> +++ b/drivers/hid/hid-wacom.c
> @@ -363,6 +363,7 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
>  {
>  	__u16 x, y, pressure;
>  	__u8 distance;
> +	__u8 tilt_x, tilt_y;
>  
>  	switch (data[1]) {
>  	case 0x80: /* Out of proximity report */
> @@ -399,6 +400,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
>  		pressure = (data[6] << 3) | ((data[7] & 0xC0) >> 5)
>  			| (data[1] & 0x01);
>  		distance = (data[9] >> 2) & 0x3f;
> +		tilt_x = ((data[7] << 1) & 0x7e) | (data[8] >> 7);
> +		tilt_y = data[8] & 0x7f;
>  
>  		input_report_key(input, BTN_TOUCH, pressure > 1);
>  
> @@ -409,6 +412,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
>  		input_report_abs(input, ABS_Y, y);
>  		input_report_abs(input, ABS_PRESSURE, pressure);
>  		input_report_abs(input, ABS_DISTANCE, distance);
> +		input_report_abs(input, ABS_TILT_X, tilt_x);
> +		input_report_abs(input, ABS_TILT_Y, tilt_y);
>  		input_report_abs(input, ABS_MISC, wdata->id);
>  		input_event(input, EV_MSC, MSC_SERIAL, wdata->serial);
>  		input_report_key(input, wdata->tool, 1);
> @@ -548,6 +553,8 @@ static int wacom_input_mapped(struct hid_device *hdev, struct hid_input *hi,
>  		input_set_abs_params(input, ABS_Y, 0, 25400, 4, 0);
>  		input_set_abs_params(input, ABS_PRESSURE, 0, 2047, 0, 0);
>  		input_set_abs_params(input, ABS_DISTANCE, 0, 63, 0, 0);
> +		input_set_abs_params(input, ABS_TILT_X, 0, 127, 0, 0);
> +		input_set_abs_params(input, ABS_TILT_Y, 0, 127, 0, 0);
>  		break;

Applied.

-- 
Jiri Kosina
SUSE Labs

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

end of thread, other threads:[~2012-05-07 13:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-04 17:00 [PATCH] HID: wacom: Add tilt reporting for Intuos4 WL Przemo Firszt
2012-05-04 17:00 ` Przemo Firszt
2012-05-07 13:03 ` 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.