From: "Du, Changbin" <changbin...@intel.com>

To stop an out endpoint, software should set sets the Global OUT NAK,
but not the Global Non-periodic IN NAK. This driver bug leads the out-ep
failed be in disabled state with below error.

dwc2_hsotg_ep_stop_xfr: timeout DOEPCTL.EPDisable

Signed-off-by: Du, Changbin <changbin...@intel.com>
---
 drivers/usb/dwc2/gadget.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
index 0abf73c..92a182f 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -2911,15 +2911,15 @@ static void dwc2_hsotg_ep_stop_xfr(struct dwc2_hsotg 
*hsotg,
                                "%s: timeout DIEPINT.NAKEFF\n", __func__);
        } else {
                /* Clear any pending nak effect interrupt */
-               dwc2_writel(GINTSTS_GINNAKEFF, hsotg->regs + GINTSTS);
+               dwc2_writel(GINTSTS_GOUTNAKEFF, hsotg->regs + GINTSTS);
 
-               __orr32(hsotg->regs + DCTL, DCTL_SGNPINNAK);
+               __orr32(hsotg->regs + DCTL, DCTL_SGOUTNAK);
 
                /* Wait for global nak to take effect */
                if (dwc2_hsotg_wait_bit_set(hsotg, GINTSTS,
-                                               GINTSTS_GINNAKEFF, 100))
+                                               GINTSTS_GOUTNAKEFF, 100))
                        dev_warn(hsotg->dev,
-                               "%s: timeout GINTSTS.GINNAKEFF\n", __func__);
+                               "%s: timeout GINTSTS.GOUTNAKEFF\n", __func__);
        }
 
        /* Disable ep */
@@ -2944,7 +2944,7 @@ static void dwc2_hsotg_ep_stop_xfr(struct dwc2_hsotg 
*hsotg,
                /* TODO: Flush shared tx fifo */
        } else {
                /* Remove global NAKs */
-               __bic32(hsotg->regs + DCTL, DCTL_SGNPINNAK);
+               __bic32(hsotg->regs + DCTL, DCTL_SGOUTNAK);
        }
 }
 
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to