wacom: Reinstate addition of device 0xE5, with later fixes from maintainer

svn path=/dists/sid/linux/; revision=19206
This commit is contained in:
Ben Hutchings 2012-06-25 23:48:07 +00:00
parent f853c20597
commit 945c5baa54
7 changed files with 142 additions and 12 deletions

6
debian/changelog vendored
View File

@ -16,9 +16,9 @@ linux (3.2.21-2) UNRELEASED; urgency=low
nic-shared-modules, pcmcia-modules
- [powerpc,ppc64,x86] scsi-modules depends on ata-modules
- [x86] nic-extra-modules depends on i2c-modules
* wacom: Fix crash when probing some MT devices (Closes: #678798)
* wacom: Revert addition of 0xE5 (MT device) support, which causes
regressions for other devices (Closes: #677164)
* wacom: do not crash when retrieving touch_max (Closes: #678798)
* wacom: Revert unintended changes to handling of Tablet PCs
(Closes: #677164)
* linux-image, README.Debian: Suggest debian-kernel-handbook package
[ Arnaud Patard ]

View File

@ -10,8 +10,6 @@ error codde returned by usb_get_extra_descriptor().
Reviewed-by: Chris Bagwell <chris@cnpbagwell.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
[bwh: Adjust context to apply without preceding
commit 1963518b9b1b8019d33b4b08deee6f873ffa2730]
---
drivers/input/tablet/wacom_sys.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
@ -21,8 +19,8 @@ index 364f2c343..8f3b30b 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -517,11 +517,12 @@ static int wacom_retrieve_hid_descriptor(struct usb_interface *intf,
(features->type != BAMBOO_PT))
goto out;
}
- if (usb_get_extra_descriptor(interface, HID_DEVICET_HID, &hid_desc)) {
- if (usb_get_extra_descriptor(&interface->endpoint[0],

View File

@ -1,6 +1,6 @@
From: Ping Cheng <pingc@wacom.com>
From: Ping Cheng <pinglinux@gmail.com>
Date: Sun, 24 Jun 2012 09:48:03 -0500
Subject: wacom: patch for testing
Subject: wacom: do not crash when retrieving touch_max
Bug-Debian: http://bugs.debian.org/678798
When rep_data was an array
@ -15,6 +15,13 @@ it is dynamically allocated
that expression returns a pointer to the pointer rather than to the
array itself. Regression introduced by commit f393ee2b814e (Input:
wacom - retrieve maximum number of touch points, 2012-04-29).
[jn: from mailing list discussion, with new description.
This change is also available as part of a larger commit in the
input-wacom repository.]
Signed-off-by: Ping Cheng <pingc@wacom.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
drivers/input/tablet/wacom_sys.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

View File

@ -0,0 +1,37 @@
From: Ping Cheng <pinglinux@gmail.com>
Date: Sun, 24 Jun 2012 23:00:29 -0500
Subject: wacom: leave touch_max as is if predefined
Bug-Debian: http://bugs.debian.org/677164
Another fixup to f393ee2b814e (Input: wacom - retrieve maximum number
of touch points, 2012-04-29). The 0xE6 tablet in the Thinkpad x220t
reports the wrong value for MAXCONTACTS so the hardcoded value must
take precedence.
[jn: extracted from a larger commit in the input-wacom repository,
with new description]
Signed-off-by: Ping Cheng <pingc@wacom.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
drivers/input/tablet/wacom_sys.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index 6b1cd71ba320..8b31473a81fe 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -401,7 +401,9 @@ static int wacom_parse_hid(struct usb_interface *intf,
break;
case HID_USAGE_CONTACTMAX:
- wacom_retrieve_report_data(intf, features);
+ /* leave touch_max as is if predefined */
+ if (!features->touch_max)
+ wacom_retrieve_report_data(intf, features);
i++;
break;
}
--
1.7.11.rc3

View File

@ -0,0 +1,37 @@
From: Ping Cheng <pinglinux@gmail.com>
Date: Sun, 24 Jun 2012 23:29:29 -0500
Subject: wacom: do not request tablet data on MT Tablet PC pen interface
Bug-Debian: http://bugs.debian.org/677164
When in commit 1963518b9b1b (Input: wacom - add 0xE5 (MT device)
support, 2012-04-29) the driver stopped asking for multitouch tablet
data on the pen interface of a tablet PC, as a side effect we started
executing the "else" to that if statement. Oops.
This is needed for the 0xE6 tablet in the Thinkpad x220t to be usable
again. Meanwhile the 0xE3 works fine without this. Not sure why. -jn
[jn: extracted from a larger commit in the input-wacom repository,
with new description]
Signed-off-by: Ping Cheng <pingc@wacom.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
drivers/input/tablet/wacom_sys.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index 8b31473a81fe..19e4725858dd 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -467,6 +467,7 @@ static int wacom_query_tablet_data(struct usb_interface *intf, struct wacom_feat
}
} else if (features->type != TABLETPC &&
features->type != WIRELESS &&
+ features->type != TABLETPC2FG &&
features->device_type == BTN_TOOL_PEN) {
do {
rep_data[0] = 2;
--
1.7.11.rc3

View File

@ -0,0 +1,50 @@
From: Ping Cheng <pinglinux@gmail.com>
Date: Sun, 24 Jun 2012 23:44:46 -0500
Subject: wacom: ignore new-style Wacom multi touch packets on MT Tablet PC
Bug-Debian: http://bugs.debian.org/677164
Tablets such as 0xE6 (Thinkpad x220t) already worked fine before
adding support for the new packet format, so let's drop the
functionality for such devices for now. Meanwhile 0xE5 can still use
the new packet format.
This should bring the behavior of TABLETPC2FG devices closer to that
from before 1963518b9b1b (Input: wacom - add 0xE5 (MT device) support,
2012-04-29).
[jn: extracted from a larger commit in the input-wacom repository,
with new description]
Signed-off-by: Ping Cheng <pingc@wacom.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
drivers/input/tablet/wacom_wac.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index 004bc1bb1544..d696ab7ecc2b 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -1547,7 +1547,6 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
__set_bit(INPUT_PROP_POINTER, input_dev->propbit);
break;
- case TABLETPC2FG:
case MTSCREEN:
if (features->device_type == BTN_TOOL_FINGER) {
@@ -1559,6 +1558,11 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,
for (i = 0; i < features->touch_max; i++)
wacom_wac->slots[i] = -1;
+ }
+ /* fall through */
+
+ case TABLETPC2FG:
+ if (features->device_type == BTN_TOOL_FINGER) {
input_mt_init_slots(input_dev, features->touch_max);
input_set_abs_params(input_dev, ABS_MT_TOOL_TYPE,
--
1.7.11.rc3

View File

@ -204,11 +204,12 @@ features/all/wacom/0021-Input-wacom-add-Intuos5-Touch-Ring-ExpressKey-suppor.pat
features/all/wacom/0022-Input-wacom-add-Intuos5-Touch-Ring-LED-support.patch
features/all/wacom/0023-Input-wacom-add-Intuos5-multitouch-sensor-support.patch
features/all/wacom/0024-Input-wacom-retrieve-maximum-number-of-touch-points.patch
# This caused a regression (#677164) and will need a further fix on top
#features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch
features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch
features/all/wacom/0026-Input-wacom-return-proper-error-if-usb_get_extra_des.patch
# Preliminary fix for another regression (#678798)
features/all/wacom/0027-wacom-patch-for-testing.patch
features/all/wacom/0027-wacom-do-not-crash-when-retrieving-touch_max.patch
features/all/wacom/0028-wacom-leave-touch_max-as-is-if-predefined.patch
features/all/wacom/0029-wacom-do-not-request-tablet-data-on-MT-Tablet-PC-pen.patch
features/all/wacom/0030-wacom-ignore-new-style-Wacom-multi-touch-packets-on-.patch
# Add support for Ralink RT5392/RF5372 chipset
features/all/rt2x00-add-debug-message-for-new-chipset.patch