diff options
author | Anson Huang <Anson.Huang@nxp.com> | 2018-06-14 14:41:23 +0800 |
---|---|---|
committer | Jason Liu <jason.hui.liu@nxp.com> | 2019-02-12 10:32:19 +0800 |
commit | 440fdc2869f7637e64fad3cdbf4d9db5d479f586 (patch) | |
tree | 455e18f0d4b9f35163f7259bc6a237f838356554 /drivers/soc/imx | |
parent | 7e5abc21dda7a82900b6337360361ae0226b1876 (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/imx')
-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; } |