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:
Maulik Shah 2023-05-03 12:12:47 +05:30 committed by Giovanni Ricca
parent c8c068b3e0
commit 060a0e6856
No known key found for this signature in database

View File

@ -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: