i.MX28: Fix VDDIO and VDDA setup
authorMarek Vasut <marek.vasut@gmail.com>
Mon, 30 Jan 2012 14:00:01 +0000 (14:00 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Mon, 27 Feb 2012 20:19:23 +0000 (21:19 +0100)
The DC power STS shouldn't be checked if booting off 5V supply.

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Detlev Zundel <dzu@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Robert Deliƫn <robert@delien.nl>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Matthias Fuchs <matthias.fuchs@esd.eu>
arch/arm/cpu/arm926ejs/mx28/spl_power_init.c

index 380b120dc9c6d1e623f1cf9fa310ad4bfd951448..271da8dd7671d7ef79e767a862dce261fdba7622 100644 (file)
@@ -726,7 +726,9 @@ void mx28_power_set_vddio(uint32_t new_target, uint32_t new_brownout)
                        clrsetbits_le32(&power_regs->hw_power_vddioctrl,
                                POWER_VDDIOCTRL_TRG_MASK, diff);
 
-                       if (powered_by_linreg)
+                       if (powered_by_linreg ||
+                               (readl(&power_regs->hw_power_sts) &
+                                       POWER_STS_VDD5V_GT_VDDIO))
                                early_delay(1500);
                        else {
                                while (!(readl(&power_regs->hw_power_sts) &
@@ -761,7 +763,9 @@ void mx28_power_set_vddio(uint32_t new_target, uint32_t new_brownout)
                        clrsetbits_le32(&power_regs->hw_power_vddioctrl,
                                POWER_VDDIOCTRL_TRG_MASK, diff);
 
-                       if (powered_by_linreg)
+                       if (powered_by_linreg ||
+                               (readl(&power_regs->hw_power_sts) &
+                                       POWER_STS_VDD5V_GT_VDDIO))
                                early_delay(1500);
                        else {
                                while (!(readl(&power_regs->hw_power_sts) &
@@ -819,7 +823,9 @@ void mx28_power_set_vddd(uint32_t new_target, uint32_t new_brownout)
                        clrsetbits_le32(&power_regs->hw_power_vdddctrl,
                                POWER_VDDDCTRL_TRG_MASK, diff);
 
-                       if (powered_by_linreg)
+                       if (powered_by_linreg ||
+                               (readl(&power_regs->hw_power_sts) &
+                                       POWER_STS_VDD5V_GT_VDDIO))
                                early_delay(1500);
                        else {
                                while (!(readl(&power_regs->hw_power_sts) &
@@ -854,7 +860,9 @@ void mx28_power_set_vddd(uint32_t new_target, uint32_t new_brownout)
                        clrsetbits_le32(&power_regs->hw_power_vdddctrl,
                                        POWER_VDDDCTRL_TRG_MASK, diff);
 
-                       if (powered_by_linreg)
+                       if (powered_by_linreg ||
+                               (readl(&power_regs->hw_power_sts) &
+                                       POWER_STS_VDD5V_GT_VDDIO))
                                early_delay(1500);
                        else {
                                while (!(readl(&power_regs->hw_power_sts) &