diff options
author | Anson Huang <Anson.Huang@nxp.com> | 2016-01-14 19:13:34 +0800 |
---|---|---|
committer | Jason Liu <jason.hui.liu@nxp.com> | 2019-02-12 10:24:11 +0800 |
commit | ade976f301face39dab478f71ee826efa2fdaa6f (patch) | |
tree | a08c599c7213e897a71aacd4ea4eec7ec0ed6bed /arch/arm/mach-imx/ddr3_freq_imx7d.S | |
parent | 90eaa567809563d39e567663ac14f0606a22507a (diff) |
MLK-12136-3 ARM: imx: adjust ddr frequency scale flow on i.MX7D TO1.1
i.MX7D TO1.1 updates the DDR script, ddr frequency scale flow
should be updated accordingly.
Add runtime revision check to support both TO1.0 and TO1.1.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx/ddr3_freq_imx7d.S')
-rw-r--r-- | arch/arm/mach-imx/ddr3_freq_imx7d.S | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/arch/arm/mach-imx/ddr3_freq_imx7d.S b/arch/arm/mach-imx/ddr3_freq_imx7d.S index ab82047298e7..01ab9b002ddf 100644 --- a/arch/arm/mach-imx/ddr3_freq_imx7d.S +++ b/arch/arm/mach-imx/ddr3_freq_imx7d.S @@ -41,10 +41,13 @@ #define DDRPHY_OFFSETW_CON0 0x30 #define DDRPHY_OFFSETW_CON1 0x34 #define DDRPHY_OFFSETW_CON2 0x38 +#define DDRPHY_CA_WLDSKEW_CON0 0x6c #define DDRPHY_CA_DSKEW_CON0 0x7c #define DDRPHY_CA_DSKEW_CON1 0x80 #define DDRPHY_CA_DSKEW_CON2 0x84 +#define ANADIG_DIGPROG 0x800 + .align 3 .macro switch_to_below_100m @@ -171,11 +174,25 @@ ldr r7, =0x7f str r7, [r5, #DDRPHY_OFFSETW_CON2] + ldr r7, [r9, #ANADIG_DIGPROG] + and r7, r7, #0x11 + cmp r7, #0x10 + beq 20f + ldr r7, =0x0 + str r7, [r5, #DDRPHY_CA_WLDSKEW_CON0] + ldr r7, =0x60606060 str r7, [r5, #DDRPHY_CA_DSKEW_CON0] str r7, [r5, #DDRPHY_CA_DSKEW_CON1] + ldr r7, =0x00006060 str r7, [r5, #DDRPHY_CA_DSKEW_CON2] - + b 21f +20: + ldr r7, =0x0 + str r7, [r5, #DDRPHY_CA_DSKEW_CON0] + str r7, [r5, #DDRPHY_CA_DSKEW_CON1] + str r7, [r5, #DDRPHY_CA_DSKEW_CON2] +21: ldr r7, =0x1100007f str r7, [r5, #DDRPHY_OFFSETD_CON0] ldr r7, =0x1000007f @@ -287,11 +304,25 @@ ldr r7, =0x8 str r7, [r5, #DDRPHY_OFFSETW_CON2] + ldr r7, [r9, #ANADIG_DIGPROG] + and r7, r7, #0x11 + cmp r7, #0x10 + beq 22f + + ldr r7, =0x1d1d1d1d + str r7, [r5, #DDRPHY_CA_WLDSKEW_CON0] + ldr r7, =0x10101010 + str r7, [r5, #DDRPHY_CA_DSKEW_CON0] + str r7, [r5, #DDRPHY_CA_DSKEW_CON1] + ldr r7, =0x1d1d1010 + str r7, [r5, #DDRPHY_CA_DSKEW_CON2] + b 23f +22: ldr r7, =0x0 str r7, [r5, #DDRPHY_CA_DSKEW_CON0] str r7, [r5, #DDRPHY_CA_DSKEW_CON1] str r7, [r5, #DDRPHY_CA_DSKEW_CON2] - +23: ldr r7, =0x11000008 str r7, [r5, #DDRPHY_OFFSETD_CON0] ldr r7, =0x10000008 @@ -393,7 +424,7 @@ .endm ENTRY(imx7d_ddr3_freq_change) - push {r2 - r8} + push {r2 - r9} /* * To ensure no page table walks occur in DDR, we @@ -446,6 +477,7 @@ ENTRY(imx7d_ddr3_freq_change) ldr r3, =IMX_IO_P2V(MX7D_IOMUXC_GPR_BASE_ADDR) ldr r4, =IMX_IO_P2V(MX7D_DDRC_BASE_ADDR) ldr r5, =IMX_IO_P2V(MX7D_DDRC_PHY_BASE_ADDR) + ldr r9, =IMX_IO_P2V(MX7D_ANATOP_BASE_ADDR) ldr r6, =100000000 cmp r0, r6 @@ -526,7 +558,7 @@ done: nop /* Restore registers */ - pop {r2 - r8} + pop {r2 - r9} mov pc, lr .ltorg ENDPROC(imx7d_ddr3_freq_change) |