On Tue, Apr 10, 2018 at 02:38:54PM +0900, Yoshihiro Shimoda wrote: > This patch fixes an issue that reconnection is possible to fail > because unexpected state handling happens by the irqs. To fix the issue, > the driver disables the controller's irqs when disconnected. > > Fixes: 746bfe63bba3 ("usb: gadget: renesas_usb3: add support for Renesas USB3.0 peripheral controller") > Cc: <stable@xxxxxxxxxxxxxxx> # v4.5+ > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> Reviewed-by: Simon Horman <horms+renesas@xxxxxxxxxxxx> > --- > > Remarks: > - A new file in v2 > > drivers/usb/gadget/udc/renesas_usb3.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c > index 0e70163..5caf78b 100644 > --- a/drivers/usb/gadget/udc/renesas_usb3.c > +++ b/drivers/usb/gadget/udc/renesas_usb3.c > @@ -623,6 +623,13 @@ static void usb3_disconnect(struct renesas_usb3 *usb3) > usb3_usb2_pullup(usb3, 0); > usb3_clear_bit(usb3, USB30_CON_B3_CONNECT, USB3_USB30_CON); > usb3_reset_epc(usb3); > + usb3_disable_irq_1(usb3, USB_INT_1_B2_RSUM | USB_INT_1_B3_PLLWKUP | > + USB_INT_1_B3_LUPSUCS | USB_INT_1_B3_DISABLE | > + USB_INT_1_SPEED | USB_INT_1_B3_WRMRST | > + USB_INT_1_B3_HOTRST | USB_INT_1_B2_SPND | > + USB_INT_1_B2_L1SPND | USB_INT_1_B2_USBRST); > + usb3_clear_bit(usb3, USB_COM_CON_SPD_MODE, USB3_USB_COM_CON); > + usb3_init_epc_registers(usb3); > > if (usb3->driver) > usb3->driver->disconnect(&usb3->gadget); > -- > 1.9.1 >