From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Ujfalusi Subject: Re: [PATCH] usb: musb: Fix trying to suspend while active for OTG configurations Date: Wed, 19 Apr 2017 11:22:55 +0300 Message-ID: <786d8296-e7b0-b8c7-fa5f-d9d34633ae04@ti.com> References: <20170407143528.4753-1-tony@atomide.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20170407143528.4753-1-tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> Sender: linux-usb-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Tony Lindgren , Bin Liu Cc: Alexandre Bailon , Andreas Kemnade , Boris Brezillon , Felipe Balbi , Greg Kroah-Hartman , Grygorii Strashko , Kishon Vijay Abraham I , Ivaylo Dimitrov , Johan Hovold , Ladislav Michl , Laurent Pinchart , Sergei Shtylyov , linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-omap@vger.kernel.org On 2017-04-07 17:35, Tony Lindgren wrote: > Commit d8e5f0eca1e8 ("usb: musb: Fix hardirq-safe hardirq-unsafe > lock order error") caused a regression where musb keeps trying to > enable host mode with no cable connected. This seems to be caused > by the fact that now phy is enabled earlier, and we are wrongly > trying to force USB host mode on an OTG port. The errors we are > getting are "trying to suspend as a_idle while active". > > For ports configured as OTG, we should not need to do anything > to try to force USB host mode on it's OTG port. Trying to force host > mode in this case just seems to completely confuse the musb state > machine. > > Let's fix the issue by making musb_host_setup() attempt to force the > mode only if port_mode is configured for host mode. Tested-by: Peter Ujfalusi > > Fixes: d8e5f0eca1e8 ("usb: musb: Fix hardirq-safe hardirq-unsafe > lock order error") > Cc: Johan Hovold > Reported-by: Laurent Pinchart > Reported-by: Peter Ujfalusi > Tested-by: Peter Ujfalusi > Signed-off-by: Tony Lindgren > --- > drivers/usb/musb/musb_host.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c > --- a/drivers/usb/musb/musb_host.c > +++ b/drivers/usb/musb/musb_host.c > @@ -2780,10 +2780,11 @@ int musb_host_setup(struct musb *musb, int power_budget) > int ret; > struct usb_hcd *hcd = musb->hcd; > > - MUSB_HST_MODE(musb); > - musb->xceiv->otg->default_a = 1; > - musb->xceiv->otg->state = OTG_STATE_A_IDLE; > - > + if (musb->port_mode == MUSB_PORT_MODE_HOST) { > + MUSB_HST_MODE(musb); > + musb->xceiv->otg->default_a = 1; > + musb->xceiv->otg->state = OTG_STATE_A_IDLE; > + } > otg_set_host(musb->xceiv->otg, &hcd->self); > hcd->self.otg_port = 1; > musb->xceiv->otg->host = &hcd->self; > - Péter -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html