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. 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. Or something similar. I know of some products (cellphones) which will only switch Vbus on when you open e.g. file manager. -- balbi
Attachment:
signature.asc
Description: Digital signature