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 --- |