From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lelnx194.ext.ti.com ([198.47.27.80]:22961 "EHLO lelnx194.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758415AbdLROrp (ORCPT ); Mon, 18 Dec 2017 09:47:45 -0500 Date: Mon, 18 Dec 2017 08:47:44 -0600 From: Bin Liu To: CC: Subject: Re: FAILED: patch "[PATCH] usb: musb: da8xx: fix babble condition handling" failed to apply to 4.9-stable tree Message-ID: <20171218144744.GC14090@uda0271908> References: <15135972764252@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <15135972764252@kroah.com> Sender: stable-owner@vger.kernel.org List-ID: Hi, On Mon, Dec 18, 2017 at 12:41:16PM +0100, gregkh@linuxfoundation.org wrote: > > The patch below does not apply to the 4.9-stable tree. > If someone wants it applied there, or to any other stable or longterm > tree, then please email the backport, including the original git commit > id to . > > thanks, > > greg k-h > > ------------------ original commit in Linus's tree ------------------ > > From bd3486ded7a0c313a6575343e6c2b21d14476645 Mon Sep 17 00:00:00 2001 > From: Bin Liu > Date: Tue, 5 Dec 2017 08:45:30 -0600 > Subject: [PATCH] usb: musb: da8xx: fix babble condition handling > > When babble condition happens, the musb controller might automatically > turns off VBUS. On DA8xx platform, the controller generates drvvbus > interrupt for turning off VBUS along with the babble interrupt. > > In this case, we should handle the babble interrupt first and recover > from the babble condition. > > This change ignores the drvvbus interrupt if babble interrupt is also > generated at the same time, so the babble recovery routine works > properly. > > Cc: stable@vger.kernel.org # v3.16+ > Signed-off-by: Bin Liu > Signed-off-by: Greg Kroah-Hartman > > diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c > index 0397606a211b..6c036de63272 100644 > --- a/drivers/usb/musb/da8xx.c > +++ b/drivers/usb/musb/da8xx.c > @@ -284,7 +284,15 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci) > musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE; > portstate(musb->port1_status |= USB_PORT_STAT_POWER); > del_timer(&musb->dev_timer); This line causes the conflict. I have sent the new patch for the stable trees. Regards, -Bin. > - } else { > + } else if (!(musb->int_usb & MUSB_INTR_BABBLE)) { > + /* > + * When babble condition happens, drvvbus interrupt > + * is also generated. Ignore this drvvbus interrupt > + * and let babble interrupt handler recovers the > + * controller; otherwise, the host-mode flag is lost > + * due to the MUSB_DEV_MODE() call below and babble > + * recovery logic will not be called. > + */ > musb->is_active = 0; > MUSB_DEV_MODE(musb); > otg->default_a = 0; >