irqchip: qcom-mpm: Do not break s2idle suspend
Do not mark MPM as wake irq. Break s2idle suspend when MPM irq is pending. Change-Id: Ia455c589fdadcaa3be6084a68990887a2d4c3517 Signed-off-by: Maulik Shah <quic_mkshah@quicinc.com>
This commit is contained in:
parent
c8c068b3e0
commit
060a0e6856
@ -20,6 +20,7 @@
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/platform_device.h>
|
||||
@ -472,6 +473,9 @@ static irqreturn_t msm_mpm_irq(int irq, void *dev_id)
|
||||
pending = msm_mpm_read(MPM_REG_STATUS, i);
|
||||
pending &= (unsigned long)value[i];
|
||||
|
||||
if (pending)
|
||||
pm_system_wakeup();
|
||||
|
||||
trace_mpm_wakeup_pending_irqs(i, pending);
|
||||
for_each_set_bit(k, &pending, 32) {
|
||||
mpm_irq = 32 * i + k;
|
||||
@ -529,22 +533,15 @@ static int msm_mpm_init(struct device_node *node)
|
||||
}
|
||||
dev->ipc_irq = irq;
|
||||
|
||||
ret = request_irq(dev->ipc_irq, msm_mpm_irq, IRQF_TRIGGER_RISING, "mpm", msm_mpm_irq);
|
||||
ret = request_irq(dev->ipc_irq, msm_mpm_irq,
|
||||
IRQF_TRIGGER_RISING | IRQF_NO_SUSPEND, "mpm",
|
||||
msm_mpm_irq);
|
||||
if (ret) {
|
||||
pr_err("request_irq failed errno: %d\n", ret);
|
||||
goto ipc_irq_err;
|
||||
}
|
||||
|
||||
ret = irq_set_irq_wake(dev->ipc_irq, 1);
|
||||
if (ret) {
|
||||
pr_err("failed to set wakeup irq %lu: %d\n",
|
||||
dev->ipc_irq, ret);
|
||||
goto set_wake_irq_err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
set_wake_irq_err:
|
||||
free_irq(dev->ipc_irq, msm_mpm_irq);
|
||||
ipc_irq_err:
|
||||
iounmap(dev->mpm_ipc_reg);
|
||||
ipc_reg_err:
|
||||
|
Loading…
Reference in New Issue
Block a user