psmouse-base.c (4b2f8838479eb2abe042e094f7d2cced6d5ea772) psmouse-base.c (8b8be51b4fd365ac5983e117be9d28f427a07b68)
1/*
2 * PS/2 mouse driver
3 *
4 * Copyright (c) 1999-2002 Vojtech Pavlik
5 * Copyright (c) 2003-2004 Dmitry Torokhov
6 */
7
8/*

--- 22 unchanged lines hidden (view full) ---

31#include "hgpk.h"
32#include "lifebook.h"
33#include "trackpoint.h"
34#include "touchkit_ps2.h"
35#include "elantech.h"
36#include "sentelic.h"
37#include "cypress_ps2.h"
38#include "focaltech.h"
1/*
2 * PS/2 mouse driver
3 *
4 * Copyright (c) 1999-2002 Vojtech Pavlik
5 * Copyright (c) 2003-2004 Dmitry Torokhov
6 */
7
8/*

--- 22 unchanged lines hidden (view full) ---

31#include "hgpk.h"
32#include "lifebook.h"
33#include "trackpoint.h"
34#include "touchkit_ps2.h"
35#include "elantech.h"
36#include "sentelic.h"
37#include "cypress_ps2.h"
38#include "focaltech.h"
39#include "vmmouse.h"
39
40#define DRIVER_DESC "PS/2 mouse driver"
41
42MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
43MODULE_DESCRIPTION(DRIVER_DESC);
44MODULE_LICENSE("GPL");
45
46static unsigned int psmouse_max_proto = PSMOUSE_AUTO;

--- 422 unchanged lines hidden (view full) ---

469 */
470
471static int psmouse_poll(struct psmouse *psmouse)
472{
473 return ps2_command(&psmouse->ps2dev, psmouse->packet,
474 PSMOUSE_CMD_POLL | (psmouse->pktsize << 8));
475}
476
40
41#define DRIVER_DESC "PS/2 mouse driver"
42
43MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
44MODULE_DESCRIPTION(DRIVER_DESC);
45MODULE_LICENSE("GPL");
46
47static unsigned int psmouse_max_proto = PSMOUSE_AUTO;

--- 422 unchanged lines hidden (view full) ---

470 */
471
472static int psmouse_poll(struct psmouse *psmouse)
473{
474 return ps2_command(&psmouse->ps2dev, psmouse->packet,
475 PSMOUSE_CMD_POLL | (psmouse->pktsize << 8));
476}
477
478static bool psmouse_check_pnp_id(const char *id, const char * const ids[])
479{
480 int i;
481
482 for (i = 0; ids[i]; i++)
483 if (!strcasecmp(id, ids[i]))
484 return true;
485
486 return false;
487}
488
477/*
478 * psmouse_matches_pnp_id - check if psmouse matches one of the passed in ids.
479 */
480bool psmouse_matches_pnp_id(struct psmouse *psmouse, const char * const ids[])
481{
489/*
490 * psmouse_matches_pnp_id - check if psmouse matches one of the passed in ids.
491 */
492bool psmouse_matches_pnp_id(struct psmouse *psmouse, const char * const ids[])
493{
482 int i;
494 struct serio *serio = psmouse->ps2dev.serio;
495 char *p, *fw_id_copy, *save_ptr;
496 bool found = false;
483
497
484 if (!strncmp(psmouse->ps2dev.serio->firmware_id, "PNP:", 4))
485 for (i = 0; ids[i]; i++)
486 if (strstr(psmouse->ps2dev.serio->firmware_id, ids[i]))
487 return true;
498 if (strncmp(serio->firmware_id, "PNP: ", 5))
499 return false;
488
500
489 return false;
501 fw_id_copy = kstrndup(&serio->firmware_id[5],
502 sizeof(serio->firmware_id) - 5,
503 GFP_KERNEL);
504 if (!fw_id_copy)
505 return false;
506
507 save_ptr = fw_id_copy;
508 while ((p = strsep(&fw_id_copy, " ")) != NULL) {
509 if (psmouse_check_pnp_id(p, ids)) {
510 found = true;
511 break;
512 }
513 }
514
515 kfree(save_ptr);
516 return found;
490}
491
492/*
493 * Genius NetMouse magic init.
494 */
495static int genius_detect(struct psmouse *psmouse, bool set_properties)
496{
497 struct ps2dev *ps2dev = &psmouse->ps2dev;

--- 261 unchanged lines hidden (view full) ---

759 */
760 if (psmouse_do_detect(lifebook_detect, psmouse, set_properties) == 0) {
761 if (max_proto > PSMOUSE_IMEX) {
762 if (!set_properties || lifebook_init(psmouse) == 0)
763 return PSMOUSE_LIFEBOOK;
764 }
765 }
766
517}
518
519/*
520 * Genius NetMouse magic init.
521 */
522static int genius_detect(struct psmouse *psmouse, bool set_properties)
523{
524 struct ps2dev *ps2dev = &psmouse->ps2dev;

--- 261 unchanged lines hidden (view full) ---

786 */
787 if (psmouse_do_detect(lifebook_detect, psmouse, set_properties) == 0) {
788 if (max_proto > PSMOUSE_IMEX) {
789 if (!set_properties || lifebook_init(psmouse) == 0)
790 return PSMOUSE_LIFEBOOK;
791 }
792 }
793
794 if (psmouse_do_detect(vmmouse_detect, psmouse, set_properties) == 0) {
795 if (max_proto > PSMOUSE_IMEX) {
796 if (!set_properties || vmmouse_init(psmouse) == 0)
797 return PSMOUSE_VMMOUSE;
798 }
799 }
800
767/*
768 * Try Kensington ThinkingMouse (we try first, because synaptics probe
769 * upsets the thinkingmouse).
770 */
771
772 if (max_proto > PSMOUSE_IMEX &&
773 psmouse_do_detect(thinking_detect, psmouse, set_properties) == 0) {
774 return PSMOUSE_THINKPS;

--- 307 unchanged lines hidden (view full) ---

1082 {
1083 .type = PSMOUSE_FOCALTECH,
1084 .name = "FocalTechPS/2",
1085 .alias = "focaltech",
1086 .detect = focaltech_detect,
1087 .init = focaltech_init,
1088 },
1089#endif
801/*
802 * Try Kensington ThinkingMouse (we try first, because synaptics probe
803 * upsets the thinkingmouse).
804 */
805
806 if (max_proto > PSMOUSE_IMEX &&
807 psmouse_do_detect(thinking_detect, psmouse, set_properties) == 0) {
808 return PSMOUSE_THINKPS;

--- 307 unchanged lines hidden (view full) ---

1116 {
1117 .type = PSMOUSE_FOCALTECH,
1118 .name = "FocalTechPS/2",
1119 .alias = "focaltech",
1120 .detect = focaltech_detect,
1121 .init = focaltech_init,
1122 },
1123#endif
1124#ifdef CONFIG_MOUSE_PS2_VMMOUSE
1090 {
1125 {
1126 .type = PSMOUSE_VMMOUSE,
1127 .name = VMMOUSE_PSNAME,
1128 .alias = "vmmouse",
1129 .detect = vmmouse_detect,
1130 .init = vmmouse_init,
1131 },
1132#endif
1133 {
1091 .type = PSMOUSE_AUTO,
1092 .name = "auto",
1093 .alias = "any",
1094 .maxproto = true,
1095 },
1096};
1097
1098static const struct psmouse_protocol *psmouse_protocol_by_type(enum psmouse_type type)

--- 800 unchanged lines hidden ---
1134 .type = PSMOUSE_AUTO,
1135 .name = "auto",
1136 .alias = "any",
1137 .maxproto = true,
1138 },
1139};
1140
1141static const struct psmouse_protocol *psmouse_protocol_by_type(enum psmouse_type type)

--- 800 unchanged lines hidden ---