psmouse-base.c (8d0bc2b456103a34c11e01305cd1aed1cde579e5) | psmouse-base.c (a62f0d27b4196bad5e900d766b285feb7069cd16) |
---|---|
1/* 2 * PS/2 mouse driver 3 * 4 * Copyright (c) 1999-2002 Vojtech Pavlik 5 * Copyright (c) 2003-2004 Dmitry Torokhov 6 */ 7 8/* --- 133 unchanged lines hidden (view full) --- 142 input_report_rel(dev, REL_WHEEL, -(signed char) packet[3]); 143 144/* 145 * Scroll wheel and buttons on IntelliMouse Explorer 146 */ 147 148 if (psmouse->type == PSMOUSE_IMEX) { 149 switch (packet[3] & 0xC0) { | 1/* 2 * PS/2 mouse driver 3 * 4 * Copyright (c) 1999-2002 Vojtech Pavlik 5 * Copyright (c) 2003-2004 Dmitry Torokhov 6 */ 7 8/* --- 133 unchanged lines hidden (view full) --- 142 input_report_rel(dev, REL_WHEEL, -(signed char) packet[3]); 143 144/* 145 * Scroll wheel and buttons on IntelliMouse Explorer 146 */ 147 148 if (psmouse->type == PSMOUSE_IMEX) { 149 switch (packet[3] & 0xC0) { |
150 case 0x80: /* vertical scroll on IntelliMouse Explorer 4.0 */ 151 input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 32) - (int) (packet[3] & 31)); 152 break; 153 case 0x40: /* horizontal scroll on IntelliMouse Explorer 4.0 */ 154 input_report_rel(dev, REL_HWHEEL, (int) (packet[3] & 32) - (int) (packet[3] & 31)); 155 break; 156 case 0x00: 157 case 0xC0: 158 input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[3] & 7)); 159 input_report_key(dev, BTN_SIDE, (packet[3] >> 4) & 1); 160 input_report_key(dev, BTN_EXTRA, (packet[3] >> 5) & 1); 161 break; | 150 case 0x80: /* vertical scroll on IntelliMouse Explorer 4.0 */ 151 input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 32) - (int) (packet[3] & 31)); 152 break; 153 case 0x40: /* horizontal scroll on IntelliMouse Explorer 4.0 */ 154 input_report_rel(dev, REL_HWHEEL, (int) (packet[3] & 32) - (int) (packet[3] & 31)); 155 break; 156 case 0x00: 157 case 0xC0: 158 input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[3] & 7)); 159 input_report_key(dev, BTN_SIDE, (packet[3] >> 4) & 1); 160 input_report_key(dev, BTN_EXTRA, (packet[3] >> 5) & 1); 161 break; |
162 } 163 } 164 165/* 166 * Extra buttons on Genius NewNet 3D 167 */ 168 169 if (psmouse->type == PSMOUSE_GENPS) { --- 72 unchanged lines hidden (view full) --- 242 * by calling corresponding protocol handler. 243 */ 244 245static int psmouse_handle_byte(struct psmouse *psmouse) 246{ 247 psmouse_ret_t rc = psmouse->protocol_handler(psmouse); 248 249 switch (rc) { | 162 } 163 } 164 165/* 166 * Extra buttons on Genius NewNet 3D 167 */ 168 169 if (psmouse->type == PSMOUSE_GENPS) { --- 72 unchanged lines hidden (view full) --- 242 * by calling corresponding protocol handler. 243 */ 244 245static int psmouse_handle_byte(struct psmouse *psmouse) 246{ 247 psmouse_ret_t rc = psmouse->protocol_handler(psmouse); 248 249 switch (rc) { |
250 case PSMOUSE_BAD_DATA: 251 if (psmouse->state == PSMOUSE_ACTIVATED) { 252 printk(KERN_WARNING "psmouse.c: %s at %s lost sync at byte %d\n", 253 psmouse->name, psmouse->phys, psmouse->pktcnt); 254 if (++psmouse->out_of_sync_cnt == psmouse->resetafter) { 255 __psmouse_set_state(psmouse, PSMOUSE_IGNORE); 256 printk(KERN_NOTICE "psmouse.c: issuing reconnect request\n"); 257 serio_reconnect(psmouse->ps2dev.serio); 258 return -1; 259 } | 250 case PSMOUSE_BAD_DATA: 251 if (psmouse->state == PSMOUSE_ACTIVATED) { 252 printk(KERN_WARNING "psmouse.c: %s at %s lost sync at byte %d\n", 253 psmouse->name, psmouse->phys, psmouse->pktcnt); 254 if (++psmouse->out_of_sync_cnt == psmouse->resetafter) { 255 __psmouse_set_state(psmouse, PSMOUSE_IGNORE); 256 printk(KERN_NOTICE "psmouse.c: issuing reconnect request\n"); 257 serio_reconnect(psmouse->ps2dev.serio); 258 return -1; |
260 } | 259 } |
261 psmouse->pktcnt = 0; 262 break; | 260 } 261 psmouse->pktcnt = 0; 262 break; |
263 | 263 |
264 case PSMOUSE_FULL_PACKET: 265 psmouse->pktcnt = 0; 266 if (psmouse->out_of_sync_cnt) { 267 psmouse->out_of_sync_cnt = 0; 268 printk(KERN_NOTICE "psmouse.c: %s at %s - driver resynched.\n", 269 psmouse->name, psmouse->phys); 270 } 271 break; | 264 case PSMOUSE_FULL_PACKET: 265 psmouse->pktcnt = 0; 266 if (psmouse->out_of_sync_cnt) { 267 psmouse->out_of_sync_cnt = 0; 268 printk(KERN_NOTICE "psmouse.c: %s at %s - driver resynched.\n", 269 psmouse->name, psmouse->phys); 270 } 271 break; |
272 | 272 |
273 case PSMOUSE_GOOD_DATA: 274 break; | 273 case PSMOUSE_GOOD_DATA: 274 break; |
275 } 276 return 0; 277} 278 279/* 280 * psmouse_interrupt() handles incoming characters, either passing them 281 * for normal processing or gathering them as command response. 282 */ --- 957 unchanged lines hidden (view full) --- 1240 1241 psmouse->set_rate = psmouse_set_rate; 1242 psmouse->set_resolution = psmouse_set_resolution; 1243 psmouse->poll = psmouse_poll; 1244 psmouse->protocol_handler = psmouse_process_byte; 1245 psmouse->pktsize = 3; 1246 1247 if (proto && (proto->detect || proto->init)) { | 275 } 276 return 0; 277} 278 279/* 280 * psmouse_interrupt() handles incoming characters, either passing them 281 * for normal processing or gathering them as command response. 282 */ --- 957 unchanged lines hidden (view full) --- 1240 1241 psmouse->set_rate = psmouse_set_rate; 1242 psmouse->set_resolution = psmouse_set_resolution; 1243 psmouse->poll = psmouse_poll; 1244 psmouse->protocol_handler = psmouse_process_byte; 1245 psmouse->pktsize = 3; 1246 1247 if (proto && (proto->detect || proto->init)) { |
1248 if (proto->detect && proto->detect(psmouse, 1) < 0) | 1248 if (proto->detect && proto->detect(psmouse, true) < 0) |
1249 return -1; 1250 1251 if (proto->init && proto->init(psmouse) < 0) 1252 return -1; 1253 1254 psmouse->type = proto->type; 1255 selected_proto = proto; 1256 } else { --- 477 unchanged lines hidden --- | 1249 return -1; 1250 1251 if (proto->init && proto->init(psmouse) < 0) 1252 return -1; 1253 1254 psmouse->type = proto->type; 1255 selected_proto = proto; 1256 } else { --- 477 unchanged lines hidden --- |