[kernel/f15] Add patch for wacom tablets for Bastien Nocera (upstream 3797ef6b6)
Josh Boyer
jwboyer at fedoraproject.org
Mon Nov 14 18:33:53 UTC 2011
commit 14a0317175392b5ab2120e864690b7caf251e486
Author: Josh Boyer <jwboyer at redhat.com>
Date: Mon Nov 14 13:19:24 2011 -0500
Add patch for wacom tablets for Bastien Nocera (upstream 3797ef6b6)
HID-wacom-Set-input-bits-before-registration.patch | 131 ++++++++++++++++++++
kernel.spec | 5 +-
2 files changed, 135 insertions(+), 1 deletions(-)
---
diff --git a/HID-wacom-Set-input-bits-before-registration.patch b/HID-wacom-Set-input-bits-before-registration.patch
new file mode 100644
index 0000000..3cd1786
--- /dev/null
+++ b/HID-wacom-Set-input-bits-before-registration.patch
@@ -0,0 +1,131 @@
+From b28ae436288861916de0019a81b9817366fe35a9 Mon Sep 17 00:00:00 2001
+From: David Herrmann <dh.herrmann at googlemail.com>
+Date: Sat, 8 Oct 2011 23:20:17 +0200
+Subject: [PATCH] HID: wacom: Set input bits before registration
+
+We shouldn't change the event flags of input devices after they get registered.
+Otherwise, udev will not get notified of these flags and cannot setup the
+devices properly.
+This fixes the probing to set the input event flags on the input_mapped callback
+instead of the probe function.
+
+Reported-by: Bastien Nocera <hadess at hadess.net>
+Signed-off-by: David Herrmann <dh.herrmann at googlemail.com>
+Tested-by: Bastien Nocera <hadess at hadess.net>
+Signed-off-by: Bastien Nocera <hadess at hadess.net>
+Signed-off-by: Jiri Kosina <jkosina at suse.cz>
+---
+ drivers/hid/hid-wacom.c | 80 +++++++++++++++++++++++++---------------------
+ 1 files changed, 43 insertions(+), 37 deletions(-)
+
+diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
+index 72ca689..1492728 100644
+--- a/drivers/hid/hid-wacom.c
++++ b/drivers/hid/hid-wacom.c
+@@ -304,11 +304,51 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report,
+ return 1;
+ }
+
++static int wacom_input_mapped(struct hid_device *hdev, struct hid_input *hi,
++ struct hid_field *field, struct hid_usage *usage, unsigned long **bit,
++ int *max)
++{
++ struct input_dev *input = hi->input;
++
++ __set_bit(INPUT_PROP_POINTER, input->propbit);
++
++ /* Basics */
++ input->evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_REL);
++
++ __set_bit(REL_WHEEL, input->relbit);
++
++ __set_bit(BTN_TOOL_PEN, input->keybit);
++ __set_bit(BTN_TOUCH, input->keybit);
++ __set_bit(BTN_STYLUS, input->keybit);
++ __set_bit(BTN_STYLUS2, input->keybit);
++ __set_bit(BTN_LEFT, input->keybit);
++ __set_bit(BTN_RIGHT, input->keybit);
++ __set_bit(BTN_MIDDLE, input->keybit);
++
++ /* Pad */
++ input->evbit[0] |= BIT(EV_MSC);
++
++ __set_bit(MSC_SERIAL, input->mscbit);
++
++ __set_bit(BTN_0, input->keybit);
++ __set_bit(BTN_1, input->keybit);
++ __set_bit(BTN_TOOL_FINGER, input->keybit);
++
++ /* Distance, rubber and mouse */
++ __set_bit(BTN_TOOL_RUBBER, input->keybit);
++ __set_bit(BTN_TOOL_MOUSE, input->keybit);
++
++ input_set_abs_params(input, ABS_X, 0, 16704, 4, 0);
++ input_set_abs_params(input, ABS_Y, 0, 12064, 4, 0);
++ input_set_abs_params(input, ABS_PRESSURE, 0, 511, 0, 0);
++ input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0);
++
++ return 0;
++}
++
+ static int wacom_probe(struct hid_device *hdev,
+ const struct hid_device_id *id)
+ {
+- struct hid_input *hidinput;
+- struct input_dev *input;
+ struct wacom_data *wdata;
+ int ret;
+
+@@ -370,41 +410,6 @@ static int wacom_probe(struct hid_device *hdev,
+ goto err_ac;
+ }
+ #endif
+- hidinput = list_entry(hdev->inputs.next, struct hid_input, list);
+- input = hidinput->input;
+-
+- __set_bit(INPUT_PROP_POINTER, input->propbit);
+-
+- /* Basics */
+- input->evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_REL);
+-
+- __set_bit(REL_WHEEL, input->relbit);
+-
+- __set_bit(BTN_TOOL_PEN, input->keybit);
+- __set_bit(BTN_TOUCH, input->keybit);
+- __set_bit(BTN_STYLUS, input->keybit);
+- __set_bit(BTN_STYLUS2, input->keybit);
+- __set_bit(BTN_LEFT, input->keybit);
+- __set_bit(BTN_RIGHT, input->keybit);
+- __set_bit(BTN_MIDDLE, input->keybit);
+-
+- /* Pad */
+- input->evbit[0] |= BIT(EV_MSC);
+-
+- __set_bit(MSC_SERIAL, input->mscbit);
+-
+- __set_bit(BTN_0, input->keybit);
+- __set_bit(BTN_1, input->keybit);
+- __set_bit(BTN_TOOL_FINGER, input->keybit);
+-
+- /* Distance, rubber and mouse */
+- __set_bit(BTN_TOOL_RUBBER, input->keybit);
+- __set_bit(BTN_TOOL_MOUSE, input->keybit);
+-
+- input_set_abs_params(input, ABS_X, 0, 16704, 4, 0);
+- input_set_abs_params(input, ABS_Y, 0, 12064, 4, 0);
+- input_set_abs_params(input, ABS_PRESSURE, 0, 511, 0, 0);
+- input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0);
+
+ return 0;
+
+@@ -448,6 +453,7 @@ static struct hid_driver wacom_driver = {
+ .probe = wacom_probe,
+ .remove = wacom_remove,
+ .raw_event = wacom_raw_event,
++ .input_mapped = wacom_input_mapped,
+ };
+
+ static int __init wacom_init(void)
+--
+1.7.7.1
+
diff --git a/kernel.spec b/kernel.spec
index 4c1d71d..715d646 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -42,7 +42,7 @@ Summary: The Linux kernel
# When changing real_sublevel below, reset this by hand to 1
# (or to 0 and then use rpmdev-bumpspec).
#
-%global baserelease 2
+%global baserelease 3
%global fedora_build %{baserelease}
# real_sublevel is the 3.x kernel version we're starting with
@@ -646,6 +646,7 @@ Patch12025: rcu-avoid-just-onlined-cpu-resched.patch
Patch12026: block-stray-block-put-after-teardown.patch
Patch12027: usb-add-quirk-for-logitech-webcams.patch
Patch12030: epoll-limit-paths.patch
+Patch12031: HID-wacom-Set-input-bits-before-registration.patch
Patch12303: dmar-disable-when-ricoh-multifunction.patch
@@ -1218,6 +1219,7 @@ ApplyPatch epoll-limit-paths.patch
ApplyPatch rcu-avoid-just-onlined-cpu-resched.patch
ApplyPatch block-stray-block-put-after-teardown.patch
ApplyPatch usb-add-quirk-for-logitech-webcams.patch
+ApplyPatch HID-wacom-Set-input-bits-before-registration.patch
# rhbz#605888
ApplyPatch dmar-disable-when-ricoh-multifunction.patch
@@ -1876,6 +1878,7 @@ fi
%changelog
* Mon Nov 14 2011 Josh Boyer <jwboyer at redhat.com>
- Patch from Joshua Roys to add rtl8192* to modules.networking (rhbz 753645)
+- Add patch for wacom tablets for Bastien Nocera (upstream 3797ef6b6)
* Mon Nov 14 2011 Josh Boyer <jwboyer at redhat.com> 2.6.41.1-2
- CVE-2011-4131: nfs4_getfacl decoding kernel oops (rhbz 753236)
More information about the scm-commits
mailing list