[Letux-kernel] Minor annoyances with USB(3) port on Pyra

Roger Quadros rogerq at ti.com
Thu Aug 30 16:15:01 CEST 2018


Hi Nikolaus,

Sorry for the delay. My reply below.

On 05/07/18 11:22, Tony Lindgren wrote:
> Hi,
> 
> * H. Nikolaus Schaller <hns at 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 at 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 at 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 at 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

-- 
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki


More information about the Letux-kernel mailing list