On Wed, Apr 10, 2013 at 09:10:19AM +0200, Daniel Mack wrote: > On 08.04.2013 12:38, B, Ravi wrote: > > Felipe > > > >> Hi, > >> > >> On Mon, Apr 08, 2013 at 12:25:38PM +0200, B, Ravi wrote: > >>> Daniel > >>> > >>>> On 08.04.2013 09:57, B, Ravi wrote: > >>>>>> Hi all, > >>>>>> > >>>>>> here are some patches to separate the HCD and gadget part > >>>>>> of the > >> musb > >>>>>> driver so they can be deselected in Kconfig. They also make > >>>>>> the > >> driver > >>>>>> keep track of the configured port mode that is set from DT, > >>>>>> so the actual runtime configuration can be selected > >>>>>> dynamically. > >>>>>> > >>>>>> One thing that is still broken is that once pm_suspend() > >>>>>> was called > >> on > >>>>>> a musb device on a USB disconnect, the port won't wake up > >>>>>> again > >> when a > >>>>>> device is plugged back in. > >>>>> > >>>>> This could be due to SESSION bit removal when root port is > >> disconnected > >>>> in otg_timer function. > >>>> > >>>> Not sure if we are thinking about the same details, but after > >>>> debuging this a further, turns out that > >>>> musb_platform_try_idle() eventually switches off the entire > >>>> controller, which then leads to DRVBUS going > >> low > >>>> on the board. That, in turn, prevents the interrupt from being > >> triggered > >>>> on reconnect, because the host port is not powered anymore. > >>>> > >>>> I don't know yet how to cope with that, but for now, I simply > >>>> disabled the call from musb_stage0_irq() to > >>>> musb_platform_try_idle() locally. > >>> > >>> The otg_timer() gets invoked, which removes the session when no > >>> device connected to root controller, this is required in otg or > >>> dual role mode (Not for host-only mode). Because otg state is > >>> un-defined till user's connected a-side of b-side of cable. > >> > >> Embedded hosts might also want this to save some power while no > >> devices are connected. I guess most of those devices would rely on > >> SRP or on a polling method to enable VBUS. > > > > Yes, in case of true otg, SRP wakesup the device to enable VBUS. > > > > By 'polling' I mean that e.g. every 2 > >> seconds turn vbus on, if no device are enumerated in 200ms, then > >> sleep for another 2 seconds. > > > > Yes, we had this workaround mechanism enabled on some earlier davinci > > platform by setting the session periodically to check any device > > connected for host or otg/dual-role controller to save VBUS power > > when no device connected. > > However, this workaround doesn't seem to work anymore. > > Anyway, I think we can address this issue separately from the patch set > I submitted. correct -- balbi
Attachment:
signature.asc
Description: Digital signature