问题出在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/)

相关文章:

  • 2022-12-23
  • 2021-10-16
  • 2021-09-01
  • 2022-12-23
  • 2022-12-23
  • 2021-12-15
  • 2021-08-17
  • 2021-10-30
猜你喜欢
  • 2022-12-23
  • 2022-03-03
  • 2022-01-21
  • 2021-11-01
  • 2021-10-03
  • 2021-10-22
  • 2021-11-14
相关资源
相似解决方案