summaryrefslogtreecommitdiff
path: root/drivers/hid/hid-wacom.c
diff options
context:
space:
mode:
authorPrzemo Firszt <przemo@firszt.eu>2011-11-05 11:28:21 +0000
committerJiri Kosina <jkosina@suse.cz>2011-11-13 21:32:46 +0100
commitf6b7efc162caed555264cd73cd00103701fddbc0 (patch)
tree1431b1c1db84f1c1f3c485626f09100d3c612f0e /drivers/hid/hid-wacom.c
parent30307c69d59b14723fbf8a524847b302388c702d (diff)
downloadlinux-3.10-f6b7efc162caed555264cd73cd00103701fddbc0.tar.gz
linux-3.10-f6b7efc162caed555264cd73cd00103701fddbc0.tar.bz2
linux-3.10-f6b7efc162caed555264cd73cd00103701fddbc0.zip
HID: wacom: Move parsing to a separate function
This patch doesn't change the way driver works. Parsing logic is now in a separate function. It's a first step to add Intuos4 Wireless support to hid-wacom driver. Signed-off-by: Przemo Firszt <przemo@firszt.eu> Acked-by: Ping Cheng <pinglinux@gmail.com> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-wacom.c')
-rw-r--r--drivers/hid/hid-wacom.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
index 17bb88f782b..db232231048 100644
--- a/drivers/hid/hid-wacom.c
+++ b/drivers/hid/hid-wacom.c
@@ -177,26 +177,13 @@ static ssize_t wacom_store_speed(struct device *dev,
static DEVICE_ATTR(speed, S_IRUGO | S_IWUSR | S_IWGRP,
wacom_show_speed, wacom_store_speed);
-static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report,
- u8 *raw_data, int size)
+static int wacom_gr_parse_report(struct hid_device *hdev,
+ struct wacom_data *wdata,
+ struct input_dev *input, unsigned char *data)
{
- struct wacom_data *wdata = hid_get_drvdata(hdev);
- struct hid_input *hidinput;
- struct input_dev *input;
- unsigned char *data = (unsigned char *) raw_data;
int tool, x, y, rw;
- if (!(hdev->claimed & HID_CLAIMED_INPUT))
- return 0;
-
tool = 0;
- hidinput = list_entry(hdev->inputs.next, struct hid_input, list);
- input = hidinput->input;
-
- /* Check if this is a tablet report */
- if (data[0] != 0x03)
- return 0;
-
/* Get X & Y positions */
x = le16_to_cpu(*(__le16 *) &data[2]);
y = le16_to_cpu(*(__le16 *) &data[4]);
@@ -303,6 +290,26 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report,
#endif
return 1;
}
+static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report,
+ u8 *raw_data, int size)
+{
+ struct wacom_data *wdata = hid_get_drvdata(hdev);
+ struct hid_input *hidinput;
+ struct input_dev *input;
+ unsigned char *data = (unsigned char *) raw_data;
+
+ if (!(hdev->claimed & HID_CLAIMED_INPUT))
+ return 0;
+
+ hidinput = list_entry(hdev->inputs.next, struct hid_input, list);
+ input = hidinput->input;
+
+ /* Check if this is a tablet report */
+ if (data[0] != 0x03)
+ return 0;
+
+ return wacom_gr_parse_report(hdev, wdata, input, data);
+}
static int wacom_input_mapped(struct hid_device *hdev, struct hid_input *hi,
struct hid_field *field, struct hid_usage *usage, unsigned long **bit,