diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c | 116 |
1 files changed, 65 insertions, 51 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c b/drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c index 6e5b9b72..32bfff36 100644 --- a/drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c +++ b/drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2014, NVIDIA Corporation. All rights reserved. | 2 | * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify | 4 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU General Public License as published by | 5 | * it under the terms of the GNU General Public License as published by |
@@ -21,7 +21,6 @@ | |||
21 | #define __gm20b_gating_reglist_h__ | 21 | #define __gm20b_gating_reglist_h__ |
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | |||
25 | #include "gm20b_gating_reglist.h" | 24 | #include "gm20b_gating_reglist.h" |
26 | 25 | ||
27 | struct gating_desc { | 26 | struct gating_desc { |
@@ -30,44 +29,39 @@ struct gating_desc { | |||
30 | u32 disable; | 29 | u32 disable; |
31 | }; | 30 | }; |
32 | /* slcg bus */ | 31 | /* slcg bus */ |
33 | static const struct gating_desc gm20b_slcg_bus[] = { | 32 | const struct gating_desc gm20b_slcg_bus[] = { |
34 | {.addr = 0x00001c04, .prod = 0x00000000, .disable = 0x000003fe}, | 33 | {.addr = 0x00001c04, .prod = 0x00000000, .disable = 0x000003fe}, |
35 | }; | 34 | }; |
36 | 35 | ||
37 | /* slcg ce2 */ | 36 | /* slcg ce2 */ |
38 | static const struct gating_desc gm20b_slcg_ce2[] = { | 37 | const struct gating_desc gm20b_slcg_ce2[] = { |
39 | {.addr = 0x00106f28, .prod = 0x00000000, .disable = 0x000007fe}, | 38 | {.addr = 0x00106f28, .prod = 0x00000000, .disable = 0x000007fe}, |
40 | }; | 39 | }; |
41 | 40 | ||
42 | /* slcg chiplet */ | 41 | /* slcg chiplet */ |
43 | static const struct gating_desc gm20b_slcg_chiplet[] = { | 42 | const struct gating_desc gm20b_slcg_chiplet[] = { |
44 | {.addr = 0x0010c07c, .prod = 0x00000000, .disable = 0x00000007}, | 43 | {.addr = 0x0010c07c, .prod = 0x00000000, .disable = 0x00000007}, |
45 | {.addr = 0x0010e07c, .prod = 0x00000000, .disable = 0x00000007}, | 44 | {.addr = 0x0010e07c, .prod = 0x00000000, .disable = 0x00000007}, |
46 | {.addr = 0x0010d07c, .prod = 0x00000000, .disable = 0x00000007}, | 45 | {.addr = 0x0010d07c, .prod = 0x00000000, .disable = 0x00000007}, |
47 | {.addr = 0x0010e17c, .prod = 0x00000000, .disable = 0x00000007}, | 46 | {.addr = 0x0010e17c, .prod = 0x00000000, .disable = 0x00000007}, |
48 | }; | 47 | }; |
49 | 48 | ||
50 | /* slcg ctxsw firmware */ | ||
51 | static const struct gating_desc gm20b_slcg_ctxsw_firmware[] = { | ||
52 | {.addr = 0x00005f00, .prod = 0x00020008, .disable = 0x0003fffe}, | ||
53 | }; | ||
54 | |||
55 | /* slcg fb */ | 49 | /* slcg fb */ |
56 | static const struct gating_desc gm20b_slcg_fb[] = { | 50 | const struct gating_desc gm20b_slcg_fb[] = { |
57 | {.addr = 0x00100d14, .prod = 0xfffffffe, .disable = 0xfffffffe}, | 51 | {.addr = 0x00100d14, .prod = 0x00000020, .disable = 0xfffffffe}, |
58 | {.addr = 0x00100c9c, .prod = 0x000001fe, .disable = 0x000001fe}, | 52 | {.addr = 0x00100c9c, .prod = 0x00000000, .disable = 0x000001fe}, |
59 | }; | 53 | }; |
60 | 54 | ||
61 | /* slcg fifo */ | 55 | /* slcg fifo */ |
62 | static const struct gating_desc gm20b_slcg_fifo[] = { | 56 | const struct gating_desc gm20b_slcg_fifo[] = { |
63 | {.addr = 0x000026ac, .prod = 0x00000100, .disable = 0x0001fffe}, | 57 | {.addr = 0x000026ac, .prod = 0x00000100, .disable = 0x0001fffe}, |
64 | }; | 58 | }; |
65 | 59 | ||
66 | /* slcg gr */ | 60 | /* slcg gr */ |
67 | static const struct gating_desc gm20b_slcg_gr[] = { | 61 | const struct gating_desc gm20b_slcg_gr[] = { |
68 | {.addr = 0x004041f4, .prod = 0x00000000, .disable = 0x03fffffe}, | 62 | {.addr = 0x004041f4, .prod = 0x00000000, .disable = 0x03fffffe}, |
69 | {.addr = 0x0040917c, .prod = 0x00020008, .disable = 0x0003fffe}, | 63 | {.addr = 0x0040917c, .prod = 0x00020008, .disable = 0x0003fffe}, |
70 | {.addr = 0x00409894, .prod = 0x00000000, .disable = 0x0003fffe}, | 64 | {.addr = 0x00409894, .prod = 0x00000040, .disable = 0x0003fffe}, |
71 | {.addr = 0x004078c4, .prod = 0x00000000, .disable = 0x000001fe}, | 65 | {.addr = 0x004078c4, .prod = 0x00000000, .disable = 0x000001fe}, |
72 | {.addr = 0x00406004, .prod = 0x00000000, .disable = 0x0001fffe}, | 66 | {.addr = 0x00406004, .prod = 0x00000000, .disable = 0x0001fffe}, |
73 | {.addr = 0x00405864, .prod = 0x00000000, .disable = 0x000001fe}, | 67 | {.addr = 0x00405864, .prod = 0x00000000, .disable = 0x000001fe}, |
@@ -75,7 +69,7 @@ static const struct gating_desc gm20b_slcg_gr[] = { | |||
75 | {.addr = 0x00408044, .prod = 0x00000000, .disable = 0x000007fe}, | 69 | {.addr = 0x00408044, .prod = 0x00000000, .disable = 0x000007fe}, |
76 | {.addr = 0x00407004, .prod = 0x00000000, .disable = 0x0000007e}, | 70 | {.addr = 0x00407004, .prod = 0x00000000, .disable = 0x0000007e}, |
77 | {.addr = 0x0041a17c, .prod = 0x00020008, .disable = 0x0003fffe}, | 71 | {.addr = 0x0041a17c, .prod = 0x00020008, .disable = 0x0003fffe}, |
78 | {.addr = 0x0041a894, .prod = 0x00000000, .disable = 0x0003fffe}, | 72 | {.addr = 0x0041a894, .prod = 0x00000040, .disable = 0x0003fffe}, |
79 | {.addr = 0x00418504, .prod = 0x00000000, .disable = 0x0007fffe}, | 73 | {.addr = 0x00418504, .prod = 0x00000000, .disable = 0x0007fffe}, |
80 | {.addr = 0x0041860c, .prod = 0x00000000, .disable = 0x000001fe}, | 74 | {.addr = 0x0041860c, .prod = 0x00000000, .disable = 0x000001fe}, |
81 | {.addr = 0x0041868c, .prod = 0x00000000, .disable = 0x0000001e}, | 75 | {.addr = 0x0041868c, .prod = 0x00000000, .disable = 0x0000001e}, |
@@ -126,13 +120,13 @@ static const struct gating_desc gm20b_slcg_gr[] = { | |||
126 | }; | 120 | }; |
127 | 121 | ||
128 | /* slcg ltc */ | 122 | /* slcg ltc */ |
129 | static const struct gating_desc gm20b_slcg_ltc[] = { | 123 | const struct gating_desc gm20b_slcg_ltc[] = { |
130 | {.addr = 0x0017e050, .prod = 0x00000000, .disable = 0xfffffffe}, | 124 | {.addr = 0x0017e050, .prod = 0x00000000, .disable = 0xfffffffe}, |
131 | {.addr = 0x0017e35c, .prod = 0x00000000, .disable = 0xfffffffe}, | 125 | {.addr = 0x0017e35c, .prod = 0x00000000, .disable = 0xfffffffe}, |
132 | }; | 126 | }; |
133 | 127 | ||
134 | /* slcg perf */ | 128 | /* slcg perf */ |
135 | static const struct gating_desc gm20b_slcg_perf[] = { | 129 | const struct gating_desc gm20b_slcg_perf[] = { |
136 | {.addr = 0x001be018, .prod = 0x000001ff, .disable = 0x00000000}, | 130 | {.addr = 0x001be018, .prod = 0x000001ff, .disable = 0x00000000}, |
137 | {.addr = 0x001bc018, .prod = 0x000001ff, .disable = 0x00000000}, | 131 | {.addr = 0x001bc018, .prod = 0x000001ff, .disable = 0x00000000}, |
138 | {.addr = 0x001b8018, .prod = 0x000001ff, .disable = 0x00000000}, | 132 | {.addr = 0x001b8018, .prod = 0x000001ff, .disable = 0x00000000}, |
@@ -140,12 +134,12 @@ static const struct gating_desc gm20b_slcg_perf[] = { | |||
140 | }; | 134 | }; |
141 | 135 | ||
142 | /* slcg PriRing */ | 136 | /* slcg PriRing */ |
143 | static const struct gating_desc gm20b_slcg_priring[] = { | 137 | const struct gating_desc gm20b_slcg_priring[] = { |
144 | {.addr = 0x001200a8, .prod = 0x00000000, .disable = 0x00000001}, | 138 | {.addr = 0x001200a8, .prod = 0x00000000, .disable = 0x00000001}, |
145 | }; | 139 | }; |
146 | 140 | ||
147 | /* slcg pwr_csb */ | 141 | /* slcg pwr_csb */ |
148 | static const struct gating_desc gm20b_slcg_pwr_csb[] = { | 142 | const struct gating_desc gm20b_slcg_pwr_csb[] = { |
149 | {.addr = 0x0000017c, .prod = 0x00020008, .disable = 0x0003fffe}, | 143 | {.addr = 0x0000017c, .prod = 0x00020008, .disable = 0x0003fffe}, |
150 | {.addr = 0x00000e74, .prod = 0x00000000, .disable = 0x0000000f}, | 144 | {.addr = 0x00000e74, .prod = 0x00000000, .disable = 0x0000000f}, |
151 | {.addr = 0x00000a74, .prod = 0x00000000, .disable = 0x00007ffe}, | 145 | {.addr = 0x00000a74, .prod = 0x00000000, .disable = 0x00007ffe}, |
@@ -153,34 +147,34 @@ static const struct gating_desc gm20b_slcg_pwr_csb[] = { | |||
153 | }; | 147 | }; |
154 | 148 | ||
155 | /* slcg pmu */ | 149 | /* slcg pmu */ |
156 | static const struct gating_desc gm20b_slcg_pmu[] = { | 150 | const struct gating_desc gm20b_slcg_pmu[] = { |
157 | {.addr = 0x0010a17c, .prod = 0x00020008, .disable = 0x0003fffe}, | 151 | {.addr = 0x0010a17c, .prod = 0x00020008, .disable = 0x0003fffe}, |
158 | {.addr = 0x0010aa74, .prod = 0x00000000, .disable = 0x00007ffe}, | 152 | {.addr = 0x0010aa74, .prod = 0x00000000, .disable = 0x00007ffe}, |
159 | {.addr = 0x0010ae74, .prod = 0x00000000, .disable = 0x0000000f}, | 153 | {.addr = 0x0010ae74, .prod = 0x00000000, .disable = 0x0000000f}, |
160 | }; | 154 | }; |
161 | 155 | ||
162 | /* therm gr */ | 156 | /* therm gr */ |
163 | static const struct gating_desc gm20b_slcg_therm[] = { | 157 | const struct gating_desc gm20b_slcg_therm[] = { |
164 | {.addr = 0x000206b8, .prod = 0x00000000, .disable = 0x0000000f}, | 158 | {.addr = 0x000206b8, .prod = 0x00000000, .disable = 0x0000000f}, |
165 | }; | 159 | }; |
166 | 160 | ||
167 | /* slcg Xbar */ | 161 | /* slcg Xbar */ |
168 | static const struct gating_desc gm20b_slcg_xbar[] = { | 162 | const struct gating_desc gm20b_slcg_xbar[] = { |
169 | {.addr = 0x0013cbe4, .prod = 0x00000000, .disable = 0x1ffffffe}, | 163 | {.addr = 0x0013cbe4, .prod = 0x00000000, .disable = 0x1ffffffe}, |
170 | {.addr = 0x0013cc04, .prod = 0x00000000, .disable = 0x1ffffffe}, | 164 | {.addr = 0x0013cc04, .prod = 0x00000000, .disable = 0x1ffffffe}, |
171 | }; | 165 | }; |
172 | 166 | ||
173 | /* blcg bus */ | 167 | /* blcg bus */ |
174 | static const struct gating_desc gm20b_blcg_bus[] = { | 168 | const struct gating_desc gm20b_blcg_bus[] = { |
175 | {.addr = 0x00001c00, .prod = 0x00000042, .disable = 0x00000000}, | 169 | {.addr = 0x00001c00, .prod = 0x00000042, .disable = 0x00000000}, |
176 | }; | 170 | }; |
177 | 171 | ||
178 | /* blcg ctxsw firmware */ | 172 | /* blcg ctxsw prog */ |
179 | static const struct gating_desc gm20b_blcg_ctxsw_firmware[] = { | 173 | const struct gating_desc gm20b_blcg_ctxsw_prog[] = { |
180 | }; | 174 | }; |
181 | 175 | ||
182 | /* blcg fb */ | 176 | /* blcg fb */ |
183 | static const struct gating_desc gm20b_blcg_fb[] = { | 177 | const struct gating_desc gm20b_blcg_fb[] = { |
184 | {.addr = 0x00100d10, .prod = 0x0000c242, .disable = 0x00000000}, | 178 | {.addr = 0x00100d10, .prod = 0x0000c242, .disable = 0x00000000}, |
185 | {.addr = 0x00100d30, .prod = 0x0000c242, .disable = 0x00000000}, | 179 | {.addr = 0x00100d30, .prod = 0x0000c242, .disable = 0x00000000}, |
186 | {.addr = 0x00100d3c, .prod = 0x00000242, .disable = 0x00000000}, | 180 | {.addr = 0x00100d3c, .prod = 0x00000242, .disable = 0x00000000}, |
@@ -190,12 +184,12 @@ static const struct gating_desc gm20b_blcg_fb[] = { | |||
190 | }; | 184 | }; |
191 | 185 | ||
192 | /* blcg fifo */ | 186 | /* blcg fifo */ |
193 | static const struct gating_desc gm20b_blcg_fifo[] = { | 187 | const struct gating_desc gm20b_blcg_fifo[] = { |
194 | {.addr = 0x000026a4, .prod = 0x0000c242, .disable = 0x00000000}, | 188 | {.addr = 0x000026a4, .prod = 0x0000c242, .disable = 0x00000000}, |
195 | }; | 189 | }; |
196 | 190 | ||
197 | /* blcg gr */ | 191 | /* blcg gr */ |
198 | static const struct gating_desc gm20b_blcg_gr[] = { | 192 | const struct gating_desc gm20b_blcg_gr[] = { |
199 | {.addr = 0x004041f0, .prod = 0x00004046, .disable = 0x00000000}, | 193 | {.addr = 0x004041f0, .prod = 0x00004046, .disable = 0x00000000}, |
200 | {.addr = 0x00409890, .prod = 0x0000007f, .disable = 0x00000000}, | 194 | {.addr = 0x00409890, .prod = 0x0000007f, .disable = 0x00000000}, |
201 | {.addr = 0x004098b0, .prod = 0x0000007f, .disable = 0x00000000}, | 195 | {.addr = 0x004098b0, .prod = 0x0000007f, .disable = 0x00000000}, |
@@ -223,7 +217,7 @@ static const struct gating_desc gm20b_blcg_gr[] = { | |||
223 | {.addr = 0x00419020, .prod = 0x00004042, .disable = 0x00000000}, | 217 | {.addr = 0x00419020, .prod = 0x00004042, .disable = 0x00000000}, |
224 | {.addr = 0x00419038, .prod = 0x00000042, .disable = 0x00000000}, | 218 | {.addr = 0x00419038, .prod = 0x00000042, .disable = 0x00000000}, |
225 | {.addr = 0x00418898, .prod = 0x00000042, .disable = 0x00000000}, | 219 | {.addr = 0x00418898, .prod = 0x00000042, .disable = 0x00000000}, |
226 | {.addr = 0x00419a40, .prod = 0x00004042, .disable = 0x00000000}, | 220 | {.addr = 0x00419a40, .prod = 0x00000042, .disable = 0x00000000}, |
227 | {.addr = 0x00419a48, .prod = 0x00004042, .disable = 0x00000000}, | 221 | {.addr = 0x00419a48, .prod = 0x00004042, .disable = 0x00000000}, |
228 | {.addr = 0x00419a50, .prod = 0x00004042, .disable = 0x00000000}, | 222 | {.addr = 0x00419a50, .prod = 0x00004042, .disable = 0x00000000}, |
229 | {.addr = 0x00419a58, .prod = 0x00004042, .disable = 0x00000000}, | 223 | {.addr = 0x00419a58, .prod = 0x00004042, .disable = 0x00000000}, |
@@ -260,7 +254,7 @@ static const struct gating_desc gm20b_blcg_gr[] = { | |||
260 | }; | 254 | }; |
261 | 255 | ||
262 | /* blcg ltc */ | 256 | /* blcg ltc */ |
263 | static const struct gating_desc gm20b_blcg_ltc[] = { | 257 | const struct gating_desc gm20b_blcg_ltc[] = { |
264 | {.addr = 0x0017e030, .prod = 0x00000044, .disable = 0x00000000}, | 258 | {.addr = 0x0017e030, .prod = 0x00000044, .disable = 0x00000000}, |
265 | {.addr = 0x0017e040, .prod = 0x00000044, .disable = 0x00000000}, | 259 | {.addr = 0x0017e040, .prod = 0x00000044, .disable = 0x00000000}, |
266 | {.addr = 0x0017e3e0, .prod = 0x00000044, .disable = 0x00000000}, | 260 | {.addr = 0x0017e3e0, .prod = 0x00000044, .disable = 0x00000000}, |
@@ -268,23 +262,23 @@ static const struct gating_desc gm20b_blcg_ltc[] = { | |||
268 | }; | 262 | }; |
269 | 263 | ||
270 | /* blcg pwr_csb */ | 264 | /* blcg pwr_csb */ |
271 | static const struct gating_desc gm20b_blcg_pwr_csb[] = { | 265 | const struct gating_desc gm20b_blcg_pwr_csb[] = { |
272 | {.addr = 0x00000a70, .prod = 0x00000045, .disable = 0x00000000}, | 266 | {.addr = 0x00000a70, .prod = 0x00000045, .disable = 0x00000000}, |
273 | }; | 267 | }; |
274 | 268 | ||
275 | /* blcg pmu */ | 269 | /* blcg pmu */ |
276 | static const struct gating_desc gm20b_blcg_pmu[] = { | 270 | const struct gating_desc gm20b_blcg_pmu[] = { |
277 | {.addr = 0x0010aa70, .prod = 0x00000045, .disable = 0x00000000}, | 271 | {.addr = 0x0010aa70, .prod = 0x00000045, .disable = 0x00000000}, |
278 | }; | 272 | }; |
279 | 273 | ||
280 | /* blcg Xbar */ | 274 | /* blcg Xbar */ |
281 | static const struct gating_desc gm20b_blcg_xbar[] = { | 275 | const struct gating_desc gm20b_blcg_xbar[] = { |
282 | {.addr = 0x0013cbe0, .prod = 0x00000042, .disable = 0x00000000}, | 276 | {.addr = 0x0013cbe0, .prod = 0x00000042, .disable = 0x00000000}, |
283 | {.addr = 0x0013cc00, .prod = 0x00000042, .disable = 0x00000000}, | 277 | {.addr = 0x0013cc00, .prod = 0x00000042, .disable = 0x00000000}, |
284 | }; | 278 | }; |
285 | 279 | ||
286 | /* pg gr */ | 280 | /* pg gr */ |
287 | static const struct gating_desc gm20b_pg_gr[] = { | 281 | const struct gating_desc gm20b_pg_gr[] = { |
288 | }; | 282 | }; |
289 | 283 | ||
290 | /* static inline functions */ | 284 | /* static inline functions */ |
@@ -337,16 +331,6 @@ void gm20b_slcg_chiplet_load_gating_prod(struct gk20a *g, | |||
337 | void gm20b_slcg_ctxsw_firmware_load_gating_prod(struct gk20a *g, | 331 | void gm20b_slcg_ctxsw_firmware_load_gating_prod(struct gk20a *g, |
338 | bool prod) | 332 | bool prod) |
339 | { | 333 | { |
340 | u32 i; | ||
341 | u32 size = sizeof(gm20b_slcg_ctxsw_firmware) / sizeof(struct gating_desc); | ||
342 | for (i = 0; i < size; i++) { | ||
343 | if (prod) | ||
344 | gk20a_writel(g, gm20b_slcg_ctxsw_firmware[i].addr, | ||
345 | gm20b_slcg_ctxsw_firmware[i].prod); | ||
346 | else | ||
347 | gk20a_writel(g, gm20b_slcg_ctxsw_firmware[i].addr, | ||
348 | gm20b_slcg_ctxsw_firmware[i].disable); | ||
349 | } | ||
350 | } | 334 | } |
351 | 335 | ||
352 | void gm20b_slcg_fb_load_gating_prod(struct gk20a *g, | 336 | void gm20b_slcg_fb_load_gating_prod(struct gk20a *g, |
@@ -439,6 +423,21 @@ void gm20b_slcg_priring_load_gating_prod(struct gk20a *g, | |||
439 | } | 423 | } |
440 | } | 424 | } |
441 | 425 | ||
426 | void gm20b_slcg_pwr_csb_load_gating_prod(struct gk20a *g, | ||
427 | bool prod) | ||
428 | { | ||
429 | u32 i; | ||
430 | u32 size = sizeof(gm20b_slcg_pwr_csb) / sizeof(struct gating_desc); | ||
431 | for (i = 0; i < size; i++) { | ||
432 | if (prod) | ||
433 | gk20a_writel(g, gm20b_slcg_pwr_csb[i].addr, | ||
434 | gm20b_slcg_pwr_csb[i].prod); | ||
435 | else | ||
436 | gk20a_writel(g, gm20b_slcg_pwr_csb[i].addr, | ||
437 | gm20b_slcg_pwr_csb[i].disable); | ||
438 | } | ||
439 | } | ||
440 | |||
442 | void gm20b_slcg_pmu_load_gating_prod(struct gk20a *g, | 441 | void gm20b_slcg_pmu_load_gating_prod(struct gk20a *g, |
443 | bool prod) | 442 | bool prod) |
444 | { | 443 | { |
@@ -503,14 +502,14 @@ void gm20b_blcg_ctxsw_firmware_load_gating_prod(struct gk20a *g, | |||
503 | bool prod) | 502 | bool prod) |
504 | { | 503 | { |
505 | u32 i; | 504 | u32 i; |
506 | u32 size = sizeof(gm20b_blcg_ctxsw_firmware) / sizeof(struct gating_desc); | 505 | u32 size = sizeof(gm20b_blcg_ctxsw_prog) / sizeof(struct gating_desc); |
507 | for (i = 0; i < size; i++) { | 506 | for (i = 0; i < size; i++) { |
508 | if (prod) | 507 | if (prod) |
509 | gk20a_writel(g, gm20b_blcg_ctxsw_firmware[i].addr, | 508 | gk20a_writel(g, gm20b_blcg_ctxsw_prog[i].addr, |
510 | gm20b_blcg_ctxsw_firmware[i].prod); | 509 | gm20b_blcg_ctxsw_prog[i].prod); |
511 | else | 510 | else |
512 | gk20a_writel(g, gm20b_blcg_ctxsw_firmware[i].addr, | 511 | gk20a_writel(g, gm20b_blcg_ctxsw_prog[i].addr, |
513 | gm20b_blcg_ctxsw_firmware[i].disable); | 512 | gm20b_blcg_ctxsw_prog[i].disable); |
514 | } | 513 | } |
515 | } | 514 | } |
516 | 515 | ||
@@ -604,6 +603,21 @@ void gm20b_blcg_pmu_load_gating_prod(struct gk20a *g, | |||
604 | } | 603 | } |
605 | } | 604 | } |
606 | 605 | ||
606 | void gm20b_blcg_xbar_load_gating_prod(struct gk20a *g, | ||
607 | bool prod) | ||
608 | { | ||
609 | u32 i; | ||
610 | u32 size = sizeof(gm20b_blcg_xbar) / sizeof(struct gating_desc); | ||
611 | for (i = 0; i < size; i++) { | ||
612 | if (prod) | ||
613 | gk20a_writel(g, gm20b_blcg_xbar[i].addr, | ||
614 | gm20b_blcg_xbar[i].prod); | ||
615 | else | ||
616 | gk20a_writel(g, gm20b_blcg_xbar[i].addr, | ||
617 | gm20b_blcg_xbar[i].disable); | ||
618 | } | ||
619 | } | ||
620 | |||
607 | void gr_gm20b_pg_gr_load_gating_prod(struct gk20a *g, | 621 | void gr_gm20b_pg_gr_load_gating_prod(struct gk20a *g, |
608 | bool prod) | 622 | bool prod) |
609 | { | 623 | { |