xref: /rk3399_rockchip-uboot/board/freescale/mx31ads/lowlevel_init.S (revision 326ea986ac150acdc7656d57fca647db80b50158)
1f5acb9fdSJean-Christophe PLAGNIOL-VILLARD/*
2f5acb9fdSJean-Christophe PLAGNIOL-VILLARD * Copyright (C) 2008, Guennadi Liakhovetski <lg@denx.de>
3f5acb9fdSJean-Christophe PLAGNIOL-VILLARD *
4*1a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
5f5acb9fdSJean-Christophe PLAGNIOL-VILLARD */
6f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
786271115SStefano Babic#include <asm/arch/imx-regs.h>
8f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
9f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.macro REG reg, val
10f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r2, =\reg
11f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r3, =\val
12f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r3, [r2]
13f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.endm
14f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
15f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.macro REG8 reg, val
16f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r2, =\reg
17f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r3, =\val
18f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	strb r3, [r2]
19f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.endm
20f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
21f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.macro DELAY loops
22f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r2, =\loops
23f5acb9fdSJean-Christophe PLAGNIOL-VILLARD1:
24f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	subs	r2, r2, #1
25f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	nop
26f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bcs 1b
27f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.endm
28f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
29f5acb9fdSJean-Christophe PLAGNIOL-VILLARD/* RedBoot: AIPS setup - Only setup MPROTx registers.
30f5acb9fdSJean-Christophe PLAGNIOL-VILLARD * The PACR default values are good.*/
31f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.macro init_aips
32f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/*
33f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * Set all MPROTx to be non-bufferable, trusted for R/W,
34f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * not forced to user-mode.
35f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 */
36f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, =0x43F00000
37f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x77777777
38f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x00]
39f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x04]
40f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, =0x53F00000
41f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x00]
42f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x04]
43f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
44f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/*
45f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * Clear the on and off peripheral modules Supervisor Protect bit
46f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * for SDMA to access them. Did not change the AIPS control registers
47f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * (offset 0x20) access type
48f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 */
49f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, =0x43F00000
50f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x0
51f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x40]
52f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x44]
53f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x48]
54f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x4C]
55f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, [r0, #0x50]
56f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	and r1, r1, #0x00FFFFFF
57f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x50]
58f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
59f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, =0x53F00000
60f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x0
61f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x40]
62f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x44]
63f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x48]
64f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x4C]
65f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, [r0, #0x50]
66f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	and r1, r1, #0x00FFFFFF
67f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x50]
68f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.endm /* init_aips */
69f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
70f5acb9fdSJean-Christophe PLAGNIOL-VILLARD/* RedBoot: MAX (Multi-Layer AHB Crossbar Switch) setup */
71f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.macro init_max
72f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, =0x43F04000
73f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* MPR - priority is M4 > M2 > M3 > M5 > M0 > M1 */
74f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x00302154
75f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x000]        /* for S0 */
76f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x100]        /* for S1 */
77f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x200]        /* for S2 */
78f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x300]        /* for S3 */
79f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x400]        /* for S4 */
80f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* SGPCR - always park on last master */
81f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x10
82f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x010]        /* for S0 */
83f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x110]        /* for S1 */
84f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x210]        /* for S2 */
85f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x310]        /* for S3 */
86f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x410]        /* for S4 */
87f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* MGPCR - restore default values */
88f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x0
89f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x800]        /* for M0 */
90f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x900]        /* for M1 */
91f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0xA00]        /* for M2 */
92f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0xB00]        /* for M3 */
93f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0xC00]        /* for M4 */
94f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0xD00]        /* for M5 */
95f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.endm /* init_max */
96f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
97f5acb9fdSJean-Christophe PLAGNIOL-VILLARD/* RedBoot: M3IF setup */
98f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.macro init_m3if
99f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Configure M3IF registers */
100f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0xB8003000
101f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/*
102f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* M3IF Control Register (M3IFCTL)
103f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* MRRP[0] = L2CC0 not on priority list (0 << 0)	= 0x00000000
104f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* MRRP[1] = L2CC1 not on priority list (0 << 0)	= 0x00000000
105f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* MRRP[2] = MBX not on priority list (0 << 0)	= 0x00000000
106f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* MRRP[3] = MAX1 not on priority list (0 << 0)	= 0x00000000
107f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* MRRP[4] = SDMA not on priority list (0 << 0)	= 0x00000000
108f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* MRRP[5] = MPEG4 not on priority list (0 << 0)	= 0x00000000
109f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* MRRP[6] = IPU1 on priority list (1 << 6)	= 0x00000040
110f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	* MRRP[7] = IPU2 not on priority list (0 << 0)	= 0x00000000
111f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	*						------------
112f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	*						  0x00000040
113f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	*/
114f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, =0x00000040
115f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r0, [r1]  /* M3IF control reg */
116f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.endm /* init_m3if */
117f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
118f5acb9fdSJean-Christophe PLAGNIOL-VILLARD/* RedBoot: To support 133MHz DDR */
119f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.macro  init_drive_strength
120f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/*
121f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * Disable maximum drive strength SDRAM/DDR lines by clearing DSE1 bits
122f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * in SW_PAD_CTL registers
123f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 */
124f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
125f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* SDCLK */
126f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x43FAC200
127f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, [r1, #0x6C]
128f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bic r0, r0, #(1 << 12)
129f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r0, [r1, #0x6C]
130f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
131f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* CAS */
132f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, [r1, #0x70]
133f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bic r0, r0, #(1 << 22)
134f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r0, [r1, #0x70]
135f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
136f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* RAS */
137f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, [r1, #0x74]
138f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bic r0, r0, #(1 << 2)
139f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r0, [r1, #0x74]
140f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
141f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* CS2 (CSD0) */
142f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, [r1, #0x7C]
143f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bic r0, r0, #(1 << 22)
144f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r0, [r1, #0x7C]
145f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
146f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* DQM3 */
147f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, [r1, #0x84]
148f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bic r0, r0, #(1 << 22)
149f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r0, [r1, #0x84]
150f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
151f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* DQM2, DQM1, DQM0, SD31-SD0, A25-A0, MA10 (0x288..0x2DC) */
152f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r2, =22	/* (0x2E0 - 0x288) / 4 = 22 */
153f5acb9fdSJean-Christophe PLAGNIOL-VILLARDpad_loop:
154f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, [r1, #0x88]
155f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bic r0, r0, #(1 << 22)
156f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bic r0, r0, #(1 << 12)
157f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bic r0, r0, #(1 << 2)
158f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r0, [r1, #0x88]
159f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	add r1, r1, #4
160f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	subs r2, r2, #0x1
161f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	bne pad_loop
162f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.endm /* init_drive_strength */
163f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
164f5acb9fdSJean-Christophe PLAGNIOL-VILLARD/* CPLD on CS4 setup */
165f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.macro init_cs4
166f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, =WEIM_BASE
167f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x0000D843
168f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x40]
169f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x22252521
170f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x44]
171f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r1, =0x22220A00
172f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str r1, [r0, #0x48]
173f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.endm /* init_cs4 */
174f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
175f5acb9fdSJean-Christophe PLAGNIOL-VILLARD.globl lowlevel_init
176f5acb9fdSJean-Christophe PLAGNIOL-VILLARDlowlevel_init:
177f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
178f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Redboot initializes very early AIPS, what for?
179f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * Then it also initializes Multi-Layer AHB Crossbar Switch,
180f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	 * M3IF */
181f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Also setup the Peripheral Port Remap register inside the core */
182f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr r0, =0x40000015        /* start from AIPS 2GB region */
183f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	mcr p15, 0, r0, c15, c2, 4
184f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
185f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	init_aips
186f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
187f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	init_max
188f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
189f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	init_m3if
190f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
191f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	init_drive_strength
192f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
193f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	init_cs4
194f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
195f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Image Processing Unit: */
196f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Too early to switch display on? */
197f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	IPU_CONF, IPU_CONF_DI_EN	/* Switch on Display Interface */
198f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Clock Control Module: */
199f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	CCM_CCMR, 0x074B0BF5		/* Use CKIH, MCU PLL off */
200f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
201f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	DELAY 0x40000
202f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
203f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	CCM_CCMR, 0x074B0BF5 | CCMR_MPE			/* MCU PLL on */
204f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	CCM_CCMR, (0x074B0BF5 | CCMR_MPE) & ~CCMR_MDS	/* Switch to MCU PLL */
205f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
206f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* PBC CPLD on CS4 */
207f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	mov	r1, #CS4_BASE
208f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldrh	r1, [r1, #0x2]
209f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Is 27MHz switch set? */
210f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ands	r1, r1, #0x10
211f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
212f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* 532-133-66.5 */
213f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr	r0, =CCM_BASE
214f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr	r1, =0xFF871D58
215f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* PDR0 */
216f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str	r1, [r0, #0x4]
217f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldreq	r1, MPCTL_PARAM_532
218f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldrne	r1, MPCTL_PARAM_532_27
219f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* MPCTL */
220f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str	r1, [r0, #0x10]
221f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
222f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Set UPLL=240MHz, USB=60MHz */
223f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldr	r1, =0x49FCFE7F
224f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* PDR1 */
225f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str	r1, [r0, #0x8]
226f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldreq	r1, UPCTL_PARAM_240
227f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	ldrne	r1, UPCTL_PARAM_240_27
228f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* UPCTL */
229f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str	r1, [r0, #0x14]
230f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* default CLKO to 1/8 of the ARM core */
231f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	mov	r1, #0x000002C0
232f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	add	r1, r1, #0x00000006
233f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* COSR */
234f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	str	r1, [r0, #0x1c]
235f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
2369e0081d5SBenoît Thébaudeau	/* RedBoot sets 0x3f, 7, 7, 3, 5, 1, 3, 0 */
2379e0081d5SBenoît Thébaudeau/*	REG	CCM_PDR0, PDR0_CSI_PODF(0x3f) | PDR0_CSI_PRDF(7) | PDR0_PER_PODF(7) | PDR0_HSP_PODF(2) | PDR0_NFC_PODF(6) | PDR0_IPG_PODF(1) | PDR0_MAX_PODF(2) | PDR0_MCU_PODF(0)*/
238f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
239f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Redboot: 0, 51, 10, 12 / 0, 14, 9, 13 */
240f5acb9fdSJean-Christophe PLAGNIOL-VILLARD/*	REG	CCM_MPCTL, PLL_PD(0) | PLL_MFD(0x33) | PLL_MFI(7) | PLL_MFN(0x23)*/
241f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* Default: 1, 4, 12, 1 */
242f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	CCM_SPCTL, PLL_PD(1) | PLL_MFD(4) | PLL_MFI(12) | PLL_MFN(1)
243f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
244f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	/* B8xxxxxx - NAND, 8xxxxxxx - CSD0 RAM */
245f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0xB8001010, 0x00000004
246f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0xB8001004, 0x006ac73a
247f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0xB8001000, 0x92100000
248f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0x80000f00, 0x12344321
249f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0xB8001000, 0xa2100000
250f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0x80000000, 0x12344321
251f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0x80000000, 0x12344321
252f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0xB8001000, 0xb2100000
253f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG8	0x80000033, 0xda
254f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG8	0x81000000, 0xff
255f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0xB8001000, 0x82226080
256f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0x80000000, 0xDEADBEEF
257f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	REG	0xB8001010, 0x0000000c
258f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
259f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	mov	pc, lr
260f5acb9fdSJean-Christophe PLAGNIOL-VILLARD
261f5acb9fdSJean-Christophe PLAGNIOL-VILLARDMPCTL_PARAM_532:
262f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	.word (((1-1) << 26) + ((52-1) << 16) + (10 << 10) + (12 << 0))
263f5acb9fdSJean-Christophe PLAGNIOL-VILLARDMPCTL_PARAM_532_27:
264f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	.word (((1-1) << 26) + ((15-1) << 16) + (9  << 10) + (13 << 0))
265f5acb9fdSJean-Christophe PLAGNIOL-VILLARDUPCTL_PARAM_240:
266f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	.word (((2-1) << 26) + ((13-1) << 16) + (9  << 10) + (3  << 0))
267f5acb9fdSJean-Christophe PLAGNIOL-VILLARDUPCTL_PARAM_240_27:
268f5acb9fdSJean-Christophe PLAGNIOL-VILLARD	.word (((2-1) << 26) + ((9 -1) << 16) + (8  << 10) + (8  << 0))
269