summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/clk_gm20b.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/clk_gm20b.h')
-rw-r--r--drivers/gpu/nvgpu/gm20b/clk_gm20b.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/clk_gm20b.h b/drivers/gpu/nvgpu/gm20b/clk_gm20b.h
new file mode 100644
index 00000000..e814ac70
--- /dev/null
+++ b/drivers/gpu/nvgpu/gm20b/clk_gm20b.h
@@ -0,0 +1,95 @@
1/*
2 * GM20B Graphics
3 *
4 * Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24#ifndef _NVHOST_CLK_GM20B_H_
25#define _NVHOST_CLK_GM20B_H_
26
27#include <nvgpu/lock.h>
28
29struct gk20a;
30struct clk_gk20a;
31
32struct nvgpu_clk_pll_debug_data {
33 u32 trim_sys_sel_vco_reg;
34 u32 trim_sys_sel_vco_val;
35
36 u32 trim_sys_gpc2clk_out_reg;
37 u32 trim_sys_gpc2clk_out_val;
38
39 u32 trim_sys_bypassctrl_reg;
40 u32 trim_sys_bypassctrl_val;
41
42 u32 trim_sys_gpcpll_cfg_reg;
43 u32 trim_sys_gpcpll_dvfs2_reg;
44
45 u32 trim_sys_gpcpll_cfg_val;
46 bool trim_sys_gpcpll_cfg_enabled;
47 bool trim_sys_gpcpll_cfg_locked;
48 bool trim_sys_gpcpll_cfg_sync_on;
49
50 u32 trim_sys_gpcpll_coeff_val;
51 u32 trim_sys_gpcpll_coeff_mdiv;
52 u32 trim_sys_gpcpll_coeff_ndiv;
53 u32 trim_sys_gpcpll_coeff_pldiv;
54
55 u32 trim_sys_gpcpll_dvfs0_val;
56 u32 trim_sys_gpcpll_dvfs0_dfs_coeff;
57 u32 trim_sys_gpcpll_dvfs0_dfs_det_max;
58 u32 trim_sys_gpcpll_dvfs0_dfs_dc_offset;
59};
60
61int gm20b_init_clk_setup_sw(struct gk20a *g);
62
63int gm20b_clk_prepare(struct clk_gk20a *clk);
64void gm20b_clk_unprepare(struct clk_gk20a *clk);
65int gm20b_clk_is_prepared(struct clk_gk20a *clk);
66unsigned long gm20b_recalc_rate(struct clk_gk20a *clk, unsigned long parent_rate);
67int gm20b_gpcclk_set_rate(struct clk_gk20a *clk, unsigned long rate,
68 unsigned long parent_rate);
69long gm20b_round_rate(struct clk_gk20a *clk, unsigned long rate,
70 unsigned long *parent_rate);
71struct pll_parms *gm20b_get_gpc_pll_parms(void);
72#ifdef CONFIG_DEBUG_FS
73int gm20b_clk_init_debugfs(struct gk20a *g);
74#endif
75
76int gm20b_clk_pll_reg_write(struct gk20a *g, u32 reg, u32 val);
77int gm20b_init_clk_support(struct gk20a *g);
78int gm20b_suspend_clk_support(struct gk20a *g);
79int gm20b_clk_get_voltage(struct clk_gk20a *clk, u64 *val);
80int gm20b_clk_get_gpcclk_clock_counter(struct clk_gk20a *clk, u64 *val);
81int gm20b_clk_get_pll_debug_data(struct gk20a *g,
82 struct nvgpu_clk_pll_debug_data *d);
83
84/* 1:1 match between post divider settings and divisor value */
85static inline u32 nvgpu_pl_to_div(u32 pl)
86{
87 return pl;
88}
89
90static inline u32 nvgpu_div_to_pl(u32 div)
91{
92 return div;
93}
94
95#endif /* _NVHOST_CLK_GM20B_H_ */