Lines 132-137
Link Here
|
132 |
* Full packet accumulated, process it |
132 |
* Full packet accumulated, process it |
133 |
*/ |
133 |
*/ |
134 |
|
134 |
|
|
|
135 |
if (psmouse->badchecksum) |
136 |
return PSMOUSE_FULL_PACKET; |
137 |
|
135 |
/* |
138 |
/* |
136 |
* Scroll wheel on IntelliMice, scroll buttons on NetMice |
139 |
* Scroll wheel on IntelliMice, scroll buttons on NetMice |
137 |
*/ |
140 |
*/ |
Lines 216-221
Link Here
|
216 |
static inline void __psmouse_set_state(struct psmouse *psmouse, enum psmouse_state new_state) |
219 |
static inline void __psmouse_set_state(struct psmouse *psmouse, enum psmouse_state new_state) |
217 |
{ |
220 |
{ |
218 |
psmouse->state = new_state; |
221 |
psmouse->state = new_state; |
|
|
222 |
psmouse->badchecksum = 0; |
219 |
psmouse->pktcnt = psmouse->out_of_sync = 0; |
223 |
psmouse->pktcnt = psmouse->out_of_sync = 0; |
220 |
psmouse->ps2dev.flags = 0; |
224 |
psmouse->ps2dev.flags = 0; |
221 |
psmouse->last = jiffies; |
225 |
psmouse->last = jiffies; |
Lines 256-265
Link Here
|
256 |
return -1; |
260 |
return -1; |
257 |
} |
261 |
} |
258 |
} |
262 |
} |
|
|
263 |
psmouse->badchecksum = 0; |
259 |
psmouse->pktcnt = 0; |
264 |
psmouse->pktcnt = 0; |
260 |
break; |
265 |
break; |
261 |
|
266 |
|
262 |
case PSMOUSE_FULL_PACKET: |
267 |
case PSMOUSE_FULL_PACKET: |
|
|
268 |
psmouse->badchecksum = 0; |
263 |
psmouse->pktcnt = 0; |
269 |
psmouse->pktcnt = 0; |
264 |
if (psmouse->out_of_sync) { |
270 |
if (psmouse->out_of_sync) { |
265 |
psmouse->out_of_sync = 0; |
271 |
psmouse->out_of_sync = 0; |
Lines 269-274
Link Here
|
269 |
break; |
275 |
break; |
270 |
|
276 |
|
271 |
case PSMOUSE_GOOD_DATA: |
277 |
case PSMOUSE_GOOD_DATA: |
|
|
278 |
psmouse->badchecksum = 0; |
272 |
break; |
279 |
break; |
273 |
} |
280 |
} |
274 |
return 0; |
281 |
return 0; |
Lines 292-299
Link Here
|
292 |
printk(KERN_WARNING "psmouse.c: bad data from KBC -%s%s\n", |
299 |
printk(KERN_WARNING "psmouse.c: bad data from KBC -%s%s\n", |
293 |
flags & SERIO_TIMEOUT ? " timeout" : "", |
300 |
flags & SERIO_TIMEOUT ? " timeout" : "", |
294 |
flags & SERIO_PARITY ? " bad parity" : ""); |
301 |
flags & SERIO_PARITY ? " bad parity" : ""); |
295 |
ps2_cmd_aborted(&psmouse->ps2dev); |
302 |
if (flags & SERIO_TIMEOUT) { |
296 |
goto out; |
303 |
ps2_cmd_aborted(&psmouse->ps2dev); |
|
|
304 |
goto out; |
305 |
} else { |
306 |
psmouse->badchecksum = 1; |
307 |
} |
297 |
} |
308 |
} |
298 |
|
309 |
|
299 |
if (unlikely(psmouse->ps2dev.flags & PS2_FLAG_ACK)) |
310 |
if (unlikely(psmouse->ps2dev.flags & PS2_FLAG_ACK)) |