diff options
author | Rocky Hao <rocky.hao@rock-chips.com> | 2018-02-06 17:01:55 +0800 |
---|---|---|
committer | Tao Huang <huangtao@rock-chips.com> | 2018-02-08 09:47:01 +0800 |
commit | f417571488bb393278a8ac8378de186b56833fc9 (patch) | |
tree | 47a89a6ced28a2a2b495d7aa45bba9d2d1514cd5 /drivers/devfreq | |
parent | ae5b1c4df1a48f275f78f1d08de9462c6aec886f (diff) |
PM / devfreq: rockchip_dmc: record opp rate instead of real clock rate
opp rate is used to calc power in thermal framework, so we record this rate
instead of real clock rate.
Change-Id: Ic51a8c36be8d63fcf765e6d49930d1d437a2e502
Signed-off-by: Rocky Hao <rocky.hao@rock-chips.com>
Diffstat (limited to 'drivers/devfreq')
-rw-r--r-- | drivers/devfreq/rockchip_dmc.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c index 7710925acc85..69b57982e7e1 100644 --- a/drivers/devfreq/rockchip_dmc.c +++ b/drivers/devfreq/rockchip_dmc.c @@ -705,7 +705,7 @@ static int rockchip_dmcfreq_target(struct device *dev, unsigned long *freq, struct dev_pm_opp *opp; struct cpufreq_policy *policy; unsigned long old_clk_rate = dmcfreq->rate; - unsigned long temp_rate, target_volt, target_rate; + unsigned long opp_rate, target_volt, target_rate; unsigned int cpu_cur, cpufreq_cur; int err = 0; @@ -716,14 +716,14 @@ static int rockchip_dmcfreq_target(struct device *dev, unsigned long *freq, rcu_read_unlock(); return PTR_ERR(opp); } - temp_rate = dev_pm_opp_get_freq(opp); + opp_rate = dev_pm_opp_get_freq(opp); target_volt = dev_pm_opp_get_voltage(opp); rcu_read_unlock(); - target_rate = clk_round_rate(dmcfreq->dmc_clk, temp_rate); + target_rate = clk_round_rate(dmcfreq->dmc_clk, opp_rate); if ((long)target_rate <= 0) - target_rate = temp_rate; + target_rate = opp_rate; if (dmcfreq->rate == target_rate) { if (dmcfreq->volt == target_volt) @@ -804,7 +804,6 @@ static int rockchip_dmcfreq_target(struct device *dev, unsigned long *freq, * 2. Ddr frequency scaling sucessful, we get the rate we set. */ dmcfreq->rate = clk_get_rate(dmcfreq->dmc_clk); - dmcfreq->devfreq->last_status.current_frequency = dmcfreq->rate; /* If get the incorrect rate, set voltage to old value. */ if (dmcfreq->rate != target_rate) { @@ -822,6 +821,8 @@ static int rockchip_dmcfreq_target(struct device *dev, unsigned long *freq, } } + dmcfreq->devfreq->last_status.current_frequency = opp_rate; + dmcfreq->volt = target_volt; out: __cpufreq_driver_target(policy, cpufreq_cur, CPUFREQ_RELATION_L); @@ -844,7 +845,6 @@ static int rockchip_dmcfreq_get_dev_status(struct device *dev, if (ret < 0) return ret; - stat->current_frequency = dmcfreq->rate; stat->busy_time = edata.load_count; stat->total_time = edata.total_count; |