Changeset 2696
- Timestamp:
- Nov 21, 2011 11:33:47 PM (18 months ago)
- File:
-
- 1 edited
-
cpu/arm/mmp2/dramrecal.fth (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cpu/arm/mmp2/dramrecal.fth
r2674 r2696 59 59 here ddr-recal - constant /ddr-recal 60 60 61 \ create use-auto-mc-wake \ Let the PMU automatically wake the memory controller 62 create use-block \ Block memory controller activity in low-level sleep code 63 create use-self-refresh \ Manually issue self-refresh enter/exit 64 create use-drivers \ Turn memory drivers off during sleep 65 \ create use-phy-dll-reset \ Reset the PHY DLL upon wakeup 66 create use-phy-dll-update \ Update the PHY DLL upon wakeup 67 create use-dram-dll-reset \ Reset the DRAM DLL upon wakeup 68 \ create use-delay2 \ Long delay upon wakeup 69 \ create use-delay3 \ Short delay upon wakeup 70 61 71 label ddr-self-refresh ( r0:memctrl-va -- ) 72 [ifdef] use-gpio 73 mov r4, #0xfe000000 74 orr r4, r4, 0x19000 \ GPIO 3 75 mov r1, 0x8 \ GPIO 3 76 str r1, [r4, #0x18] \ Set 77 [then] 78 79 [ifdef] use-block 62 80 mov r1, #0x1 \ Block all data requests 63 81 str r1, [r0, #0x7e0] \ SDRAM_CTRL14 64 65 [ifdef] notdef2 82 [then] 83 84 [ifdef] use-odt 66 85 ldr r2, [r0, #0x770] \ SDRAM_CTRL7_SDRAM_ODT_CTRL2 67 86 orr r1, r2, #0x03000000 \ PAD_TERM_SWITCH_MODE: Termination disabled … … 69 88 [then] 70 89 90 [ifdef] use-self-refresh 71 91 mov r1, #0x40 \ Enter Self Refresh value 72 92 str r1, [r0, #0x120] \ USER_INITIATED_COMMAND0 73 93 [then] 94 95 [ifdef] use-drivers 74 96 ldr r3, [r0, #0x1e0] \ PHY_CTRL8 75 bic r1, r3, #0x0 7700000 \ PHY_ADCM_ZPDRV: 0 PHY_ADCM_ZNDRV: 0 (Disable drivers 6:0)97 bic r1, r3, #0x0ff00000 \ PHY_ADCM_ZPDRV: f PHY_ADCM_ZNDRV: f (disable drivers) 76 98 str r1, [r0, #0x1e0] \ PHY_CTRL8 99 [then] 77 100 78 101 dsb \ Data Synchronization Barrier 79 102 wfi \ Wait for interrupt 80 103 81 str r3, [r0, #0x1e0] \ PHY_CTRL8 - restore previous value 82 104 [ifdef] use-gpio 105 mov r1, 0x8 \ GPIO 3 106 str r1, [r4, #0x24] \ Clr 107 [then] 108 109 [ifdef] use-drivers 110 str r3, [r0, #0x1e0] \ PHY_CTRL8 - restore previous value (all drivers) 111 [then] 112 113 [ifdef] use-delay1 114 \ Delay to let the memory controller and DRAM DLLs settle 115 mov r1, #0x600 begin decs r1,1 0= until 116 [then] 117 118 [ifdef] use-phy-dll-reset 83 119 mov r1, #0x20000000 \ PHY_DLL_RESET 84 120 str r1, [r0, #0x240] \ PHY_CTRL14 85 121 [then] 122 123 [ifdef] use-phy-dll-update 86 124 mov r1, #0x40000000 \ DLL_UPDATE_EN 87 125 str r1, [r0, #0x240] \ PHY_CTRL14 88 126 [then] 127 128 [ifdef] use-dram-dll-reset 129 ldr r1, [r0, #0x080] \ PHY_CTRL1 130 orr r1, r1, #0x40 \ DLL_RESET 131 str r1, [r0, #0x080] \ PHY_CTRL1 132 mov r1, #0x100 \ USER_LMR0_REQ 133 orr r1, r1, #0x03000000 \ CHIP_SELECT_0 | CHIP_SELECT_1 134 str r1, [r0, #0x120] \ USER_INITIATED_COMMAND0 135 [then] 136 137 [ifdef] use-self-refresh 89 138 mov r1, #0x80 \ Exit Self Refresh value 90 139 str r1, [r0, #0x120] \ USER_INITIATED_COMMAND0 91 92 [ifdef] notdef2 140 [then] 141 142 [ifdef] use-odt 93 143 str r2, [r0, #0x770] \ SDRAM_CTRL7_SDRAM_ODT_CTRL2 - restore previous value 94 144 [then] 95 145 96 [ifdef] notdef146 [ifdef] use-zqcal 97 147 mov r1, #0x01000000 \ Chip select 0 98 148 orr r1, r1, #0x00001000 \ Initiate ZQ calibration long … … 108 158 [then] 109 159 110 \ Delay to let the memory controller and DRAM DLLs settle 111 mov r1, #0x0300 begin decs r1,1 0= until 112 160 [ifdef] use-gpio 161 mov r1, 0x8 \ GPIO 3 162 str r1, [r4, #0x18] \ Set 163 [then] 164 165 [ifdef] use-delay2 166 \ Delay to ensure that at least 512 DRAM NOP's happen before the first access 167 mov r1, #0x600 begin decs r1,1 0= until 168 [then] 169 170 [ifdef] use-delay3 171 \ Delay to ensure that at least 512 DRAM NOP's happen before the first access 172 mov r1, #0x20 begin decs r1,1 0= until 173 [then] 174 175 [ifdef] use-gpio 176 mov r1, 0x8 \ GPIO 3 177 str r1, [r4, #0x24] \ Clr 178 [then] 179 180 [ifdef] use-block 113 181 mov r1, #0x0 \ Unblock data requests 114 182 str r1, [r0, #0x7e0] \ SDRAM_CTRL14 183 [then] 115 184 116 185 mov pc, lr … … 663 732 664 733 h# 0020.0000 or ( apcr idle' ) \ PJ_DIS_MC_SW_REQ - disable idle entry using software register bits 734 [ifdef] use-auto-mc-wake 665 735 h# 0010.0000 or ( apcr idle' ) \ PJ_MC_WAKE_EN - wake memory controller when core wakes 736 [then] 666 737 667 738 0 h# b0 pmua! ( apcr idle ) \ PMUA_MC_HW_SLP_TYPE - self-refresh power down … … 737 808 738 809 : str ( -- ) 810 [ifdef] use-gpio 811 3 gpio-dir-out 812 [then] 813 739 814 disable-interrupts 740 815 suspend-usb
Note: See TracChangeset
for help on using the changeset viewer.
