From 12202fbdcfd73129b5bc582473fa6a8a93306de7 Mon Sep 17 00:00:00 2001 From: Peter Daifuku Date: Tue, 1 Oct 2019 15:20:25 -0700 Subject: nvgpu: fix get_maxrate when no dvfs In nvgpu_linux_get_maxrate, if tegra_dvfs_get_maxrate returns 0 (a sign that there is no dvfs support), call nvgpu_clk_arb_get_arbiter_clk_range to get the max gpu frequency. Bug 200543218 Change-Id: I4f9bc0acaef98cd9dfa22f709656f4bb7e9fd349 Signed-off-by: Peter Daifuku Reviewed-on: https://git-master.nvidia.com/r/2215161 GVS: Gerrit_Virtual_Submit Reviewed-by: Alex Waterman Reviewed-by: Satish Arora Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/linux/clk.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'drivers/gpu/nvgpu/os/linux/clk.c') diff --git a/drivers/gpu/nvgpu/os/linux/clk.c b/drivers/gpu/nvgpu/os/linux/clk.c index 471f2aef..e9796eaf 100644 --- a/drivers/gpu/nvgpu/os/linux/clk.c +++ b/drivers/gpu/nvgpu/os/linux/clk.c @@ -122,10 +122,20 @@ static int nvgpu_linux_predict_mv_at_hz_cur_tfloor(struct clk_gk20a *clk, static unsigned long nvgpu_linux_get_maxrate(struct gk20a *g, u32 api_domain) { int ret; + u16 min_mhz, max_mhz; switch (api_domain) { case CTRL_CLK_DOMAIN_GPCCLK: ret = tegra_dvfs_get_maxrate(g->clk.tegra_clk_parent); + /* If dvfs not supported */ + if (ret == 0) { + int err = nvgpu_clk_arb_get_arbiter_clk_range(g, + NVGPU_CLK_DOMAIN_GPCCLK, + &min_mhz, &max_mhz); + if (err == 0) { + ret = max_mhz * 1000000L; + } + } break; default: nvgpu_err(g, "unknown clock: %u", api_domain); -- cgit v1.2.2