diff options
author | Anson Huang <Anson.Huang@nxp.com> | 2016-01-29 13:59:20 +0800 |
---|---|---|
committer | Jason Liu <jason.hui.liu@nxp.com> | 2019-02-12 10:31:21 +0800 |
commit | febbdd7d6643ebb03bcf63a53a8e7e58b16416de (patch) | |
tree | d3f16c9247b8b435d04f157f797b00dce4fafa30 /arch/arm/mach-imx | |
parent | 75c84ed63b11ae113d13f3e5ce96c0559da07eea (diff) |
MLK-12349 ARM: imx: skip RBC workaround for standby mode on i.MX7D
For standby mode, RBC workaround is NOT necessary as ARM platform
is NOT powered down;
Correct GIC register offset(0x1000) for disabling distributor.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r-- | arch/arm/mach-imx/cpuidle-imx7d.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/imx7d_low_power_idle.S | 6 | ||||
-rw-r--r-- | arch/arm/mach-imx/suspend-imx7.S | 15 |
3 files changed, 14 insertions, 9 deletions
diff --git a/arch/arm/mach-imx/cpuidle-imx7d.c b/arch/arm/mach-imx/cpuidle-imx7d.c index 8f693729d786..371cfd459eb6 100644 --- a/arch/arm/mach-imx/cpuidle-imx7d.c +++ b/arch/arm/mach-imx/cpuidle-imx7d.c @@ -150,7 +150,7 @@ static struct cpuidle_driver imx7d_cpuidle_driver = { /* LOW POWER IDLE */ { .exit_latency = 500, - .target_residency = 1000, + .target_residency = 800, .flags = CPUIDLE_FLAG_TIMER_STOP, .enter = imx7d_enter_low_power_idle, .name = "LOW-POWER-IDLE", diff --git a/arch/arm/mach-imx/imx7d_low_power_idle.S b/arch/arm/mach-imx/imx7d_low_power_idle.S index 38b6541c39d6..59cf4f4d7150 100644 --- a/arch/arm/mach-imx/imx7d_low_power_idle.S +++ b/arch/arm/mach-imx/imx7d_low_power_idle.S @@ -628,7 +628,8 @@ last_cpu: ldr r10, [r0, #PM_INFO_MX7D_GIC_DIST_V_OFFSET] ldr r7, =0x0 - str r7, [r10] + ldr r8, =0x1000 + str r7, [r10, r8] ldr r10, [r0, #PM_INFO_MX7D_GPC_V_OFFSET] ldr r4, [r10, #MX7D_GPC_IMR1] @@ -745,7 +746,8 @@ do_exit_wfi: ldr r10, [r0, #PM_INFO_MX7D_GIC_DIST_V_OFFSET] ldr r7, =0x1 - str r7, [r10] + ldr r8, =0x1000 + str r7, [r10, r8] /* clear lpi enter flag */ ldr r7, =0x0 str r7, [r0, #PM_INFO_PM_INFO_LPI_ENTER_OFFSET] diff --git a/arch/arm/mach-imx/suspend-imx7.S b/arch/arm/mach-imx/suspend-imx7.S index 7a4ca800ab8a..5f4e31152a69 100644 --- a/arch/arm/mach-imx/suspend-imx7.S +++ b/arch/arm/mach-imx/suspend-imx7.S @@ -579,11 +579,13 @@ wait_shutdown: ddr_only_self_refresh: ddrc_enter_self_refresh + b wfi ddr_retention_enter_out: ldr r11, [r0, #PM_INFO_MX7_GIC_DIST_V_OFFSET] ldr r7, =0x0 - str r7, [r11] + ldr r8, =0x1000 + str r7, [r11, r8] ldr r11, [r0, #PM_INFO_MX7_GPC_V_OFFSET] ldr r4, [r11, #MX7D_GPC_IMR1] @@ -634,7 +636,7 @@ ddr_retention_enter_out: rbc_loop: subs r7, r7, #0x1 bne rbc_loop - +wfi: /* Zzz, enter stop mode */ wfi nop @@ -655,16 +657,17 @@ wfi_ddr_self_refresh_out: ddrc_exit_self_refresh wfi_ddr_retention_out: - ldr r11, [r0, #PM_INFO_MX7_GIC_DIST_V_OFFSET] - ldr r7, =0x1 - str r7, [r11] - /* check whether it is a standby mode */ ldr r11, [r0, #PM_INFO_MX7_GPC_V_OFFSET] ldr r7, [r11, #GPC_PGC_C0] cmp r7, #0 beq standby_out + ldr r11, [r0, #PM_INFO_MX7_GIC_DIST_V_OFFSET] + ldr r7, =0x1 + ldr r8, =0x1000 + str r7, [r11, r8] + restore_ttbr1 standby_out: pop {r4-r12} |