summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/clk/clk.h
diff options
context:
space:
mode:
authorVijayakumar <vsubbu@nvidia.com>2016-09-16 09:26:22 -0400
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:56:50 -0500
commitc7fbd76e7101b7dedc8c0f04437288d1d6b78adc (patch)
tree6d1ab41af52a481ddeb148307a69113582569edd /drivers/gpu/nvgpu/clk/clk.h
parent3c351f5bb2d04c1f70c72f3f2fd758bbb340877c (diff)
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 <vsubbu@nvidia.com> Reviewed-on: http://git-master/r/1221976 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1235056
Diffstat (limited to 'drivers/gpu/nvgpu/clk/clk.h')
-rw-r--r--drivers/gpu/nvgpu/clk/clk.h24
1 files changed, 22 insertions, 2 deletions
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 {
35 struct clk_progs clk_progobjs; 35 struct clk_progs clk_progobjs;
36 struct clk_vf_points clk_vf_pointobjs; 36 struct clk_vf_points clk_vf_pointobjs;
37 struct clk_mclk_state clk_mclk; 37 struct clk_mclk_state clk_mclk;
38 struct mutex changeclkmutex;
38}; 39};
39 40
40struct clockentry { 41struct clockentry {
@@ -44,6 +45,25 @@ struct clockentry {
44 u32 api_clk_domain; 45 u32 api_clk_domain;
45}; 46};
46 47
48struct change_fll_clk {
49 u32 api_clk_domain;
50 u16 clkmhz;
51 u32 voltuv;
52};
53
54struct set_fll_clk {
55 u32 voltuv;
56 u16 gpc2clkmhz;
57 u32 current_regime_id_gpc;
58 u32 target_regime_id_gpc;
59 u16 sys2clkmhz;
60 u32 current_regime_id_sys;
61 u32 target_regime_id_sys;
62 u16 xbar2clkmhz;
63 u32 current_regime_id_xbar;
64 u32 target_regime_id_xbar;
65};
66
47#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_MAX_NUMCLKS 9 67#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_MAX_NUMCLKS 9
48 68
49struct vbios_clock_domain { 69struct vbios_clock_domain {
@@ -82,7 +102,6 @@ struct vbios_clocks_table_1x_hal_clock_entry {
82#define PERF_CLK_PCIEGENCLK 12 102#define PERF_CLK_PCIEGENCLK 12
83#define PERF_CLK_NUM 13 103#define PERF_CLK_NUM 13
84 104
85u32 clk_pmu_vf_inject(struct gk20a *g);
86u32 clk_pmu_vin_load(struct gk20a *g); 105u32 clk_pmu_vin_load(struct gk20a *g);
87u32 clk_domain_print_vf_table(struct gk20a *g, u32 clkapidomain); 106u32 clk_domain_print_vf_table(struct gk20a *g, u32 clkapidomain);
88u32 clk_domain_get_f_or_v 107u32 clk_domain_get_f_or_v
@@ -98,5 +117,6 @@ u32 clk_domain_get_f_points(
98 u32 *fpointscount, 117 u32 *fpointscount,
99 u16 *freqpointsinmhz 118 u16 *freqpointsinmhz
100); 119);
101 120int clk_set_boot_fll_clk(struct gk20a *g);
121int clk_program_fll_clks(struct gk20a *g, struct change_fll_clk *fllclk);
102#endif 122#endif