--- /dev/null
+# The IMX28EVK eval board has a IMX28 chip
+# Tested on SCH-26241 Rev D board with Olimex ARM-USB-OCD
+# Date: 201-02-01
+# Authors: James Robinson & Fabio Estevam
+
+source [find target/imx28.cfg]
+$_TARGETNAME configure -event gdb-attach { imx28evk_init }
+$_TARGETNAME configure -event reset-init { imx28evk_init }
+
+proc imx28evk_init { } {
+
+ halt
+
+ #****************************
+ # VDDD setting
+ #****************************
+ # set VDDD =1.55V =(0.8v + TRIG x 0.025v), TRIG=0x1e
+ mww 0x80044010 0x0003F503
+ mww 0x80044040 0x0002041E
+
+ #****************************
+ # CLOCK set up
+ #****************************
+ # Power up PLL0 HW_CLKCTRL_PLL0CTRL0
+ mww 0x80040000 0x00020000
+ # Set up fractional dividers for CPU and EMI - HW_CLKCTRL_FRAC0
+ # EMI - first set DIV_EMI to div-by-2 before programming frac divider
+ mww 0x800400F0 0x80000002
+
+
+ # CPU: CPUFRAC=19 480*18/29=454.7MHz, EMI: EMIFRAC=22, (480/2)*18/22=196.4MHz
+ mww 0x800401B0 0x92921613
+ # Clear the bypass bits for CPU and EMI clocks in HW_CLKCTRL_CLKSEQ_CLR
+ mww 0x800401D8 0x00040080
+ # HCLK = 227MHz,HW_CLKCTRL_HBUS DIV =0x2
+ mww 0x80040060 0x00000002
+
+ #****************************
+ # POWER up DCDD_VDDA (DDR2)
+ #****************************
+ # Now set the voltage level to 1.8V HW_POWER_VDDACTRL bits TRC=0xC
+ mww 0x80044050 0x0000270C
+
+ #****************************
+ # DDR2 DCDD_VDDA
+ #****************************
+ # First set up pin muxing and drive strength
+ # Ungate module clock and bring out of reset HW_PINCTRL_CTRL_CLR
+ mww 0x80018008 0xC0000000
+
+ #****************************
+ # EMI PAD setting
+ #****************************
+ # Set up drive strength for EMI pins
+ mww 0x80019B80 0x00030000
+ #IOMUXC_SW_PAD_CTL_GRP_CTLDS
+
+ # Set up pin muxing for EMI, HW_PINCTRL_MUXSEL10, 11, 12, 13
+ mww 0x800181A8 0xFFFFFFFF
+ mww 0x800181B8 0xFFFFFFFF
+ mww 0x800181C8 0xFFFFFFFF
+ mww 0x800181D8 0xFFFFFFFF
+
+ #** Ungate EMI clock in CCM
+ mww 0x800400F0 0x00000002
+
+ #============================================================================
+ # DDR Controller Registers
+ #============================================================================
+ # Manufacturer: Elpida
+ # Device Part Number: EDE1116AEBG
+ # Clock Freq.: 200MHz
+ # Density: 1Gb
+ # Chip Selects: 1
+ # Number of Banks: 8
+ # Row address: 13
+ # Column address: 10
+ #============================================================================
+ mww 0x800E0000 0x00000000
+ mww 0x800E0040 0x00000000
+ mww 0x800E0054 0x00000000
+ mww 0x800E0058 0x00000000
+ mww 0x800E005C 0x00000000
+ mww 0x800E0060 0x00000000
+ mww 0x800E0064 0x00000000
+ mww 0x800E0068 0x00010101
+ mww 0x800E006C 0x01010101
+ mww 0x800E0070 0x000f0f01
+ mww 0x800E0074 0x0102020A
+ mww 0x800E007C 0x00010101
+ mww 0x800E0080 0x00000100
+ mww 0x800E0084 0x00000100
+ mww 0x800E0088 0x00000000
+ mww 0x800E008C 0x00000002
+ mww 0x800E0090 0x01010000
+ mww 0x800E0094 0x07080403
+ mww 0x800E0098 0x06005003
+ mww 0x800E009C 0x0A0000C8
+ mww 0x800E00A0 0x02009C40
+ mww 0x800E00A4 0x0002030C
+ mww 0x800E00A8 0x0036B009
+ mww 0x800E00AC 0x031A0612
+ mww 0x800E00B0 0x02030202
+ mww 0x800E00B4 0x00C8001C
+ mww 0x800E00C0 0x00011900
+ mww 0x800E00C4 0xffff0303
+ mww 0x800E00C8 0x00012100
+ mww 0x800E00CC 0xffff0303
+ mww 0x800E00D0 0x00012100
+ mww 0x800E00D4 0xffff0303
+ mww 0x800E00D8 0x00012100
+ mww 0x800E00DC 0xffff0303
+ mww 0x800E00E0 0x00000003
+ mww 0x800E00E8 0x00000000
+ mww 0x800E0108 0x00000612
+ mww 0x800E010C 0x01000f02
+ mww 0x800E0114 0x00000200
+ mww 0x800E0118 0x00020007
+ mww 0x800E011C 0xf4004a27
+ mww 0x800E0120 0xf4004a27
+ mww 0x800E012C 0x07400300
+ mww 0x800E0130 0x07400300
+ mww 0x800E013C 0x00000005
+ mww 0x800E0140 0x00000000
+ mww 0x800E0144 0x00000000
+ mww 0x800E0148 0x01000000
+ mww 0x800E014C 0x01020408
+ mww 0x800E0150 0x08040201
+ mww 0x800E0154 0x000f1133
+ mww 0x800E015C 0x00001f04
+ mww 0x800E0160 0x00001f04
+ mww 0x800E016C 0x00001f04
+ mww 0x800E0170 0x00001f04
+ mww 0x800E0288 0x00010000
+ mww 0x800E028C 0x00030404
+ mww 0x800E0290 0x00000003
+ mww 0x800E02AC 0x01010000
+ mww 0x800E02B0 0x01000000
+ mww 0x800E02B4 0x03030000
+ mww 0x800E02B8 0x00010303
+ mww 0x800E02BC 0x01020202
+ mww 0x800E02C0 0x00000000
+ mww 0x800E02C4 0x02030303
+ mww 0x800E02C8 0x21002103
+ mww 0x800E02CC 0x00061200
+ mww 0x800E02D0 0x06120612
+ mww 0x800E02D4 0x04420442
+ # Mode register 0 for CS1 and CS0, ok to program CS1 even if not used
+ mww 0x800E02D8 0x00000000
+ # Mode register 0 for CS2 and CS3, not supported in this processor
+ mww 0x800E02DC 0x00040004
+ # Mode register 1 for CS1 and CS0, ok to program CS1 even if not used
+ mww 0x800E02E0 0x00000000
+ # Mode register 1 for CS2 and CS3, not supported in this processor
+ mww 0x800E02E4 0x00000000
+ # Mode register 2 for CS1 and CS0, ok to program CS1 even if not used
+ mww 0x800E02E8 0x00000000
+ # Mode register 2 for CS2 and CS3, not supported in this processor
+ mww 0x800E02EC 0x00000000
+ # Mode register 3 for CS1 and CS0, ok to program CS1 even if not used
+ mww 0x800E02F0 0x00000000
+ # Mode register 3 for CS2 and CS3, not supported in this processor
+ mww 0x800E02F4 0xffffffff
+
+ #** start controller **#
+ mww 0x800E0040 0x00000001
+ # bit[0]: start
+}