Track down EHCI and companion errors on rk3xxx systems
Diederik de Haas
diederik at cknow-tech.com
Wed Jan 14 06:59:28 PST 2026
On Wed Jan 14, 2026 at 4:20 AM CET, Alan Stern wrote:
> On Tue, Jan 13, 2026 at 10:15:59PM +0100, Diederik de Haas wrote:
>> I'm now wondering if there's something wrong with the Quartz64-A ...
>> I already thought that it took way too long before I got a login prompt.
>>
>> In my first attempt I noticed I did NOT have the "Warning! ehci_hcd
>> should always be loaded before uhci_hcd and ohci_hcd, not after"
>> It took so long I forgot to keep counting, but most of all I forgot the
>> dynamic debug command, so I tried again ...
I know it didn't result in the requested dmesg log, but isn't it
significant I had the problem *without* the warning? IOW: the connection
(correlation or causation) I thought there was, (possibly) isn't there?
>> This time I did the dynamic debug command and the above "Warning!" was
>> present. Plugged in the keyboard adapter, started a stopwatch on my
>> phone and monitored the ``dmesg -W`` for any changes ...
>>
>> It took slightly more then a MINUTE for anything to appear in dmesg :-O
>>
>> ```
>> root at quartz64a:~# dmesg -W
>> [ 357.343890] usb usb4: usb wakeup-resume
>> [ 357.343970] usb usb4: usb auto-resume
>> [ 357.344023] hub 4-0:1.0: hub_resume
>> [ 357.344243] usb usb4-port1: status 0501 change 0001
>> [ 357.446845] hub 4-0:1.0: state 7 ports 1 chg 0002 evt 0000
>> [ 357.447094] usb usb4-port1: status 0501, change 0000, 480 Mb/s
>
> That's the EHCI controller detecting the new connection. If this took
> more than a minute to happen then something is wrong with the EHCI
> controller or its associated hardware. Or possibly with the way the
> computer handles wakeup signals.
This was with a 6.19-rc5 based kernel (with mostly media patches added
on top) and on a Rock64 (rk3328) I got a whole bunch of these warnings:
WARNING: drivers/gpio/gpiolib.c:3523 at gpiod_get_value+0x64/0x98, CPU#0: swapper/0/0
log of a few of them:
https://paste.sr.ht/~diederik/154c5023a3a50d77f1da2195e7bb9a96f6a88555
and I suspect (but don't KNOW!) this commit is relevant:
20cf2aed89ac ("gpio: rockchip: mark the GPIO controller as sleeping")
So I'll switch to a 6.19-rc4 based kernel, which is mostly the same,
but doesn't have that commit.
FWIW: I'd expect to see sth in dmesg within a second of me plugging sth
in, so I was surprised by you calling '30 secs' a short period.
I'll re-do the test and the addional tests you requested, but right now
I need to focus on some other things, so may take a few days.
Cheers,
Diederik
>> [ 357.510889] hub 4-0:1.0: port_wait_reset: err = -16
>> [ 357.510909] usb usb2: usb wakeup-resume
>> [ 357.510956] usb usb4-port1: not enabled, trying reset again...
>> [ 357.510980] usb usb2: usb auto-resume
>> [ 357.586708] hub 2-0:1.0: hub_resume
>> [ 357.586936] usb usb2-port1: status 0101 change 0001
>> [ 357.690841] hub 2-0:1.0: state 7 ports 1 chg 0002 evt 0000
>> [ 357.691090] usb usb2-port1: status 0101, change 0000, 12 Mb/s
>> [ 357.714843] usb usb4-port1: not reset yet, waiting 200ms
>> [ 357.874717] usb 2-1: new full-speed USB device number 2 using ohci-platform
>
> This usb2 stuff is the OHCI controller reacting to the new connection,
> after the connection was switched from the EHCI controller to OHCI.
>
>> [ 357.918838] usb usb4-port1: not reset yet, waiting 200ms
>
> These messages aren't supposed to occur. The EHCI controller is
> supposed to realize that there is no device connected to it any more,
> now that the connection has been switched over to the OHCI controller.
>
>> [ 358.082679] usb 2-1: ep0 maxpacket = 32
>> [ 358.087855] usb 2-1: skipped 1 descriptor after interface
>> [ 358.087926] usb 2-1: skipped 1 descriptor after interface
>> [ 358.089798] usb 2-1: default language 0x0409
>> [ 358.093839] usb 2-1: udev 2, busnum 2, minor = 129
>> [ 358.093904] usb 2-1: New USB device found, idVendor=1997, idProduct=2433, bcdDevice= 1.06
>> [ 358.094803] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
>> [ 358.095481] usb 2-1: Product: mini keyboard
>> [ 358.095889] usb 2-1: Manufacturer:
>> [ 358.097629] usb 2-1: usb_probe_device
>> [ 358.097691] usb 2-1: configuration #1 chosen from 1 choice
>> [ 358.099335] usb 2-1: adding 2-1:1.0 (config #1, interface 0)
>> [ 358.100603] usb 2-1: adding 2-1:1.1 (config #1, interface 1)
>> [ 358.101371] hub 2-0:1.0: state 7 ports 1 chg 0000 evt 0002
>> [ 358.126129] usb usb4-port1: not reset yet, waiting 200ms
>> [ 358.203797] hid: raw HID events driver (C) Jiri Kosina
>> [ 358.227055] usbhid 2-1:1.0: usb_probe_interface
>> [ 358.227080] usbhid 2-1:1.0: usb_probe_interface - got id
>> [ 358.231307] usbhid 2-1:1.1: usb_probe_interface
>> [ 358.231331] usbhid 2-1:1.1: usb_probe_interface - got id
>> [ 358.236333] usbcore: registered new interface driver usbhid
>> [ 358.236850] usbhid: USB HID core driver
>> [ 358.267050] input: mini keyboard as /devices/platform/fd8c0000.usb/usb2/2-1/2-1:1.0/0003:1997:2433.0001/input/input2
>> [ 358.326722] usb usb4-port1: not reset yet, waiting 200ms
>> [ 358.326992] hub 4-0:1.0: state 7 ports 1 chg 0000 evt 0002
>> [ 358.327125] usb usb4-port1: status 0100, change 0001, 12 Mb/s
>
> And here is where the EHCI controller finally reported that nothing was
> connected.
>
> It certainly looks like the EHCI controller isn't working right. Just
> as a test, you can try unloading the ehci-hcd module, together with any
> modules depending on it, before you plug in the keyboard adapter. It
> would be interesting to see if that makes any difference.
>
> Another thing to try is to see if disabling EHCI runtime suspend changes
> anything. To do this, don't remove any modules. Instead, before
> plugging in the keyboard adapter, do:
>
> echo on >/sys/bus/usb/devices/usb4/power/control
>
> Alan Stern
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
More information about the Linux-rockchip
mailing list