Re: [PATCHv2 00/15] Get MUSB PM runtime working again

Bin Liu
2016-05-18T17:35:02Z

Hi,

On Tue, May 17, 2016 at 05:05:02PM -0500, Bin Liu wrote:
> On Tue, May 17, 2016 at 02:54:04PM -0700, Tony Lindgren wrote:
> > * Bin Liu <b-liu-l0cyMroinI0@public.gmane.org> [160517 14:17]:
> > > Hi Tony,
> > >
> > > On Wed, May 11, 2016 at 05:53:01PM -0700, Tony Lindgren wrote:
> > > > Hi all,
> > > >
> > > > Here's the whole series reposted with a bunch of additional changes.
> > > > It seems to now properly work with with multiple phy cable status
> > > > events, and should work for Ivaylo on n900 too.
> > > >
> > > > Please re-review and re-test.
> > >
> > > While trying to test this patch set, I just found that commit 56f487c (PM
> > > / Runtime: Update last_busy in rpm_resume) breaks dsps glue (TI am335x
> > > device). Do you have an am335x board with has otg port on it to take a
> > > look at this problem? The only board I know of which has an otg port is
> > > TI am335x GP evm.
> >
> > Hmm sure I can take a lok. Chances are that just doing a change for
>
> Ok, thanks.
>
> > s/pm_runtime_put/pm_runtime_put_sync/ will fix it. I'm wondering why
> > it breaks though as dsps glue does not use autosuspend? It could also
>
> I am not familiar with pm-runtime framework, but I thought dsps glue
> does use autosuspend.

I think I found the problem. Before having the offending patch,
musb_gadget_pullup() got called by musb_gadget_start(), then pm_suspend
immediately (~2us) happens, and musb_save_context() backs up DEVCTL register
which has session bit set.

But with the offending patch, pm_suspend happends much later (~200ms)
after musb_gadget_pullup() is called, so by this time when
musb_save_context() is called, session bit is already cleared by the
controller, so the backup of DEVCTL register does not have session bit
set. Later when pm_resume, musb_restore_context() cleared the seesion
bit.

Regards,
-Bin.