Hi, On Fri, Nov 11, 2016 at 10:42:57AM -0800, Tony Lindgren wrote: > We can't use static variable first for checking when musb is > initialized when we have multiple musb instances like on am335x. > > Tested-by: Ladislav Michl <ladis@xxxxxxxxxxxxxx> > Reviewed-by: Johan Hovold <johan@xxxxxxxxxxxxxxxxxxxx> > Tested-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx> > --- > drivers/usb/musb/musb_core.c | 9 +++++---- > drivers/usb/musb/musb_core.h | 2 ++ > 2 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c > --- a/drivers/usb/musb/musb_core.c > +++ b/drivers/usb/musb/musb_core.c > @@ -2291,6 +2291,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) > if (status) > goto fail5; > > + musb->is_initialized = 1; > pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > > @@ -2629,7 +2630,6 @@ static int musb_runtime_suspend(struct device *dev) > static int musb_runtime_resume(struct device *dev) > { > struct musb *musb = dev_to_musb(dev); > - static int first = 1; > > /* > * When pm_runtime_get_sync called for the first time in driver > @@ -2640,9 +2640,10 @@ static int musb_runtime_resume(struct device *dev) > * Also context restore without save does not make > * any sense > */ > - if (!first) > - musb_restore_context(musb); > - first = 0; > + if (!musb->is_initialized) > + return 0; > + > + musb_restore_context(musb); > > if (musb->need_finish_resume) { > musb->need_finish_resume = 0; > diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h > --- a/drivers/usb/musb/musb_core.h > +++ b/drivers/usb/musb/musb_core.h > @@ -385,6 +385,8 @@ struct musb { > int a_wait_bcon; /* VBUS timeout in msecs */ > unsigned long idle_timeout; /* Next timeout in jiffies */ > > + unsigned is_initialized:1; > + The musb strcut is getting bigger and bigger. Is it possible to not add a new variable but use one initialized in musb_init_controller() for this flag purpose? Readability shouldn't be an issue, since it is only used once in musb_runtime_resume(). Sorry I missed if this patch has been sent before. Regards, -Bin. > /* active means connected and not suspended */ > unsigned is_active:1; > > -- > 2.10.2 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html