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

Commit 83c0d5cc authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: dwc3: Fix incorrect ep0 state on reset"

parents dc5efb5f f085b359
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -267,7 +267,7 @@ out:
	return ret;
	return ret;
}
}


static void dwc3_ep0_stall_and_restart(struct dwc3 *dwc)
void dwc3_ep0_stall_and_restart(struct dwc3 *dwc)
{
{
	struct dwc3_ep		*dep;
	struct dwc3_ep		*dep;


+9 −0
Original line number Original line Diff line number Diff line
@@ -3001,6 +3001,15 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
	dwc3_writel(dwc->regs, DWC3_DCTL, reg);
	dwc3_writel(dwc->regs, DWC3_DCTL, reg);
	dwc->test_mode = false;
	dwc->test_mode = false;


	/*
	 * From SNPS databook section 8.1.2
	 * the EP0 should be in setup phase. So ensure
	 * that EP0 is in setup phase by issuing a stall
	 * and restart if EP0 is not in setup phase.
	 */
	if (dwc->ep0state != EP0_SETUP_PHASE)
		dwc3_ep0_stall_and_restart(dwc);

	dwc3_stop_active_transfers(dwc);
	dwc3_stop_active_transfers(dwc);
	dwc3_clear_stall_all_ep(dwc);
	dwc3_clear_stall_all_ep(dwc);


+1 −0
Original line number Original line Diff line number Diff line
@@ -98,6 +98,7 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req,
void dwc3_ep0_interrupt(struct dwc3 *dwc,
void dwc3_ep0_interrupt(struct dwc3 *dwc,
		const struct dwc3_event_depevt *event);
		const struct dwc3_event_depevt *event);
void dwc3_ep0_out_start(struct dwc3 *dwc);
void dwc3_ep0_out_start(struct dwc3 *dwc);
void dwc3_ep0_stall_and_restart(struct dwc3 *dwc);
int __dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value);
int __dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value);
int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value);
int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value);
int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request,
int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request,