|
|
@@ -0,0 +1,168 @@ |
|
|
|
# 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 |
|
|
|
} |