diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/gp106/clk_arb_gp106.c | 12 |
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; |