lkml.org 
[lkml]   [2010]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/5] input: wacom: Collect device quirks into single function (rev2)
    Date
    Collect device-specific code into a single function, and use quirks to
    flag specific behavior instead.

    Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
    ---
    drivers/input/tablet/wacom.h | 1 +
    drivers/input/tablet/wacom_sys.c | 11 +++--------
    drivers/input/tablet/wacom_wac.c | 16 ++++++++++++++++
    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 284dfaa..de5adb1 100644
    --- a/drivers/input/tablet/wacom.h
    +++ b/drivers/input/tablet/wacom.h
    @@ -118,6 +118,7 @@ struct wacom {
    extern const struct usb_device_id wacom_ids[];

    void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len);
    +void wacom_setup_device_quirks(struct wacom_features *features);
    void wacom_setup_input_capabilities(struct input_dev *input_dev,
    struct wacom_wac *wacom_wac);
    #endif
    diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
    index 98cba08..fc6fd53 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,
    if (error)
    goto out;

    - /* touch device found but size is not defined. use default */
    - if (features->device_type == BTN_TOOL_DOUBLETAP && !features->x_max) {
    - features->x_max = 1023;
    - features->y_max = 1023;
    - }
    -
    out:
    return error;
    }
    @@ -522,10 +516,11 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
    if (error)
    goto fail2;

    + wacom_setup_device_quirks(features);
    +
    strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));

    - if (features->type == TABLETPC || features->type == TABLETPC2FG ||
    - features->type == BAMBOO_PT) {
    + if (features->quirks & WACOM_QUIRK_MULTI_INPUT) {
    /* Append the device type to the name */
    strlcat(wacom_wac->name,
    features->device_type == BTN_TOOL_PEN ?
    diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
    index bfe5654..ca18b4d 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)
    input_set_abs_params(input_dev, ABS_THROTTLE, -1023, 1023, 0, 0);
    }

    +
    +void wacom_setup_device_quirks(struct wacom_features *features)
    +{
    +
    + /* touch device found but size is not defined. use default */
    + if (features->device_type == BTN_TOOL_DOUBLETAP && !features->x_max) {
    + features->x_max = 1023;
    + features->y_max = 1023;
    + }
    +
    + /* these device have multiple inputs */
    + if (features->type == TABLETPC || features->type == TABLETPC2FG ||
    + features->type == BAMBOO_PT)
    + features->quirks |= WACOM_QUIRK_MULTI_INPUT;
    +}
    +
    void wacom_setup_input_capabilities(struct input_dev *input_dev,
    struct wacom_wac *wacom_wac)
    {
    diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
    index fb30895..6a1ff10 100644
    --- a/drivers/input/tablet/wacom_wac.h
    +++ b/drivers/input/tablet/wacom_wac.h
    @@ -38,6 +38,9 @@
    #define WACOM_REPORT_TPC1FG 6
    #define WACOM_REPORT_TPC2FG 13

    +/* device quirks */
    +#define WACOM_QUIRK_MULTI_INPUT 0x0001
    +
    enum {
    PENPARTNER = 0,
    GRAPHIRE,
    @@ -79,6 +82,7 @@ struct wacom_features {
    int y_fuzz;
    int pressure_fuzz;
    int distance_fuzz;
    + unsigned quirks;
    };

    struct wacom_shared {
    --
    1.7.1


    \
     
     \ /
      Last update: 2010-09-04 15:47    [W:0.029 / U:60.504 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site