diff options
Diffstat (limited to 'arch/arm/mach-imx/mu.c')
-rw-r--r-- | arch/arm/mach-imx/mu.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/arm/mach-imx/mu.c b/arch/arm/mach-imx/mu.c index 4ab7ef2f9d62..18982078c36e 100644 --- a/arch/arm/mach-imx/mu.c +++ b/arch/arm/mach-imx/mu.c @@ -37,6 +37,8 @@ #define MU_LPM_HANDSHAKE_INDEX 0 #define MU_RPMSG_HANDSHAKE_INDEX 1 +#define MU_LPM_M4_LPM_READY 0xFFFF4444 +#define MU_LPM_M4_LPM_SLEEP 0xFFFF5555 #define MU_LPM_BUS_HIGH_READY_FOR_M4 0xFFFF6666 #define MU_LPM_M4_FREQ_CHANGE_READY 0xFFFF7777 #define MU_LPM_M4_REQUEST_HIGH_BUS 0x2222CCCC @@ -70,6 +72,11 @@ void imx_mu_set_m4_run_mode(void) m4_in_stop = false; } +void imx_mu_set_m4_low_freq(void) +{ + m4_freq_low = true; +} + bool imx_mu_is_m4_in_stop(void) { return m4_in_stop; @@ -279,10 +286,13 @@ int imx_mu_lpm_ready(bool ready) writel_relaxed(val & ~BIT(0), mu_base + MX7ULP_MU_CR); } else { val = readl_relaxed(mu_base + MU_ACR); - if (ready) + if (ready) { + imx_mu_send_message(MU_LPM_HANDSHAKE_INDEX, MU_LPM_M4_LPM_READY); writel_relaxed(val | BIT(0), mu_base + MU_ACR); - else + } else { + imx_mu_send_message(MU_LPM_HANDSHAKE_INDEX, MU_LPM_M4_LPM_SLEEP); writel_relaxed(val & ~BIT(0), mu_base + MU_ACR); + } } return 0; } |