aboutsummaryrefslogtreecommitdiff
path: root/tcl/board/imx28evk.cfg
blob: cc13c51854e2f9dfe679d24f4443cf54ff3dbae2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# SPDX-License-Identifier: GPL-2.0-or-later

# 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
}