Hi Nikolaus,
Sorry for the delay. My reply below.
On 05/07/18 11:22, Tony Lindgren wrote:
Hi,
- H. Nikolaus Schaller hns@goldelico.com [180704 18:06]:
Hi Tony, I have seen two small issues:
a) USB client mode works fine, except that on first plug in of the cable I see NOHZ warnings (which seem to be harmless):
dhcpcd[2317]: version 6.0.5 starting dhcpcd[2317]: wlan0: waiting for carrier dhcpcd[2317]: usb0: waiting for carrier dhcpcd[2317]: wlan0: carrier acquired dhcpcd[2317]: wlan0: carrier lost dhcpcd[2317]: wlan0: waiting for carrier [ 23.626353] wlcore: down [ 46.919138] g_ether gadget: high-speed config #1: CDC Ethernet (ECM) [ 47.285640] bq24296: VBUS became available [ 47.290052] bq24296_update_input_current_limit(6) [ 48.531529] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready [ 48.593338] NOHZ: local_softirq_pending 08 [ 48.826821] NOHZ: local_softirq_pending 08 [ 48.987261] NOHZ: local_softirq_pending 08 [ 49.288690] NOHZ: local_softirq_pending 08 [ 49.381113] NOHZ: local_softirq_pending 08 [ 49.610246] NOHZ: local_softirq_pending 08 [ 49.774833] NOHZ: local_softirq_pending 08 [ 49.888948] NOHZ: local_softirq_pending 08 [ 50.143018] NOHZ: local_softirq_pending 08 [ 50.168652] NOHZ: local_softirq_pending 08 dhcpcd[2317]: timed out dhcpcd[2317]: allowing 8 seconds for IPv4LL timeout dhcpcd[2317]: usb0: carrier acquired dhcpcd[2317]: usb0: soliciting an IPv6 router dhcpcd[2317]: usb0: using IPv4LL address 169.254.83.144 dhcpcd[2317]: usb0: adding host route to 169.254.83.144 via 127.0.0.1 dhcpcd[2317]: usb0: adding route to 169.254.0.0/16 dhcpcd[2317]: forked to background, child pid 2812 [FAIL] startpar: service(s) returned failure: isc-dhcp-server ... failed!
Debian GNU/Linux 8 letux console
letux login: root Password:
It is the same on omap5uevm:
root@letux:~# [ 2858.377258] g_ether gadget: high-speed config #1: CDC Ethernet (ECM) [ 2859.205770] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready [ 2859.279922] NOHZ: local_softirq_pending 08 [ 2859.481076] NOHZ: local_softirq_pending 08 [ 2859.800392] NOHZ: local_softirq_pending 08 [ 2859.913331] NOHZ: local_softirq_pending 08 [ 2860.052946] NOHZ: local_softirq_pending 08 [ 2860.232251] NOHZ: local_softirq_pending 08 [ 2860.280545] NOHZ: local_softirq_pending 08 [ 2860.445238] NOHZ: local_softirq_pending 08 [ 2860.541821] NOHZ: local_softirq_pending 08 [ 2860.808122] NOHZ: local_softirq_pending 08
root@letux:~# [ 2872.169307] g_ether gadget: high-speed config #1: CDC Ethernet (ECM)
b) OTG mode detects cable plugin (extcon) and turns on power but dwc3 does not try to find the connected device
root@letux:~# [ 692.970418] bq24296: VBUS became unavailable [ 850.289966] bq24296_otg_is_enabled(1) [ 850.294997] bq24296_otg_enable(1) [ 858.377691] bq24296_otg_disable(1) [ 864.544944] bq24296_otg_is_enabled(1) [ 864.549017] bq24296_otg_enable(1) [ 866.834895] bq24296_otg_disable(1)
Same on omap5uevm (just power can be measured, not the bq24296 printk of course).
otg mode was never tested on omap5uevm.
omap5.dtsi sets dwc3 controller's dr_mode to "peripheral". And it remains like that. So we need to set it to "otg" in the boards that need dual-role support.
The other missing piece for omap5uevm is how to enable the VBUS regulator that is on the PMIC (palmas). Unlike later SoCs (AM43/DRA7) omap5 doesn't have a DRVVBUS pin that can turn on an external VBUS regulator. So this must be done by SW.
The USB2 PHY that we use model in omap5.dtsi is a generic-phy and does not implement otg_set_vbus(). VBUS regulator is managed by PMIC. So we need to model the PMIC VBUS regulator as a 2nd USB2 PHY and implement otg->set_host() and otg->set_peripheral() for it.
Any ideas how to fix / debug?
Can I see your board's device tree file?
Can you see dwc3 otg interrupts in /proc/interrupts when you plug/unplug a host adapter?
No idea what might be causing these, adding Roger to Cc.
Regards,
Tony
cheers, -roger