diff options
author | Henrik Rydberg <rydberg@euromail.se> | 2010-09-05 15:26:16 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-09-05 15:58:12 -0400 |
commit | bc73dd39e78dd6e5b34cd938b7f037a8bc041bdd (patch) | |
tree | 9a2a8c5ea217708646e76429d274cbf25d1ebd2e /drivers/input | |
parent | 4a88081e739a41d6d70bace7e0a027f9054ab540 (diff) |
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>
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/tablet/wacom.h | 1 | ||||
-rw-r--r-- | drivers/input/tablet/wacom_sys.c | 11 | ||||
-rw-r--r-- | drivers/input/tablet/wacom_wac.c | 16 | ||||
-rw-r--r-- | drivers/input/tablet/wacom_wac.h | 4 |
4 files changed, 24 insertions, 8 deletions
diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h index 284dfaab6b8c..de5adb109030 100644 --- a/drivers/input/tablet/wacom.h +++ b/drivers/input/tablet/wacom.h | |||
@@ -118,6 +118,7 @@ struct wacom { | |||
118 | extern const struct usb_device_id wacom_ids[]; | 118 | extern const struct usb_device_id wacom_ids[]; |
119 | 119 | ||
120 | void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len); | 120 | void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len); |
121 | void wacom_setup_device_quirks(struct wacom_features *features); | ||
121 | void wacom_setup_input_capabilities(struct input_dev *input_dev, | 122 | void wacom_setup_input_capabilities(struct input_dev *input_dev, |
122 | struct wacom_wac *wacom_wac); | 123 | struct wacom_wac *wacom_wac); |
123 | #endif | 124 | #endif |
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c index 98cba08bb96e..fc6fd53c1af1 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, | |||
381 | if (error) | 381 | if (error) |
382 | goto out; | 382 | goto out; |
383 | 383 | ||
384 | /* touch device found but size is not defined. use default */ | ||
385 | if (features->device_type == BTN_TOOL_DOUBLETAP && !features->x_max) { | ||
386 | features->x_max = 1023; | ||
387 | features->y_max = 1023; | ||
388 | } | ||
389 | |||
390 | out: | 384 | out: |
391 | return error; | 385 | return error; |
392 | } | 386 | } |
@@ -522,10 +516,11 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i | |||
522 | if (error) | 516 | if (error) |
523 | goto fail2; | 517 | goto fail2; |
524 | 518 | ||
519 | wacom_setup_device_quirks(features); | ||
520 | |||
525 | strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name)); | 521 | strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name)); |
526 | 522 | ||
527 | if (features->type == TABLETPC || features->type == TABLETPC2FG || | 523 | if (features->quirks & WACOM_QUIRK_MULTI_INPUT) { |
528 | features->type == BAMBOO_PT) { | ||
529 | /* Append the device type to the name */ | 524 | /* Append the device type to the name */ |
530 | strlcat(wacom_wac->name, | 525 | strlcat(wacom_wac->name, |
531 | features->device_type == BTN_TOOL_PEN ? | 526 | features->device_type == BTN_TOOL_PEN ? |
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c index 6d7e1647715f..44b4a59750d8 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) | |||
941 | input_set_abs_params(input_dev, ABS_THROTTLE, -1023, 1023, 0, 0); | 941 | input_set_abs_params(input_dev, ABS_THROTTLE, -1023, 1023, 0, 0); |
942 | } | 942 | } |
943 | 943 | ||
944 | |||
945 | void wacom_setup_device_quirks(struct wacom_features *features) | ||
946 | { | ||
947 | |||
948 | /* touch device found but size is not defined. use default */ | ||
949 | if (features->device_type == BTN_TOOL_DOUBLETAP && !features->x_max) { | ||
950 | features->x_max = 1023; | ||
951 | features->y_max = 1023; | ||
952 | } | ||
953 | |||
954 | /* these device have multiple inputs */ | ||
955 | if (features->type == TABLETPC || features->type == TABLETPC2FG || | ||
956 | features->type == BAMBOO_PT) | ||
957 | features->quirks |= WACOM_QUIRK_MULTI_INPUT; | ||
958 | } | ||
959 | |||
944 | void wacom_setup_input_capabilities(struct input_dev *input_dev, | 960 | void wacom_setup_input_capabilities(struct input_dev *input_dev, |
945 | struct wacom_wac *wacom_wac) | 961 | struct wacom_wac *wacom_wac) |
946 | { | 962 | { |
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h index fb30895d63e3..6a1ff10b095a 100644 --- a/drivers/input/tablet/wacom_wac.h +++ b/drivers/input/tablet/wacom_wac.h | |||
@@ -38,6 +38,9 @@ | |||
38 | #define WACOM_REPORT_TPC1FG 6 | 38 | #define WACOM_REPORT_TPC1FG 6 |
39 | #define WACOM_REPORT_TPC2FG 13 | 39 | #define WACOM_REPORT_TPC2FG 13 |
40 | 40 | ||
41 | /* device quirks */ | ||
42 | #define WACOM_QUIRK_MULTI_INPUT 0x0001 | ||
43 | |||
41 | enum { | 44 | enum { |
42 | PENPARTNER = 0, | 45 | PENPARTNER = 0, |
43 | GRAPHIRE, | 46 | GRAPHIRE, |
@@ -79,6 +82,7 @@ struct wacom_features { | |||
79 | int y_fuzz; | 82 | int y_fuzz; |
80 | int pressure_fuzz; | 83 | int pressure_fuzz; |
81 | int distance_fuzz; | 84 | int distance_fuzz; |
85 | unsigned quirks; | ||
82 | }; | 86 | }; |
83 | 87 | ||
84 | struct wacom_shared { | 88 | struct wacom_shared { |