Re: USB reset xhci_hcd for ELAN touchscreen

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> writes:

> Ok, here's the dump for when the device keeps disconnecting itself from
> the bus (no call to check_highspeed() anymore).
>
> Things go better, but then the device just goes quiet, and resets.  Any
> ideas?  I'll dig further this evening...
>
> ffff8800d906a0c0 2610372685 S Ci:2:112:0 s 80 06 0100 0000 0012 18 <
> ffff8800d906a0c0 2610372929 C Ci:2:112:0 0 18 = 12010002 00000008 f3048900 1300040e 0001
> ffff8801d684d540 2610372974 S Ci:2:112:0 s 80 06 0200 0000 0009 9 <
> ffff8801d684d540 2610373139 C Ci:2:112:0 0 9 = 09022900 010100e0 32
> ffff8801d684d540 2610373167 S Ci:2:112:0 s 80 06 0200 0000 0029 41 <
> ffff8801d684d540 2610373479 C Ci:2:112:0 0 41 = 09022900 010100e0 32090400 00020300 00000921 10010001 229d0307 05810340
> ffff8801d684dd80 2610373508 S Ci:2:112:0 s 80 06 0300 0000 00ff 255 <
> ffff8801d684dd80 2610373612 C Ci:2:112:0 0 4 = 04030904
> ffff8801d684dd80 2610373636 S Ci:2:112:0 s 80 06 030e 0409 00ff 255 <
> ffff8801d684dd80 2610373895 C Ci:2:112:0 0 24 = 18035400 6f007500 63006800 73006300 72006500 65006e00
> ffff8801d684dd80 2610373922 S Ci:2:112:0 s 80 06 0304 0409 00ff 255 <
> ffff8801d684dd80 2610374066 C Ci:2:112:0 0 10 = 0a034500 4c004100 4e00
> ffff8800d906a9c0 2610374602 S Co:2:112:0 s 00 09 0001 0000 0000 0
> ffff8800d906a9c0 2610374645 C Co:2:112:0 0 0

set config is successful, and then it looks like you are entering
usbhid_parse(), which is called during hid_add_device(): 

> ffff8800d906a780 2610374837 S Co:2:112:0 s 21 0a 0000 0000 0000 0
> ffff8800d906a780 2610374940 C Co:2:112:0 0 0

        hid_set_idle(dev, interface->desc.bInterfaceNumber, 0, 0);

> ffff8801d684d0c0 2610374976 S Ci:2:112:0 s 81 06 2200 0000 039d 925 <
> ffff8801d684d0c0 2610379698 C Ci:2:112:0 0 925 = 050d0904 a1018501 0922a102 09421500 25017501 95018102 75018103 75060951

        ret = hid_get_class_descriptor(dev, interface->desc.bInterfaceNumber,
                        HID_DT_REPORT, rdesc, rsize);

> ffff8801d684d840 2610381285 S Ci:2:001:0 s a3 00 0000 0007 0004 4 <
> ffff8801d684d840 2610381303 C Ci:2:001:0 0 4 = 03010000

And there you lost the device? And me with it...

But if this device really isn't able to cope with the
USB_DT_DEVICE_QUALIFIER descriptor request, then it might not be
prepared for anything "out of the ordinary"? Is there any other possible
explanation for the sudden resets than a firmware crash due to
unexpected input?

The failure seems to happen before any of the known HID quirks have any
effect, so who knows what can be done differently here? Maybe you have
to dump the exact sequence used by Windows and recreate that somehow?

Or just play with a userspace program to see what kind of requests you
can send to this device without making it crash (after temporarily
blacklisting usbhid to avoid the initial crash)?


Bjørn
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux