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

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

Merge "usb:phy-msm-usb: Fix unclocked access during host bus suspend"

parents e4166584 c02df9c3
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -3789,6 +3789,12 @@ static irqreturn_t udc_irq(void)

	spin_lock(udc->lock);

	if ((udc->udc_driver->flags & CI13XXX_PULLUP_ON_VBUS) &&
				!udc->vbus_active) {
		spin_unlock(udc->lock);
		return IRQ_NONE;
	}

	if (udc->udc_driver->flags & CI13XXX_REGS_SHARED) {
		if (hw_cread(CAP_USBMODE, USBMODE_CM) !=
				USBMODE_CM_DEVICE) {
+8 −1
Original line number Diff line number Diff line
@@ -946,6 +946,8 @@ phcd_retry:
	if ((test_bit(B_SESS_VLD, &motg->inputs) && !device_bus_suspend &&
		!dcp && !prop_charger && !floated_charger) ||
		test_bit(A_BUS_REQ, &motg->inputs) || sm_work_busy) {
		if (test_bit(A_BUS_REQ, &motg->inputs))
			motg->pm_done = 1;
		motg->ui_enabled = 1;
		enable_irq(motg->irq);
		return -EBUSY;
@@ -1321,6 +1323,8 @@ skip_phy_resume:
		/* Match the disable_irq call from ISR */
		enable_irq(motg->async_int);
		motg->async_int = 0;
		if (phy->state >= OTG_STATE_A_IDLE)
			set_bit(A_BUS_REQ, &motg->inputs);
	}
	motg->ui_enabled = 1;
	enable_irq(motg->irq);
@@ -3247,8 +3251,11 @@ static irqreturn_t msm_otg_irq(int irq, void *data)
		pr_debug("OTG IRQ: %d in LPM\n", irq);
		disable_irq_nosync(irq);
		motg->async_int = irq;
		if (!atomic_read(&motg->pm_suspended))
		if (!atomic_read(&motg->pm_suspended)) {
			if (otg->phy->state >= OTG_STATE_A_IDLE)
				set_bit(A_BUS_REQ, &motg->inputs);
			pm_request_resume(otg->phy->dev);
		}
		return IRQ_HANDLED;
	}