summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c
diff options
context:
space:
mode:
authorDavid Nieto <dmartineznie@nvidia.com>2016-11-10 20:12:33 -0500
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:56:52 -0500
commitcd25b202361ace2a04594de38a48f66aa75e1cb8 (patch)
tree8ed1bfd43960ecf73c703516e18c8a157c0d8702 /drivers/gpu/nvgpu/gp106/clk_arb_gp106.c
parent8f8ee32cd6082b8eee9585e9334656d1365c5273 (diff)
gpu: nvgpu: cap minimum gpc clocks to HW limits
JIRA: DNVGPU-180 Change-Id: I1928e77cea4ac87bf2ba2b6b7b2f2942dfb97de9 Signed-off-by: David Nieto <dmartineznie@nvidia.com> Reviewed-on: http://git-master/r/1251493 (cherry picked from commit 7b8a105652a3169d9ec0cb7ce52c3b92e42ca310) Reviewed-on: http://git-master/r/1274545 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Thomas Fleury <tfleury@nvidia.com> Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp106/clk_arb_gp106.c')
-rw-r--r--drivers/gpu/nvgpu/gp106/clk_arb_gp106.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c b/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c
index d1cbb32b..b4d1afbc 100644
--- a/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c
+++ b/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c
@@ -28,6 +28,9 @@ static int gp106_get_arbiter_clk_range(struct gk20a *g, u32 api_domain,
28 enum nv_pmu_clk_clkwhich clkwhich; 28 enum nv_pmu_clk_clkwhich clkwhich;
29 struct clk_set_info *p0_info; 29 struct clk_set_info *p0_info;
30 struct clk_set_info *p5_info; 30 struct clk_set_info *p5_info;
31 struct avfsfllobjs *pfllobjs = &(g->clk_pmu.avfs_fllobjs);
32
33 u16 limit_min_mhz;
31 34
32 switch (api_domain) { 35 switch (api_domain) {
33 case CTRL_CLK_DOMAIN_MCLK: 36 case CTRL_CLK_DOMAIN_MCLK:
@@ -52,7 +55,14 @@ static int gp106_get_arbiter_clk_range(struct gk20a *g, u32 api_domain,
52 if (!p0_info) 55 if (!p0_info)
53 return -EINVAL; 56 return -EINVAL;
54 57
55 *min_mhz = p5_info->min_mhz; 58 limit_min_mhz = p5_info->min_mhz;
59 /* WAR for DVCO min */
60 if (api_domain == CTRL_CLK_DOMAIN_GPC2CLK)
61 if ((pfllobjs->max_min_freq_mhz) &&
62 (pfllobjs->max_min_freq_mhz > limit_min_mhz))
63 limit_min_mhz = pfllobjs->max_min_freq_mhz;
64
65 *min_mhz = limit_min_mhz;
56 *max_mhz = p0_info->max_mhz; 66 *max_mhz = p0_info->max_mhz;
57 67
58 return 0; 68 return 0;