aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesper Nilsson <jesper.nilsson@axis.com>2010-08-03 11:34:28 -0400
committerJesper Nilsson <jesper.nilsson@axis.com>2010-08-04 07:02:30 -0400
commit98560bd83e73b5c0cf38e3d984892f46a405a172 (patch)
tree7ebd32772309f6ea50866b3fe7a9364ce3c77996
parent2d0503d1a6816e920e5b827bbe4eea7370c8130e (diff)
CRIS: Add more delays in DDR setup
Also, make DDR latency configurable. Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
-rw-r--r--arch/cris/arch-v32/mach-a3/Kconfig4
-rw-r--r--arch/cris/arch-v32/mach-a3/dram_init.S16
-rw-r--r--arch/cris/arch-v32/mach-a3/hw_settings.S2
3 files changed, 21 insertions, 1 deletions
diff --git a/arch/cris/arch-v32/mach-a3/Kconfig b/arch/cris/arch-v32/mach-a3/Kconfig
index a4df06d5997a..7796aafc711e 100644
--- a/arch/cris/arch-v32/mach-a3/Kconfig
+++ b/arch/cris/arch-v32/mach-a3/Kconfig
@@ -33,6 +33,10 @@ config ETRAX_DDR2_CONFIG
33 hex "DDR2 config" 33 hex "DDR2 config"
34 default "0" 34 default "0"
35 35
36config ETRAX_DDR2_LATENCY
37 hex "DDR2 latency"
38 default "0"
39
36config ETRAX_PIO_CE0_CFG 40config ETRAX_PIO_CE0_CFG
37 hex "PIO CE0 configuration" 41 hex "PIO CE0 configuration"
38 default "0" 42 default "0"
diff --git a/arch/cris/arch-v32/mach-a3/dram_init.S b/arch/cris/arch-v32/mach-a3/dram_init.S
index 94d6b41cb299..ec8648be32d3 100644
--- a/arch/cris/arch-v32/mach-a3/dram_init.S
+++ b/arch/cris/arch-v32/mach-a3/dram_init.S
@@ -24,11 +24,21 @@
24 24
25 ;; Refer to ddr2 MDS for initialization sequence 25 ;; Refer to ddr2 MDS for initialization sequence
26 26
27 ; 2. Wait 200us
28 move.d 10000, $r2
291: bne 1b
30 subq 1, $r2
31
27 ; Start clock 32 ; Start clock
28 move.d REG_ADDR(ddr2, regi_ddr2_ctrl, rw_phy_cfg), $r0 33 move.d REG_ADDR(ddr2, regi_ddr2_ctrl, rw_phy_cfg), $r0
29 move.d REG_STATE(ddr2, rw_phy_cfg, en, yes), $r1 34 move.d REG_STATE(ddr2, rw_phy_cfg, en, yes), $r1
30 move.d $r1, [$r0] 35 move.d $r1, [$r0]
31 36
37 ; 2. Wait 200us
38 move.d 10000, $r2
391: bne 1b
40 subq 1, $r2
41
32 ; Reset phy and start calibration 42 ; Reset phy and start calibration
33 move.d REG_ADDR(ddr2, regi_ddr2_ctrl, rw_phy_ctrl), $r0 43 move.d REG_ADDR(ddr2, regi_ddr2_ctrl, rw_phy_ctrl), $r0
34 move.d REG_STATE(ddr2, rw_phy_ctrl, rst, yes) | \ 44 move.d REG_STATE(ddr2, rw_phy_ctrl, rst, yes) | \
@@ -52,6 +62,10 @@ do_cmd:
52 lslq 16, $r1 62 lslq 16, $r1
53 or.d $r3, $r1 63 or.d $r3, $r1
54 move.d $r1, [$r0] 64 move.d $r1, [$r0]
65 ; 2. Wait 200us
66 move.d 10000, $r4
671: bne 1b
68 subq 1, $r4
55 cmp.d sdram_commands_end, $r2 69 cmp.d sdram_commands_end, $r2
56 blo command_loop 70 blo command_loop
57 nop 71 nop
@@ -63,7 +77,7 @@ do_cmd:
63 77
64 ; Set latency 78 ; Set latency
65 move.d REG_ADDR(ddr2, regi_ddr2_ctrl, rw_latency), $r0 79 move.d REG_ADDR(ddr2, regi_ddr2_ctrl, rw_latency), $r0
66 move.d 0x13, $r1 80 move.d CONFIG_ETRAX_DDR2_LATENCY, $r1
67 move.d $r1, [$r0] 81 move.d $r1, [$r0]
68 82
69 ; Set configuration 83 ; Set configuration
diff --git a/arch/cris/arch-v32/mach-a3/hw_settings.S b/arch/cris/arch-v32/mach-a3/hw_settings.S
index 258a6329cd4a..0145725a1ce5 100644
--- a/arch/cris/arch-v32/mach-a3/hw_settings.S
+++ b/arch/cris/arch-v32/mach-a3/hw_settings.S
@@ -31,6 +31,8 @@
31 ; Register values 31 ; Register values
32 .dword REG_ADDR(ddr2, regi_ddr2_ctrl, rw_cfg) 32 .dword REG_ADDR(ddr2, regi_ddr2_ctrl, rw_cfg)
33 .dword CONFIG_ETRAX_DDR2_CONFIG 33 .dword CONFIG_ETRAX_DDR2_CONFIG
34 .dword REG_ADDR(ddr2, regi_ddr2_ctrl, rw_latency)
35 .dword CONFIG_ETRAX_DDR2_LATENCY
34 .dword REG_ADDR(ddr2, regi_ddr2_ctrl, rw_timing) 36 .dword REG_ADDR(ddr2, regi_ddr2_ctrl, rw_timing)
35 .dword CONFIG_ETRAX_DDR2_TIMING 37 .dword CONFIG_ETRAX_DDR2_TIMING
36 .dword CONFIG_ETRAX_DDR2_MRS 38 .dword CONFIG_ETRAX_DDR2_MRS