diff options
author | Anson Huang <Anson.Huang@nxp.com> | 2018-06-14 14:41:23 +0800 |
---|---|---|
committer | Leonard Crestez <leonard.crestez@nxp.com> | 2018-08-24 12:41:33 +0300 |
commit | 9a023aa5e17e83a2c58e3f0cbe6953a4696f633c (patch) | |
tree | 12db5d8bf665f5f661f74a39ef458b6de391c57c /drivers/soc | |
parent | 716bd428a2fbd64885351147e37254a7bc535a97 (diff) |
MLK-18611-1 soc: imx: support MU off in suspend
Add MU restore function to support MU power off
in system suspend mode, need to re-initialize
MU after resume, since MU might lose power when
suspend.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Bai Ping <ping.bai@nxp.com>
Diffstat (limited to 'drivers/soc')
-rw-r--r-- | drivers/soc/imx/sc/main/ipc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/soc/imx/sc/main/ipc.c b/drivers/soc/imx/sc/main/ipc.c index 05ae70202e78..924f7a6c0d25 100644 --- a/drivers/soc/imx/sc/main/ipc.c +++ b/drivers/soc/imx/sc/main/ipc.c @@ -16,6 +16,7 @@ #include <linux/interrupt.h> #include <linux/irq.h> #include <linux/mx8_mu.h> +#include <linux/syscore_ops.h> #include <soc/imx8/sc/svc/irq/api.h> #include <soc/imx8/sc/ipc.h> @@ -283,6 +284,19 @@ static irqreturn_t imx8_scu_mu_isr(int irq, void *param) return IRQ_HANDLED; } +static void imx8_mu_resume(void) +{ + int i; + + MU_Init(mu_base_virtaddr); + for (i = 0; i < MU_RR_COUNT; i++) + MU_EnableGeneralInt(mu_base_virtaddr, i); +} + +struct syscore_ops imx8_mu_syscore_ops = { + .resume = imx8_mu_resume, +}; + /*Initialization of the MU code. */ int __init imx8_mu_init(void) { @@ -383,6 +397,8 @@ int __init imx8_mu_init(void) if (sciErr) pr_info("Cannot request WDOG interrupt\n"); + register_syscore_ops(&imx8_mu_syscore_ops); + pr_info("*****Initialized MU\n"); return scu_mu_id; } |