您的位置:首页 > 运维架构 > Linux

linux自带的usbtouchscreen.c也有bug?你猜对了!

2013-10-24 09:37 295 查看
问题出在usbtouch_irq

case -ECONNRESET:
case -ENOENT:
case -ESHUTDOWN:
case -EPIPE:
/* this urb is terminated, clean up */
dbg("%s - urb shutting down with status: %d",
__func__, urb->status);
return;


当出现EPIPE错误时,驱动并未做太多处理。

然后,就没有然后了,触控屏从此不动了!触控屏厂家老板带着他的小姨子跑了!

什么时候会出现EPIPE错误呢?

USB作为连接器件,不能假设硬件完全稳定的,什么都有可能。

linux在它的HID设备驱动里,针对这种EPIPE错误的情况,

在hid_irq_in做了如下的处理,

case -EPIPE:        /* stall */
usbhid_mark_busy(usbhid);
clear_bit(HID_IN_RUNNING, &usbhid->iofl);
set_bit(HID_CLEAR_HALT, &usbhid->iofl);
schedule_work(&usbhid->reset_work);
return;


为什么在触控屏这里就视若无睹了?

(转载请标明:http://www.cnblogs.com/xhawk18/)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: