EFI breaks USB dual port detection - our observations

Suniel Mahesh sunil at amarulasolutions.com
Tue Jul 18 20:37:04 CEST 2023


Hi,

I am testing the USB infrastructure on a Rockchip RK3328 based
roc-rk3328-cc target.

The USB tree on the device is as follows:

=> usb tree
USB device tree:
  1  Hub (480 Mb/s, 0mA)
     u-boot EHCI Host Controller

  1  Hub (12 Mb/s, 0mA)
      U-Boot Root Hub   (OHCI)

  1  Hub (5 Gb/s, 0mA)
     U-Boot XHCI Host Controller

  1  Hub (480 Mb/s, 0mA)
      U-Boot Root Hub (DWC2)

For some reason I am unable to detect storage device on DWC2 when two USB
drives
are simultaneously connected on EHCI and DWC2. Though it shows 2 storage
devices
when i do a "usb start/reset" and it gives usb_mass_storage.lun0 failed
message as
shown below.

=> usb start
starting USB...
Bus usb at ff5c0000: USB EHCI 1.00
Bus usb at ff5d0000: USB OHCI 1.0
Bus usb at ff600000: generic_phy_get_bulk : no phys property
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
Bus usb at ff580000: USB DWC2
scanning bus usb at ff5c0000 for devices...
2 USB Device(s) found
scanning bus usb at ff5d0000 for devices... 1 USB Device(s) found
scanning bus usb at ff600000 for devices... 1 USB Device(s) found
scanning bus usb at ff580000 for devices...
Adding disk for usb_mass_storage.lun0 failed
(err=-9223372036854775788/0x8000000000000014)
device 'usb_mass_storage.lun0' failed to unbind
1 USB Device(s) found
device 'usb_mass_storage.lun0' failed to unbind
       scanning usb for storage devices... 2 Storage Device(s) found

=> usb tree
USB device tree:
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller
  |
  +-2  Mass Storage (480 Mb/s, 224mA)
       SanDisk Dual Drive 040130e3ee554b7078843f4eb331646

  1  Hub (12 Mb/s, 0mA)
      U-Boot Root Hub

  1  Hub (5 Gb/s, 0mA)
     U-Boot XHCI Host Controller

  1  Hub (480 Mb/s, 0mA)
      U-Boot Root Hub

call trace: (detailed log:
https://gist.github.com/sunielmahesh/10088ea7b536cc9898ef787d9db43721)

efi_install_multiple_protocol_interfaces_int
device path
/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/USB(0x0,0x0)/USB(0x1,0x0)/Ctrl(0x0)
09576e91-6d3f-11d2-8e39-00a0c969723b, 00000000fcf1bae8,
00000000fcf1bae0efi_locate_device_path: ret = EFI_SUCCESS
efi_install_multiple_protocol_interfaces_int: ret=0, dp->type:7f
Path
/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/USB(0x0,0x0)/USB(0x1,0x0)/Ctrl(0x0)
already installed
install failed 8000000000000014

However, an interesting observation is that if i disable CONFIG_EFI_LOADER,
then I am able to detect the storage devices
without any usb_mass_storage.lun0 failed message:

=> usb reset
resetting USB...
Bus usb at ff5c0000: USB EHCI 1.00
Bus usb at ff5d0000: USB OHCI 1.0
Bus usb at ff600000: generic_phy_get_bulk : no phys property
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
Bus usb at ff580000: USB DWC2
scanning bus usb at ff5c0000 for devices... 2 USB Device(s) found
scanning bus usb at ff5d0000 for devices... 1 USB Device(s) found
scanning bus usb at ff600000 for devices... 1 USB Device(s) found
scanning bus usb at ff580000 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 2 Storage Device(s) found
=> usb tree
USB device tree:
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller
  |
  +-2  Mass Storage (480 Mb/s, 224mA)
       SanDisk Dual Drive 040130e3ee554b7078843f4eb331646

  1  Hub (12 Mb/s, 0mA)
      U-Boot Root Hub

  1  Hub (5 Gb/s, 0mA)
     U-Boot XHCI Host Controller

  1  Hub (480 Mb/s, 0mA)
  |   U-Boot Root Hub
  |
  +-2  Mass Storage (480 Mb/s, 224mA)
       SanDisk Dual Drive 04019c9b2e1a58f24ee318c3c123aa5

Please share you thoughts.

Thanks and Regards
-- 
Suniel Mahesh
Embedded Linux and Kernel Engineer
Amarula Solutions India


More information about the U-Boot mailing list