summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2013-04-28 14:17:45 +0000
committerStefano Babic <sbabic@denx.de>2013-05-06 10:20:33 +0200
commitdd3ecf020ec6e1932c473ef504e56a036b52bd4e (patch)
tree309a095354f1fa88015ee79171f2d2fecad8dde6 /arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
parent286a88cf34bcfec4a1051b5ee3553277e6c31e2e (diff)
downloadblackbird-obmc-uboot-dd3ecf020ec6e1932c473ef504e56a036b52bd4e.tar.gz
blackbird-obmc-uboot-dd3ecf020ec6e1932c473ef504e56a036b52bd4e.zip
arm: mx23: Fix VDDMEM misconfiguration
The VDDMEM ramped up in very weird way as it was horribly misconfigured. Instead of setting up VDDMEM in one swipe, let it rise slowly the same way as VDDD and VDDA in spl_power_init.c and then only clear ILIMIT before memory gets inited. This makes sure the VDDMEM rises sanely, not jumps up and down as it did till now. The VDDMEM prior to this change did this: 2V0____ .--------2V5 | `--' 0V____| The VDDMEM now does this: 2V0_____,-----------2V5 / 0V__| Moreover, VDDIO on MX23 uses 25mV steps while MX28 uses 50mV steps, fix this difference too. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Fabio Estevam <fabio.estevam@freescale.com> Cc: Otavio Salvador <otavio@ossystems.com.br> Cc: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c')
-rw-r--r--arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
index 3902406441..07db27927f 100644
--- a/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
+++ b/arch/arm/cpu/arm926ejs/mxs/spl_mem_init.c
@@ -256,17 +256,9 @@ static void mx23_mem_setup_vddmem(void)
struct mxs_power_regs *power_regs =
(struct mxs_power_regs *)MXS_POWER_BASE;
- writel((0x10 << POWER_VDDMEMCTRL_TRG_OFFSET) |
- POWER_VDDMEMCTRL_ENABLE_ILIMIT |
- POWER_VDDMEMCTRL_ENABLE_LINREG |
- POWER_VDDMEMCTRL_PULLDOWN_ACTIVE,
- &power_regs->hw_power_vddmemctrl);
+ clrbits_le32(&power_regs->hw_power_vddmemctrl,
+ POWER_VDDMEMCTRL_ENABLE_ILIMIT);
- early_delay(10000);
-
- writel((0x10 << POWER_VDDMEMCTRL_TRG_OFFSET) |
- POWER_VDDMEMCTRL_ENABLE_LINREG,
- &power_regs->hw_power_vddmemctrl);
}
static void mx23_mem_init(void)
OpenPOWER on IntegriCloud