[U-Boot] [PATCH 00/20] usb: xhci: Fix USB xHCI support on Intel platform

Bin Meng bmeng.cn at gmail.com
Wed Jun 21 10:24:00 UTC 2017


Hi Stefan,

On Wed, Jun 21, 2017 at 5:28 PM, Stefan Roese <sr at denx.de> wrote:
> Hi Bin,
>
> On 16.06.2017 15:31, Bin Meng wrote:
>> Currently U-Boot xHCI driver does not work on Intel BayTrail SoC based
>> boards that have USB 3.0 ports. Trying to do a 'usb start' simply hangs
>> the board. This series fixes a bunch of xHCI driver issues to make it
>> work on Intel's platform.
>>
>> Issues identified in the U-Boot xHCI driver are really spec violations,
>> but apparently other xHCI IPs found on ARM SoCs (mainly Synopsis IP?)
>> are quite tolerant with these spec violations, or IOW those IPs don't
>> respect the xHCI spec. While it comes to Intel platform, it just breaks.
>>
>> Note xHCI interrupt transfer is still not supported in this series, as
>> it has been there since the original commit of xHCI support for years.
>>
>> Tested on Intel MinnowMax board with the following USB devices:
>> - Dell USB 1.1 keyboard
>> - Dell USB 2.0 mouse
>> - Netac USB 2.0 flash disk
>> - JetFlash USB 3.0 flash disk
>> - GenesysLogic 4-port USB 3.0 hub, with an integrated Realtek USB
>>    ethernet chipset connected to one of its downstream port
>>
>> Testing were performed on both ports (2.0 port and 3.0 port), and both
>> ports are connected to xHCI (configure MinnowMax to enable xHCI).
>>
>> Testing results:
>> - DELL USB 1.1 keyboard and 2.0 mouse can be enumerated on both ports
>> - USB 2.0 and 3.0 flash disks work fine (enumerated, read/write) on
>>    both ports
>> - GenesysLogic USB 3.0 hub can be enumerated on 2.0 port as a 2.0 hub,
>>    and the integrated Realtek USB ethernet chipset enumerated as well.
>>    USB 2.0 and 3.0 flash disks connected via the hub can be enumerated,
>>    but DELL USB 1.1 keyboard and 2.0 mouse cannot.
>> - GenesysLogic USB 3.0 hub can be enumerated on 3.0 port as a 3.0 hub,
>>    but the integrated Realtek USB ethernet chipset cannot be enumerated.
>>    None of devices connected via the hub can be enumerated. U-Boot xHCI
>>    driver just throws BUG_ON() on the event TRB handling.
>>
>> This indicates that USB 3.0 hub support in U-Boot is seriously broken.
>> So far this series tries to fix some of the issues identified, but the
>> USB 3.0 hub is still not working. This will be left as future work, or
>> if someone else is interested it to pick up the work.
>>
>> The USB 3.0 hub work includes: port status translation, USB 3.0 newly
>> added "Set Hub Depth" request support, xHCI codes update to fill in
>> hub description fields in the input slot context when issuing commands
>> to xHC, etc.
>
> I've now installed this version on one of my BayTrail targets (DFI SoM
> based). And yes, I'm now able to detect USB devices connected to
> the HSIC ports of the BayTrail only connected to xHCI and not eHCI.
> But I have a problem detecting these USB devices after a reset
> has occured. Here the log after a power-up:
>
> U-Boot 2017.07-rc1-00297-gbedd877d5d-dirty (Jun 20 2017 - 16:41:19 +0200)
>
> CPU: x86_64, vendor Intel, device 30679h
> DRAM:  4 GiB
> MMC:   ValleyView SDHCI: 0, ValleyView SDHCI: 1, ValleyView SDHCI: 2
> SF: Detected w25q64cv with page size 256 Bytes, erase size 4 KiB, total 8 MiB
> Model: theadorable-x86-DFI-BT700
> SCSI:  Target spinup took 0 ms.
> SATA link 1 timeout.
> AHCI 0001.0300 32 slots 2 ports 3 Gbps 0x3 impl SATA mode
> flags: 64bit ncq stag pm led clo pio slum part sxs
> scanning bus for devices...
>   Device 0: (0:0) Vendor: ATA Prod.: SanDisk Ultra II Rev: X411
>             Type: Hard Disk
>             Capacity: 457862.8 MB = 447.1 GB (937703088 x 512)
> Found 1 device(s).
> Net:   No ethernet found.
> 960138 bytes read in 73 ms (12.5 MiB/s)
> Video: 800x600x16
> Hit any key to stop autoboot:  0
> => usb reset
> resetting USB...
> USB0:   Register 7000820 NbrPorts 7
> Starting the controller
> USB XHCI 1.00
> scanning bus 0 for devices... 5 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  Vendor specific (480 Mb/s, 180mA)
>   |    Realtek USB 10/100/1000 LAN 000002000000
>   |
>   +-3  Hub (480 Mb/s, 2mA)
>     |
>     +-4  Mass Storage (480 Mb/s, 200mA)
>     |    JetFlash Mass Storage Device 3281440601
>     |
>     +-5  Mass Storage (480 Mb/s, 300mA)
>          Kingston DataTraveler 2.0 C860008863CCBFC07A0668FC
>
> => reset
> resetting ...
> =>
>
> U-Boot 2017.07-rc1-00297-gbedd877d5d-dirty (Jun 20 2017 - 16:41:19 +0200)
>
> CPU: x86_64, vendor Intel, device 30679h
> DRAM:  4 GiB
> MMC:   ValleyView SDHCI: 0, ValleyView SDHCI: 1, ValleyView SDHCI: 2
> SF: Detected w25q64cv with page size 256 Bytes, erase size 4 KiB, total 8 MiB
> Model: theadorable-x86-DFI-BT700
> SCSI:  Target spinup took 0 ms.
> SATA link 1 timeout.
> AHCI 0001.0300 32 slots 2 ports 3 Gbps 0x3 impl SATA mode
> flags: 64bit ncq stag pm led clo pio slum part sxs
> scanning bus for devices...
>   Device 0: (0:0) Vendor: ATA Prod.: SanDisk Ultra II Rev: X411
>             Type: Hard Disk
>             Capacity: 457862.8 MB = 447.1 GB (937703088 x 512)
> Found 1 device(s).
> Net:   No ethernet found.
> 960138 bytes read in 73 ms (12.5 MiB/s)
> Video: 800x600x16
> Hit any key to stop autoboot:  0
> => usb reset
> resetting USB...
> USB0:   Register 7000820 NbrPorts 7
> Starting the controller
> USB XHCI 1.00
> scanning bus 0 for devices... 2 USB Device(s) found
>        scanning usb for storage devices... 0 Storage Device(s) found
> => usb tree
> USB device tree:
>   1  Hub (5 Gb/s, 0mA)
>   |  U-Boot XHCI Host Controller
>   |
>   +-2  Vendor specific (480 Mb/s, 180mA)
>        Realtek USB 10/100/1000 LAN 000002000000
>
>
> As you can see, the 2 USB mass storage devices which are connected
> to the xHCI HSIC port are only detected after a power-up and not
> after a system reset.
>
> Is this something that you can reproduce on your setup? Could you
> please check and let me know if this works for you or if you have
> an idea on this issue?

I cannot reproduce this on MinnowMax board. My testing env is one USB
2.0 flash disk connected to the upper port and another USB 3.0 flash
disk connected to the bottom port. Please check log below.

U-Boot 2017.07-rc1-00251-gfecf03a (Jun 21 2017 - 18:21:13 +0800)

CPU: x86_64, vendor Intel, device 30679h
DRAM:  2 GiB
MMC:   ValleyView SDHCI: 0, ValleyView SDHCI: 1, ValleyView SDHCI: 2
SF: Detected n25q64a with page size 256 Bytes, erase size 4 KiB, total 8 MiB
Video: 1280x1024x16
Model: Intel Minnowboard Max
SCSI:  SATA link 0 timeout.
SATA link 1 timeout.
AHCI 0001.0300 32 slots 2 ports 3 Gbps 0x3 impl SATA mode
flags: 64bit ncq stag pm led clo pio slum part sxs
scanning bus for devices...
Found 0 device(s).
Net:   eth0: eth_rtl8169
Hit any key to stop autoboot:  0
=>
=>
=>
=> usb start
starting USB...
USB0:   Register 7000820 NbrPorts 7
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... 3 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  Mass Storage (5 Gb/s, 76mA)
  |    JetFlash Mass Storage Device 16Q6ZPH20GF3E8UQ
  |
  +-3  Mass Storage (480 Mb/s, 200mA)
       Netac OnlyDisk FF00ECB60800FFFF1526

=> reset
resetting ...


U-Boot 2017.07-rc1-00251-gfecf03a (Jun 21 2017 - 18:21:13 +0800)

CPU: x86_64, vendor Intel, device 30679h
DRAM:  2 GiB
MMC:   ValleyView SDHCI: 0, ValleyView SDHCI: 1, ValleyView SDHCI: 2
SF: Detected n25q64a with page size 256 Bytes, erase size 4 KiB, total 8 MiB
Video: 1280x1024x16
Model: Intel Minnowboard Max
SCSI:  SATA link 0 timeout.
SATA link 1 timeout.
AHCI 0001.0300 32 slots 2 ports 3 Gbps 0x3 impl SATA mode
flags: 64bit ncq stag pm led clo pio slum part sxs
scanning bus for devices...
Found 0 device(s).
Net:   eth0: eth_rtl8169
Hit any key to stop autoboot:  0
=>
=> usb start
starting USB...
USB0:   Register 7000820 NbrPorts 7
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... 3 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  Mass Storage (480 Mb/s, 200mA)
  |    Netac OnlyDisk FF00ECB60800FFFF1526
  |
  +-3  Mass Storage (5 Gb/s, 76mA)
       JetFlash Mass Storage Device 16Q6ZPH20GF3E8UQ

Regards,
Bin


More information about the U-Boot mailing list