Re: [PATCH 07/15] usb: musb: Handle cable status better for 2430 glue layer

Tony Lindgren
2016-05-13T20:58:30Z

* Bin Liu <b-liu-l0cyMroinI0@public.gmane.org> [160513 13:43]:
> Hi,
>
> On Fri, May 13, 2016 at 01:33:30PM -0700, Tony Lindgren wrote:
> > * Bin Liu <b-liu-l0cyMroinI0@public.gmane.org> [160513 13:26]:
> > > On Fri, May 13, 2016 at 03:21:55PM -0500, Bin Liu wrote:
> > > > On Fri, May 13, 2016 at 01:09:02PM -0700, Tony Lindgren wrote:
> > > > > * Bin Liu <b-liu-l0cyMroinI0@public.gmane.org> [160513 12:58]:
> > > > > > On Wed, May 11, 2016 at 06:33:04PM -0700, Tony Lindgren wrote:
> > > > > > > --- a/drivers/usb/musb/omap2430.c
> > > > > > > +++ b/drivers/usb/musb/omap2430.c
> > > > > > > @@ -49,6 +49,9 @@ struct omap2430_glue {
> > > > > > > enum musb_vbus_id_status status;
> > > > > > > struct work_struct omap_musb_mailbox_work;
> > > > > > > struct device *control_otghs;
> > > > > > > + bool cable_connected;
> > > > > > > + bool enabled;
> > > > > > > + bool powered;
> > > > > >
> > > > > > This variable is only used within omap2430_set_power(), so it can be
> > > > > > local within that function to save a few bytes.
> > > > >
> > > > > Well it needs to be static as we keep things powered only if
> > > > > glue is enabled and cable is connected.
> > > >
> > > > I think it does not have to static in omap2430_glue, how about in the
> > >
> > > I meant in omap2430_set_power().
> > >
> > > > very beginning of omap2430_set_power(),
> > > >
> > > > bool powered = glue->enabled && glue->cable_connected;
> > > >
> > > > before changing glue->enabled and glue->cable_connected, then this
> > > > local powered variable is equivalent to glue->powered.
> >
> > Hmm but pm_runtime_get_sync() can fail too. I was seeing -EACCES
> > there while chasing various PM runtime issues. That can happen for
> > example if the parent and child PM runtime use counts get out of sync
> > like happened in the -EPROBE_DEFER case. Now we at least know if
> > something goes wrong with the "could not enable" error.
>
> Well, cannot think of why this variable could cause this problem. But
> anyway, please ignore my comments, it is only about 4 bytes.

It's because we currently need to keep track of powered in addition
to cable_connected and enabled. Otherwise we don't get get warnings
related to PM runtime issues.

And if we use static bool powered in omap2430_set_power(), it won't
be specific to the glue layer driver instance :)

Tony