RE: [PATCH 1/2] firmware: imx: make sure MU irq can wake up system from suspend mode
From: Aisheng Dong
Date: Thu Apr 23 2020 - 22:38:10 EST
> From: Anson Huang <Anson.Huang@xxxxxxx>
> 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@xxxxxxx>
Reviewed-by: Dong Aisheng <aisheng.dong@xxxxxxx>
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