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

Commit 3193b19a 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: Flush bh work before disabling dwc3_irq"

parents 929bede8 290cc1d5
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -2040,7 +2040,16 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
	pm_runtime_get_sync(dwc->dev);
	dbg_event(0xFF, "Pullup gsync",
		atomic_read(&dwc->dev->power.usage_count));

	disable_irq(dwc->irq);

	/* prevent pending bh to run later */
	flush_work(&dwc->bh_work);

	spin_lock_irqsave(&dwc->lock, flags);
	if (dwc->ep0state != EP0_SETUP_PHASE)
		dbg_event(0xFF, "EP0 is not in SETUP phase\n", 0);

	/*
	 * If we are here after bus suspend notify otg state machine to
	 * increment pm usage count of dwc to prevent pm_runtime_suspend
@@ -2051,6 +2060,7 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)

	ret = dwc3_gadget_run_stop(dwc, is_on, false);
	spin_unlock_irqrestore(&dwc->lock, flags);
	enable_irq(dwc->irq);

	pm_runtime_mark_last_busy(dwc->dev);
	pm_runtime_put_autosuspend(dwc->dev);