summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/clk
diff options
context:
space:
mode:
authorSrikar Srimath Tirumala <srikars@nvidia.com>2016-12-15 22:42:42 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2016-12-21 02:05:56 -0500
commit34d8421ab4e9ecd0af09f7fefe71b9a1d8781061 (patch)
tree2e728df78c393280b7a6207c58ffe697009b7ab9 /drivers/gpu/nvgpu/clk
parent23f9dddbb6c5f3e922addd2f286ad86b710c5573 (diff)
gpu: nvgpu: fix round_rate ops for CCF
Make round_rate return max freq when called with a value greater than the max clock frequency. Bug 200233943 Change-Id: Id128611f2d09b17a0a0edfefd4b526fd8c215bce Signed-off-by: Srikar Srimath Tirumala <srikars@nvidia.com> Reviewed-on: http://git-master/r/1272305 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Jonathan Hunter <jonathanh@nvidia.com> Tested-by: Jonathan Hunter <jonathanh@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Peter De Schrijver <pdeschrijver@nvidia.com> Reviewed-by: Shreshtha Sahu <ssahu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/clk')
-rw-r--r--drivers/gpu/nvgpu/clk/clk_common.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/clk/clk_common.c b/drivers/gpu/nvgpu/clk/clk_common.c
index 346ad12b..529efa15 100644
--- a/drivers/gpu/nvgpu/clk/clk_common.c
+++ b/drivers/gpu/nvgpu/clk/clk_common.c
@@ -45,6 +45,7 @@ unsigned long gk20a_clk_get_rate(struct gk20a *g)
45 return rate_gpc2clk_to_gpu(clk->gpc_pll.freq); 45 return rate_gpc2clk_to_gpu(clk->gpc_pll.freq);
46} 46}
47 47
48#ifdef CONFIG_TEGRA_CLK_FRAMEWORK
48long gk20a_clk_round_rate(struct gk20a *g, unsigned long rate) 49long gk20a_clk_round_rate(struct gk20a *g, unsigned long rate)
49{ 50{
50 /* make sure the clock is available */ 51 /* make sure the clock is available */
@@ -54,6 +55,17 @@ long gk20a_clk_round_rate(struct gk20a *g, unsigned long rate)
54 return clk_round_rate(clk_get_parent(g->clk.tegra_clk), rate); 55 return clk_round_rate(clk_get_parent(g->clk.tegra_clk), rate);
55} 56}
56 57
58#else
59long gk20a_clk_round_rate(struct gk20a *g, unsigned long rate)
60{
61 /* make sure the clock is available */
62 if (!gk20a_clk_get(g))
63 return rate;
64
65 return clk_round_rate(g->clk.tegra_clk, rate);
66}
67#endif
68
57int gk20a_clk_set_rate(struct gk20a *g, unsigned long rate) 69int gk20a_clk_set_rate(struct gk20a *g, unsigned long rate)
58{ 70{
59 return clk_set_rate(g->clk.tegra_clk, rate); 71 return clk_set_rate(g->clk.tegra_clk, rate);