]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/arm/cpu/arm926ejs/mx28/spl_power_init.c
cleanup spl_power_init.c:
[karo-tx-uboot.git] / arch / arm / cpu / arm926ejs / mx28 / spl_power_init.c
index a4dc2a31b7b275c918d40987555bdae72d7ad9ed..3f4728b7070de28e2be03bb373fb8103ca894062 100644 (file)
@@ -240,8 +240,8 @@ void mx28_enable_4p2_dcdc_input(int xfer)
                clrbits_le32(&power_regs->hw_power_minpwr, POWER_MINPWR_PWD_BO);
 
        while (readl(&power_regs->hw_power_ctrl) & POWER_CTRL_VBUS_VALID_IRQ)
-               clrbits_le32(&power_regs->hw_power_ctrl,
-                               POWER_CTRL_VBUS_VALID_IRQ);
+               writel(POWER_CTRL_VBUS_VALID_IRQ,
+                       &power_regs->hw_power_ctrl_clr);
 
        if (prev_5v_brnout) {
                writel(POWER_5VCTRL_PWDN_5VBRNOUT,
@@ -256,8 +256,8 @@ void mx28_enable_4p2_dcdc_input(int xfer)
        }
 
        while (readl(&power_regs->hw_power_ctrl) & POWER_CTRL_VDD5V_DROOP_IRQ)
-               clrbits_le32(&power_regs->hw_power_ctrl,
-                               POWER_CTRL_VDD5V_DROOP_IRQ);
+               writel(POWER_CTRL_VDD5V_DROOP_IRQ,
+                       &power_regs->hw_power_ctrl_clr);
 
        if (prev_5v_droop)
                clrbits_le32(&power_regs->hw_power_ctrl,
@@ -491,6 +491,7 @@ int mx28_get_batt_volt(void)
        struct mx28_power_regs *power_regs =
                (struct mx28_power_regs *)MXS_POWER_BASE;
        uint32_t volt = readl(&power_regs->hw_power_battmonitor);
+
        volt &= POWER_BATTMONITOR_BATT_VAL_MASK;
        volt >>= POWER_BATTMONITOR_BATT_VAL_OFFSET;
        volt *= 8;
@@ -499,7 +500,7 @@ int mx28_get_batt_volt(void)
 
 int mx28_is_batt_ready(void)
 {
-       return (mx28_get_batt_volt() >= 3600);
+       return mx28_get_batt_volt() >= 3600;
 }
 
 void mx28_5v_boot(void)
@@ -559,10 +560,7 @@ int mx28_is_batt_good(void)
                (struct mx28_power_regs *)MXS_POWER_BASE;
        uint32_t volt;
 
-       volt = readl(&power_regs->hw_power_battmonitor);
-       volt &= POWER_BATTMONITOR_BATT_VAL_MASK;
-       volt >>= POWER_BATTMONITOR_BATT_VAL_OFFSET;
-       volt *= 8;
+       volt = mx28_get_batt_volt();
 
        if ((volt >= 2400) && (volt <= 4300))
                return 1;
@@ -583,10 +581,7 @@ int mx28_is_batt_good(void)
 
        early_delay(500000);
 
-       volt = readl(&power_regs->hw_power_battmonitor);
-       volt &= POWER_BATTMONITOR_BATT_VAL_MASK;
-       volt >>= POWER_BATTMONITOR_BATT_VAL_OFFSET;
-       volt *= 8;
+       volt = mx28_get_batt_volt();
 
        if (volt >= 3500)
                return 0;
@@ -636,7 +631,10 @@ int mx28_get_vddio_power_source_off(void)
                (struct mx28_power_regs *)MXS_POWER_BASE;
        uint32_t tmp;
 
-       if (readl(&power_regs->hw_power_sts) & POWER_STS_VDD5V_GT_VDDIO) {
+       if ((readl(&power_regs->hw_power_sts) & POWER_STS_VDD5V_GT_VDDIO) &&
+               !(readl(&power_regs->hw_power_5vctrl) &
+                       POWER_5VCTRL_ILIMIT_EQ_ZERO)) {
+
                tmp = readl(&power_regs->hw_power_vddioctrl);
                if (tmp & POWER_VDDIOCTRL_DISABLE_FET) {
                        if ((tmp & POWER_VDDIOCTRL_LINREG_OFFSET_MASK) ==
@@ -655,7 +653,6 @@ int mx28_get_vddio_power_source_off(void)
        }
 
        return 0;
-
 }
 
 int mx28_get_vddd_power_source_off(void)
@@ -898,7 +895,6 @@ void mx28_power_init(void)
 
        writel(POWER_5VCTRL_PWDN_5VBRNOUT, &power_regs->hw_power_5vctrl_set);
 
-       early_delay(1000);
 }
 
 #ifdef CONFIG_SPL_MX28_PSWITCH_WAIT