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

Bug#918800: PROBLEM: USB 3.0 NIC operates only at USB 2.0 speed on Odroid HC1



Hi,

The Odroid HC1 ARM board contains a JMicron JMS578 USB 3.0 to SATA
Bridge and a Realtek Gbps Ethernet device connected to an USB 3.0 host.
The SATA bridge works correctly at USB 3.0 speed, but the Ethernet
controller operates only at USB 2.0 speed. I tracked this behaviour down
to the CONFIG_USB_XHCI_PLATFORM kernel configuration.

The r8152 driver operates only at 480M when using
CONFIG_USB_XHCI_PLATFORM=m:

root@odroid:~# lsusb -t 
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=exynos-ehci/3p, 480M
root@odroid:~# dmesg | grep 'usb \?[56]\|dwc3'
[    3.538934] exynos-dwc3 soc:usb3-0: Linked as a consumer to regulator.9
[    3.544589] exynos-dwc3 soc:usb3-0: Linked as a consumer to regulator.11
[    3.551085] dwc3 12000000.dwc3: Failed to get clk 'ref': -2
[    3.557547] exynos-dwc3 soc:usb3-1: Linked as a consumer to regulator.9
[    3.563377] exynos-dwc3 soc:usb3-1: Linked as a consumer to regulator.11
[    3.569830] dwc3 12400000.dwc3: Failed to get clk 'ref': -2
[    4.518245] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.00
[    4.526207] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    4.533316] usb usb5: Product: xHCI Host Controller
[    4.538166] usb usb5: Manufacturer: Linux 5.0.0-rc4 xhci-hcd
[    4.543807] usb usb5: SerialNumber: xhci-hcd.1.auto
[    4.576021] usb usb6: We don't know the algorithms for LPM for this host, disabling LPM.
[    4.584112] usb usb6: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.00
[    4.592349] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    4.599430] usb usb6: Product: xHCI Host Controller
[    4.604286] usb usb6: Manufacturer: Linux 5.0.0-rc4 xhci-hcd
[    4.609917] usb usb6: SerialNumber: xhci-hcd.1.auto
[    5.103725] usb 5-1: new high-speed USB device number 2 using xhci-hcd
[    5.256710] usb 5-1: New USB device found, idVendor=0bda, idProduct=8153, bcdDevice=30.00
[    5.263420] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[    5.270526] usb 5-1: Product: USB 10/100/1000 LAN
[    5.275203] usb 5-1: Manufacturer: Realtek
[    5.279274] usb 5-1: SerialNumber: 000001000000
[    5.504131] usb 5-1: reset high-speed USB device number 2 using xhci-hcd

When changing to CONFIG_USB_XHCI_PLATFORM=y, it works as expected:

root@odroid:~# lsusb -t
/:  Bus 06.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 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=exynos-ehci/3p, 480M
root@odroid:~# dmesg | grep 'usb \?[56]\|dwc3'
[    3.572120] exynos-dwc3 soc:usb3-0: Linked as a consumer to regulator.9
[    3.577802] exynos-dwc3 soc:usb3-0: Linked as a consumer to regulator.11
[    3.584308] dwc3 12000000.dwc3: Failed to get clk 'ref': -2
[    3.723387] exynos-dwc3 soc:usb3-1: Linked as a consumer to regulator.9
[    3.729518] exynos-dwc3 soc:usb3-1: Linked as a consumer to regulator.11
[    3.735952] dwc3 12400000.dwc3: Failed to get clk 'ref': -2
[    3.769931] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.00
[    3.777877] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.785068] usb usb5: Product: xHCI Host Controller
[    3.789919] usb usb5: Manufacturer: Linux 5.0.0-rc4 xhci-hcd
[    3.795551] usb usb5: SerialNumber: xhci-hcd.1.auto
[    3.827760] usb usb6: We don't know the algorithms for LPM for this host, disabling LPM.
[    3.835868] usb usb6: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.00
[    3.843995] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.851185] usb usb6: Product: xHCI Host Controller
[    3.856036] usb usb6: Manufacturer: Linux 5.0.0-rc4 xhci-hcd
[    3.861669] usb usb6: SerialNumber: xhci-hcd.1.auto
[    5.024304] usb 6-1: new SuperSpeed Gen 1 USB device number 2 using xhci-hcd
[    5.049333] usb 6-1: New USB device found, idVendor=0bda, idProduct=8153, bcdDevice=30.00
[    5.056049] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[    5.063154] usb 6-1: Product: USB 10/100/1000 LAN
[    5.067829] usb 6-1: Manufacturer: Realtek
[    5.071901] usb 6-1: SerialNumber: 000001000000
[    5.299971] usb 6-1: reset SuperSpeed Gen 1 USB device number 2 using xhci-hcd
root@odroid:~# uname -a
Linux odroid 5.0.0-rc4 #44 SMP PREEMPT Sun Jan 27 13:46:17 UTC 2019 armv7l GNU/Linux

I reproduced this behaviour with kernel 5.0-rc4, 4.20, 4.19 (from
Debian), and 4.14. You can probably pick any kernel config as basis. I
used odroidxu4_defconfig (from Hardkernel's linux repository) and the
config from Debian testing.

I initially reported this issue in Debian: h
ttps://bugs.debian.org/918800

Let me know if you need more information or if I can help
debugging/testing.

Cheers,
Benjamin


Reply to: