]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/blobdiff - arch/arm/mach-tegra/board-ardbeg-sensors.c
ARM: tegra: ardbeg: add 2.8V supply for dw9718
[sojka/nv-tegra/linux-3.10.git] / arch / arm / mach-tegra / board-ardbeg-sensors.c
index e67e1f528dd402b586120a5b53704a551812f968..fbac42ef4323b0ffe3e82f832991d76329fc4886 100644 (file)
@@ -567,6 +567,7 @@ struct imx135_platform_data ardbeg_imx135_data = {
                .repeat = 1,
                .delay_frm = 0,
        },
+       .ext_reg = true,
        .power_on = ardbeg_imx135_power_on,
        .power_off = ardbeg_imx135_power_off,
 };
@@ -588,7 +589,7 @@ static int ardbeg_dw9718_power_on(struct dw9718_power_rail *pw)
        int err;
        pr_info("%s\n", __func__);
 
-       if (unlikely(!pw || !pw->vdd || !pw->vdd_i2c))
+       if (unlikely(!pw || !pw->vdd || !pw->vdd_i2c || !pw->vana))
                return -EFAULT;
 
        err = regulator_enable(pw->vdd);
@@ -599,12 +600,19 @@ static int ardbeg_dw9718_power_on(struct dw9718_power_rail *pw)
        if (unlikely(err))
                goto dw9718_i2c_fail;
 
+       err = regulator_enable(pw->vana);
+       if (unlikely(err))
+               goto dw9718_ana_fail;
+
        usleep_range(1000, 1020);
 
        /* return 1 to skip the in-driver power_on sequence */
        pr_debug("%s --\n", __func__);
        return 1;
 
+dw9718_ana_fail:
+       regulator_disable(pw->vdd_i2c);
+
 dw9718_i2c_fail:
        regulator_disable(pw->vdd);
 
@@ -617,11 +625,12 @@ static int ardbeg_dw9718_power_off(struct dw9718_power_rail *pw)
 {
        pr_info("%s\n", __func__);
 
-       if (unlikely(!pw || !pw->vdd || !pw->vdd_i2c))
+       if (unlikely(!pw || !pw->vdd || !pw->vdd_i2c || !pw->vana))
                return -EFAULT;
 
        regulator_disable(pw->vdd);
        regulator_disable(pw->vdd_i2c);
+       regulator_disable(pw->vana);
 
        return 1;
 }