diff options
author | Zhou Jingyu <b02241@freescale.com> | 2011-03-30 10:04:52 +0800 |
---|---|---|
committer | Zhou Jingyu <b02241@freescale.com> | 2011-03-30 11:09:45 +0800 |
commit | 69077131aaffe1ec60fdc942e024fc047a30e4a1 (patch) | |
tree | 761220e454648067b8394f0227dfae1d30864d7d | |
parent | f004a3bace4aea0801c1f6fbea8c170d408cc09c (diff) |
ENGR00141343 Mx53: reduce vdd_reg power on suspend
CLear DSE[2] bit to 0 for DDR pads before WFI to reduce ddr pre-driver power
Restore the settings after WFI to enable DDR access
This patch reduce VDD_REG current from 5mA to about 0.5mA
Signed-off-by: Zhou Jingyu <Jingyu.Zhou@freescale.com>
-rw-r--r-- | arch/arm/mach-mx5/suspend.S | 76 |
1 files changed, 71 insertions, 5 deletions
diff --git a/arch/arm/mach-mx5/suspend.S b/arch/arm/mach-mx5/suspend.S index 340220c21af0..6a227258d67c 100644 --- a/arch/arm/mach-mx5/suspend.S +++ b/arch/arm/mach-mx5/suspend.S @@ -18,7 +18,7 @@ #define ARM_CTRL_ICACHE 1 << 12 #define ARM_AUXCR_L2EN 1 << 1 -.macro PM_SET_AND_BACKUP_REG, addr, bitmask, val, num +.macro PM_SET_BACKUP_REG, addr, bitmask, val, num mov r0, #(\addr & 0x000000FF) orr r0, r0, #(\addr & 0x0000FF00) orr r0, r0, #(\addr & 0x00FF0000) @@ -42,6 +42,30 @@ #define MX51_DRAM_SDCLK_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA84B8) #define MX53_DRAM_SDCLK0_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8578) #define MX53_DRAM_SDCLK1_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8570) +#define MX53_DRAM_DQM3_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8554) +#define MX53_DRAM_SDQS3_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8558) +#define MX53_DRAM_SDCKE1_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA855C) +#define MX53_DRAM_DQM2_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8560) +#define MX53_DRAM_DODT1_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8564) +#define MX53_DRAM_SDQS2_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8568) +#define MX53_DRAM_RESET_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA856c) +#define MX53_DRAM_CAS_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8574) +#define MX53_DRAM_SDQS0_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA857C) +#define MX53_DRAM_DODT0_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8580) +#define MX53_DRAM_DQM0_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8584) +#define MX53_DRAM_RAS_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8588) +#define MX53_DRAM_SDQS1_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8590) +#define MX53_DRAM_DQM1_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8594) + +#define MX53_DRAM_GRP_ADDDS_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA86f0) +#define MX53_DRAM_GRP_B0DS_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8718) +#define MX53_DRAM_GRP_B1DS_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA871C) +#define MX53_DRAM_GRP_CTLDS_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8720) +#define MX53_DRAM_GRP_B2DS_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA8728) +#define MX53_DRAM_GRP_B3DS_PAD_CTRL_ADDR AIPS1_IO_ADDRESS(0x73FA872C) + + + /* * cpu_do_suspend_workaround() @@ -107,12 +131,33 @@ FinishedClean: /*Set the DDR drive strength to low */ cmp r6, #1 bne mx53_reduce_ddr_drive_strength - PM_SET_AND_BACKUP_REG MX51_DRAM_SDCLK_PAD_CTRL_ADDR, 0x6, 0, 0 + PM_SET_BACKUP_REG MX51_DRAM_SDCLK_PAD_CTRL_ADDR, 0x6, 0, 0 mx53_reduce_ddr_drive_strength: cmp r6, #3 bne mx5x_wfi - PM_SET_AND_BACKUP_REG MX53_DRAM_SDCLK0_PAD_CTRL_ADDR, 0x380000, 0x80000, 0 - PM_SET_AND_BACKUP_REG MX53_DRAM_SDCLK1_PAD_CTRL_ADDR, 0x380000, 0x80000, 1 + PM_SET_BACKUP_REG MX53_DRAM_SDCLK0_PAD_CTRL_ADDR, 0x380000, 0x180000, 0 + PM_SET_BACKUP_REG MX53_DRAM_SDCLK1_PAD_CTRL_ADDR, 0x380000, 0x180000, 1 + PM_SET_BACKUP_REG MX53_DRAM_DQM3_PAD_CTRL_ADDR , 0x380000, 0x180000, 2 + PM_SET_BACKUP_REG MX53_DRAM_SDQS3_PAD_CTRL_ADDR, 0x380000, 0x180000, 3 + PM_SET_BACKUP_REG MX53_DRAM_SDCKE1_PAD_CTRL_ADDR, 0x380000, 0x180000, 4 + PM_SET_BACKUP_REG MX53_DRAM_DQM2_PAD_CTRL_ADDR , 0x380000, 0x180000, 5 + PM_SET_BACKUP_REG MX53_DRAM_DODT1_PAD_CTRL_ADDR, 0x380000, 0x180000, 6 + PM_SET_BACKUP_REG MX53_DRAM_SDQS2_PAD_CTRL_ADDR, 0x380000, 0x180000, 7 + PM_SET_BACKUP_REG MX53_DRAM_RESET_PAD_CTRL_ADDR, 0x380000, 0x180000, 8 + PM_SET_BACKUP_REG MX53_DRAM_CAS_PAD_CTRL_ADDR , 0x380000, 0x180000, 9 + PM_SET_BACKUP_REG MX53_DRAM_SDQS0_PAD_CTRL_ADDR, 0x380000, 0x180000, 10 + PM_SET_BACKUP_REG MX53_DRAM_DODT0_PAD_CTRL_ADDR, 0x380000, 0x180000, 11 + PM_SET_BACKUP_REG MX53_DRAM_DQM0_PAD_CTRL_ADDR , 0x380000, 0x180000, 12 + PM_SET_BACKUP_REG MX53_DRAM_RAS_PAD_CTRL_ADDR , 0x380000, 0x180000, 13 + PM_SET_BACKUP_REG MX53_DRAM_SDQS1_PAD_CTRL_ADDR, 0x380000, 0x180000, 14 + PM_SET_BACKUP_REG MX53_DRAM_DQM1_PAD_CTRL_ADDR , 0x380000, 0x180000, 15 + + PM_SET_BACKUP_REG MX53_DRAM_GRP_ADDDS_PAD_CTRL_ADDR, 0x380000, 0x180000, 16 + PM_SET_BACKUP_REG MX53_DRAM_GRP_B0DS_PAD_CTRL_ADDR, 0x380000, 0x180000, 17 + PM_SET_BACKUP_REG MX53_DRAM_GRP_B1DS_PAD_CTRL_ADDR, 0x380000, 0x180000, 18 + PM_SET_BACKUP_REG MX53_DRAM_GRP_CTLDS_PAD_CTRL_ADDR, 0x380000, 0x180000, 19 + PM_SET_BACKUP_REG MX53_DRAM_GRP_B2DS_PAD_CTRL_ADDR, 0x380000, 0x180000, 20 + PM_SET_BACKUP_REG MX53_DRAM_GRP_B3DS_PAD_CTRL_ADDR, 0x380000, 0x180000, 21 mx5x_wfi: .long 0xe320f003 @ Opcode for WFI @@ -126,6 +171,27 @@ mx53_restore_ddr_drive_strength: bne mx5x_post_wfi PM_SET_RESTORE_REG MX53_DRAM_SDCLK0_PAD_CTRL_ADDR, 0 PM_SET_RESTORE_REG MX53_DRAM_SDCLK1_PAD_CTRL_ADDR, 1 + PM_SET_RESTORE_REG MX53_DRAM_DQM3_PAD_CTRL_ADDR , 2 + PM_SET_RESTORE_REG MX53_DRAM_SDQS3_PAD_CTRL_ADDR, 3 + PM_SET_RESTORE_REG MX53_DRAM_SDCKE1_PAD_CTRL_ADDR, 4 + PM_SET_RESTORE_REG MX53_DRAM_DQM2_PAD_CTRL_ADDR , 5 + PM_SET_RESTORE_REG MX53_DRAM_DODT1_PAD_CTRL_ADDR, 6 + PM_SET_RESTORE_REG MX53_DRAM_SDQS2_PAD_CTRL_ADDR, 7 + PM_SET_RESTORE_REG MX53_DRAM_RESET_PAD_CTRL_ADDR, 8 + PM_SET_RESTORE_REG MX53_DRAM_CAS_PAD_CTRL_ADDR , 9 + PM_SET_RESTORE_REG MX53_DRAM_SDQS0_PAD_CTRL_ADDR, 10 + PM_SET_RESTORE_REG MX53_DRAM_DODT0_PAD_CTRL_ADDR, 11 + PM_SET_RESTORE_REG MX53_DRAM_DQM0_PAD_CTRL_ADDR , 12 + PM_SET_RESTORE_REG MX53_DRAM_RAS_PAD_CTRL_ADDR , 13 + PM_SET_RESTORE_REG MX53_DRAM_SDQS1_PAD_CTRL_ADDR, 14 + PM_SET_RESTORE_REG MX53_DRAM_DQM1_PAD_CTRL_ADDR , 15 + + PM_SET_RESTORE_REG MX53_DRAM_GRP_ADDDS_PAD_CTRL_ADDR ,16 + PM_SET_RESTORE_REG MX53_DRAM_GRP_B0DS_PAD_CTRL_ADDR ,17 + PM_SET_RESTORE_REG MX53_DRAM_GRP_B1DS_PAD_CTRL_ADDR ,18 + PM_SET_RESTORE_REG MX53_DRAM_GRP_CTLDS_PAD_CTRL_ADDR ,19 + PM_SET_RESTORE_REG MX53_DRAM_GRP_B2DS_PAD_CTRL_ADDR ,20 + PM_SET_RESTORE_REG MX53_DRAM_GRP_B3DS_PAD_CTRL_ADDR ,21 mx5x_post_wfi: mov r0, #0 @@ -186,7 +252,7 @@ FinishedInvalidate: ldmfd sp!, {r4,r5,r6,r7,r9,r10,r11} mov pc, lr __mx5x_temp_stack: - .space 32 + .space 128 .type cpu_do_suspend, #object ENTRY(cpu_do_suspend) |