diff options
author | Hoang Pham <hopham@nvidia.com> | 2014-07-14 13:42:35 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:10:29 -0400 |
commit | ba387d3d7e81072641e0134c1c1d4fcf890f1b70 (patch) | |
tree | 01fade5408469d2fce3572ae8567526722bf1853 /drivers/gpu/nvgpu/gk20a | |
parent | 3058fb2b960cf1da53fd25c5c8d286d60560615e (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.c | 5 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 10 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 5 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/hal_gk20a.c | 2 |
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 | ||
708 | void gk20a_init_clk_ops(struct gpu_ops *gops) | ||
709 | { | ||
710 | gops->clk.init_clk_support = gk20a_init_clk_support; | ||
711 | } | ||
712 | |||
708 | unsigned long gk20a_clk_get_rate(struct gk20a *g) | 713 | unsigned 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 | ||
235 | struct gk20a { | 238 | struct 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 | ||
501 | void gk20a_init_clk_ops(struct gpu_ops *gops); | ||
502 | |||
498 | /* register accessors */ | 503 | /* register accessors */ |
499 | int gk20a_lockout_registers(struct gk20a *g); | 504 | int gk20a_lockout_registers(struct gk20a *g); |
500 | int gk20a_restore_registers(struct gk20a *g); | 505 | int 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 | ||
28 | struct gpu_ops gk20a_ops = { | 29 | struct 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; |