From c12eb17340c90086f378c239da3d9015e7878f0c Mon Sep 17 00:00:00 2001 From: Thomas Fleury Date: Wed, 21 Jun 2017 11:13:22 -0700 Subject: gpu: nvgpu: move mclk related functions to clk Move mclk related functions be moved to clk structure instead of pmu. We want to keep pmu only for basic pmu interaction and split clk, lpwr etc. Bug 1921094 Change-Id: I32394bc0e6d3657dfbd34dbcf19c9af56c12e194 Signed-off-by: Thomas Fleury Reviewed-on: https://git-master/r/1506586 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/clk/clk_arb.c | 4 ++-- drivers/gpu/nvgpu/gk20a/gk20a.c | 8 ++++---- drivers/gpu/nvgpu/gk20a/gk20a.h | 6 +++--- drivers/gpu/nvgpu/gp106/clk_gp106.c | 5 +++++ drivers/gpu/nvgpu/gp106/pmu_gp106.c | 4 ---- drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c | 5 ++--- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/nvgpu/clk/clk_arb.c b/drivers/gpu/nvgpu/clk/clk_arb.c index 58d529c6..df62df5e 100644 --- a/drivers/gpu/nvgpu/clk/clk_arb.c +++ b/drivers/gpu/nvgpu/clk/clk_arb.c @@ -1989,7 +1989,7 @@ static int nvgpu_clk_arb_change_vf_point(struct gk20a *g, u16 gpc2clk_target, /* descending */ if (voltuv < arb->voltuv_actual) { - status = g->ops.pmu.mclk_change(g, mclk_target); + status = g->ops.clk.mclk_change(g, mclk_target); if (status < 0) return status; @@ -2009,7 +2009,7 @@ static int nvgpu_clk_arb_change_vf_point(struct gk20a *g, u16 gpc2clk_target, if (status < 0) return status; - status = g->ops.pmu.mclk_change(g, mclk_target); + status = g->ops.clk.mclk_change(g, mclk_target); if (status < 0) return status; } diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 7106ea03..65197aca 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -137,8 +137,8 @@ int gk20a_prepare_poweroff(struct gk20a *g) ret |= gk20a_mm_suspend(g); ret |= gk20a_fifo_suspend(g); - if (g->ops.pmu.mclk_deinit) - g->ops.pmu.mclk_deinit(g); + if (g->ops.clk.mclk_deinit) + g->ops.clk.mclk_deinit(g); /* Disable GPCPLL */ if (g->ops.clk.suspend_clk_support) @@ -273,8 +273,8 @@ int gk20a_finalize_poweron(struct gk20a *g) goto done; } - if (g->ops.pmu.mclk_init) { - err = g->ops.pmu.mclk_init(g); + if (g->ops.clk.mclk_init) { + err = g->ops.clk.mclk_init(g); if (err) { nvgpu_err(g, "failed to set mclk"); /* Indicate error dont goto done */ diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 06db2b7f..9b28e0c6 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -772,9 +772,6 @@ struct gpu_ops { void *lsfm, u32 *p_bl_gen_desc_size); int (*flcn_populate_bl_dmem_desc)(struct gk20a *g, void *lsfm, u32 *p_bl_gen_desc_size, u32 falconid); - int (*mclk_init)(struct gk20a *g); - void (*mclk_deinit)(struct gk20a *g); - int (*mclk_change)(struct gk20a *g, u16 val); void (*handle_ext_irq)(struct gk20a *g, u32 intr); void (*set_irqmask)(struct gk20a *g); u32 lspmuwprinitdone; @@ -802,6 +799,9 @@ struct gpu_ops { int (*pll_reg_write)(struct gk20a *g, u32 reg, u32 val); int (*get_pll_debug_data)(struct gk20a *g, struct nvgpu_clk_pll_debug_data *d); + int (*mclk_init)(struct gk20a *g); + void (*mclk_deinit)(struct gk20a *g); + int (*mclk_change)(struct gk20a *g, u16 val); } clk; struct { u32 (*get_arbiter_clk_domains)(struct gk20a *g); diff --git a/drivers/gpu/nvgpu/gp106/clk_gp106.c b/drivers/gpu/nvgpu/gp106/clk_gp106.c index 4d865664..08639e0b 100644 --- a/drivers/gpu/nvgpu/gp106/clk_gp106.c +++ b/drivers/gpu/nvgpu/gp106/clk_gp106.c @@ -30,6 +30,8 @@ #include "clk_gp106.h" #include "clk/clk_arb.h" +#include "gp106/pmu_mclk_gp106.h" + #include #define gk20a_dbg_clk(fmt, arg...) \ @@ -281,4 +283,7 @@ void gp106_init_clk_ops(struct gpu_ops *gops) { gops->clk.get_crystal_clk_hz = gp106_crystal_clk_hz; gops->clk.measure_freq = gp106_clk_measure_freq; gops->clk.suspend_clk_support = gp106_suspend_clk_support; + gops->clk.mclk_init = gp106_mclk_init; + gops->clk.mclk_change = gp106_mclk_change; + gops->clk.mclk_deinit = gp106_mclk_deinit; } diff --git a/drivers/gpu/nvgpu/gp106/pmu_gp106.c b/drivers/gpu/nvgpu/gp106/pmu_gp106.c index 632023ba..eec89695 100644 --- a/drivers/gpu/nvgpu/gp106/pmu_gp106.c +++ b/drivers/gpu/nvgpu/gp106/pmu_gp106.c @@ -20,7 +20,6 @@ #include "gm20b/pmu_gm20b.h" #include "gp10b/pmu_gp10b.h" #include "gp106/pmu_gp106.h" -#include "gp106/pmu_mclk_gp106.h" #include "gp106/acr_gp106.h" #include "clk/clk_mclk.h" @@ -331,9 +330,6 @@ void gp106_init_pmu_ops(struct gpu_ops *gops) gops->pmu.pmu_lpwr_disable_pg = nvgpu_lpwr_disable_pg; gops->pmu.pmu_pg_param_post_init = nvgpu_lpwr_post_init; gops->pmu.dump_secure_fuses = NULL; - gops->pmu.mclk_init = gp106_mclk_init; - gops->pmu.mclk_change = gp106_mclk_change; - gops->pmu.mclk_deinit = gp106_mclk_deinit; gops->pmu.is_pmu_supported = gp106_is_pmu_supported; gops->pmu.reset_engine = gp106_pmu_engine_reset; gops->pmu.is_engine_in_reset = gp106_pmu_is_engine_in_reset; diff --git a/drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c b/drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c index b8dd3eac..c0e4269f 100644 --- a/drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c +++ b/drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c @@ -3276,7 +3276,6 @@ int gp106_mclk_init(struct gk20a *g) mclk->debugfs_set = true; } #endif - g->ops.pmu.mclk_change = gp106_mclk_change; mclk->init = true; @@ -3437,8 +3436,8 @@ static int mclk_debug_speed_set(void *data, u64 val) /* This is problematic because it can interrupt the arbiter * and send it to sleep. we need to consider removing this */ - if (g->ops.pmu.mclk_change) - return g->ops.pmu.mclk_change(g, (u16) val); + if (g->ops.clk.mclk_change) + return g->ops.clk.mclk_change(g, (u16) val); return 0; } -- cgit v1.2.2