lkml.org 
[lkml]   [2005]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/4] Lifebook: rearrange init code
    Date
    ===================================================================

    Input: lifebook - adjust initialization routines to be in line with
    the rest of protocols in preparation to dynamic protocol
    switching.

    Signed-off-by: Dmitry Torokhov <dtor@mail.ru>


    lifebook.c | 46 ++++++++++++++++++++++++++++------------------
    lifebook.h | 4 ++--
    psmouse-base.c | 14 ++++++++++++--
    3 files changed, 42 insertions(+), 22 deletions(-)

    Index: dtor/drivers/input/mouse/lifebook.h
    ===================================================================
    --- dtor.orig/drivers/input/mouse/lifebook.h
    +++ dtor/drivers/input/mouse/lifebook.h
    @@ -11,7 +11,7 @@
    #ifndef _LIFEBOOK_H
    #define _LIFEBOOK_H

    -int lifebook_detect(struct psmouse *psmouse, unsigned int max_proto,
    - int set_properties);
    +int lifebook_detect(struct psmouse *psmouse, int set_properties);
    +int lifebook_init(struct psmouse *psmouse);

    #endif
    Index: dtor/drivers/input/mouse/psmouse-base.c
    ===================================================================
    --- dtor.orig/drivers/input/mouse/psmouse-base.c
    +++ dtor/drivers/input/mouse/psmouse-base.c
    @@ -424,8 +424,18 @@ static int psmouse_extensions(struct psm
    {
    int synaptics_hardware = 0;

    - if (lifebook_detect(psmouse, max_proto, set_properties) == 0)
    - return PSMOUSE_LIFEBOOK;
    +/*
    + * We always check for lifebook because it does not disturb mouse
    + * (it only checks DMI information).
    + */
    + if (lifebook_detect(psmouse, set_properties) == 0 ||
    + max_proto == PSMOUSE_LIFEBOOK) {
    +
    + if (max_proto > PSMOUSE_IMEX) {
    + if (!set_properties || lifebook_init(psmouse) == 0)
    + return PSMOUSE_LIFEBOOK;
    + }
    + }

    /*
    * Try Kensington ThinkingMouse (we try first, because synaptics probe
    Index: dtor/drivers/input/mouse/lifebook.c
    ===================================================================
    --- dtor.orig/drivers/input/mouse/lifebook.c
    +++ dtor/drivers/input/mouse/lifebook.c
    @@ -71,7 +71,7 @@ static psmouse_ret_t lifebook_process_by
    return PSMOUSE_FULL_PACKET;
    }

    -static int lifebook_initialize(struct psmouse *psmouse)
    +static int lifebook_absolute_mode(struct psmouse *psmouse)
    {
    struct ps2dev *ps2dev = &psmouse->ps2dev;
    unsigned char param;
    @@ -95,27 +95,37 @@ static void lifebook_disconnect(struct p
    psmouse_reset(psmouse);
    }

    -int lifebook_detect(struct psmouse *psmouse, unsigned int max_proto,
    - int set_properties)
    +int lifebook_detect(struct psmouse *psmouse, int set_properties)
    {
    - if (lifebook_check_dmi() && max_proto != PSMOUSE_LIFEBOOK)
    + if (lifebook_check_dmi())
    return -1;

    if (set_properties) {
    - psmouse->vendor = "Fujitsu Lifebook";
    - psmouse->name = "TouchScreen";
    - psmouse->dev.evbit[0] = BIT(EV_ABS) | BIT(EV_KEY) | BIT(EV_REL);
    - psmouse->dev.keybit[LONG(BTN_LEFT)] = BIT(BTN_LEFT) | BIT(BTN_MIDDLE) | BIT(BTN_RIGHT);
    - psmouse->dev.keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
    - psmouse->dev.relbit[0] = BIT(REL_X) | BIT(REL_Y);
    - input_set_abs_params(&psmouse->dev, ABS_X, 0, 1024, 0, 0);
    - input_set_abs_params(&psmouse->dev, ABS_Y, 0, 1024, 0, 0);
    -
    - psmouse->protocol_handler = lifebook_process_byte;
    - psmouse->disconnect = lifebook_disconnect;
    - psmouse->reconnect = lifebook_initialize;
    - psmouse->pktsize = 3;
    + psmouse->vendor = "Fujitsu";
    + psmouse->name = "Lifebook TouchScreen";
    +
    }

    - return lifebook_initialize(psmouse);
    + return 0;
    }
    +
    +int lifebook_init(struct psmouse *psmouse)
    +{
    + if (lifebook_absolute_mode(psmouse))
    + return -1;
    +
    + psmouse->dev.evbit[0] = BIT(EV_ABS) | BIT(EV_KEY) | BIT(EV_REL);
    + psmouse->dev.keybit[LONG(BTN_LEFT)] = BIT(BTN_LEFT) | BIT(BTN_MIDDLE) | BIT(BTN_RIGHT);
    + psmouse->dev.keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
    + psmouse->dev.relbit[0] = BIT(REL_X) | BIT(REL_Y);
    + input_set_abs_params(&psmouse->dev, ABS_X, 0, 1024, 0, 0);
    + input_set_abs_params(&psmouse->dev, ABS_Y, 0, 1024, 0, 0);
    +
    + psmouse->protocol_handler = lifebook_process_byte;
    + psmouse->disconnect = lifebook_disconnect;
    + psmouse->reconnect = lifebook_absolute_mode;
    + psmouse->pktsize = 3;
    +
    + return 0;
    +}
    +
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 14:11    [W:0.026 / U:0.488 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site