summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
authorHoang Pham <hopham@nvidia.com>2014-07-14 13:42:35 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:10:29 -0400
commitba387d3d7e81072641e0134c1c1d4fcf890f1b70 (patch)
tree01fade5408469d2fce3572ae8567526722bf1853 /drivers/gpu/nvgpu/gk20a
parent3058fb2b960cf1da53fd25c5c8d286d60560615e (diff)
gpu: Split clk_ops for GK20A and GM20B
Split clk_ops for GK20A and GM20B into different files Bug 1450787 Change-Id: I34d16c54ac40c70854e80588475434c9e50b51a5 Signed-off-by: Hoang Pham <hopham@nvidia.com> Reviewed-on: http://git-master/r/437771 Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/clk_gk20a.c5
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c10
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h5
-rw-r--r--drivers/gpu/nvgpu/gk20a/hal_gk20a.c2
4 files changed, 18 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/clk_gk20a.c b/drivers/gpu/nvgpu/gk20a/clk_gk20a.c
index 33d81bd4..40eb06b6 100644
--- a/drivers/gpu/nvgpu/gk20a/clk_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/clk_gk20a.c
@@ -705,6 +705,11 @@ int gk20a_init_clk_support(struct gk20a *g)
705 return err; 705 return err;
706} 706}
707 707
708void gk20a_init_clk_ops(struct gpu_ops *gops)
709{
710 gops->clk.init_clk_support = gk20a_init_clk_support;
711}
712
708unsigned long gk20a_clk_get_rate(struct gk20a *g) 713unsigned long gk20a_clk_get_rate(struct gk20a *g)
709{ 714{
710 struct clk_gk20a *clk = &g->clk; 715 struct clk_gk20a *clk = &g->clk;
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index c69df460..e70cc0de 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -901,10 +901,12 @@ static int gk20a_pm_finalize_poweron(struct device *dev)
901 during boot but it also significantly slows down gk20a init on 901 during boot but it also significantly slows down gk20a init on
902 simulation and emulation. We should remove SOB after graphics power 902 simulation and emulation. We should remove SOB after graphics power
903 saving features (blcg/slcg) are enabled. For now, do it here. */ 903 saving features (blcg/slcg) are enabled. For now, do it here. */
904 err = gk20a_init_clk_support(g); 904 if (g->ops.clk.init_clk_support) {
905 if (err) { 905 err = g->ops.clk.init_clk_support(g);
906 gk20a_err(dev, "failed to init gk20a clk"); 906 if (err) {
907 goto done; 907 gk20a_err(dev, "failed to init gk20a clk");
908 goto done;
909 }
908 } 910 }
909 911
910 /* enable pri timeout only on silicon */ 912 /* enable pri timeout only on silicon */
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 774e4e85..0b91420b 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -230,6 +230,9 @@ struct gpu_ops {
230 int (*prepare_ucode)(struct gk20a *g); 230 int (*prepare_ucode)(struct gk20a *g);
231 int (*pmu_setup_hw_and_bootstrap)(struct gk20a *g); 231 int (*pmu_setup_hw_and_bootstrap)(struct gk20a *g);
232 } pmu; 232 } pmu;
233 struct {
234 int (*init_clk_support)(struct gk20a *g);
235 } clk;
233}; 236};
234 237
235struct gk20a { 238struct gk20a {
@@ -495,6 +498,8 @@ static inline void gk20a_mem_wr32(void *ptr, int w, u32 data)
495 ((u32 *)ptr)[w] = data; 498 ((u32 *)ptr)[w] = data;
496} 499}
497 500
501void gk20a_init_clk_ops(struct gpu_ops *gops);
502
498/* register accessors */ 503/* register accessors */
499int gk20a_lockout_registers(struct gk20a *g); 504int gk20a_lockout_registers(struct gk20a *g);
500int gk20a_restore_registers(struct gk20a *g); 505int gk20a_restore_registers(struct gk20a *g);
diff --git a/drivers/gpu/nvgpu/gk20a/hal_gk20a.c b/drivers/gpu/nvgpu/gk20a/hal_gk20a.c
index ad0a3dc7..3dae9450 100644
--- a/drivers/gpu/nvgpu/gk20a/hal_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/hal_gk20a.c
@@ -24,6 +24,7 @@
24#include "gr_ctx_gk20a.h" 24#include "gr_ctx_gk20a.h"
25#include "mm_gk20a.h" 25#include "mm_gk20a.h"
26#include "pmu_gk20a.h" 26#include "pmu_gk20a.h"
27#include "clk_gk20a.h"
27 28
28struct gpu_ops gk20a_ops = { 29struct gpu_ops gk20a_ops = {
29 .clock_gating = { 30 .clock_gating = {
@@ -50,6 +51,7 @@ int gk20a_init_hal(struct gpu_ops *gops)
50 gk20a_init_gr_ctx(gops); 51 gk20a_init_gr_ctx(gops);
51 gk20a_init_mm(gops); 52 gk20a_init_mm(gops);
52 gk20a_init_pmu_ops(gops); 53 gk20a_init_pmu_ops(gops);
54 gk20a_init_clk_ops(gops);
53 gops->name = "gk20a"; 55 gops->name = "gk20a";
54 56
55 return 0; 57 return 0;