All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] input: wacom: Intuos5 basic support
@ 2012-03-10  2:06 Jason Gerecke
  2012-03-10  2:06 ` [PATCH 2/4] input: wacom: Intuos5 Touch Ring/ExpressKey support Jason Gerecke
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Jason Gerecke @ 2012-03-10  2:06 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, chris, linuxwacom-devel; +Cc: Jason Gerecke

This patch adds support for the basic pen functions of Intuos5
tablets.
---
 drivers/input/tablet/wacom_wac.c |   36 +++++++++++++++++++++++++++++++++---
 drivers/input/tablet/wacom_wac.h |    3 +++
 2 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index 9283507..35efc64 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -452,6 +452,7 @@ static void wacom_intuos_general(struct wacom_wac *wacom)
 	if ((data[1] & 0xb8) == 0xa0) {
 		t = (data[6] << 2) | ((data[7] >> 6) & 3);
 		if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
+                    (features->type >= INTUOS5S && features->type <= INTUOS5L) ||
 		    features->type == WACOM_21UX2 || features->type == WACOM_24HD) {
 			t = (t << 1) | (data[1] & 1);
 		}
@@ -632,7 +633,9 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
 	    (features->type == INTUOS3 ||
 	     features->type == INTUOS3S ||
 	     features->type == INTUOS4 ||
-	     features->type == INTUOS4S)) {
+	     features->type == INTUOS4S ||
+	     features->type == INTUOS5 ||
+	     features->type == INTUOS5S)) {
 
 		return 0;
 	}
@@ -685,7 +688,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
 
 		} else if (wacom->tool[idx] == BTN_TOOL_MOUSE) {
 			/* I4 mouse */
-			if (features->type >= INTUOS4S && features->type <= INTUOS4L) {
+			if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
+			    (features->type >= INTUOS5S && features->type <= INTUOS5L)) {
 				input_report_key(input, BTN_LEFT,   data[6] & 0x01);
 				input_report_key(input, BTN_MIDDLE, data[6] & 0x02);
 				input_report_key(input, BTN_RIGHT,  data[6] & 0x04);
@@ -712,7 +716,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
 				}
 			}
 		} else if ((features->type < INTUOS3S || features->type == INTUOS3L ||
-				features->type == INTUOS4L) &&
+				features->type == INTUOS4L || features->type == INTUOS5L) &&
 			   wacom->tool[idx] == BTN_TOOL_LENS) {
 			/* Lens cursor packets */
 			input_report_key(input, BTN_LEFT,   data[8] & 0x01);
@@ -1078,6 +1082,9 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
 	case INTUOS4S:
 	case INTUOS4:
 	case INTUOS4L:
+	case INTUOS5S:
+	case INTUOS5:
+	case INTUOS5L:
 	case CINTIQ:
 	case WACOM_BEE:
 	case WACOM_21UX2:
@@ -1312,12 +1319,15 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
 		wacom_setup_intuos(wacom_wac);
 		break;
 
+	case INTUOS5:
+	case INTUOS5L:
 	case INTUOS4:
 	case INTUOS4L:
 		__set_bit(BTN_7, input_dev->keybit);
 		__set_bit(BTN_8, input_dev->keybit);
 		/* fall through */
 
+	case INTUOS5S:
 	case INTUOS4S:
 		for (i = 0; i < 7; i++)
 			__set_bit(BTN_0 + i, input_dev->keybit);
@@ -1586,6 +1596,21 @@ static const struct wacom_features wacom_features_0xBB =
 static const struct wacom_features wacom_features_0xBC =
 	{ "Wacom Intuos4 WL",     WACOM_PKGLEN_INTUOS,    40840, 25400, 2047,
 	  63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
+static const struct wacom_features wacom_features_0x26 =
+        { "Wacom Intuos5 touch S", WACOM_PKGLEN_INTUOS,  31496, 19685, 2047,
+          63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
+static const struct wacom_features wacom_features_0x27 =
+        { "Wacom Intuos5 touch M", WACOM_PKGLEN_INTUOS,  44704, 27940, 2047,
+          63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
+static const struct wacom_features wacom_features_0x28 =
+        { "Wacom Intuos5 touch L", WACOM_PKGLEN_INTUOS, 65024, 40640, 2047,
+          63, INTUOS5L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
+static const struct wacom_features wacom_features_0x29 =
+        { "Wacom Intuos5 S", WACOM_PKGLEN_INTUOS,  31496, 19685, 2047,
+          63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
+static const struct wacom_features wacom_features_0x2A =
+        { "Wacom Intuos5 M", WACOM_PKGLEN_INTUOS,  44704, 27940, 2047,
+          63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
 static const struct wacom_features wacom_features_0xF4 =
 	{ "Wacom Cintiq 24HD",    WACOM_PKGLEN_INTUOS,   104480, 65600, 2047,
 	  63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };
@@ -1752,6 +1777,11 @@ const struct usb_device_id wacom_ids[] = {
 	{ USB_DEVICE_WACOM(0xBA) },
 	{ USB_DEVICE_WACOM(0xBB) },
 	{ USB_DEVICE_WACOM(0xBC) },
+	{ USB_DEVICE_WACOM(0x26) },
+	{ USB_DEVICE_WACOM(0x27) },
+	{ USB_DEVICE_WACOM(0x28) },
+	{ USB_DEVICE_WACOM(0x29) },
+	{ USB_DEVICE_WACOM(0x2A) },
 	{ USB_DEVICE_WACOM(0x3F) },
 	{ USB_DEVICE_WACOM(0xC5) },
 	{ USB_DEVICE_WACOM(0xC6) },
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
index 4f0ba21..5eb10c5 100644
--- a/drivers/input/tablet/wacom_wac.h
+++ b/drivers/input/tablet/wacom_wac.h
@@ -61,6 +61,9 @@ enum {
 	INTUOS4S,
 	INTUOS4,
 	INTUOS4L,
+	INTUOS5S,
+	INTUOS5,
+	INTUOS5L,
 	WACOM_24HD,
 	WACOM_21UX2,
 	CINTIQ,
-- 
1.7.9.1


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

* [PATCH 2/4] input: wacom: Intuos5 Touch Ring/ExpressKey support
  2012-03-10  2:06 [PATCH 1/4] input: wacom: Intuos5 basic support Jason Gerecke
@ 2012-03-10  2:06 ` Jason Gerecke
  2012-03-10  2:06 ` [PATCH 3/4] input: wacom: Intous5 Touch Ring LED support Jason Gerecke
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Jason Gerecke @ 2012-03-10  2:06 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, chris, linuxwacom-devel; +Cc: Jason Gerecke

Intuos5 uses a new report type for Touch Ring and ExpressKey data.
Note that data from the capacitive sensors present on the ExpressKeys
will be ignored until a proper way is found to expose it.
---
 drivers/input/tablet/wacom_wac.c |   33 +++++++++++++++++++++++++++++++--
 drivers/input/tablet/wacom_wac.h |    1 +
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index 35efc64..86827c7 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -484,7 +484,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
 	int idx = 0, result;
 
 	if (data[0] != WACOM_REPORT_PENABLED && data[0] != WACOM_REPORT_INTUOSREAD
-		&& data[0] != WACOM_REPORT_INTUOSWRITE && data[0] != WACOM_REPORT_INTUOSPAD) {
+		&& data[0] != WACOM_REPORT_INTUOSWRITE && data[0] != WACOM_REPORT_INTUOSPAD
+                && data[0] != WACOM_REPORT_INTUOS5PAD) {
 		dbg("wacom_intuos_irq: received unknown report #%d", data[0]);
                 return 0;
 	}
@@ -494,7 +495,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
 		idx = data[1] & 0x01;
 
 	/* pad packets. Works as a second tool and is always in prox */
-	if (data[0] == WACOM_REPORT_INTUOSPAD) {
+	if (data[0] == WACOM_REPORT_INTUOSPAD || data[0] == WACOM_REPORT_INTUOS5PAD) {
 		if (features->type >= INTUOS4S && features->type <= INTUOS4L) {
 			input_report_key(input, BTN_0, (data[2] & 0x01));
 			input_report_key(input, BTN_1, (data[3] & 0x01));
@@ -570,6 +571,34 @@ static int wacom_intuos_irq(struct wacom_wac *wacom)
 				input_report_key(input, wacom->tool[1], 0);
 				input_report_abs(input, ABS_MISC, 0);
 			}
+		} else if (features->type >= INTUOS5S && features->type <= INTUOS5L) {
+			int i;
+
+			/* Touch ring mode switch has no capacitive sensor */
+			input_report_key(input, BTN_0, (data[3] & 0x01));
+
+			/* ExpressKeys on Intuos5 have a capacitive sensor in
+			 * addition to the mechanical switch. Switch data is
+			 * stored in data[4], capacitive data in data[5].
+			 */
+			for (i = 0; i < 8; i++) {
+				input_report_key(input, BTN_1 + i, data[4] & (1 << i));
+			}
+
+			if (data[2] & 0x80) {
+				input_report_abs(input, ABS_WHEEL, (data[2] & 0x7f));
+			} else {
+				/* Out of proximity, clear wheel value. */
+				input_report_abs(input, ABS_WHEEL, 0);
+			}
+
+			if (data[2] | (data[3] & 0x01) | data[4]) {
+				input_report_key(input, wacom->tool[1], 1);
+				input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
+			} else {
+				input_report_key(input, wacom->tool[1], 0);
+				input_report_abs(input, ABS_MISC, 0);
+			}
 		} else {
 			if (features->type == WACOM_21UX2) {
 				input_report_key(input, BTN_0, (data[5] & 0x01));
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
index 5eb10c5..99efc10 100644
--- a/drivers/input/tablet/wacom_wac.h
+++ b/drivers/input/tablet/wacom_wac.h
@@ -37,6 +37,7 @@
 #define WACOM_REPORT_INTUOSREAD		5
 #define WACOM_REPORT_INTUOSWRITE	6
 #define WACOM_REPORT_INTUOSPAD		12
+#define WACOM_REPORT_INTUOS5PAD         3
 #define WACOM_REPORT_TPC1FG		6
 #define WACOM_REPORT_TPC2FG		13
 #define WACOM_REPORT_TPCHID		15
-- 
1.7.9.1


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

* [PATCH 3/4] input: wacom: Intous5 Touch Ring LED support
  2012-03-10  2:06 [PATCH 1/4] input: wacom: Intuos5 basic support Jason Gerecke
  2012-03-10  2:06 ` [PATCH 2/4] input: wacom: Intuos5 Touch Ring/ExpressKey support Jason Gerecke
@ 2012-03-10  2:06 ` Jason Gerecke
  2012-03-10  2:06 ` [PATCH 4/4] input: wacom: Intuos5 multitouch sensor support Jason Gerecke
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Jason Gerecke @ 2012-03-10  2:06 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, chris, linuxwacom-devel; +Cc: Jason Gerecke

The Touch Ring LEDs on Intuos5 tablets use a different report
format which supports only 4 levels of brightness. We remap
the 7-bit value obtained from sysfs to an appropriate value
for the tablet. Control of the crop mark LEDs (new to the I5)
is left for a later patch.
---
 Documentation/ABI/testing/sysfs-driver-wacom |   15 +++---
 drivers/input/tablet/wacom_sys.c             |   68 +++++++++++++++++++++----
 2 files changed, 65 insertions(+), 18 deletions(-)

diff --git a/Documentation/ABI/testing/sysfs-driver-wacom b/Documentation/ABI/testing/sysfs-driver-wacom
index 0130d66..5e9cbdc 100644
--- a/Documentation/ABI/testing/sysfs-driver-wacom
+++ b/Documentation/ABI/testing/sysfs-driver-wacom
@@ -15,9 +15,10 @@ Contact:	linux-input@vger.kernel.org
 Description:
 		Attribute group for control of the status LEDs and the OLEDs.
 		This attribute group is only available for Intuos 4 M, L,
-		and XL (with LEDs and OLEDs) and Cintiq 21UX2 and Cintiq 24HD
-		(LEDs only). Therefore its presence implicitly signifies the
-		presence of said LEDs and OLEDs on the tablet device.
+		and XL (with LEDs and OLEDs), Intuos 5 (LEDs only), and Cintiq
+		21UX2 and Cintiq 24HD (LEDs only). Therefore its presence
+		implicitly signifies the presence of said LEDs and OLEDs on the
+		tablet device.
 
 What:		/sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance
 Date:		August 2011
@@ -40,10 +41,10 @@ What:		/sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led0
 Date:		August 2011
 Contact:	linux-input@vger.kernel.org
 Description:
-		Writing to this file sets which one of the four (for Intuos 4)
-		or of the right four (for Cintiq 21UX2 and Cintiq 24HD) status
-		LEDs is active (0..3). The other three LEDs on the same side are
-		always inactive.
+		Writing to this file sets which one of the four (for Intuos 4
+		and Intuos 5) or of the right four (for Cintiq 21UX2 and Cintiq
+		24HD) status LEDs is active (0..3). The other three LEDs on the
+		same side are always inactive.
 
 What:		/sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select
 Date:		September 2011
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index c9588ee..11b4c05 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -553,23 +553,38 @@ static void wacom_remove_shared_data(struct wacom_wac *wacom)
 static int wacom_led_control(struct wacom *wacom)
 {
 	unsigned char *buf;
-	int retval, led = 0;
+	int retval;
 
 	buf = kzalloc(9, GFP_KERNEL);
 	if (!buf)
 		return -ENOMEM;
 
-	if (wacom->wacom_wac.features.type == WACOM_21UX2 ||
-	    wacom->wacom_wac.features.type == WACOM_24HD)
-		led = (wacom->led.select[1] << 4) | 0x40;
-
-	led |=  wacom->led.select[0] | 0x4;
+	if (wacom->wacom_wac.features.type >= INTUOS5S &&
+	    wacom->wacom_wac.features.type <= INTUOS5L)	{
+		/* Touch Ring and crop mark LED luminance may take on
+		 * one of four values:
+		 *    0 = Low; 1 = Medium; 2 = High; 3 = Off
+		 */
+		int ring_led = wacom->led.select[0] & 0x03;
+		int ring_lum = (((wacom->led.llv & 0x60) >> 5) - 1) & 0x03;
+		int crop_lum = 0;
 
-	buf[0] = WAC_CMD_LED_CONTROL;
-	buf[1] = led;
-	buf[2] = wacom->led.llv;
-	buf[3] = wacom->led.hlv;
-	buf[4] = wacom->led.img_lum;
+		buf[0] = WAC_CMD_LED_CONTROL;
+		buf[1] = (crop_lum << 4) | (ring_lum << 2) | (ring_led);
+	}
+	else {
+		int led = wacom->led.select[0] | 0x4;
+
+		if (wacom->wacom_wac.features.type == WACOM_21UX2 ||
+		    wacom->wacom_wac.features.type == WACOM_24HD)
+			led |= (wacom->led.select[1] << 4) | 0x40;
+
+		buf[0] = WAC_CMD_LED_CONTROL;
+		buf[1] = led;
+		buf[2] = wacom->led.llv;
+		buf[3] = wacom->led.hlv;
+		buf[4] = wacom->led.img_lum;
+	}
 
 	retval = wacom_set_report(wacom->intf, 0x03, WAC_CMD_LED_CONTROL,
 				  buf, 9, WAC_CMD_RETRIES);
@@ -762,6 +777,17 @@ static struct attribute_group intuos4_led_attr_group = {
 	.attrs = intuos4_led_attrs,
 };
 
+static struct attribute *intuos5_led_attrs[] = {
+	&dev_attr_status0_luminance.attr,
+	&dev_attr_status_led0_select.attr,
+	NULL
+};
+
+static struct attribute_group intuos5_led_attr_group = {
+	.name = "wacom_led",
+	.attrs = intuos5_led_attrs,
+};
+
 static int wacom_initialize_leds(struct wacom *wacom)
 {
 	int error;
@@ -791,6 +817,19 @@ static int wacom_initialize_leds(struct wacom *wacom)
 					   &cintiq_led_attr_group);
 		break;
 
+	case INTUOS5S:
+	case INTUOS5:
+	case INTUOS5L:
+		wacom->led.select[0] = 0;
+		wacom->led.select[1] = 0;
+		wacom->led.llv = 32;
+		wacom->led.hlv = 0;
+		wacom->led.img_lum = 0;
+
+		error = sysfs_create_group(&wacom->intf->dev.kobj,
+					   &intuos5_led_attr_group);
+		break;
+
 	default:
 		return 0;
 	}
@@ -819,6 +858,13 @@ static void wacom_destroy_leds(struct wacom *wacom)
 		sysfs_remove_group(&wacom->intf->dev.kobj,
 				   &cintiq_led_attr_group);
 		break;
+
+	case INTUOS5S:
+	case INTUOS5:
+	case INTUOS5L:
+		sysfs_remove_group(&wacom->intf->dev.kobj,
+				   &intuos5_led_attr_group);
+		break;
 	}
 }
 
-- 
1.7.9.1


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

* [PATCH 4/4] input: wacom: Intuos5 multitouch sensor support
  2012-03-10  2:06 [PATCH 1/4] input: wacom: Intuos5 basic support Jason Gerecke
  2012-03-10  2:06 ` [PATCH 2/4] input: wacom: Intuos5 Touch Ring/ExpressKey support Jason Gerecke
  2012-03-10  2:06 ` [PATCH 3/4] input: wacom: Intous5 Touch Ring LED support Jason Gerecke
@ 2012-03-10  2:06 ` Jason Gerecke
  2012-03-12 22:36 ` [PATCH v2 " Jason Gerecke
  2012-04-03 18:05 ` [Linuxwacom-devel] [PATCH 1/4] input: wacom: Intuos5 basic support Timo Aaltonen
  4 siblings, 0 replies; 9+ messages in thread
From: Jason Gerecke @ 2012-03-10  2:06 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, chris, linuxwacom-devel; +Cc: Jason Gerecke

Intuos5 tablets with PTH-* model numbers include a multitouch sensor
which use the same touch reports as the 3rd-generation Bamboo. No
useful information is in the HID descriptor for the touch interface
so hardcoded values are used during setup.
---
 drivers/input/tablet/wacom_sys.c |   24 ++++++++++++++
 drivers/input/tablet/wacom_wac.c |   63 +++++++++++++++++++++++++++++++++++---
 2 files changed, 82 insertions(+), 5 deletions(-)

diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index 11b4c05..b1af6c2 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -228,6 +228,9 @@ static int wacom_parse_logical_collection(unsigned char *report,
  * 3rd gen Bamboo Touch no longer define a Digitizer-Finger Pysical
  * Collection. Instead they define a Logical Collection with a single
  * Logical Maximum for both X and Y.
+ *
+ * Intuos5 touch interface does not contain useful data. We deal with
+ * this after returning from this function.
  */
 static int wacom_parse_hid(struct usb_interface *intf,
 			   struct hid_descriptor *hid_desc,
@@ -924,6 +927,27 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
 	if (error)
 		goto fail3;
 
+	/* Intuos5 has no useful data about its touch interface in its
+	 * HID descriptor. If this is the touch interface (wMaxPacketSize
+	 * of WACOM_PKGLEN_BBTOUCH3), override the table values.
+	 */
+	if (features->type >= INTUOS5S && features->type <= INTUOS5L) {
+		if (endpoint->wMaxPacketSize == WACOM_PKGLEN_BBTOUCH3) {
+			features->device_type = BTN_TOOL_FINGER;
+			features->pktlen = WACOM_PKGLEN_BBTOUCH3;
+
+			features->x_phy =
+				(features->x_max * features->x_resolution) / 100;
+			features->y_phy =
+				(features->y_max * features->y_resolution) / 100;
+
+			features->x_max = 4096;
+			features->y_max = 4096;
+		} else {
+			features->device_type = BTN_TOOL_PEN;
+		}
+	}
+
 	wacom_setup_device_quirks(features);
 
 	strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index 86827c7..30067ae 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -321,6 +321,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
 
 	/* Enter report */
 	if ((data[1] & 0xfc) == 0xc0) {
+		if (features->type >= INTUOS5S && features->type <= INTUOS5L)
+			wacom->shared->stylus_in_proximity = true;
+
 		/* serial number of the tool */
 		wacom->serial[idx] = ((data[3] & 0x0f) << 28) +
 			(data[4] << 20) + (data[5] << 12) +
@@ -406,6 +409,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
 
 	/* Exit report */
 	if ((data[1] & 0xfe) == 0x80) {
+		if (features->type >= INTUOS5S && features->type <= INTUOS5L)
+			wacom->shared->stylus_in_proximity = false;
+
 		/*
 		 * Reset all states otherwise we lose the initial states
 		 * when in-prox next time
@@ -1111,9 +1117,6 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
 	case INTUOS4S:
 	case INTUOS4:
 	case INTUOS4L:
-	case INTUOS5S:
-	case INTUOS5:
-	case INTUOS5L:
 	case CINTIQ:
 	case WACOM_BEE:
 	case WACOM_21UX2:
@@ -1121,6 +1124,15 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
 		sync = wacom_intuos_irq(wacom_wac);
 		break;
 
+	case INTUOS5S:
+	case INTUOS5:
+	case INTUOS5L:
+		if (len == WACOM_PKGLEN_BBTOUCH3)
+			sync = wacom_bpt3_touch(wacom_wac);
+		else
+			sync = wacom_intuos_irq(wacom_wac);
+		break;
+
 	case TABLETPC:
 	case TABLETPC2FG:
 		sync = wacom_tpc_irq(wacom_wac, len);
@@ -1191,7 +1203,7 @@ void wacom_setup_device_quirks(struct wacom_features *features)
 
 	/* these device have multiple inputs */
 	if (features->type == TABLETPC || features->type == TABLETPC2FG ||
-	    features->type == BAMBOO_PT)
+	    features->type == BAMBOO_PT || (features->type >= INTUOS5S && features->type <= INTUOS5L))
 		features->quirks |= WACOM_QUIRK_MULTI_INPUT;
 
 	/* quirk for bamboo touch with 2 low res touches */
@@ -1350,13 +1362,54 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
 
 	case INTUOS5:
 	case INTUOS5L:
+		if (features->device_type == BTN_TOOL_PEN) {
+			__set_bit(BTN_7, input_dev->keybit);
+			__set_bit(BTN_8, input_dev->keybit);
+		}
+		/* fall through */
+
+	case INTUOS5S:
+		__set_bit(INPUT_PROP_POINTER, input_dev->propbit);
+
+		if (features->device_type == BTN_TOOL_PEN) {
+			for (i = 0; i < 7; i++)
+				__set_bit(BTN_0 + i, input_dev->keybit);
+
+			input_set_abs_params(input_dev, ABS_DISTANCE, 0,
+					      features->distance_max,
+					      0, 0);
+
+			input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
+
+			wacom_setup_intuos(wacom_wac);
+		} else if (features->device_type == BTN_TOOL_FINGER) {
+			__clear_bit(ABS_MISC, input_dev->absbit);
+
+			__set_bit(BTN_TOOL_FINGER, input_dev->keybit);
+			__set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit);
+			__set_bit(BTN_TOOL_TRIPLETAP, input_dev->keybit);
+			__set_bit(BTN_TOOL_QUADTAP, input_dev->keybit);
+
+			input_mt_init_slots(input_dev, 16);
+
+			input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR,
+			                     0, 255, 0, 0);
+
+			input_set_abs_params(input_dev, ABS_MT_POSITION_X,
+					     0, features->x_max,
+					     features->x_fuzz, 0);
+			input_set_abs_params(input_dev, ABS_MT_POSITION_Y,
+					     0, features->y_max,
+					     features->y_fuzz, 0);
+		}
+		break;
+
 	case INTUOS4:
 	case INTUOS4L:
 		__set_bit(BTN_7, input_dev->keybit);
 		__set_bit(BTN_8, input_dev->keybit);
 		/* fall through */
 
-	case INTUOS5S:
 	case INTUOS4S:
 		for (i = 0; i < 7; i++)
 			__set_bit(BTN_0 + i, input_dev->keybit);
-- 
1.7.9.1


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

* [PATCH v2 4/4] input: wacom: Intuos5 multitouch sensor support
  2012-03-10  2:06 [PATCH 1/4] input: wacom: Intuos5 basic support Jason Gerecke
                   ` (2 preceding siblings ...)
  2012-03-10  2:06 ` [PATCH 4/4] input: wacom: Intuos5 multitouch sensor support Jason Gerecke
@ 2012-03-12 22:36 ` Jason Gerecke
  2012-03-13  3:25   ` Chris Bagwell
  2012-04-03 18:05 ` [Linuxwacom-devel] [PATCH 1/4] input: wacom: Intuos5 basic support Timo Aaltonen
  4 siblings, 1 reply; 9+ messages in thread
From: Jason Gerecke @ 2012-03-12 22:36 UTC (permalink / raw)
  To: linux-input, dmitry.torokhov, chris, linuxwacom-devel; +Cc: Jason Gerecke

Intuos5 tablets with PTH-* model numbers include a multitouch sensor
which use the same touch reports as the 3rd-generation Bamboo. No
useful information is in the HID descriptor for the touch interface
so hardcoded values are used during setup.

Signed-off-by: Jason Gerecke <killertofu@gmail.com>
---
Changes from v1:
 * Fixed calculation of x_phy and y_phy (logic for the 3rd-gen Bamboo
   which I copied is incorrect! Patch on the way.)

 drivers/input/tablet/wacom_sys.c |   24 ++++++++++++++
 drivers/input/tablet/wacom_wac.c |   63 +++++++++++++++++++++++++++++++++++---
 2 files changed, 82 insertions(+), 5 deletions(-)

diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index 11b4c05..528e3a4 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -228,6 +228,9 @@ static int wacom_parse_logical_collection(unsigned char *report,
  * 3rd gen Bamboo Touch no longer define a Digitizer-Finger Pysical
  * Collection. Instead they define a Logical Collection with a single
  * Logical Maximum for both X and Y.
+ *
+ * Intuos5 touch interface does not contain useful data. We deal with
+ * this after returning from this function.
  */
 static int wacom_parse_hid(struct usb_interface *intf,
 			   struct hid_descriptor *hid_desc,
@@ -924,6 +927,27 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
 	if (error)
 		goto fail3;
 
+	/* Intuos5 has no useful data about its touch interface in its
+	 * HID descriptor. If this is the touch interface (wMaxPacketSize
+	 * of WACOM_PKGLEN_BBTOUCH3), override the table values.
+	 */
+	if (features->type >= INTUOS5S && features->type <= INTUOS5L) {
+		if (endpoint->wMaxPacketSize == WACOM_PKGLEN_BBTOUCH3) {
+			features->device_type = BTN_TOOL_FINGER;
+			features->pktlen = WACOM_PKGLEN_BBTOUCH3;
+
+			features->x_phy =
+				(features->x_max * 100) / features->x_resolution;
+			features->y_phy =
+				(features->y_max * 100) / features->y_resolution;
+
+			features->x_max = 4096;
+			features->y_max = 4096;
+		} else {
+			features->device_type = BTN_TOOL_PEN;
+		}
+	}
+
 	wacom_setup_device_quirks(features);
 
 	strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index 86827c7..30067ae 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -321,6 +321,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
 
 	/* Enter report */
 	if ((data[1] & 0xfc) == 0xc0) {
+		if (features->type >= INTUOS5S && features->type <= INTUOS5L)
+			wacom->shared->stylus_in_proximity = true;
+
 		/* serial number of the tool */
 		wacom->serial[idx] = ((data[3] & 0x0f) << 28) +
 			(data[4] << 20) + (data[5] << 12) +
@@ -406,6 +409,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
 
 	/* Exit report */
 	if ((data[1] & 0xfe) == 0x80) {
+		if (features->type >= INTUOS5S && features->type <= INTUOS5L)
+			wacom->shared->stylus_in_proximity = false;
+
 		/*
 		 * Reset all states otherwise we lose the initial states
 		 * when in-prox next time
@@ -1111,9 +1117,6 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
 	case INTUOS4S:
 	case INTUOS4:
 	case INTUOS4L:
-	case INTUOS5S:
-	case INTUOS5:
-	case INTUOS5L:
 	case CINTIQ:
 	case WACOM_BEE:
 	case WACOM_21UX2:
@@ -1121,6 +1124,15 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
 		sync = wacom_intuos_irq(wacom_wac);
 		break;
 
+	case INTUOS5S:
+	case INTUOS5:
+	case INTUOS5L:
+		if (len == WACOM_PKGLEN_BBTOUCH3)
+			sync = wacom_bpt3_touch(wacom_wac);
+		else
+			sync = wacom_intuos_irq(wacom_wac);
+		break;
+
 	case TABLETPC:
 	case TABLETPC2FG:
 		sync = wacom_tpc_irq(wacom_wac, len);
@@ -1191,7 +1203,7 @@ void wacom_setup_device_quirks(struct wacom_features *features)
 
 	/* these device have multiple inputs */
 	if (features->type == TABLETPC || features->type == TABLETPC2FG ||
-	    features->type == BAMBOO_PT)
+	    features->type == BAMBOO_PT || (features->type >= INTUOS5S && features->type <= INTUOS5L))
 		features->quirks |= WACOM_QUIRK_MULTI_INPUT;
 
 	/* quirk for bamboo touch with 2 low res touches */
@@ -1350,13 +1362,54 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
 
 	case INTUOS5:
 	case INTUOS5L:
+		if (features->device_type == BTN_TOOL_PEN) {
+			__set_bit(BTN_7, input_dev->keybit);
+			__set_bit(BTN_8, input_dev->keybit);
+		}
+		/* fall through */
+
+	case INTUOS5S:
+		__set_bit(INPUT_PROP_POINTER, input_dev->propbit);
+
+		if (features->device_type == BTN_TOOL_PEN) {
+			for (i = 0; i < 7; i++)
+				__set_bit(BTN_0 + i, input_dev->keybit);
+
+			input_set_abs_params(input_dev, ABS_DISTANCE, 0,
+					      features->distance_max,
+					      0, 0);
+
+			input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
+
+			wacom_setup_intuos(wacom_wac);
+		} else if (features->device_type == BTN_TOOL_FINGER) {
+			__clear_bit(ABS_MISC, input_dev->absbit);
+
+			__set_bit(BTN_TOOL_FINGER, input_dev->keybit);
+			__set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit);
+			__set_bit(BTN_TOOL_TRIPLETAP, input_dev->keybit);
+			__set_bit(BTN_TOOL_QUADTAP, input_dev->keybit);
+
+			input_mt_init_slots(input_dev, 16);
+
+			input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR,
+			                     0, 255, 0, 0);
+
+			input_set_abs_params(input_dev, ABS_MT_POSITION_X,
+					     0, features->x_max,
+					     features->x_fuzz, 0);
+			input_set_abs_params(input_dev, ABS_MT_POSITION_Y,
+					     0, features->y_max,
+					     features->y_fuzz, 0);
+		}
+		break;
+
 	case INTUOS4:
 	case INTUOS4L:
 		__set_bit(BTN_7, input_dev->keybit);
 		__set_bit(BTN_8, input_dev->keybit);
 		/* fall through */
 
-	case INTUOS5S:
 	case INTUOS4S:
 		for (i = 0; i < 7; i++)
 			__set_bit(BTN_0 + i, input_dev->keybit);
-- 
1.7.9.1


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

* Re: [PATCH v2 4/4] input: wacom: Intuos5 multitouch sensor support
  2012-03-12 22:36 ` [PATCH v2 " Jason Gerecke
@ 2012-03-13  3:25   ` Chris Bagwell
  0 siblings, 0 replies; 9+ messages in thread
From: Chris Bagwell @ 2012-03-13  3:25 UTC (permalink / raw)
  To: Jason Gerecke; +Cc: linux-input, dmitry.torokhov, linuxwacom-devel

On Mon, Mar 12, 2012 at 5:36 PM, Jason Gerecke <killertofu@gmail.com> wrote:
> Intuos5 tablets with PTH-* model numbers include a multitouch sensor
> which use the same touch reports as the 3rd-generation Bamboo. No
> useful information is in the HID descriptor for the touch interface
> so hardcoded values are used during setup.
>
> Signed-off-by: Jason Gerecke <killertofu@gmail.com>
> ---
> Changes from v1:
>  * Fixed calculation of x_phy and y_phy (logic for the 3rd-gen Bamboo
>   which I copied is incorrect! Patch on the way.)

Thanks for catching.

For patches 1, 2, and 4 in this series:

Reviewed-by: Chris Bagwell <chris@cnpbagwell.com>

I did review and didn't see any issues with patch #3 but I'm not
familiar with LED support to comment.

Chris

>
>  drivers/input/tablet/wacom_sys.c |   24 ++++++++++++++
>  drivers/input/tablet/wacom_wac.c |   63 +++++++++++++++++++++++++++++++++++---
>  2 files changed, 82 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
> index 11b4c05..528e3a4 100644
> --- a/drivers/input/tablet/wacom_sys.c
> +++ b/drivers/input/tablet/wacom_sys.c
> @@ -228,6 +228,9 @@ static int wacom_parse_logical_collection(unsigned char *report,
>  * 3rd gen Bamboo Touch no longer define a Digitizer-Finger Pysical
>  * Collection. Instead they define a Logical Collection with a single
>  * Logical Maximum for both X and Y.
> + *
> + * Intuos5 touch interface does not contain useful data. We deal with
> + * this after returning from this function.
>  */
>  static int wacom_parse_hid(struct usb_interface *intf,
>                           struct hid_descriptor *hid_desc,
> @@ -924,6 +927,27 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
>        if (error)
>                goto fail3;
>
> +       /* Intuos5 has no useful data about its touch interface in its
> +        * HID descriptor. If this is the touch interface (wMaxPacketSize
> +        * of WACOM_PKGLEN_BBTOUCH3), override the table values.
> +        */
> +       if (features->type >= INTUOS5S && features->type <= INTUOS5L) {
> +               if (endpoint->wMaxPacketSize == WACOM_PKGLEN_BBTOUCH3) {
> +                       features->device_type = BTN_TOOL_FINGER;
> +                       features->pktlen = WACOM_PKGLEN_BBTOUCH3;
> +
> +                       features->x_phy =
> +                               (features->x_max * 100) / features->x_resolution;
> +                       features->y_phy =
> +                               (features->y_max * 100) / features->y_resolution;
> +
> +                       features->x_max = 4096;
> +                       features->y_max = 4096;
> +               } else {
> +                       features->device_type = BTN_TOOL_PEN;
> +               }
> +       }
> +
>        wacom_setup_device_quirks(features);
>
>        strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));
> diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
> index 86827c7..30067ae 100644
> --- a/drivers/input/tablet/wacom_wac.c
> +++ b/drivers/input/tablet/wacom_wac.c
> @@ -321,6 +321,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
>
>        /* Enter report */
>        if ((data[1] & 0xfc) == 0xc0) {
> +               if (features->type >= INTUOS5S && features->type <= INTUOS5L)
> +                       wacom->shared->stylus_in_proximity = true;
> +
>                /* serial number of the tool */
>                wacom->serial[idx] = ((data[3] & 0x0f) << 28) +
>                        (data[4] << 20) + (data[5] << 12) +
> @@ -406,6 +409,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
>
>        /* Exit report */
>        if ((data[1] & 0xfe) == 0x80) {
> +               if (features->type >= INTUOS5S && features->type <= INTUOS5L)
> +                       wacom->shared->stylus_in_proximity = false;
> +
>                /*
>                 * Reset all states otherwise we lose the initial states
>                 * when in-prox next time
> @@ -1111,9 +1117,6 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
>        case INTUOS4S:
>        case INTUOS4:
>        case INTUOS4L:
> -       case INTUOS5S:
> -       case INTUOS5:
> -       case INTUOS5L:
>        case CINTIQ:
>        case WACOM_BEE:
>        case WACOM_21UX2:
> @@ -1121,6 +1124,15 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
>                sync = wacom_intuos_irq(wacom_wac);
>                break;
>
> +       case INTUOS5S:
> +       case INTUOS5:
> +       case INTUOS5L:
> +               if (len == WACOM_PKGLEN_BBTOUCH3)
> +                       sync = wacom_bpt3_touch(wacom_wac);
> +               else
> +                       sync = wacom_intuos_irq(wacom_wac);
> +               break;
> +
>        case TABLETPC:
>        case TABLETPC2FG:
>                sync = wacom_tpc_irq(wacom_wac, len);
> @@ -1191,7 +1203,7 @@ void wacom_setup_device_quirks(struct wacom_features *features)
>
>        /* these device have multiple inputs */
>        if (features->type == TABLETPC || features->type == TABLETPC2FG ||
> -           features->type == BAMBOO_PT)
> +           features->type == BAMBOO_PT || (features->type >= INTUOS5S && features->type <= INTUOS5L))
>                features->quirks |= WACOM_QUIRK_MULTI_INPUT;
>
>        /* quirk for bamboo touch with 2 low res touches */
> @@ -1350,13 +1362,54 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
>
>        case INTUOS5:
>        case INTUOS5L:
> +               if (features->device_type == BTN_TOOL_PEN) {
> +                       __set_bit(BTN_7, input_dev->keybit);
> +                       __set_bit(BTN_8, input_dev->keybit);
> +               }
> +               /* fall through */
> +
> +       case INTUOS5S:
> +               __set_bit(INPUT_PROP_POINTER, input_dev->propbit);
> +
> +               if (features->device_type == BTN_TOOL_PEN) {
> +                       for (i = 0; i < 7; i++)
> +                               __set_bit(BTN_0 + i, input_dev->keybit);
> +
> +                       input_set_abs_params(input_dev, ABS_DISTANCE, 0,
> +                                             features->distance_max,
> +                                             0, 0);
> +
> +                       input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
> +
> +                       wacom_setup_intuos(wacom_wac);
> +               } else if (features->device_type == BTN_TOOL_FINGER) {
> +                       __clear_bit(ABS_MISC, input_dev->absbit);
> +
> +                       __set_bit(BTN_TOOL_FINGER, input_dev->keybit);
> +                       __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit);
> +                       __set_bit(BTN_TOOL_TRIPLETAP, input_dev->keybit);
> +                       __set_bit(BTN_TOOL_QUADTAP, input_dev->keybit);
> +
> +                       input_mt_init_slots(input_dev, 16);
> +
> +                       input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR,
> +                                            0, 255, 0, 0);
> +
> +                       input_set_abs_params(input_dev, ABS_MT_POSITION_X,
> +                                            0, features->x_max,
> +                                            features->x_fuzz, 0);
> +                       input_set_abs_params(input_dev, ABS_MT_POSITION_Y,
> +                                            0, features->y_max,
> +                                            features->y_fuzz, 0);
> +               }
> +               break;
> +
>        case INTUOS4:
>        case INTUOS4L:
>                __set_bit(BTN_7, input_dev->keybit);
>                __set_bit(BTN_8, input_dev->keybit);
>                /* fall through */
>
> -       case INTUOS5S:
>        case INTUOS4S:
>                for (i = 0; i < 7; i++)
>                        __set_bit(BTN_0 + i, input_dev->keybit);
> --
> 1.7.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [Linuxwacom-devel] [PATCH 1/4] input: wacom: Intuos5 basic support
  2012-03-10  2:06 [PATCH 1/4] input: wacom: Intuos5 basic support Jason Gerecke
                   ` (3 preceding siblings ...)
  2012-03-12 22:36 ` [PATCH v2 " Jason Gerecke
@ 2012-04-03 18:05 ` Timo Aaltonen
  2012-04-03 20:31   ` Dmitry Torokhov
  4 siblings, 1 reply; 9+ messages in thread
From: Timo Aaltonen @ 2012-04-03 18:05 UTC (permalink / raw)
  To: Jason Gerecke; +Cc: linux-input, dmitry.torokhov, chris, linuxwacom-devel

On 10.03.2012 04:06, Jason Gerecke wrote:
> This patch adds support for the basic pen functions of Intuos5
> tablets.

Looks like these haven't been applied upstream yet?

Tested-by: Timo Aaltonen <tjaalton@ubuntu.com>


-- 
t

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

* Re: [Linuxwacom-devel] [PATCH 1/4] input: wacom: Intuos5 basic support
  2012-04-03 18:05 ` [Linuxwacom-devel] [PATCH 1/4] input: wacom: Intuos5 basic support Timo Aaltonen
@ 2012-04-03 20:31   ` Dmitry Torokhov
  2012-04-03 21:34     ` Jason Gerecke
  0 siblings, 1 reply; 9+ messages in thread
From: Dmitry Torokhov @ 2012-04-03 20:31 UTC (permalink / raw)
  To: Timo Aaltonen; +Cc: Jason Gerecke, linux-input, chris, linuxwacom-devel

On Tue, Apr 03, 2012 at 09:05:30PM +0300, Timo Aaltonen wrote:
> On 10.03.2012 04:06, Jason Gerecke wrote:
> > This patch adds support for the basic pen functions of Intuos5
> > tablets.
> 
> Looks like these haven't been applied upstream yet?
> 
> Tested-by: Timo Aaltonen <tjaalton@ubuntu.com>
> 

I was about to commit but then I noticed that they do not have Jason's
signoffs.

Thanks.

-- 
Dmitry

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

* Re: [Linuxwacom-devel] [PATCH 1/4] input: wacom: Intuos5 basic support
  2012-04-03 20:31   ` Dmitry Torokhov
@ 2012-04-03 21:34     ` Jason Gerecke
  0 siblings, 0 replies; 9+ messages in thread
From: Jason Gerecke @ 2012-04-03 21:34 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: Timo Aaltonen, linux-input, chris, linuxwacom-devel

On Tue, Apr 3, 2012 at 1:31 PM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Tue, Apr 03, 2012 at 09:05:30PM +0300, Timo Aaltonen wrote:
>> On 10.03.2012 04:06, Jason Gerecke wrote:
>> > This patch adds support for the basic pen functions of Intuos5
>> > tablets.
>>
>> Looks like these haven't been applied upstream yet?
>>
>> Tested-by: Timo Aaltonen <tjaalton@ubuntu.com>
>>
>
> I was about to commit but then I noticed that they do not have Jason's
> signoffs.
>
> Thanks.
>
> --
> Dmitry

Whoops! Give me one second and I'll straighten that out.

Jason

---
Day xee-nee-svsh duu-'ushtlh-ts'it;
nuu-wee-ya' duu-xan' 'vm-nvshtlh-ts'it.
Huu-chan xuu naa~-gha.

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

end of thread, other threads:[~2012-04-03 21:34 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-10  2:06 [PATCH 1/4] input: wacom: Intuos5 basic support Jason Gerecke
2012-03-10  2:06 ` [PATCH 2/4] input: wacom: Intuos5 Touch Ring/ExpressKey support Jason Gerecke
2012-03-10  2:06 ` [PATCH 3/4] input: wacom: Intous5 Touch Ring LED support Jason Gerecke
2012-03-10  2:06 ` [PATCH 4/4] input: wacom: Intuos5 multitouch sensor support Jason Gerecke
2012-03-12 22:36 ` [PATCH v2 " Jason Gerecke
2012-03-13  3:25   ` Chris Bagwell
2012-04-03 18:05 ` [Linuxwacom-devel] [PATCH 1/4] input: wacom: Intuos5 basic support Timo Aaltonen
2012-04-03 20:31   ` Dmitry Torokhov
2012-04-03 21:34     ` Jason Gerecke

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.