Message ID | 1587683231-18468-1-git-send-email-Anson.Huang@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2] firmware: imx: make sure MU irq can wake up system from suspend mode | expand |
> From: Anson Huang <Anson.Huang@nxp.com> > Sent: Friday, April 24, 2020 7:07 AM > > IRQF_NO_SUSPEND flag is set for MU IRQ of IPC work, but with this flag set, > IRQD_WAKEUP_ARMED flag will NOT be set during > suspend_device_irq() phase, then when MU IRQ arrives, it will NOT wake up > system from suspend. > > To fix this issue, pm_system_wakeup() is called in general MU IRQ handler to > make sure system can be waked up when MU IRQ arrives. > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com> Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com> Regards Aisheng > --- > drivers/firmware/imx/imx-scu-irq.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/firmware/imx/imx-scu-irq.c > b/drivers/firmware/imx/imx-scu-irq.c > index db655e8..d9dcc20 100644 > --- a/drivers/firmware/imx/imx-scu-irq.c > +++ b/drivers/firmware/imx/imx-scu-irq.c > @@ -10,6 +10,7 @@ > #include <linux/firmware/imx/ipc.h> > #include <linux/firmware/imx/sci.h> > #include <linux/mailbox_client.h> > +#include <linux/suspend.h> > > #define IMX_SC_IRQ_FUNC_ENABLE 1 > #define IMX_SC_IRQ_FUNC_STATUS 2 > @@ -91,6 +92,7 @@ static void imx_scu_irq_work_handler(struct work_struct > *work) > if (!irq_status) > continue; > > + pm_system_wakeup(); > imx_scu_irq_notifier_call_chain(irq_status, &i); > } > } > -- > 2.7.4
Gentle ping... > Subject: [PATCH 1/2] firmware: imx: make sure MU irq can wake up system > from suspend mode > > IRQF_NO_SUSPEND flag is set for MU IRQ of IPC work, but with this flag set, > IRQD_WAKEUP_ARMED flag will NOT be set during > suspend_device_irq() phase, then when MU IRQ arrives, it will NOT wake up > system from suspend. > > To fix this issue, pm_system_wakeup() is called in general MU IRQ handler to > make sure system can be waked up when MU IRQ arrives. > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com> > --- > drivers/firmware/imx/imx-scu-irq.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/firmware/imx/imx-scu-irq.c > b/drivers/firmware/imx/imx-scu-irq.c > index db655e8..d9dcc20 100644 > --- a/drivers/firmware/imx/imx-scu-irq.c > +++ b/drivers/firmware/imx/imx-scu-irq.c > @@ -10,6 +10,7 @@ > #include <linux/firmware/imx/ipc.h> > #include <linux/firmware/imx/sci.h> > #include <linux/mailbox_client.h> > +#include <linux/suspend.h> > > #define IMX_SC_IRQ_FUNC_ENABLE 1 > #define IMX_SC_IRQ_FUNC_STATUS 2 > @@ -91,6 +92,7 @@ static void imx_scu_irq_work_handler(struct work_struct > *work) > if (!irq_status) > continue; > > + pm_system_wakeup(); > imx_scu_irq_notifier_call_chain(irq_status, &i); > } > } > -- > 2.7.4
On Fri, Apr 24, 2020 at 07:07:10AM +0800, Anson Huang wrote: > IRQF_NO_SUSPEND flag is set for MU IRQ of IPC work, but with this > flag set, IRQD_WAKEUP_ARMED flag will NOT be set during > suspend_device_irq() phase, then when MU IRQ arrives, it will NOT > wake up system from suspend. > > To fix this issue, pm_system_wakeup() is called in general MU IRQ > handler to make sure system can be waked up when MU IRQ arrives. > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com> I see you guys haven't got agreement on patch #2, so applied #1 only. Shawn
diff --git a/drivers/firmware/imx/imx-scu-irq.c b/drivers/firmware/imx/imx-scu-irq.c index db655e8..d9dcc20 100644 --- a/drivers/firmware/imx/imx-scu-irq.c +++ b/drivers/firmware/imx/imx-scu-irq.c @@ -10,6 +10,7 @@ #include <linux/firmware/imx/ipc.h> #include <linux/firmware/imx/sci.h> #include <linux/mailbox_client.h> +#include <linux/suspend.h> #define IMX_SC_IRQ_FUNC_ENABLE 1 #define IMX_SC_IRQ_FUNC_STATUS 2 @@ -91,6 +92,7 @@ static void imx_scu_irq_work_handler(struct work_struct *work) if (!irq_status) continue; + pm_system_wakeup(); imx_scu_irq_notifier_call_chain(irq_status, &i); } }
IRQF_NO_SUSPEND flag is set for MU IRQ of IPC work, but with this flag set, IRQD_WAKEUP_ARMED flag will NOT be set during suspend_device_irq() phase, then when MU IRQ arrives, it will NOT wake up system from suspend. To fix this issue, pm_system_wakeup() is called in general MU IRQ handler to make sure system can be waked up when MU IRQ arrives. Signed-off-by: Anson Huang <Anson.Huang@nxp.com> --- drivers/firmware/imx/imx-scu-irq.c | 2 ++ 1 file changed, 2 insertions(+)