Skip to content

Commit

Permalink
Input: lifebook - adjust initialization routines to be in line with
Browse files Browse the repository at this point in the history
       the rest of protocols in preparation to dynamic protocol
       switching.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Dmitry Torokhov committed May 29, 2005
1 parent 14e9414 commit a15d60f
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 22 deletions.
45 changes: 27 additions & 18 deletions drivers/input/mouse/lifebook.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ static psmouse_ret_t lifebook_process_byte(struct psmouse *psmouse, struct pt_re
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;
Expand All @@ -87,27 +87,36 @@ static void lifebook_disconnect(struct psmouse *psmouse)
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 (!dmi_check_system(lifebook_dmi_table) && max_proto != PSMOUSE_LIFEBOOK)
if (!dmi_check_system(lifebook_dmi_table))
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;
}

4 changes: 2 additions & 2 deletions drivers/input/mouse/lifebook.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
14 changes: 12 additions & 2 deletions drivers/input/mouse/psmouse-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -424,8 +424,18 @@ static int psmouse_extensions(struct psmouse *psmouse,
{
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
Expand Down

0 comments on commit a15d60f

Please sign in to comment.