summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/therm_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/therm_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/therm_gk20a.c58
1 files changed, 0 insertions, 58 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/therm_gk20a.c b/drivers/gpu/nvgpu/gk20a/therm_gk20a.c
index 00159fae..e2fedf21 100644
--- a/drivers/gpu/nvgpu/gk20a/therm_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/therm_gk20a.c
@@ -33,58 +33,6 @@ static int gk20a_init_therm_setup_sw(struct gk20a *g)
33 return 0; 33 return 0;
34} 34}
35 35
36static int gk20a_init_therm_setup_hw(struct gk20a *g)
37{
38 u32 v;
39
40 /* program NV_THERM registers */
41 gk20a_writel(g, therm_use_a_r(), therm_use_a_ext_therm_0_enable_f() |
42 therm_use_a_ext_therm_1_enable_f() |
43 therm_use_a_ext_therm_2_enable_f());
44 /* priority for EXT_THERM_0 event set to highest */
45 gk20a_writel(g, therm_evt_ext_therm_0_r(),
46 therm_evt_ext_therm_0_slow_factor_f(0x2) |
47 therm_evt_ext_therm_0_priority_f(3));
48 gk20a_writel(g, therm_evt_ext_therm_1_r(),
49 therm_evt_ext_therm_1_slow_factor_f(0x6) |
50 therm_evt_ext_therm_1_priority_f(2));
51 gk20a_writel(g, therm_evt_ext_therm_2_r(),
52 therm_evt_ext_therm_2_slow_factor_f(0xe) |
53 therm_evt_ext_therm_2_priority_f(1));
54
55
56 gk20a_writel(g, therm_grad_stepping_table_r(0),
57 therm_grad_stepping_table_slowdown_factor0_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by1p5_f()) |
58 therm_grad_stepping_table_slowdown_factor1_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by2_f()) |
59 therm_grad_stepping_table_slowdown_factor2_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by4_f()) |
60 therm_grad_stepping_table_slowdown_factor3_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by8_f()) |
61 therm_grad_stepping_table_slowdown_factor4_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by8_f()));
62 gk20a_writel(g, therm_grad_stepping_table_r(1),
63 therm_grad_stepping_table_slowdown_factor0_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by8_f()) |
64 therm_grad_stepping_table_slowdown_factor1_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by8_f()) |
65 therm_grad_stepping_table_slowdown_factor2_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by8_f()) |
66 therm_grad_stepping_table_slowdown_factor3_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by8_f()) |
67 therm_grad_stepping_table_slowdown_factor4_f(therm_grad_stepping_table_slowdown_factor0_fpdiv_by8_f()));
68
69 v = gk20a_readl(g, therm_clk_timing_r(0));
70 v |= therm_clk_timing_grad_slowdown_enabled_f();
71 gk20a_writel(g, therm_clk_timing_r(0), v);
72
73 v = gk20a_readl(g, therm_config2_r());
74 v |= therm_config2_grad_enable_f(1);
75 v |= therm_config2_slowdown_factor_extended_f(1);
76 gk20a_writel(g, therm_config2_r(), v);
77
78 gk20a_writel(g, therm_grad_stepping1_r(),
79 therm_grad_stepping1_pdiv_duration_f(32));
80
81 v = gk20a_readl(g, therm_grad_stepping0_r());
82 v |= therm_grad_stepping0_feature_enable_f();
83 gk20a_writel(g, therm_grad_stepping0_r(), v);
84
85 return 0;
86}
87
88int gk20a_init_therm_support(struct gk20a *g) 36int gk20a_init_therm_support(struct gk20a *g)
89{ 37{
90 u32 err; 38 u32 err;
@@ -153,9 +101,3 @@ int gk20a_elcg_init_idle_filters(struct gk20a *g)
153 gk20a_dbg_fn("done"); 101 gk20a_dbg_fn("done");
154 return 0; 102 return 0;
155} 103}
156
157void gk20a_init_therm_ops(struct gpu_ops *gops)
158{
159 gops->therm.init_therm_setup_hw = gk20a_init_therm_setup_hw;
160 gops->therm.elcg_init_idle_filters = gk20a_elcg_init_idle_filters;
161}