Hi Fabio, Peter, Stefan,
I've incidentally discovered your last year discussion in ML [1] (I
hope it rings
the bell) regarding the issue I'm still observing on the same device with
the mainline kernel.
The difference between i.MX 6ULL EVK and this particular device,
is that usbotg2 is used only in host mode with the usb hub integrated on
the carrier board [2] [3].
root@colibri-imx6:~# lsusb -s 1:1 --tree
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
However I can't reproduce the same behavior with i.MX 6ULL EVK
with connected usb hub to usbotg2. Also this behavior can't be reproduced
with NXP downstream kernel (Linux version 4.9.144) on my device.
After digging in a bit I found out that this happens only when
autosuspend is enabled for the usb controller:
echo auto > /sys/bus/usb/devices/1-1/power/control
It tries to go to suspend mode, but everytime fails and resumes:
root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
suspended
root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
resuming
root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
suspended
root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
suspended
root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
suspended
root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
resuming
I'm observing ~2 seconds wakeup interrupts handled in ci_irq() in core.c and
subsequent invocation of imx_controller_resume().
Meantime usboh3 remains enabled all the time
(though imx_disable_unprepare_clks() should disable it):
root@colibri-imx6:~# cat /sys/kernel/debug/clk/clk_summary | grep usb
usbphy2_gate 1 1 0 0
0 0 50000
usbphy1_gate 1 1 0 0
0 0 50000
pll7_usb_host 1 1 0 480000000
0 0 50000
usbphy2 1 1 0 480000000
0 0 50000
pll3_usb_otg 2 3 0 480000000
0 0 50000
usbphy1 0 0 0 480000000
0 0 50000
usboh3 1 1 0 66000000
0 0 50000
While I'm trying to localize the root cause, maybe you can give some hints
where to look into?
Thanks for helping me!
[1] https://marc.info/?l=linux-usb&m=151844741732751
[2]
https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/imx6ull-colibri.dtsi#L191
[3]
https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/imx6ull-colibri-eval-v3.dtsi#L143
--
Best regards - Freundliche GrĂ¼sse - Meilleures salutations
Igor Opaniuk
mailto: [email protected]
skype: igor.opanyuk
+380 (93) 836 40 67
http://ua.linkedin.com/in/iopaniuk