[U-Boot] [PATCH 0/3] usb: xhci: Add interrupt transfer support

Stefan Roese sr at denx.de
Wed Jun 28 12:47:11 UTC 2017


Hi Bin,

On 28.06.2017 14:11, Bin Meng wrote:
> On Wed, Jun 28, 2017 at 7:00 PM, Stefan Roese <sr at denx.de> wrote:
>> Hi Bin,
>>
>> On 26.06.2017 13:05, Bin Meng wrote:
>>> This series is the final series of the xHCI driver update.
>>>
>>> This adds the missing interrupt transfer support to xHCI driver, so
>>> that devices like USB keyboard that uses interrupt transfer when
>>> CONFIG_SYS_USB_EVENT_POLL is defined can work.
>>>
>>> Previous two series:
>>> [1]: usb: xhci: Fix USB xHCI support on Intel platform
>>> https://lists.denx.de/pipermail/u-boot/2017-June/296166.html
>>> [2]: usb: hub: Support USB 3.0 hubs
>>> https://lists.denx.de/pipermail/u-boot/2017-June/296284.html
>>>
>>> This series is available at u-boot-x86/xhci-working3 for testing.
>>
>> I'm using this git branch to test all your xHCI related patches
>> now. On my BayTrail platform I get these messages upon "usb reset"
>> scanning:
>>
>> => usb reset
>> resetting USB...
>> USB0:   Register 7000820 NbrPorts 7
>> Starting the controller
>> USB XHCI 1.00
>> scanning bus 0 for devices... cannot reset port 1!?
>> USB device descriptor short read (expected 18, got 8)
>> 5 USB Device(s) found
>>         scanning usb for storage devices... 1 Storage Device(s) found
>>
>> On the 2nd scan, the "cannot reset port 1" line is gone:
>>
>> => usb reset
>> resetting USB...
>> USB0:   Register 7000820 NbrPorts 7
>> Starting the controller
>> USB XHCI 1.00
>> scanning bus 0 for devices... USB device descriptor short read (expected 18, got 8)
>> 5 USB Device(s) found
>>         scanning usb for storage devices... 1 Storage Device(s) found
>>
>> All USB devices seem to be detected correctly though. Here the
>> logs:
>>
>> => usb tree
>> USB device tree:
>>    1  Hub (5 Gb/s, 0mA)
>>    |  U-Boot XHCI Host Controller
>>    |
>>    +-2  Hub (480 Mb/s, 100mA)
>>    |
>>    +-3  Hub (480 Mb/s, 2mA)
>>    | |
>>    | +-5  Mass Storage (480 Mb/s, 200mA)
>>    |      JetFlash Mass Storage Device 3281440601
>>    |
>>    +-4  Vendor specific (5 Gb/s, 64mA)
>>         Realtek USB 10/100/1000 LAN 000002000000
>>
>> => usb info
>> 1: Hub,  USB Revision 3.0
>>   - U-Boot XHCI Host Controller
>>   - Class: Hub
>>   - PacketSize: 512  Configurations: 1
>>   - Vendor: 0x0000  Product 0x0000 Version 1.0
>>     Configuration: 1
>>     - Interfaces: 1 Self Powered 0mA
>>       Interface: 0
>>       - Alternate Setting 0, Endpoints: 1
>>       - Class Hub
>>       - Endpoint 1 In Interrupt MaxPacket 8 Interval 255ms
>>
>> 2: Hub,  USB Revision 2.0
>>   - Class: Hub
>>   - PacketSize: 64  Configurations: 1
>>   - Vendor: 0x0409  Product 0x005a Version 1.0
>>     Configuration: 1
>>     - Interfaces: 1 Self Powered Remote Wakeup 100mA
>>       Interface: 0
>>       - Alternate Setting 0, Endpoints: 1
>>       - Class Hub
>>       - Endpoint 1 In Interrupt MaxPacket 1 Interval 12ms
>>
>> 3: Hub,  USB Revision 2.1
>>   - Class: Hub
>>   - PacketSize: 64  Configurations: 1
>>   - Vendor: 0x0424  Product 0x4604 Version 1.131
>>     Configuration: 1
>>     - Interfaces: 1 Self Powered Remote Wakeup 2mA
>>       Interface: 0
>>       - Alternate Setting 0, Endpoints: 1
>>       - Class Hub
>>       - Endpoint 1 In Interrupt MaxPacket 1 Interval 12ms
>>       - Endpoint 1 In Interrupt MaxPacket 1 Interval 12ms
>>
>> 5: Mass Storage,  USB Revision 2.10
>>   - JetFlash Mass Storage Device 3281440601
>>   - Class: (from Interface) Mass Storage
>>   - PacketSize: 64  Configurations: 1
>>   - Vendor: 0x8564  Product 0x1000 Version 16.117
>>     Configuration: 1
>>     - Interfaces: 1 Bus Powered 200mA
>>       Interface: 0
>>       - Alternate Setting 0, Endpoints: 2
>>       - Class Mass Storage, Transp. SCSI, Bulk only
>>       - Endpoint 2 Out Bulk MaxPacket 512
>>       - Endpoint 1 In Bulk MaxPacket 512
>>
>> 4: Vendor specific,  USB Revision 3.0
>>   - Realtek USB 10/100/1000 LAN 000002000000
>>   - Class: (from Interface) Vendor specific
>>   - PacketSize: 512  Configurations: 2
>>   - Vendor: 0x0bda  Product 0x8153 Version 48.0
>>     Configuration: 1
>>     - Interfaces: 1 Bus Powered Remote Wakeup 64mA
>>       Interface: 0
>>       - Alternate Setting 0, Endpoints: 3
>>       - Class Vendor specific
>>       - Endpoint 1 In Bulk MaxPacket 1024
>>       - Endpoint 2 Out Bulk MaxPacket 1024
>>       - Endpoint 3 In Interrupt MaxPacket 2 Interval 8ms
>>
>> Do you have any ideas about the scanning logs that I've noticed
>> above? Would it help if I provided some debug logs (-DDEBUG)
>> for this?
> 
> "cannot reset port 1" message is annoying, but that may happen
> sometimes due to unstable power supply. I will see if we can mute it
> if it's not the final round of reset try.

That would be good, thanks.

> I am more concerned about
> the "USB device descriptor short read (expected 18, got 8)". This
> message indicates U-Boot cannot get the device descriptor during set
> configuration process. So did you manage to get all USB devices that
> are connected on your board enumerated?

Might be that I'm missing some keyboard / mouse, which I'm not
using and not really aware of. One USB port is connected to a
KVM switch, enumberating such devices. Here the log from U-Boot
and Linux again:

=> usb reset
resetting USB...
USB0:   Register 7000820 NbrPorts 7
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... cannot reset port 1!?
USB device descriptor short read (expected 18, got 8)
6 USB Device(s) found
       scanning usb for storage devices... 2 Storage Device(s) found
=> usb tree
USB device tree:
  1  Hub (5 Gb/s, 0mA)
  |  U-Boot XHCI Host Controller 
  |
  +-2  Hub (480 Mb/s, 100mA)
  |  
  +-3  Mass Storage (480 Mb/s, 98mA)
  |    USBest Technology USB Mass Storage Device 09092207fbf0c4
  |  
  +-4  Hub (480 Mb/s, 2mA)
  | |
  | +-6  Mass Storage (480 Mb/s, 200mA)
  |      JetFlash Mass Storage Device 3281440601
  |    
  +-5  Vendor specific (5 Gb/s, 64mA)
       Realtek USB 10/100/1000 LAN 000002000000


$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 4: Dev 4, If 0, Class=Hub, Driver=hub/4p, 12M
            |__ Port 1: Dev 6, If 1, Class=Human Interface Device, Driver=usbhid, 12M
            |__ Port 1: Dev 6, If 2, Class=Human Interface Device, Driver=usbhid, 12M
            |__ Port 1: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 4: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 5: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 7, If 0, Class=Mass Storage, Driver=usb-storage, 480M


Which event polling Kconfig option do I need to enable?
 
>>
>> BTW: I need to re-add the SYS_USB_EVENT_POLL* options back to
>> the whilelist file. Otherwise compiling fails with this
>> message:
>>
>> $ make minnowmax_defconfig
>> $ make -s -j10
>> Error: You must add new CONFIG options using Kconfig
>> The following new ad-hoc CONFIG options were detected:
>> CONFIG_SYS_USB_EVENT_POLL
>>
>> Please add these via Kconfig instead. Find a suitable Kconfig
>> file and add a 'config' or 'menuconfig' option.
>> Makefile:862: recipe for target 'all' failed
>>
>> Don't you see this error? Any idea whats going wrong here?
> 
> This is strange. I did not see this error when I sent the patch series
> before. I rebased xhci-working3 branch to u-boot/master this afternoon
> for the v2 patch rework, and now am seeing the same issue.

Ah, good. So you see it as well.

Please let me know, if you need me to do some further tests to help
here.

Thanks,
Stefan


More information about the U-Boot mailing list