diff options
| author | Naveen Kaje <nkaje@codeaurora.org> | 2015-09-04 16:04:21 -0600 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:11:42 -0700 |
| commit | faa98506d0e1ec950efc5f38f8758fee95820b7e (patch) | |
| tree | e2452c63a7a8ffb342184ac33bc98771c8554556 | |
| parent | 849559ffdc3be07810e32842dc3ef353d31fd098 (diff) | |
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: Naveen Kaje <nkaje@codeaurora.org>
| -rw-r--r-- | drivers/tty/serial/msm_serial_hs.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/tty/serial/msm_serial_hs.c b/drivers/tty/serial/msm_serial_hs.c index cd2a31684637..d885592e8137 100644 --- a/drivers/tty/serial/msm_serial_hs.c +++ b/drivers/tty/serial/msm_serial_hs.c @@ -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); |
