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