diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/clk_gm20b.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/clk_gm20b.c b/drivers/gpu/nvgpu/gm20b/clk_gm20b.c index 7f0e3055..4f63f956 100644 --- a/drivers/gpu/nvgpu/gm20b/clk_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/clk_gm20b.c | |||
@@ -1266,13 +1266,16 @@ static long gm20b_round_rate(struct clk_hw *hw, unsigned long rate, | |||
1266 | unsigned long *parent_rate) | 1266 | unsigned long *parent_rate) |
1267 | { | 1267 | { |
1268 | struct clk_gk20a *clk = to_clk_gk20a(hw); | 1268 | struct clk_gk20a *clk = to_clk_gk20a(hw); |
1269 | u32 freq, old_freq; | 1269 | u32 freq; |
1270 | struct pll tmp_pll; | 1270 | struct pll tmp_pll; |
1271 | unsigned long maxrate; | ||
1272 | |||
1273 | maxrate = tegra_dvfs_get_maxrate(clk_get_parent(clk->tegra_clk)); | ||
1274 | if (rate > maxrate) | ||
1275 | rate = maxrate; | ||
1271 | 1276 | ||
1272 | mutex_lock(&clk->clk_mutex); | 1277 | mutex_lock(&clk->clk_mutex); |
1273 | old_freq = clk->gpc_pll.freq; | ||
1274 | freq = rate_gpu_to_gpc2clk(rate); | 1278 | freq = rate_gpu_to_gpc2clk(rate); |
1275 | |||
1276 | if (freq > gpc_pll_params.max_freq) | 1279 | if (freq > gpc_pll_params.max_freq) |
1277 | freq = gpc_pll_params.max_freq; | 1280 | freq = gpc_pll_params.max_freq; |
1278 | else if (freq < gpc_pll_params.min_freq) | 1281 | else if (freq < gpc_pll_params.min_freq) |
@@ -1280,7 +1283,6 @@ static long gm20b_round_rate(struct clk_hw *hw, unsigned long rate, | |||
1280 | 1283 | ||
1281 | tmp_pll = clk->gpc_pll; | 1284 | tmp_pll = clk->gpc_pll; |
1282 | clk_config_pll(clk, &tmp_pll, &gpc_pll_params, &freq, true); | 1285 | clk_config_pll(clk, &tmp_pll, &gpc_pll_params, &freq, true); |
1283 | |||
1284 | mutex_unlock(&clk->clk_mutex); | 1286 | mutex_unlock(&clk->clk_mutex); |
1285 | 1287 | ||
1286 | return rate_gpc2clk_to_gpu(tmp_pll.freq); | 1288 | return rate_gpc2clk_to_gpu(tmp_pll.freq); |