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

Commit 4aa75c04 authored by Mayank Rana's avatar Mayank Rana
Browse files

dwc3: gadget: Don't resume controller when charger is connected



dwc3_gadget_start() API is being called when android gadget driver
is binding with UDC driver. The purpose of this API to update
gadget_driver with UDC only. It doesn't need any register read/write
access when it is being non DRD mode. Hence remove resuming controller
only in non DRD mode.

Change-Id: I5fab313b24c92f1c9cc0b4d7493758e91e92657c
Signed-off-by: default avatarMayank Rana <mrana@codeaurora.org>
parent a1e2db1b
Loading
Loading
Loading
Loading
+8 −10
Original line number Diff line number Diff line
@@ -2158,10 +2158,7 @@ static int dwc3_gadget_start(struct usb_gadget *g,
		goto err0;
	}

	pm_runtime_get_sync(dwc->dev);
	dwc->irq = irq;
	dbg_event(0xFF, "GdgStrt Begin",
		atomic_read(&dwc->dev->power.usage_count));
	spin_lock_irqsave(&dwc->lock, flags);

	if (dwc->gadget_driver) {
@@ -2181,16 +2178,20 @@ static int dwc3_gadget_start(struct usb_gadget *g,
	 * In that case dwc3_gadget_restart() will handle it.
	 */
	if (!dwc->is_drd) {
		spin_unlock_irqrestore(&dwc->lock, flags);
		pm_runtime_get_sync(dwc->dev);
		dbg_event(0xFF, "GdgStrt Begin",
			atomic_read(&dwc->dev->power.usage_count));
		spin_lock_irqsave(&dwc->lock, flags);
		ret = __dwc3_gadget_start(dwc);
		pm_runtime_put(dwc->dev);
		dbg_event(0xFF, "GdgStrt End",
			atomic_read(&dwc->dev->power.usage_count));
		if (ret)
			goto err2;
	}

	spin_unlock_irqrestore(&dwc->lock, flags);
	pm_runtime_put(dwc->dev);
	dbg_event(0xFF, "GdgStrt End",
		atomic_read(&dwc->dev->power.usage_count));

	return 0;

err2:
@@ -2198,9 +2199,6 @@ err2:

err1:
	spin_unlock_irqrestore(&dwc->lock, flags);
	pm_runtime_put(dwc->dev);
	dbg_event(0xFF, "GdgStrt Err",
		atomic_read(&dwc->dev->power.usage_count));
	free_irq(irq, dwc);

err0: