]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
regulator: max77660: program VSR after DVFS_EN is set
authorNeil Patel <neilp@nvidia.com>
Fri, 10 May 2013 17:31:30 +0000 (13:31 -0400)
committerDan Willemsen <dwillemsen@nvidia.com>
Sat, 14 Sep 2013 20:12:53 +0000 (13:12 -0700)
Program VSR after DVFS is enabled to avoid VSR being reset to its
default value.

Bug 1257234

Change-Id: Ie42f9f24d83aa88958ac152e097d9dc7c87b80da
Signed-off-by: Neil Patel <neilp@nvidia.com>
Reviewed-on: http://git-master/r/227529
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
drivers/regulator/max77660-regulator.c

index 21c29dc7dd0ec2f9123e2373d2e8e2e6efa063ec..040efde38ae595e3dc027a185119b89a39a98438 100644 (file)
@@ -907,13 +907,6 @@ static int max77660_pwm_dvfs_init(struct device *parent,
        if (!dvfs_pd->en_pwm)
                return 0;
 
-       val = DIV_ROUND_UP((dvfs_pd->default_voltage_uV - DVFS_BASE_VOLTAGE_UV),
-                       DVFS_VOLTAGE_STEP_UV);
-       ret = max77660_reg_write(parent, MAX77660_PWR_SLAVE,
-                       MAX77660_REG_BUCK4_VSR, val);
-       if (ret < 0)
-               return ret;
-
        ret = max77660_reg_update(parent, MAX77660_PWR_SLAVE,
                        MAX77660_REG_BUCK4_CNFG,
                        1 << MAX77660_BUCK4_DVFS_EN_SHIFT,
@@ -921,6 +914,14 @@ static int max77660_pwm_dvfs_init(struct device *parent,
        if (ret < 0)
                return ret;
 
+       /* VSR gets reset after DVFS_EN changes from 0 to 1 */
+       val = DIV_ROUND_UP((dvfs_pd->default_voltage_uV - DVFS_BASE_VOLTAGE_UV),
+                       DVFS_VOLTAGE_STEP_UV);
+       ret = max77660_reg_write(parent, MAX77660_PWR_SLAVE,
+                       MAX77660_REG_BUCK4_VSR, val);
+       if (ret < 0)
+               return ret;
+
        val = (1 << MAX77660_BUCK4_DVFS_PWMEN_SHIFT);
        switch (dvfs_pd->step_voltage_uV) {
        case 12500: