summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c
diff options
context:
space:
mode:
authorSachit Kadle <skadle@nvidia.com>2017-01-24 13:22:13 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-06-19 19:36:26 -0400
commitb3a7c2b305ec6f895dc236f0c5f163bd4cbeb248 (patch)
treea1df93a947d7f5d60a9e57a69d0058d430844c92 /drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c
parent2535c81c6c916f9f2e1224e17e80d240df569e49 (diff)
gpu: nvgpu: vgpu: add devfreq support
Add devfreq governor support in order to allow frequency scaling in virtualization config. GPU clock frequency operations are re-directed to the server over RPC. Bug 200237433 Change-Id: I1c8e565a4fff36d3456dc72ebb20795b7822650e Signed-off-by: Sachit Kadle <skadle@nvidia.com> Reviewed-on: http://git-master/r/1295542 (cherry picked from commit d5c956fc06697eda3829c67cb22987e538213b29) Reviewed-on: http://git-master/r/1280968 (cherry picked from commit 25e2b3cf7cb5559a6849c0024d42c157564a9be2) Reviewed-on: http://git-master/r/1321835 (cherry picked from commit f871b52fd3f553d6b6375a3c848fbca272ed8e29) Reviewed-on: http://git-master/r/1313468 Tested-by: Aparna Das <aparnad@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: Richard Zhao <rizhao@nvidia.com> GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c b/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c
index e33fc29f..f2c877f9 100644
--- a/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c
+++ b/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c
@@ -16,6 +16,7 @@
16#include "gk20a.h" 16#include "gk20a.h"
17#include "hal_gk20a.h" 17#include "hal_gk20a.h"
18#include "platform_gk20a.h" 18#include "platform_gk20a.h"
19#include "vgpu/clk_vgpu.h"
19 20
20#include <nvgpu/nvhost.h> 21#include <nvgpu/nvhost.h>
21 22
@@ -23,7 +24,14 @@ static int gk20a_tegra_probe(struct device *dev)
23{ 24{
24#ifdef CONFIG_TEGRA_GK20A_NVHOST 25#ifdef CONFIG_TEGRA_GK20A_NVHOST
25 struct gk20a_platform *platform = dev_get_drvdata(dev); 26 struct gk20a_platform *platform = dev_get_drvdata(dev);
26 return nvgpu_get_nvhost_dev(platform->g); 27 int ret;
28
29 ret = nvgpu_get_nvhost_dev(platform->g);
30 if (ret)
31 return ret;
32
33 vgpu_init_clk_support(platform->g);
34 return 0;
27#else 35#else
28 return 0; 36 return 0;
29#endif 37#endif
@@ -47,5 +55,11 @@ struct gk20a_platform vgpu_tegra_platform = {
47 .probe = gk20a_tegra_probe, 55 .probe = gk20a_tegra_probe,
48 .default_big_page_size = SZ_128K, 56 .default_big_page_size = SZ_128K,
49 57
58 .clk_round_rate = vgpu_clk_round_rate,
59 .get_clk_freqs = vgpu_clk_get_freqs,
60
61 /* frequency scaling configuration */
62 .devfreq_governor = "userspace",
63
50 .virtual_dev = true, 64 .virtual_dev = true,
51}; 65};