musb_hdrc HNP?

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

 



Hello.

I am trying HNP (host -> peripheral role change) using two PocketBeagles, but without success.
If there any idea on where I, where should I ask this, or how can I debug / fix, I really appreciate.

1) What I did

Two PocketBeagles (running the default Debian image).
Both added 2nd USB ports (musb_hdrc.1).
DTBs were modified so that the 2nd musb_hdrcs have dr_mode = "otg".
musb_dsps glue port seems to be used.
Tech reference manual says the SoC's musb core supports HNP.

One is A (by GNDing ID pin) and another B, connected with USB cable.
modprobe g_zero on both so that VBUS power is on, and A becomes a_host and b becomes b_peripheral (as read through debugfs mode value).

Then I did the following, expecting HNP happens and A bevcomes a_peripheral and B bcomes b_host:

i) Send b_hnp_enable request on A.
(This does set DEVCTL.HOSTREQ bits on B's musb_hdrc.1 and maybe doing some additinoal things in musb driver on B.)

ii) Set POWER.SUSPENDM bit on A's musb_hdrc.1
(According to TRM, this should tell B's musb core to initiate HNP.)

2) Observation

A: a_host -> a_wait_bcon -> a_idle -> a_wait_vrise -> a_host
B: b_peripheral -> b_idle -> b_peripheral

And I see "musb_hdrc.1 Babble" messages on both A and B console.

Looks like B disconnects once, but A = host/B = peripheral does not change.

Looking into musb driver source, there are code for HNP maybe to help musb core behavior.
(But I have not enabled driver debug message yet, which I may try next?)




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux