summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2014-10-23 08:13:08 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:11:50 -0400
commitcc8e05c21533769d78f098149edb02e1f4394398 (patch)
tree18a0d39ef5c7c20e61328cc3eaf279178581b043 /drivers/gpu/nvgpu
parentfcf4a107996af1be341952447b0237338c0b76ea (diff)
gpu: nvgpu: Fix build without Tegra clk framework
Do not build clock code if TEGRA_CLK_FRAMEWORK is not defined. Also make GK20A_DEVFREQ depend on TEGRA_CLK_FRAMEWORK, and build scaling governor only if GK20A_DEVFREQ is enabled. Bug 1567274 Change-Id: I6ea1462e7a110fb46c9d66ceda71167cff19699e Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/562475
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r--drivers/gpu/nvgpu/Kconfig1
-rw-r--r--drivers/gpu/nvgpu/Makefile10
-rw-r--r--drivers/gpu/nvgpu/gk20a/clk_gk20a.h7
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c3
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_scale.h7
-rw-r--r--drivers/gpu/nvgpu/gm20b/clk_gm20b.h4
6 files changed, 28 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/Kconfig b/drivers/gpu/nvgpu/Kconfig
index 88c3130d..6797a719 100644
--- a/drivers/gpu/nvgpu/Kconfig
+++ b/drivers/gpu/nvgpu/Kconfig
@@ -44,6 +44,7 @@ config GK20A_PERFMON
44 decrease frequency if idle). 44 decrease frequency if idle).
45 45
46config GK20A_DEVFREQ 46config GK20A_DEVFREQ
47 depends on TEGRA_CLK_FRAMEWORK
47 bool "Use Devfreq" 48 bool "Use Devfreq"
48 help 49 help
49 Select this to use devfreq based scaling. 50 Select this to use devfreq based scaling.
diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile
index 5d98b98b..cf5d65cc 100644
--- a/drivers/gpu/nvgpu/Makefile
+++ b/drivers/gpu/nvgpu/Makefile
@@ -25,12 +25,10 @@ nvgpu-y := \
25 gk20a/priv_ring_gk20a.o \ 25 gk20a/priv_ring_gk20a.o \
26 gk20a/semaphore_gk20a.o \ 26 gk20a/semaphore_gk20a.o \
27 gk20a/fence_gk20a.o \ 27 gk20a/fence_gk20a.o \
28 gk20a/clk_gk20a.o \
29 gk20a/therm_gk20a.o \ 28 gk20a/therm_gk20a.o \
30 gk20a/gr_ctx_gk20a_sim.o \ 29 gk20a/gr_ctx_gk20a_sim.o \
31 gk20a/gr_ctx_gk20a.o \ 30 gk20a/gr_ctx_gk20a.o \
32 gk20a/gk20a_gating_reglist.o \ 31 gk20a/gk20a_gating_reglist.o \
33 gk20a/gk20a_scale.o \
34 gk20a/gk20a_sysfs.o \ 32 gk20a/gk20a_sysfs.o \
35 gk20a/ltc_gk20a.o \ 33 gk20a/ltc_gk20a.o \
36 gk20a/fb_gk20a.o \ 34 gk20a/fb_gk20a.o \
@@ -50,7 +48,6 @@ nvgpu-y := \
50 gm20b/gm20b_gating_reglist.o \ 48 gm20b/gm20b_gating_reglist.o \
51 gm20b/acr_gm20b.o \ 49 gm20b/acr_gm20b.o \
52 gm20b/pmu_gm20b.o \ 50 gm20b/pmu_gm20b.o \
53 gm20b/clk_gm20b.o \
54 gm20b/mm_gm20b.o \ 51 gm20b/mm_gm20b.o \
55 gm20b/regops_gm20b.o 52 gm20b/regops_gm20b.o
56 53
@@ -64,3 +61,10 @@ nvgpu-$(CONFIG_TEGRA_GR_VIRTUALIZATION) += \
64 vgpu/fifo_vgpu.o \ 61 vgpu/fifo_vgpu.o \
65 vgpu/mm_vgpu.o \ 62 vgpu/mm_vgpu.o \
66 vgpu/vgpu.o 63 vgpu/vgpu.o
64
65nvgpu-$(CONFIG_TEGRA_CLK_FRAMEWORK) += \
66 gm20b/clk_gm20b.o \
67 gk20a/clk_gk20a.o
68
69nvgpu-$(CONFIG_GK20A_DEVFREQ) += \
70 gk20a/gk20a_scale.o
diff --git a/drivers/gpu/nvgpu/gk20a/clk_gk20a.h b/drivers/gpu/nvgpu/gk20a/clk_gk20a.h
index 255c1a7c..c766fc46 100644
--- a/drivers/gpu/nvgpu/gk20a/clk_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/clk_gk20a.h
@@ -77,6 +77,13 @@ struct clk_gk20a {
77 bool debugfs_set; 77 bool debugfs_set;
78}; 78};
79 79
80struct gpu_ops;
81#ifdef CONFIG_TEGRA_CLK_FRAMEWORK
82void gk20a_init_clk_ops(struct gpu_ops *gops);
83#else
84static inline void gk20a_init_clk_ops(struct gpu_ops *gops) {}
85#endif
86
80/* APIs used for both GK20A and GM20B */ 87/* APIs used for both GK20A and GM20B */
81unsigned long gk20a_clk_get_rate(struct gk20a *g); 88unsigned long gk20a_clk_get_rate(struct gk20a *g);
82int gk20a_clk_set_rate(struct gk20a *g, unsigned long rate); 89int gk20a_clk_set_rate(struct gk20a *g, unsigned long rate);
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index 5641818e..c91a316a 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -765,7 +765,8 @@ static int gk20a_pm_prepare_poweroff(struct device *dev)
765 ret |= gk20a_fifo_suspend(g); 765 ret |= gk20a_fifo_suspend(g);
766 766
767 /* Disable GPCPLL */ 767 /* Disable GPCPLL */
768 ret |= g->ops.clk.suspend_clk_support(g); 768 if (g->ops.clk.suspend_clk_support)
769 ret |= g->ops.clk.suspend_clk_support(g);
769 770
770 g->power_on = false; 771 g->power_on = false;
771 772
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_scale.h b/drivers/gpu/nvgpu/gk20a/gk20a_scale.h
index 561ecaed..81c23b68 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a_scale.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a_scale.h
@@ -37,6 +37,7 @@ struct gk20a_scale_profile {
37void gk20a_scale_init(struct platform_device *); 37void gk20a_scale_init(struct platform_device *);
38void gk20a_scale_hw_init(struct platform_device *pdev); 38void gk20a_scale_hw_init(struct platform_device *pdev);
39 39
40#ifdef CONFIG_GK20A_DEVFREQ
40/* 41/*
41 * call when performing submit to notify scaling mechanism that the module is 42 * call when performing submit to notify scaling mechanism that the module is
42 * in use 43 * in use
@@ -46,5 +47,11 @@ void gk20a_scale_notify_idle(struct platform_device *);
46 47
47void gk20a_scale_suspend(struct platform_device *); 48void gk20a_scale_suspend(struct platform_device *);
48void gk20a_scale_resume(struct platform_device *); 49void gk20a_scale_resume(struct platform_device *);
50#else
51static inline void gk20a_scale_notify_busy(struct platform_device *pdev) {}
52static inline void gk20a_scale_notify_idle(struct platform_device *pdev) {}
53static inline void gk20a_scale_suspend(struct platform_device *pdev) {}
54static inline void gk20a_scale_resume(struct platform_device *pdev) {}
55#endif
49 56
50#endif 57#endif
diff --git a/drivers/gpu/nvgpu/gm20b/clk_gm20b.h b/drivers/gpu/nvgpu/gm20b/clk_gm20b.h
index cac5708c..84a2ce9a 100644
--- a/drivers/gpu/nvgpu/gm20b/clk_gm20b.h
+++ b/drivers/gpu/nvgpu/gm20b/clk_gm20b.h
@@ -21,6 +21,10 @@
21 21
22#include <linux/mutex.h> 22#include <linux/mutex.h>
23 23
24#ifdef CONFIG_TEGRA_CLK_FRAMEWORK
24void gm20b_init_clk_ops(struct gpu_ops *gops); 25void gm20b_init_clk_ops(struct gpu_ops *gops);
26#else
27static inline void gm20b_init_clk_ops(struct gpu_ops *gops) {}
28#endif
25 29
26#endif /* _NVHOST_CLK_GM20B_H_ */ 30#endif /* _NVHOST_CLK_GM20B_H_ */