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

Commit 715e1e4d authored by Naveen Kaje's avatar Naveen Kaje Committed by Gerrit - the friendly Code Review server
Browse files

msm_serial_hs: handle UART IRQ during PM operations for OBS



In OBS, enable/disable UART IRQ during power management operations
to allow the device to enter low power modes.

Change-Id: I8479d6bc867c4ecb34adf83cd62b01f6fb60fef8
Signed-off-by: default avatarNaveen Kaje <nkaje@codeaurora.org>
parent aa3aa09a
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -3041,6 +3041,18 @@ static int device_id_set_used(int index)
	return ret;
}

static void obs_manage_irq(struct msm_hs_port *msm_uport, bool en)
{
	struct uart_port *uport = &(msm_uport->uport);

	if (msm_uport->obs) {
		if (en)
			enable_irq(uport->irq);
		else
			disable_irq(uport->irq);
	}
}

static void msm_hs_pm_suspend(struct device *dev)
{
	struct platform_device *pdev = to_platform_device(dev);
@@ -3061,6 +3073,7 @@ static void msm_hs_pm_suspend(struct device *dev)

	msm_uport->pm_state = MSM_HS_PM_SUSPENDED;
	msm_hs_resource_off(msm_uport);
	obs_manage_irq(msm_uport, false);
	msm_hs_clk_bus_unvote(msm_uport);
	if (!atomic_read(&msm_uport->client_req_state))
		toggle_wakeup_interrupt(msm_uport);
@@ -3086,6 +3099,7 @@ static int msm_hs_pm_resume(struct device *dev)
		toggle_wakeup_interrupt(msm_uport);
	msm_hs_clk_bus_vote(msm_uport);
	__pm_stay_awake(&msm_uport->ws);
	obs_manage_irq(msm_uport, true);
	msm_uport->pm_state = MSM_HS_PM_ACTIVE;
	msm_hs_resource_on(msm_uport);