diff options
author | Vijayakumar <vsubbu@nvidia.com> | 2016-09-16 09:26:22 -0400 |
---|---|---|
committer | Deepak Nibade <dnibade@nvidia.com> | 2016-12-27 04:56:50 -0500 |
commit | c7fbd76e7101b7dedc8c0f04437288d1d6b78adc (patch) | |
tree | 6d1ab41af52a481ddeb148307a69113582569edd /drivers/gpu/nvgpu/clk/clk.h | |
parent | 3c351f5bb2d04c1f70c72f3f2fd758bbb340877c (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.h | 24 |
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 | ||
40 | struct clockentry { | 41 | struct clockentry { |
@@ -44,6 +45,25 @@ struct clockentry { | |||
44 | u32 api_clk_domain; | 45 | u32 api_clk_domain; |
45 | }; | 46 | }; |
46 | 47 | ||
48 | struct change_fll_clk { | ||
49 | u32 api_clk_domain; | ||
50 | u16 clkmhz; | ||
51 | u32 voltuv; | ||
52 | }; | ||
53 | |||
54 | struct 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 | ||
49 | struct vbios_clock_domain { | 69 | struct 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 | ||
85 | u32 clk_pmu_vf_inject(struct gk20a *g); | ||
86 | u32 clk_pmu_vin_load(struct gk20a *g); | 105 | u32 clk_pmu_vin_load(struct gk20a *g); |
87 | u32 clk_domain_print_vf_table(struct gk20a *g, u32 clkapidomain); | 106 | u32 clk_domain_print_vf_table(struct gk20a *g, u32 clkapidomain); |
88 | u32 clk_domain_get_f_or_v | 107 | u32 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 | 120 | int clk_set_boot_fll_clk(struct gk20a *g); | |
121 | int clk_program_fll_clks(struct gk20a *g, struct change_fll_clk *fllclk); | ||
102 | #endif | 122 | #endif |