Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 687ef981 authored by Felipe Balbi's avatar Felipe Balbi
Browse files

usb: dwc3: gadget: clear stall when disabling endpoint



so it seems like DWC3 IP doesn't clear stalls
automatically when we disable an endpoint, because
of that, we _must_ make sure stalls are cleared
before clearing the proper bit in DALEPENA register.

Cc: <stable@vger.kernel.org> # v3.4+
Reported-by: default avatarJohannes Stezenbach <js@sig21.net>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent c9eaa447
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -608,6 +608,10 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)

	dwc3_remove_requests(dwc, dep);

	/* make sure HW endpoint isn't stalled */
	if (dep->flags & DWC3_EP_STALL)
		__dwc3_gadget_ep_set_halt(dep, 0);

	reg = dwc3_readl(dwc->regs, DWC3_DALEPENA);
	reg &= ~DWC3_DALEPENA_EP(dep->number);
	dwc3_writel(dwc->regs, DWC3_DALEPENA, reg);