From 10d1ba23b04e12c91e23fba3aeaa0d033d2df1e4 Mon Sep 17 00:00:00 2001 From: Maulik Shah Date: Wed, 3 May 2023 12:12:47 +0530 Subject: [PATCH] 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 --- drivers/irqchip/qcom-mpm.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/irqchip/qcom-mpm.c b/drivers/irqchip/qcom-mpm.c index 76c5d332e527..53afae539ee2 100644 --- a/drivers/irqchip/qcom-mpm.c +++ b/drivers/irqchip/qcom-mpm.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -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: