summaryrefslogtreecommitdiffstats
path: root/wacom-03-collect-device-quirks-into-single-function.patch
diff options
context:
space:
mode:
authorChuck Ebbert <cebbert@redhat.com>2010-09-13 15:57:40 -0400
committerChuck Ebbert <cebbert@redhat.com>2010-09-13 15:57:40 -0400
commit1d13b01aba24af0a9dffa76d85abaa02e80ba687 (patch)
treec05557705dd6cd332da843344805e6377fd66c5f /wacom-03-collect-device-quirks-into-single-function.patch
parentdb42d7353c3452dc3f7b98d25778e7a7754c9685 (diff)
downloadkernel-1d13b01aba24af0a9dffa76d85abaa02e80ba687.tar.gz
kernel-1d13b01aba24af0a9dffa76d85abaa02e80ba687.tar.xz
kernel-1d13b01aba24af0a9dffa76d85abaa02e80ba687.zip
Add preliminary support for Wacom Bamboo pen and touch devices.
Diffstat (limited to 'wacom-03-collect-device-quirks-into-single-function.patch')
-rw-r--r--wacom-03-collect-device-quirks-into-single-function.patch107
1 files changed, 107 insertions, 0 deletions
diff --git a/wacom-03-collect-device-quirks-into-single-function.patch b/wacom-03-collect-device-quirks-into-single-function.patch
new file mode 100644
index 000000000..7bf768770
--- /dev/null
+++ b/wacom-03-collect-device-quirks-into-single-function.patch
@@ -0,0 +1,107 @@
+From: Henrik Rydberg <rydberg@euromail.se>
+Date: Sun, 5 Sep 2010 19:26:16 +0000 (-0700)
+Subject: Input: wacom - collect device quirks into single function
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fdtor%2Finput.git;a=commitdiff_plain;h=bc73dd39e78dd6e5b34cd938b7f037a8bc041bdd
+
+Input: wacom - collect device quirks into single function
+
+Collect device-specific code into a single function, and use quirks to
+flag specific behavior instead.
+
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Acked-by: Ping Cheng <pingc@wacom.com>
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+---
+
+diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h
+index 284dfaa..de5adb1 100644
+--- a/drivers/input/tablet/wacom.h
++++ b/drivers/input/tablet/wacom.h
+@@ -118,6 +118,7 @@ struct wacom {
+ extern const struct usb_device_id wacom_ids[];
+
+ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len);
++void wacom_setup_device_quirks(struct wacom_features *features);
+ void wacom_setup_input_capabilities(struct input_dev *input_dev,
+ struct wacom_wac *wacom_wac);
+ #endif
+diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
+index 98cba08..fc6fd53 100644
+--- a/drivers/input/tablet/wacom_sys.c
++++ b/drivers/input/tablet/wacom_sys.c
+@@ -381,12 +381,6 @@ static int wacom_retrieve_hid_descriptor(struct usb_interface *intf,
+ if (error)
+ goto out;
+
+- /* touch device found but size is not defined. use default */
+- if (features->device_type == BTN_TOOL_DOUBLETAP && !features->x_max) {
+- features->x_max = 1023;
+- features->y_max = 1023;
+- }
+-
+ out:
+ return error;
+ }
+@@ -522,10 +516,11 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
+ if (error)
+ goto fail2;
+
++ wacom_setup_device_quirks(features);
++
+ strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));
+
+- if (features->type == TABLETPC || features->type == TABLETPC2FG ||
+- features->type == BAMBOO_PT) {
++ if (features->quirks & WACOM_QUIRK_MULTI_INPUT) {
+ /* Append the device type to the name */
+ strlcat(wacom_wac->name,
+ features->device_type == BTN_TOOL_PEN ?
+diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
+index 6d7e164..44b4a59 100644
+--- a/drivers/input/tablet/wacom_wac.c
++++ b/drivers/input/tablet/wacom_wac.c
+@@ -941,6 +941,22 @@ static void wacom_setup_intuos(struct wacom_wac *wacom_wac)
+ input_set_abs_params(input_dev, ABS_THROTTLE, -1023, 1023, 0, 0);
+ }
+
++
++void wacom_setup_device_quirks(struct wacom_features *features)
++{
++
++ /* touch device found but size is not defined. use default */
++ if (features->device_type == BTN_TOOL_DOUBLETAP && !features->x_max) {
++ features->x_max = 1023;
++ features->y_max = 1023;
++ }
++
++ /* these device have multiple inputs */
++ if (features->type == TABLETPC || features->type == TABLETPC2FG ||
++ features->type == BAMBOO_PT)
++ features->quirks |= WACOM_QUIRK_MULTI_INPUT;
++}
++
+ void wacom_setup_input_capabilities(struct input_dev *input_dev,
+ struct wacom_wac *wacom_wac)
+ {
+diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
+index fb30895..6a1ff10 100644
+--- a/drivers/input/tablet/wacom_wac.h
++++ b/drivers/input/tablet/wacom_wac.h
+@@ -38,6 +38,9 @@
+ #define WACOM_REPORT_TPC1FG 6
+ #define WACOM_REPORT_TPC2FG 13
+
++/* device quirks */
++#define WACOM_QUIRK_MULTI_INPUT 0x0001
++
+ enum {
+ PENPARTNER = 0,
+ GRAPHIRE,
+@@ -79,6 +82,7 @@ struct wacom_features {
+ int y_fuzz;
+ int pressure_fuzz;
+ int distance_fuzz;
++ unsigned quirks;
+ };
+
+ struct wacom_shared {