u-boot-brain/arch
Siarhei Siamashka f8e88b6837 sunxi: dram: Fix CKE delay handling for sun4i/sun5i
Before driving the CKE pin (Clock Enable) high, the DDR3 spec requires
to wait for additional 500 us after the RESET pin is de-asserted.

The DRAM controller takes care of this delay by itself, using a
configurable counter in the SDR_IDCR register. This works in the same
way on sun4i/sun5i/sun7i hardware (even the default register value
0x00c80064 is identical). Except that the counter is ticking a bit
slower on sun7i (3 DRAM clock cycles instead of 2), resulting in
longer actual delays for the same settings.

This patch configures the SDR_IDCR register for all sun4i/sun5i/sun7i
SoC variants and not just for sun7i alone. Also an explicit udelay(500)
is added immediately after DDR3 reset for extra safety. This is a
duplicated functionality. But since we don't have perfect documentation,
it may be reasonable to play safe. Half a millisecond boot time increase
is not that significant. Boot time can be always optimized later.
Preferebly by the people, who have the hardware equipment to check the
actual signals on the RESET and CKE lines and verify all the timings.

The old code did not configure the SDR_IDCR register for sun4i/sun5i,
but performed the DDR3 reset very early for sun4i/sun5i. This resulted
in a larger time gap between the DDR3 reset and the DDR3 initialization
steps and reduced the chances of CKE delay timing violation to cause
real troubles.

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2014-08-12 08:42:32 +02:00
..
arc kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
arm sunxi: dram: Fix CKE delay handling for sun4i/sun5i 2014-08-12 08:42:32 +02:00
avr32 kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
blackfin kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
m68k kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
microblaze kconfig: add board Kconfig and defconfig files 2014-07-30 08:48:01 -04:00
mips kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
nds32 kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
nios2 kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
openrisc kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
powerpc Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx 2014-08-06 08:38:18 -04:00
sandbox kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
sh kconfig: add board Kconfig and defconfig files 2014-07-30 08:48:01 -04:00
sparc kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
x86 kconfig: delete redundant CONFIG_${ARCH} definition 2014-07-30 14:42:02 -04:00
.gitignore .gitignore: drop include/asm/proc from ignore pattern 2014-06-19 11:18:54 -04:00
Kconfig kconfig: add basic Kconfig files 2014-07-30 08:48:02 -04:00