Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: OMAP: SRAM: Split sram24xx.S into sram242x.S and sram243x.S

Split sram24xx.S into sram242x.S and sram243x.S

Signed-off-by: Tony Lindgren <tony@atomide.com>

+603 -103
+3 -3
arch/arm/mach-omap1/sram.S
··· 18 18 /* 19 19 * Reprograms ULPD and CKCTL. 20 20 */ 21 - ENTRY(sram_reprogram_clock) 21 + ENTRY(omap1_sram_reprogram_clock) 22 22 stmfd sp!, {r0 - r12, lr} @ save registers on stack 23 23 24 24 mov r2, #IO_ADDRESS(DPLL_CTL) & 0xff000000 ··· 53 53 54 54 out: 55 55 ldmfd sp!, {r0 - r12, pc} @ restore regs and return 56 - ENTRY(sram_reprogram_clock_sz) 57 - .word . - sram_reprogram_clock 56 + ENTRY(omap1_sram_reprogram_clock_sz) 57 + .word . - omap1_sram_reprogram_clock
+5 -1
arch/arm/mach-omap2/Makefile
··· 3 3 # 4 4 5 5 # Common support 6 - obj-y := irq.o id.o io.o sram242x.o memory.o control.o prcm.o clock.o mux.o \ 6 + obj-y := irq.o id.o io.o memory.o control.o prcm.o clock.o mux.o \ 7 7 devices.o serial.o gpmc.o timer-gp.o 8 + 9 + # Functions loaded to SRAM 10 + obj-$(CONFIG_ARCH_OMAP2420) += sram242x.o 11 + obj-$(CONFIG_ARCH_OMAP2430) += sram243x.o 8 12 9 13 # Power Management 10 14 obj-$(CONFIG_PM) += pm.o sleep.o
+2 -1
arch/arm/mach-omap2/clock.c
··· 603 603 clk->rate = clk->parent->rate / new_div; 604 604 605 605 if (clk->flags & DELAYED_APP && cpu_is_omap24xx()) { 606 - __raw_writel(OMAP24XX_VALID_CONFIG, OMAP24XX_PRCM_CLKCFG_CTRL); 606 + prm_write_mod_reg(OMAP24XX_VALID_CONFIG, 607 + OMAP24XX_GR_MOD, OMAP24XX_PRCM_CLKCFG_CTRL_OFFSET); 607 608 wmb(); 608 609 } 609 610
+1
arch/arm/mach-omap2/prcm-common.h
··· 32 32 33 33 34 34 /* Chip-specific module offsets */ 35 + #define OMAP24XX_GR_MOD OCP_MOD 35 36 #define OMAP24XX_DSP_MOD 0x800 36 37 37 38 #define OMAP2430_MDM_MOD 0xc00
+17 -1
arch/arm/mach-omap2/prm.h
··· 38 38 * 39 39 */ 40 40 41 + /* Global 24xx registers in GR_MOD (Same as OCP_MOD for 24xx) */ 42 + #define OMAP24XX_PRCM_VOLTCTRL_OFFSET 0x0050 43 + #define OMAP24XX_PRCM_CLKCFG_CTRL_OFFSET 0x0080 44 + 45 + /* 242x GR_MOD registers, use these only for assembly code */ 46 + #define OMAP242X_PRCM_VOLTCTRL OMAP2420_PRM_REGADDR(OMAP24XX_GR_MOD, \ 47 + OMAP24XX_PRCM_VOLTCTRL_OFFSET) 48 + #define OMAP242X_PRCM_CLKCFG_CTRL OMAP2420_PRM_REGADDR(OMAP24XX_GR_MOD, \ 49 + OMAP24XX_PRCM_CLKCFG_CTRL_OFFSET) 50 + 51 + /* 243x GR_MOD registers, use these only for assembly code */ 52 + #define OMAP243X_PRCM_VOLTCTRL OMAP2430_PRM_REGADDR(OMAP24XX_GR_MOD, \ 53 + OMAP24XX_PRCM_VOLTCTRL_OFFSET) 54 + #define OMAP243X_PRCM_CLKCFG_CTRL OMAP2430_PRM_REGADDR(OMAP24XX_GR_MOD, \ 55 + OMAP24XX_PRCM_CLKCFG_CTRL_OFFSET) 56 + 57 + /* These will disappear */ 41 58 #define OMAP24XX_PRCM_REVISION OMAP_PRM_REGADDR(OCP_MOD, 0x0000) 42 59 #define OMAP24XX_PRCM_SYSCONFIG OMAP_PRM_REGADDR(OCP_MOD, 0x0010) 43 60 44 61 #define OMAP24XX_PRCM_IRQSTATUS_MPU OMAP_PRM_REGADDR(OCP_MOD, 0x0018) 45 62 #define OMAP24XX_PRCM_IRQENABLE_MPU OMAP_PRM_REGADDR(OCP_MOD, 0x001c) 46 63 47 - #define OMAP24XX_PRCM_VOLTCTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0050) 48 64 #define OMAP24XX_PRCM_VOLTST OMAP_PRM_REGADDR(OCP_MOD, 0x0054) 49 65 #define OMAP24XX_PRCM_CLKSRC_CTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0060) 50 66 #define OMAP24XX_PRCM_CLKOUT_CTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0070)
+51 -54
arch/arm/mach-omap2/sram242x.S
··· 1 1 /* 2 - * linux/arch/arm/mach-omap2/sram-fn.S 2 + * linux/arch/arm/mach-omap2/sram242x.S 3 3 * 4 4 * Omap2 specific functions that need to be run in internal SRAM 5 5 * ··· 27 27 #include <asm/arch/io.h> 28 28 #include <asm/hardware.h> 29 29 30 - #include "sdrc.h" 31 30 #include "prm.h" 32 31 #include "cm.h" 33 - 34 - #define TIMER_32KSYNCT_CR_V IO_ADDRESS(OMAP2420_32KSYNCT_BASE + 0x010) 32 + #include "sdrc.h" 35 33 36 34 .text 37 35 38 - ENTRY(sram_ddr_init) 36 + ENTRY(omap242x_sram_ddr_init) 39 37 stmfd sp!, {r0 - r12, lr} @ save registers on stack 40 38 41 39 mov r12, r2 @ capture CS1 vs CS0 42 40 mov r8, r3 @ capture force parameter 43 41 44 42 /* frequency shift down */ 45 - ldr r2, cm_clksel2_pll @ get address of dpllout reg 43 + ldr r2, omap242x_sdi_cm_clksel2_pll @ get address of dpllout reg 46 44 mov r3, #0x1 @ value for 1x operation 47 45 str r3, [r2] @ go to L1-freq operation 48 46 ··· 49 51 bl voltage_shift @ go drop voltage 50 52 51 53 /* dll lock mode */ 52 - ldr r11, sdrc_dlla_ctrl @ addr of dlla ctrl 54 + ldr r11, omap242x_sdi_sdrc_dlla_ctrl @ addr of dlla ctrl 53 55 ldr r10, [r11] @ get current val 54 56 cmp r12, #0x1 @ cs1 base (2422 es2.05/1) 55 57 addeq r11, r11, #0x8 @ if cs1 base, move to DLLB ··· 100 102 * wait for it to finish, use 32k sync counter, 1tick=31uS. 101 103 */ 102 104 voltage_shift: 103 - ldr r4, prcm_voltctrl @ get addr of volt ctrl. 105 + ldr r4, omap242x_sdi_prcm_voltctrl @ get addr of volt ctrl. 104 106 ldr r5, [r4] @ get value. 105 107 ldr r6, prcm_mask_val @ get value of mask 106 108 and r5, r5, r6 @ apply mask to clear bits ··· 110 112 orr r5, r5, r3 @ build value for force 111 113 str r5, [r4] @ Force transition to L1 112 114 113 - ldr r3, timer_32ksynct_cr @ get addr of counter 115 + ldr r3, omap242x_sdi_timer_32ksynct_cr @ get addr of counter 114 116 ldr r5, [r3] @ get value 115 117 add r5, r5, #0x3 @ give it at most 93uS 116 118 volt_delay: ··· 119 121 bhi volt_delay @ not yet->branch 120 122 mov pc, lr @ back to caller. 121 123 122 - /* relative load constants */ 123 - cm_clksel2_pll: 124 + omap242x_sdi_cm_clksel2_pll: 124 125 .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2) 125 - sdrc_dlla_ctrl: 126 + omap242x_sdi_sdrc_dlla_ctrl: 126 127 .word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL) 127 - prcm_voltctrl: 128 - .word OMAP2420_PRM_REGADDR(OCP_MOD, 0x50) 128 + omap242x_sdi_prcm_voltctrl: 129 + .word OMAP242X_PRCM_VOLTCTRL 129 130 prcm_mask_val: 130 131 .word 0xFFFF3FFC 131 - timer_32ksynct_cr: 132 - .word TIMER_32KSYNCT_CR_V 133 - ENTRY(sram_ddr_init_sz) 134 - .word . - sram_ddr_init 132 + omap242x_sdi_timer_32ksynct_cr: 133 + .word IO_ADDRESS(OMAP2_32KSYNCT_BASE + 0x010) 134 + ENTRY(omap242x_sram_ddr_init_sz) 135 + .word . - omap242x_sram_ddr_init 135 136 136 137 /* 137 138 * Reprograms memory timings. 138 139 * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR] 139 140 * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0 140 141 */ 141 - ENTRY(sram_reprogram_sdrc) 142 + ENTRY(omap242x_sram_reprogram_sdrc) 142 143 stmfd sp!, {r0 - r10, lr} @ save registers on stack 143 144 mov r3, #0x0 @ clear for mrc call 144 145 mcr p15, 0, r3, c7, c10, 4 @ memory barrier, finish ARM SDR/DDR 145 146 nop 146 147 nop 147 - ldr r6, ddr_sdrc_rfr_ctrl @ get addr of refresh reg 148 + ldr r6, omap242x_srs_sdrc_rfr_ctrl @ get addr of refresh reg 148 149 ldr r5, [r6] @ get value 149 150 mov r5, r5, lsr #8 @ isolate rfr field and drop burst 150 151 ··· 157 160 movne r5, r5, lsl #1 @ mult by 2 if to full 158 161 mov r5, r5, lsl #8 @ put rfr field back into place 159 162 add r5, r5, #0x1 @ turn on burst of 1 160 - ldr r4, ddr_cm_clksel2_pll @ get address of out reg 163 + ldr r4, omap242x_srs_cm_clksel2_pll @ get address of out reg 161 164 ldr r3, [r4] @ get curr value 162 165 orr r3, r3, #0x3 163 166 bic r3, r3, #0x3 @ clear lower bits ··· 178 181 bne freq_out @ leave if SDR, no DLL function 179 182 180 183 /* With DDR, we need to take care of the DLL for the frequency change */ 181 - ldr r2, ddr_sdrc_dlla_ctrl @ addr of dlla ctrl 184 + ldr r2, omap242x_srs_sdrc_dlla_ctrl @ addr of dlla ctrl 182 185 str r1, [r2] @ write out new SDRC_DLLA_CTRL 183 186 add r2, r2, #0x8 @ addr to SDRC_DLLB_CTRL 184 187 str r1, [r2] @ commit to SDRC_DLLB_CTRL ··· 194 197 * wait for it to finish, use 32k sync counter, 1tick=31uS. 195 198 */ 196 199 voltage_shift_c: 197 - ldr r10, ddr_prcm_voltctrl @ get addr of volt ctrl 200 + ldr r10, omap242x_srs_prcm_voltctrl @ get addr of volt ctrl 198 201 ldr r8, [r10] @ get value 199 202 ldr r7, ddr_prcm_mask_val @ get value of mask 200 203 and r8, r8, r7 @ apply mask to clear bits ··· 204 207 orr r8, r8, r7 @ build value for force 205 208 str r8, [r10] @ Force transition to L1 206 209 207 - ldr r10, ddr_timer_32ksynct @ get addr of counter 210 + ldr r10, omap242x_srs_timer_32ksynct @ get addr of counter 208 211 ldr r8, [r10] @ get value 209 212 add r8, r8, #0x2 @ give it at most 62uS (min 31+) 210 213 volt_delay_c: ··· 213 216 bhi volt_delay_c @ not yet->branch 214 217 mov pc, lr @ back to caller 215 218 216 - ddr_cm_clksel2_pll: 219 + omap242x_srs_cm_clksel2_pll: 217 220 .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2) 218 - ddr_sdrc_dlla_ctrl: 221 + omap242x_srs_sdrc_dlla_ctrl: 219 222 .word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL) 220 - ddr_sdrc_rfr_ctrl: 223 + omap242x_srs_sdrc_rfr_ctrl: 221 224 .word OMAP242X_SDRC_REGADDR(SDRC_RFR_CTRL_0) 222 - ddr_prcm_voltctrl: 223 - .word OMAP2420_PRM_REGADDR(OCP_MOD, 0x50) 225 + omap242x_srs_prcm_voltctrl: 226 + .word OMAP242X_PRCM_VOLTCTRL 224 227 ddr_prcm_mask_val: 225 228 .word 0xFFFF3FFC 226 - ddr_timer_32ksynct: 227 - .word TIMER_32KSYNCT_CR_V 229 + omap242x_srs_timer_32ksynct: 230 + .word IO_ADDRESS(OMAP2_32KSYNCT_BASE + 0x010) 228 231 229 - ENTRY(sram_reprogram_sdrc_sz) 230 - .word . - sram_reprogram_sdrc 232 + ENTRY(omap242x_sram_reprogram_sdrc_sz) 233 + .word . - omap242x_sram_reprogram_sdrc 231 234 232 235 /* 233 236 * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode. 234 237 */ 235 - ENTRY(sram_set_prcm) 238 + ENTRY(omap242x_sram_set_prcm) 236 239 stmfd sp!, {r0-r12, lr} @ regs to stack 237 240 adr r4, pbegin @ addr of preload start 238 241 adr r8, pend @ addr of preload end 239 242 mcrr p15, 1, r8, r4, c12 @ preload into icache 240 243 pbegin: 241 244 /* move into fast relock bypass */ 242 - ldr r8, pll_ctl @ get addr 245 + ldr r8, omap242x_ssp_pll_ctl @ get addr 243 246 ldr r5, [r8] @ get val 244 247 mvn r6, #0x3 @ clear mask 245 248 and r5, r5, r6 @ clear field 246 249 orr r7, r5, #0x2 @ fast relock val 247 250 str r7, [r8] @ go to fast relock 248 - ldr r4, pll_stat @ addr of stat 251 + ldr r4, omap242x_ssp_pll_stat @ addr of stat 249 252 block: 250 253 /* wait for bypass */ 251 254 ldr r8, [r4] @ stat value ··· 254 257 bne block @ loop if not 255 258 256 259 /* set new dpll dividers _after_ in bypass */ 257 - ldr r4, pll_div @ get addr 260 + ldr r4, omap242x_ssp_pll_div @ get addr 258 261 str r0, [r4] @ set dpll ctrl val 259 262 260 - ldr r4, set_config @ get addr 263 + ldr r4, omap242x_ssp_set_config @ get addr 261 264 mov r8, #1 @ valid cfg msk 262 265 str r8, [r4] @ make dividers take 263 266 ··· 271 274 beq pend @ jump over dpll relock 272 275 273 276 /* relock DPLL with new vals */ 274 - ldr r5, pll_stat @ get addr 275 - ldr r4, pll_ctl @ get addr 277 + ldr r5, omap242x_ssp_pll_stat @ get addr 278 + ldr r4, omap242x_ssp_pll_ctl @ get addr 276 279 orr r8, r7, #0x3 @ val for lock dpll 277 280 str r8, [r4] @ set val 278 281 mov r0, #1000 @ dead spin a bit ··· 286 289 bne wait_lock @ wait if not 287 290 pend: 288 291 /* update memory timings & briefly lock dll */ 289 - ldr r4, sdrc_rfr @ get addr 292 + ldr r4, omap242x_ssp_sdrc_rfr @ get addr 290 293 str r1, [r4] @ update refresh timing 291 - ldr r11, dlla_ctrl @ get addr of DLLA ctrl 294 + ldr r11, omap242x_ssp_dlla_ctrl @ get addr of DLLA ctrl 292 295 ldr r10, [r11] @ get current val 293 296 mvn r9, #0x4 @ mask to get clear bit2 294 297 and r10, r10, r9 @ clear bit2 for lock mode ··· 304 307 nop 305 308 ldmfd sp!, {r0-r12, pc} @ restore regs and return 306 309 307 - set_config: 308 - .word OMAP2420_PRM_REGADDR(OCP_MOD, 0x80) 309 - pll_ctl: 310 - .word OMAP2420_CM_REGADDR(PLL_MOD, CM_FCLKEN1) 311 - pll_stat: 312 - .word OMAP2420_CM_REGADDR(PLL_MOD, CM_IDLEST1) 313 - pll_div: 314 - .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL) 315 - sdrc_rfr: 310 + omap242x_ssp_set_config: 311 + .word OMAP242X_PRCM_CLKCFG_CTRL 312 + omap242x_ssp_pll_ctl: 313 + .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKEN) 314 + omap242x_ssp_pll_stat: 315 + .word OMAP2420_CM_REGADDR(PLL_MOD, CM_IDLEST) 316 + omap242x_ssp_pll_div: 317 + .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL1) 318 + omap242x_ssp_sdrc_rfr: 316 319 .word OMAP242X_SDRC_REGADDR(SDRC_RFR_CTRL_0) 317 - dlla_ctrl: 320 + omap242x_ssp_dlla_ctrl: 318 321 .word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL) 319 322 320 - ENTRY(sram_set_prcm_sz) 321 - .word . - sram_set_prcm 323 + ENTRY(omap242x_sram_set_prcm_sz) 324 + .word . - omap242x_sram_set_prcm
+321
arch/arm/mach-omap2/sram243x.S
··· 1 + /* 2 + * linux/arch/arm/mach-omap2/sram243x.S 3 + * 4 + * Omap2 specific functions that need to be run in internal SRAM 5 + * 6 + * (C) Copyright 2004 7 + * Texas Instruments, <www.ti.com> 8 + * Richard Woodruff <r-woodruff2@ti.com> 9 + * 10 + * This program is free software; you can redistribute it and/or 11 + * modify it under the terms of the GNU General Public License as 12 + * published by the Free Software Foundation; either version 2 of 13 + * the License, or (at your option) any later version. 14 + * 15 + * This program is distributed in the hope that it will be useful, 16 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the 18 + * GNU General Public License for more details. 19 + * 20 + * You should have received a copy of the GNU General Public License 21 + * along with this program; if not, write to the Free Software 22 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 23 + * MA 02111-1307 USA 24 + */ 25 + #include <linux/linkage.h> 26 + #include <asm/assembler.h> 27 + #include <asm/arch/io.h> 28 + #include <asm/hardware.h> 29 + 30 + #include "prm.h" 31 + #include "cm.h" 32 + #include "sdrc.h" 33 + 34 + .text 35 + 36 + ENTRY(omap243x_sram_ddr_init) 37 + stmfd sp!, {r0 - r12, lr} @ save registers on stack 38 + 39 + mov r12, r2 @ capture CS1 vs CS0 40 + mov r8, r3 @ capture force parameter 41 + 42 + /* frequency shift down */ 43 + ldr r2, omap243x_sdi_cm_clksel2_pll @ get address of dpllout reg 44 + mov r3, #0x1 @ value for 1x operation 45 + str r3, [r2] @ go to L1-freq operation 46 + 47 + /* voltage shift down */ 48 + mov r9, #0x1 @ set up for L1 voltage call 49 + bl voltage_shift @ go drop voltage 50 + 51 + /* dll lock mode */ 52 + ldr r11, omap243x_sdi_sdrc_dlla_ctrl @ addr of dlla ctrl 53 + ldr r10, [r11] @ get current val 54 + cmp r12, #0x1 @ cs1 base (2422 es2.05/1) 55 + addeq r11, r11, #0x8 @ if cs1 base, move to DLLB 56 + mvn r9, #0x4 @ mask to get clear bit2 57 + and r10, r10, r9 @ clear bit2 for lock mode. 58 + orr r10, r10, #0x8 @ make sure DLL on (es2 bit pos) 59 + orr r10, r10, #0x2 @ 90 degree phase for all below 133Mhz 60 + str r10, [r11] @ commit to DLLA_CTRL 61 + bl i_dll_wait @ wait for dll to lock 62 + 63 + /* get dll value */ 64 + add r11, r11, #0x4 @ get addr of status reg 65 + ldr r10, [r11] @ get locked value 66 + 67 + /* voltage shift up */ 68 + mov r9, #0x0 @ shift back to L0-voltage 69 + bl voltage_shift @ go raise voltage 70 + 71 + /* frequency shift up */ 72 + mov r3, #0x2 @ value for 2x operation 73 + str r3, [r2] @ go to L0-freq operation 74 + 75 + /* reset entry mode for dllctrl */ 76 + sub r11, r11, #0x4 @ move from status to ctrl 77 + cmp r12, #0x1 @ normalize if cs1 based 78 + subeq r11, r11, #0x8 @ possibly back to DLLA 79 + cmp r8, #0x1 @ if forced unlock exit 80 + orreq r1, r1, #0x4 @ make sure exit with unlocked value 81 + str r1, [r11] @ restore DLLA_CTRL high value 82 + add r11, r11, #0x8 @ move to DLLB_CTRL addr 83 + str r1, [r11] @ set value DLLB_CTRL 84 + bl i_dll_wait @ wait for possible lock 85 + 86 + /* set up for return, DDR should be good */ 87 + str r10, [r0] @ write dll_status and return counter 88 + ldmfd sp!, {r0 - r12, pc} @ restore regs and return 89 + 90 + /* ensure the DLL has relocked */ 91 + i_dll_wait: 92 + mov r4, #0x800 @ delay DLL relock, min 0x400 L3 clocks 93 + i_dll_delay: 94 + subs r4, r4, #0x1 95 + bne i_dll_delay 96 + mov pc, lr 97 + 98 + /* 99 + * shift up or down voltage, use R9 as input to tell level. 100 + * wait for it to finish, use 32k sync counter, 1tick=31uS. 101 + */ 102 + voltage_shift: 103 + ldr r4, omap243x_sdi_prcm_voltctrl @ get addr of volt ctrl. 104 + ldr r5, [r4] @ get value. 105 + ldr r6, prcm_mask_val @ get value of mask 106 + and r5, r5, r6 @ apply mask to clear bits 107 + orr r5, r5, r9 @ bulld value for L0/L1-volt operation. 108 + str r5, [r4] @ set up for change. 109 + mov r3, #0x4000 @ get val for force 110 + orr r5, r5, r3 @ build value for force 111 + str r5, [r4] @ Force transition to L1 112 + 113 + ldr r3, omap243x_sdi_timer_32ksynct_cr @ get addr of counter 114 + ldr r5, [r3] @ get value 115 + add r5, r5, #0x3 @ give it at most 93uS 116 + volt_delay: 117 + ldr r7, [r3] @ get timer value 118 + cmp r5, r7 @ time up? 119 + bhi volt_delay @ not yet->branch 120 + mov pc, lr @ back to caller. 121 + 122 + omap243x_sdi_cm_clksel2_pll: 123 + .word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2) 124 + omap243x_sdi_sdrc_dlla_ctrl: 125 + .word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL) 126 + omap243x_sdi_prcm_voltctrl: 127 + .word OMAP243X_PRCM_VOLTCTRL 128 + prcm_mask_val: 129 + .word 0xFFFF3FFC 130 + omap243x_sdi_timer_32ksynct_cr: 131 + .word IO_ADDRESS(OMAP2_32KSYNCT_BASE + 0x010) 132 + ENTRY(omap243x_sram_ddr_init_sz) 133 + .word . - omap243x_sram_ddr_init 134 + 135 + /* 136 + * Reprograms memory timings. 137 + * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR] 138 + * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0 139 + */ 140 + ENTRY(omap243x_sram_reprogram_sdrc) 141 + stmfd sp!, {r0 - r10, lr} @ save registers on stack 142 + mov r3, #0x0 @ clear for mrc call 143 + mcr p15, 0, r3, c7, c10, 4 @ memory barrier, finish ARM SDR/DDR 144 + nop 145 + nop 146 + ldr r6, omap243x_srs_sdrc_rfr_ctrl @ get addr of refresh reg 147 + ldr r5, [r6] @ get value 148 + mov r5, r5, lsr #8 @ isolate rfr field and drop burst 149 + 150 + cmp r0, #0x1 @ going to half speed? 151 + movne r9, #0x0 @ if up set flag up for pre up, hi volt 152 + 153 + blne voltage_shift_c @ adjust voltage 154 + 155 + cmp r0, #0x1 @ going to half speed (post branch link) 156 + moveq r5, r5, lsr #1 @ divide by 2 if to half 157 + movne r5, r5, lsl #1 @ mult by 2 if to full 158 + mov r5, r5, lsl #8 @ put rfr field back into place 159 + add r5, r5, #0x1 @ turn on burst of 1 160 + ldr r4, omap243x_srs_cm_clksel2_pll @ get address of out reg 161 + ldr r3, [r4] @ get curr value 162 + orr r3, r3, #0x3 163 + bic r3, r3, #0x3 @ clear lower bits 164 + orr r3, r3, r0 @ new state value 165 + str r3, [r4] @ set new state (pll/x, x=1 or 2) 166 + nop 167 + nop 168 + 169 + moveq r9, #0x1 @ if speed down, post down, drop volt 170 + bleq voltage_shift_c 171 + 172 + mcr p15, 0, r3, c7, c10, 4 @ memory barrier 173 + str r5, [r6] @ set new RFR_1 value 174 + add r6, r6, #0x30 @ get RFR_2 addr 175 + str r5, [r6] @ set RFR_2 176 + nop 177 + cmp r2, #0x1 @ (SDR or DDR) do we need to adjust DLL 178 + bne freq_out @ leave if SDR, no DLL function 179 + 180 + /* With DDR, we need to take care of the DLL for the frequency change */ 181 + ldr r2, omap243x_srs_sdrc_dlla_ctrl @ addr of dlla ctrl 182 + str r1, [r2] @ write out new SDRC_DLLA_CTRL 183 + add r2, r2, #0x8 @ addr to SDRC_DLLB_CTRL 184 + str r1, [r2] @ commit to SDRC_DLLB_CTRL 185 + mov r1, #0x2000 @ wait DLL relock, min 0x400 L3 clocks 186 + dll_wait: 187 + subs r1, r1, #0x1 188 + bne dll_wait 189 + freq_out: 190 + ldmfd sp!, {r0 - r10, pc} @ restore regs and return 191 + 192 + /* 193 + * shift up or down voltage, use R9 as input to tell level. 194 + * wait for it to finish, use 32k sync counter, 1tick=31uS. 195 + */ 196 + voltage_shift_c: 197 + ldr r10, omap243x_srs_prcm_voltctrl @ get addr of volt ctrl 198 + ldr r8, [r10] @ get value 199 + ldr r7, ddr_prcm_mask_val @ get value of mask 200 + and r8, r8, r7 @ apply mask to clear bits 201 + orr r8, r8, r9 @ bulld value for L0/L1-volt operation. 202 + str r8, [r10] @ set up for change. 203 + mov r7, #0x4000 @ get val for force 204 + orr r8, r8, r7 @ build value for force 205 + str r8, [r10] @ Force transition to L1 206 + 207 + ldr r10, omap243x_srs_timer_32ksynct @ get addr of counter 208 + ldr r8, [r10] @ get value 209 + add r8, r8, #0x2 @ give it at most 62uS (min 31+) 210 + volt_delay_c: 211 + ldr r7, [r10] @ get timer value 212 + cmp r8, r7 @ time up? 213 + bhi volt_delay_c @ not yet->branch 214 + mov pc, lr @ back to caller 215 + 216 + omap243x_srs_cm_clksel2_pll: 217 + .word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2) 218 + omap243x_srs_sdrc_dlla_ctrl: 219 + .word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL) 220 + omap243x_srs_sdrc_rfr_ctrl: 221 + .word OMAP243X_SDRC_REGADDR(SDRC_RFR_CTRL_0) 222 + omap243x_srs_prcm_voltctrl: 223 + .word OMAP243X_PRCM_VOLTCTRL 224 + ddr_prcm_mask_val: 225 + .word 0xFFFF3FFC 226 + omap243x_srs_timer_32ksynct: 227 + .word IO_ADDRESS(OMAP2_32KSYNCT_BASE + 0x010) 228 + 229 + ENTRY(omap243x_sram_reprogram_sdrc_sz) 230 + .word . - omap243x_sram_reprogram_sdrc 231 + 232 + /* 233 + * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode. 234 + */ 235 + ENTRY(omap243x_sram_set_prcm) 236 + stmfd sp!, {r0-r12, lr} @ regs to stack 237 + adr r4, pbegin @ addr of preload start 238 + adr r8, pend @ addr of preload end 239 + mcrr p15, 1, r8, r4, c12 @ preload into icache 240 + pbegin: 241 + /* move into fast relock bypass */ 242 + ldr r8, omap243x_ssp_pll_ctl @ get addr 243 + ldr r5, [r8] @ get val 244 + mvn r6, #0x3 @ clear mask 245 + and r5, r5, r6 @ clear field 246 + orr r7, r5, #0x2 @ fast relock val 247 + str r7, [r8] @ go to fast relock 248 + ldr r4, omap243x_ssp_pll_stat @ addr of stat 249 + block: 250 + /* wait for bypass */ 251 + ldr r8, [r4] @ stat value 252 + and r8, r8, #0x3 @ mask for stat 253 + cmp r8, #0x1 @ there yet 254 + bne block @ loop if not 255 + 256 + /* set new dpll dividers _after_ in bypass */ 257 + ldr r4, omap243x_ssp_pll_div @ get addr 258 + str r0, [r4] @ set dpll ctrl val 259 + 260 + ldr r4, omap243x_ssp_set_config @ get addr 261 + mov r8, #1 @ valid cfg msk 262 + str r8, [r4] @ make dividers take 263 + 264 + mov r4, #100 @ dead spin a bit 265 + wait_a_bit: 266 + subs r4, r4, #1 @ dec loop 267 + bne wait_a_bit @ delay done? 268 + 269 + /* check if staying in bypass */ 270 + cmp r2, #0x1 @ stay in bypass? 271 + beq pend @ jump over dpll relock 272 + 273 + /* relock DPLL with new vals */ 274 + ldr r5, omap243x_ssp_pll_stat @ get addr 275 + ldr r4, omap243x_ssp_pll_ctl @ get addr 276 + orr r8, r7, #0x3 @ val for lock dpll 277 + str r8, [r4] @ set val 278 + mov r0, #1000 @ dead spin a bit 279 + wait_more: 280 + subs r0, r0, #1 @ dec loop 281 + bne wait_more @ delay done? 282 + wait_lock: 283 + ldr r8, [r5] @ get lock val 284 + and r8, r8, #3 @ isolate field 285 + cmp r8, #2 @ locked? 286 + bne wait_lock @ wait if not 287 + pend: 288 + /* update memory timings & briefly lock dll */ 289 + ldr r4, omap243x_ssp_sdrc_rfr @ get addr 290 + str r1, [r4] @ update refresh timing 291 + ldr r11, omap243x_ssp_dlla_ctrl @ get addr of DLLA ctrl 292 + ldr r10, [r11] @ get current val 293 + mvn r9, #0x4 @ mask to get clear bit2 294 + and r10, r10, r9 @ clear bit2 for lock mode 295 + orr r10, r10, #0x8 @ make sure DLL on (es2 bit pos) 296 + str r10, [r11] @ commit to DLLA_CTRL 297 + add r11, r11, #0x8 @ move to dllb 298 + str r10, [r11] @ hit DLLB also 299 + 300 + mov r4, #0x800 @ relock time (min 0x400 L3 clocks) 301 + wait_dll_lock: 302 + subs r4, r4, #0x1 303 + bne wait_dll_lock 304 + nop 305 + ldmfd sp!, {r0-r12, pc} @ restore regs and return 306 + 307 + omap243x_ssp_set_config: 308 + .word OMAP243X_PRCM_CLKCFG_CTRL 309 + omap243x_ssp_pll_ctl: 310 + .word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKEN) 311 + omap243x_ssp_pll_stat: 312 + .word OMAP2430_CM_REGADDR(PLL_MOD, CM_IDLEST) 313 + omap243x_ssp_pll_div: 314 + .word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL1) 315 + omap243x_ssp_sdrc_rfr: 316 + .word OMAP243X_SDRC_REGADDR(SDRC_RFR_CTRL_0) 317 + omap243x_ssp_dlla_ctrl: 318 + .word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL) 319 + 320 + ENTRY(omap243x_sram_set_prcm_sz) 321 + .word . - omap243x_sram_set_prcm
+175 -34
arch/arm/plat-omap/sram.c
··· 10 10 * it under the terms of the GNU General Public License version 2 as 11 11 * published by the Free Software Foundation. 12 12 */ 13 + #undef DEBUG 13 14 14 15 #include <linux/module.h> 15 16 #include <linux/kernel.h> ··· 25 24 #include <asm/arch/sram.h> 26 25 #include <asm/arch/board.h> 27 26 27 + #include <asm/arch/control.h> 28 + 29 + #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) 30 + # include "../mach-omap2/prm.h" 31 + # include "../mach-omap2/cm.h" 32 + # include "../mach-omap2/sdrc.h" 33 + #endif 34 + 28 35 #define OMAP1_SRAM_PA 0x20000000 29 - #define OMAP1_SRAM_VA 0xd0000000 36 + #define OMAP1_SRAM_VA VMALLOC_END 30 37 #define OMAP2_SRAM_PA 0x40200000 31 38 #define OMAP2_SRAM_PUB_PA 0x4020f800 32 - #define OMAP2_SRAM_VA 0xd0000000 33 - #define OMAP2_SRAM_PUB_VA 0xd0000800 39 + #define OMAP2_SRAM_VA VMALLOC_END 40 + #define OMAP2_SRAM_PUB_VA (VMALLOC_END + 0x800) 41 + #define OMAP3_SRAM_PA 0x40200000 42 + #define OMAP3_SRAM_VA 0xd7000000 43 + #define OMAP3_SRAM_PUB_PA 0x40208000 44 + #define OMAP3_SRAM_PUB_VA 0xd7008000 34 45 35 - #if defined(CONFIG_ARCH_OMAP24XX) 46 + #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) 36 47 #define SRAM_BOOTLOADER_SZ 0x00 37 48 #else 38 49 #define SRAM_BOOTLOADER_SZ 0x80 39 50 #endif 40 51 41 - #define VA_REQINFOPERM0 IO_ADDRESS(0x68005048) 42 - #define VA_READPERM0 IO_ADDRESS(0x68005050) 43 - #define VA_WRITEPERM0 IO_ADDRESS(0x68005058) 44 - #define VA_CONTROL_STAT IO_ADDRESS(0x480002F8) 52 + #define OMAP24XX_VA_REQINFOPERM0 IO_ADDRESS(0x68005048) 53 + #define OMAP24XX_VA_READPERM0 IO_ADDRESS(0x68005050) 54 + #define OMAP24XX_VA_WRITEPERM0 IO_ADDRESS(0x68005058) 55 + 56 + #define OMAP34XX_VA_REQINFOPERM0 IO_ADDRESS(0x68012848) 57 + #define OMAP34XX_VA_READPERM0 IO_ADDRESS(0x68012850) 58 + #define OMAP34XX_VA_WRITEPERM0 IO_ADDRESS(0x68012858) 59 + #define OMAP34XX_VA_ADDR_MATCH2 IO_ADDRESS(0x68012880) 60 + #define OMAP34XX_VA_SMS_RG_ATT0 IO_ADDRESS(0x6C000048) 61 + #define OMAP34XX_VA_CONTROL_STAT IO_ADDRESS(0x480022F0) 62 + 45 63 #define GP_DEVICE 0x300 46 - #define TYPE_MASK 0x700 47 64 48 65 #define ROUND_DOWN(value,boundary) ((value) & (~((boundary)-1))) 49 66 ··· 87 68 int type = 0; 88 69 89 70 if (cpu_is_omap242x()) 90 - type = __raw_readl(VA_CONTROL_STAT) & TYPE_MASK; 71 + type = system_rev & OMAP2_DEVICETYPE_MASK; 91 72 92 73 if (type == GP_DEVICE) { 93 74 /* RAMFW: R/W access to all initiators for all qualifier sets */ 94 75 if (cpu_is_omap242x()) { 95 - __raw_writel(0xFF, VA_REQINFOPERM0); /* all q-vects */ 96 - __raw_writel(0xCFDE, VA_READPERM0); /* all i-read */ 97 - __raw_writel(0xCFDE, VA_WRITEPERM0); /* all i-write */ 76 + __raw_writel(0xFF, OMAP24XX_VA_REQINFOPERM0); /* all q-vects */ 77 + __raw_writel(0xCFDE, OMAP24XX_VA_READPERM0); /* all i-read */ 78 + __raw_writel(0xCFDE, OMAP24XX_VA_WRITEPERM0); /* all i-write */ 79 + } 80 + if (cpu_is_omap34xx()) { 81 + __raw_writel(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */ 82 + __raw_writel(0xFFFF, OMAP34XX_VA_READPERM0); /* all i-read */ 83 + __raw_writel(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */ 84 + __raw_writel(0x0, OMAP34XX_VA_ADDR_MATCH2); 85 + __raw_writel(0xFFFFFFFF, OMAP34XX_VA_SMS_RG_ATT0); 98 86 } 99 87 return 0; 100 88 } else ··· 118 92 { 119 93 unsigned long reserved; 120 94 121 - if (cpu_is_omap24xx()) { 95 + if (cpu_class_is_omap2()) { 122 96 if (is_sram_locked()) { 123 - omap_sram_base = OMAP2_SRAM_PUB_VA; 124 - omap_sram_start = OMAP2_SRAM_PUB_PA; 125 - omap_sram_size = 0x800; /* 2K */ 97 + if (cpu_is_omap34xx()) { 98 + omap_sram_base = OMAP3_SRAM_PUB_VA; 99 + omap_sram_start = OMAP3_SRAM_PUB_PA; 100 + omap_sram_size = 0x8000; /* 32K */ 101 + } else { 102 + omap_sram_base = OMAP2_SRAM_PUB_VA; 103 + omap_sram_start = OMAP2_SRAM_PUB_PA; 104 + omap_sram_size = 0x800; /* 2K */ 105 + } 126 106 } else { 127 - omap_sram_base = OMAP2_SRAM_VA; 128 - omap_sram_start = OMAP2_SRAM_PA; 129 - if (cpu_is_omap242x()) 130 - omap_sram_size = 0xa0000; /* 640K */ 131 - else if (cpu_is_omap243x()) 107 + if (cpu_is_omap34xx()) { 108 + omap_sram_base = OMAP3_SRAM_VA; 109 + omap_sram_start = OMAP3_SRAM_PA; 132 110 omap_sram_size = 0x10000; /* 64K */ 111 + } else { 112 + omap_sram_base = OMAP2_SRAM_VA; 113 + omap_sram_start = OMAP2_SRAM_PA; 114 + if (cpu_is_omap242x()) 115 + omap_sram_size = 0xa0000; /* 640K */ 116 + else if (cpu_is_omap243x()) 117 + omap_sram_size = 0x10000; /* 64K */ 118 + } 133 119 } 134 120 } else { 135 121 omap_sram_base = OMAP1_SRAM_VA; ··· 195 157 omap_sram_io_desc[0].pfn = __phys_to_pfn(base); 196 158 } 197 159 160 + if (cpu_is_omap34xx()) { 161 + omap_sram_io_desc[0].virtual = OMAP3_SRAM_VA; 162 + base = OMAP3_SRAM_PA; 163 + base = ROUND_DOWN(base, PAGE_SIZE); 164 + omap_sram_io_desc[0].pfn = __phys_to_pfn(base); 165 + } 166 + 198 167 omap_sram_io_desc[0].length = 1024 * 1024; /* Use section desc */ 199 168 iotable_init(omap_sram_io_desc, ARRAY_SIZE(omap_sram_io_desc)); 200 169 ··· 236 191 omap_sram_ceil -= size; 237 192 omap_sram_ceil = ROUND_DOWN(omap_sram_ceil, sizeof(void *)); 238 193 memcpy((void *)omap_sram_ceil, start, size); 194 + flush_icache_range((unsigned long)start, (unsigned long)(start + size)); 239 195 240 196 return (void *)omap_sram_ceil; 241 197 } ··· 260 214 261 215 int __init omap1_sram_init(void) 262 216 { 263 - _omap_sram_reprogram_clock = omap_sram_push(sram_reprogram_clock, 264 - sram_reprogram_clock_sz); 217 + _omap_sram_reprogram_clock = 218 + omap_sram_push(omap1_sram_reprogram_clock, 219 + omap1_sram_reprogram_clock_sz); 265 220 266 221 return 0; 267 222 } ··· 271 224 #define omap1_sram_init() do {} while (0) 272 225 #endif 273 226 274 - #ifdef CONFIG_ARCH_OMAP2 227 + #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) 275 228 276 229 static void (*_omap2_sram_ddr_init)(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, 277 230 u32 base_cs, u32 force_unlock); ··· 306 259 307 260 return _omap2_set_prcm(dpll_ctrl_val, sdrc_rfr_val, bypass); 308 261 } 262 + #endif 309 263 310 - int __init omap2_sram_init(void) 264 + #ifdef CONFIG_ARCH_OMAP2420 265 + int __init omap242x_sram_init(void) 311 266 { 312 - _omap2_sram_ddr_init = omap_sram_push(sram_ddr_init, sram_ddr_init_sz); 267 + _omap2_sram_ddr_init = omap_sram_push(omap242x_sram_ddr_init, 268 + omap242x_sram_ddr_init_sz); 313 269 314 - _omap2_sram_reprogram_sdrc = omap_sram_push(sram_reprogram_sdrc, 315 - sram_reprogram_sdrc_sz); 316 - _omap2_set_prcm = omap_sram_push(sram_set_prcm, sram_set_prcm_sz); 270 + _omap2_sram_reprogram_sdrc = omap_sram_push(omap242x_sram_reprogram_sdrc, 271 + omap242x_sram_reprogram_sdrc_sz); 272 + 273 + _omap2_set_prcm = omap_sram_push(omap242x_sram_set_prcm, 274 + omap242x_sram_set_prcm_sz); 317 275 318 276 return 0; 319 277 } 320 278 #else 321 - #define omap2_sram_init() do {} while (0) 279 + static inline int omap242x_sram_init(void) 280 + { 281 + return 0; 282 + } 283 + #endif 284 + 285 + #ifdef CONFIG_ARCH_OMAP2430 286 + int __init omap243x_sram_init(void) 287 + { 288 + _omap2_sram_ddr_init = omap_sram_push(omap243x_sram_ddr_init, 289 + omap243x_sram_ddr_init_sz); 290 + 291 + _omap2_sram_reprogram_sdrc = omap_sram_push(omap243x_sram_reprogram_sdrc, 292 + omap243x_sram_reprogram_sdrc_sz); 293 + 294 + _omap2_set_prcm = omap_sram_push(omap243x_sram_set_prcm, 295 + omap243x_sram_set_prcm_sz); 296 + 297 + return 0; 298 + } 299 + #else 300 + static inline int omap243x_sram_init(void) 301 + { 302 + return 0; 303 + } 304 + #endif 305 + 306 + #ifdef CONFIG_ARCH_OMAP3 307 + 308 + static u32 (*_omap2_sram_reprogram_gpmc)(u32 perf_level); 309 + u32 omap2_sram_reprogram_gpmc(u32 perf_level) 310 + { 311 + if (!_omap2_sram_reprogram_gpmc) 312 + omap_sram_error(); 313 + 314 + return _omap2_sram_reprogram_gpmc(perf_level); 315 + } 316 + 317 + static u32 (*_omap2_sram_configure_core_dpll)(u32 m, u32 n, 318 + u32 freqsel, u32 m2); 319 + u32 omap2_sram_configure_core_dpll(u32 m, u32 n, u32 freqsel, u32 m2) 320 + { 321 + if (!_omap2_sram_configure_core_dpll) 322 + omap_sram_error(); 323 + 324 + return _omap2_sram_configure_core_dpll(m, n, freqsel, m2); 325 + } 326 + 327 + /* REVISIT: Should this be same as omap34xx_sram_init() after off-idle? */ 328 + void restore_sram_functions(void) 329 + { 330 + omap_sram_ceil = omap_sram_base + omap_sram_size; 331 + 332 + _omap2_sram_reprogram_gpmc = omap_sram_push(omap34xx_sram_reprogram_gpmc, 333 + omap34xx_sram_reprogram_gpmc_sz); 334 + 335 + _omap2_sram_configure_core_dpll = 336 + omap_sram_push(omap34xx_sram_configure_core_dpll, 337 + omap34xx_sram_configure_core_dpll_sz); 338 + } 339 + 340 + int __init omap34xx_sram_init(void) 341 + { 342 + _omap2_sram_ddr_init = omap_sram_push(omap34xx_sram_ddr_init, 343 + omap34xx_sram_ddr_init_sz); 344 + 345 + _omap2_sram_reprogram_sdrc = omap_sram_push(omap34xx_sram_reprogram_sdrc, 346 + omap34xx_sram_reprogram_sdrc_sz); 347 + 348 + _omap2_set_prcm = omap_sram_push(omap34xx_sram_set_prcm, 349 + omap34xx_sram_set_prcm_sz); 350 + 351 + _omap2_sram_reprogram_gpmc = omap_sram_push(omap34xx_sram_reprogram_gpmc, 352 + omap34xx_sram_reprogram_gpmc_sz); 353 + 354 + _omap2_sram_configure_core_dpll = 355 + omap_sram_push(omap34xx_sram_configure_core_dpll, 356 + omap34xx_sram_configure_core_dpll_sz); 357 + 358 + return 0; 359 + } 360 + #else 361 + static inline int omap34xx_sram_init(void) 362 + { 363 + return 0; 364 + } 322 365 #endif 323 366 324 367 int __init omap_sram_init(void) ··· 416 279 omap_detect_sram(); 417 280 omap_map_sram(); 418 281 419 - if (!cpu_is_omap24xx()) 282 + if (!(cpu_class_is_omap2())) 420 283 omap1_sram_init(); 421 - else 422 - omap2_sram_init(); 284 + else if (cpu_is_omap242x()) 285 + omap242x_sram_init(); 286 + else if (cpu_is_omap2430()) 287 + omap243x_sram_init(); 288 + else if (cpu_is_omap34xx()) 289 + omap34xx_sram_init(); 423 290 424 291 return 0; 425 292 }
+28 -9
include/asm-arm/arch-omap/sram.h
··· 11 11 #ifndef __ARCH_ARM_OMAP_SRAM_H 12 12 #define __ARCH_ARM_OMAP_SRAM_H 13 13 14 + extern int __init omap_sram_init(void); 14 15 extern void * omap_sram_push(void * start, unsigned long size); 15 16 extern void omap_sram_reprogram_clock(u32 dpllctl, u32 ckctl); 16 17 ··· 22 21 extern u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass); 23 22 24 23 /* Do not use these */ 25 - extern void sram_reprogram_clock(u32 ckctl, u32 dpllctl); 26 - extern unsigned long sram_reprogram_clock_sz; 24 + extern void omap1_sram_reprogram_clock(u32 ckctl, u32 dpllctl); 25 + extern unsigned long omap1_sram_reprogram_clock_sz; 27 26 28 - extern void sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, 29 - u32 base_cs, u32 force_unlock); 30 - extern unsigned long sram_ddr_init_sz; 27 + extern void omap24xx_sram_reprogram_clock(u32 ckctl, u32 dpllctl); 28 + extern unsigned long omap24xx_sram_reprogram_clock_sz; 31 29 32 - extern u32 sram_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass); 33 - extern unsigned long sram_set_prcm_sz; 30 + extern void omap242x_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, 31 + u32 base_cs, u32 force_unlock); 32 + extern unsigned long omap242x_sram_ddr_init_sz; 34 33 35 - extern void sram_reprogram_sdrc(u32 perf_level, u32 dll_val, u32 mem_type); 36 - extern unsigned long sram_reprogram_sdrc_sz; 34 + extern u32 omap242x_sram_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, 35 + int bypass); 36 + extern unsigned long omap242x_sram_set_prcm_sz; 37 + 38 + extern void omap242x_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, 39 + u32 mem_type); 40 + extern unsigned long omap242x_sram_reprogram_sdrc_sz; 41 + 42 + 43 + extern void omap243x_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl, 44 + u32 base_cs, u32 force_unlock); 45 + extern unsigned long omap243x_sram_ddr_init_sz; 46 + 47 + extern u32 omap243x_sram_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, 48 + int bypass); 49 + extern unsigned long omap243x_sram_set_prcm_sz; 50 + 51 + extern void omap243x_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, 52 + u32 mem_type); 53 + extern unsigned long omap243x_sram_reprogram_sdrc_sz; 37 54 38 55 #endif