ARM: tegra: dvfs: Fix predict millivolts interface
Alex Frid [Wed, 18 Sep 2013 05:09:36 +0000 (22:09 -0700)]
Predict millivolts interface selected pll or dfll mode tables based
on target rate and dynamic dvfs state: rail mode, and current dvfs
clock rate. Since interface clients may not be serialized with run
time rate/voltage scaling (e.g., edp client) it opens possibility for
races. On the other hand there is no need to use current dynamically
changes state to select scaling table - comparing target rate, with
initialized once dfll rate range is sufficient. This commit updated
predict millivolts interface accordingly.

Bug 1370030

Change-Id: I89167607d346ed5f2dfe1eedc27aabacd87e7303
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/276139
Reviewed-by: Mrutyunjay Sawant <msawant@nvidia.com>
Tested-by: Mrutyunjay Sawant <msawant@nvidia.com>

arch/arm/mach-tegra/dvfs.c

index 9bd2408..b3bc0c5 100644 (file)
@@ -571,7 +571,8 @@ int tegra_dvfs_predict_millivolts(struct clk *c, unsigned long rate)
        if (!rate || !c->dvfs)
                return 0;
 
-       millivolts = dvfs_get_millivolts(c->dvfs, rate);
+       millivolts = tegra_dvfs_is_dfll_range(c->dvfs, rate) ?
+               c->dvfs->dfll_millivolts : c->dvfs->millivolts;
        return predict_millivolts(c, millivolts, rate);
 }