[kernel/f16] Add patch for wacom tablets for Bastien Nocera (upstream 3797ef6b6)

Josh Boyer jwboyer at fedoraproject.org
Mon Nov 14 18:33:58 UTC 2011


commit aeb6369d31eb5bc7ce2dd839833ba77c248a1ba3
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 c0d80dc..d7ea3cb 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -54,7 +54,7 @@ Summary: The Linux kernel
 # For non-released -rc kernels, this will be appended after the rcX and
 # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
 #
-%global baserelease 2
+%global baserelease 3
 %global fedora_build %{baserelease}
 
 # base_sublevel is the kernel version we're starting with and patching
@@ -738,6 +738,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
 
@@ -1393,6 +1394,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
@@ -2135,6 +2137,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> 3.1.1-2
 - CVE-2011-4131: nfs4_getfacl decoding kernel oops (rhbz 753236)


More information about the scm-commits mailing list