diff --git a/drivers/gpu/nvgpu/clk/clk_arb.c b/drivers/gpu/nvgpu/clk/clk_arb.c index 58d529c67..df62df5ef 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 7106ea03c..65197aca9 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 06db2b7f7..9b28e0c63 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 4d8656641..08639e0b3 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 632023ba2..eec896957 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 b8dd3eacf..c0e4269f4 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; }