aboutsummaryrefslogtreecommitdiff
path: root/tcl/board/csb732.cfg
blob: cad38e2e5b47d774e6a0495da85a591cd9a18fad (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
# The Cogent CSB732 board has a single i.MX35 chip
source [find target/imx35.cfg]

# Determined by trial and error
reset_config trst_and_srst combined
jtag_nsrst_delay 200
jtag_ntrst_delay 200

$_TARGETNAME configure -event gdb-attach { reset init }
$_TARGETNAME configure -event reset-init { csb732_init }

# Bare-bones initialization of core clocks and SDRAM
proc csb732_init { } {

	# Disable fast writing only for init
	memwrite burst disable

	# All delay loops are omitted.
	# We assume the interpreter latency is enough.

	# Allow access to all coprocessors
	arm mcr 15 0 15 1 0 0x2001

	# Disable MMU, caches, write buffer
	arm mcr 15 0 1 0 0 0x78

	# Grant manager access to all domains
	arm mcr 15 0 3 0 0 0xFFFFFFFF

	# Set ARM clock to 532 MHz, AHB to 133 MHz
	mww 0x53F80004 0x1000

	# Set core clock to 2 * 24 MHz * (11 + 1/12) = 532 MHz
	mww 0x53F8001C 0xB2C01

	set ESDMISC 0xB8001010
	set ESDCFG0 0xB8001004
	set ESDCTL0 0xB8001000

	# Enable DDR
	mww $ESDMISC 0x4

	# Timing
	mww $ESDCFG0 0x007fff3f

	# CS0
	mww $ESDCTL0 0x92120080

	# Precharge all dummy write
	mww 0x80000400 0

	# Enable CS) auto-refresh
	mww $ESDCTL0 0xA2120080

	# Refresh twice (dummy writes)
	mww 0x80000000 0
	mww 0x80000000 0

	# Enable CS0 load mode register
	mww $ESDCTL0 0xB2120080

	# Dummy writes
	mwb 0x80000033 0x01
	mwb 0x81000000 0x01

	mww $ESDCTL0 0x82226080
	mww 0x80000000 0

	# Re-enable fast writing
	memwrite burst enable
}