From c7fbd76e7101b7dedc8c0f04437288d1d6b78adc Mon Sep 17 00:00:00 2001 From: Vijayakumar Date: Fri, 16 Sep 2016 18:56:22 +0530 Subject: gpu: nvgpu: create function to program coreclk JIRA DNVGPU-123 now a function can be called with GPC2CLK value It will take care calculating slave clock values and calling VF inject to program clock Made programming of boot clock code to use this newly created function. Change-Id: I74de7e9d98e379e94175ed2d9745ce3ab6c70691 Signed-off-by: Vijayakumar Reviewed-on: http://git-master/r/1221976 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom Reviewed-on: http://git-master/r/1235056 --- drivers/gpu/nvgpu/clk/clk.h | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'drivers/gpu/nvgpu/clk/clk.h') diff --git a/drivers/gpu/nvgpu/clk/clk.h b/drivers/gpu/nvgpu/clk/clk.h index 1f25fa4e..e54af521 100644 --- a/drivers/gpu/nvgpu/clk/clk.h +++ b/drivers/gpu/nvgpu/clk/clk.h @@ -35,6 +35,7 @@ struct clk_pmupstate { struct clk_progs clk_progobjs; struct clk_vf_points clk_vf_pointobjs; struct clk_mclk_state clk_mclk; + struct mutex changeclkmutex; }; struct clockentry { @@ -44,6 +45,25 @@ struct clockentry { u32 api_clk_domain; }; +struct change_fll_clk { + u32 api_clk_domain; + u16 clkmhz; + u32 voltuv; +}; + +struct set_fll_clk { + u32 voltuv; + u16 gpc2clkmhz; + u32 current_regime_id_gpc; + u32 target_regime_id_gpc; + u16 sys2clkmhz; + u32 current_regime_id_sys; + u32 target_regime_id_sys; + u16 xbar2clkmhz; + u32 current_regime_id_xbar; + u32 target_regime_id_xbar; +}; + #define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_MAX_NUMCLKS 9 struct vbios_clock_domain { @@ -82,7 +102,6 @@ struct vbios_clocks_table_1x_hal_clock_entry { #define PERF_CLK_PCIEGENCLK 12 #define PERF_CLK_NUM 13 -u32 clk_pmu_vf_inject(struct gk20a *g); u32 clk_pmu_vin_load(struct gk20a *g); u32 clk_domain_print_vf_table(struct gk20a *g, u32 clkapidomain); u32 clk_domain_get_f_or_v @@ -98,5 +117,6 @@ u32 clk_domain_get_f_points( u32 *fpointscount, u16 *freqpointsinmhz ); - +int clk_set_boot_fll_clk(struct gk20a *g); +int clk_program_fll_clks(struct gk20a *g, struct change_fll_clk *fllclk); #endif -- cgit v1.2.2