summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c
diff options
context:
space:
mode:
authorSeshendra Gadagottu <sgadagottu@nvidia.com>2014-12-02 13:34:41 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-04-04 21:02:34 -0400
commit3764ce3de36d9b01948a78ec1ecf4ac4371b8e4d (patch)
treeee89ee4a894dd959461d2511345964a1f7dd3188 /drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c
parent91713341013de0ae6f83b7296fa476fa9c8bf7bf (diff)
gpu: nvgpu: gm20b: update clock gating lists
Bug 1584688 Change-Id: I9c0f3dcd3287ec8ced3520847b44a6a6a4c55cec Signed-off-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-on: http://git-master/r/658550 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c')
-rw-r--r--drivers/gpu/nvgpu/gm20b/gm20b_gating_reglist.c116
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
27struct gating_desc { 26struct gating_desc {
@@ -30,44 +29,39 @@ struct gating_desc {
30 u32 disable; 29 u32 disable;
31}; 30};
32/* slcg bus */ 31/* slcg bus */
33static const struct gating_desc gm20b_slcg_bus[] = { 32const 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 */
38static const struct gating_desc gm20b_slcg_ce2[] = { 37const 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 */
43static const struct gating_desc gm20b_slcg_chiplet[] = { 42const 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 */
51static const struct gating_desc gm20b_slcg_ctxsw_firmware[] = {
52 {.addr = 0x00005f00, .prod = 0x00020008, .disable = 0x0003fffe},
53};
54
55/* slcg fb */ 49/* slcg fb */
56static const struct gating_desc gm20b_slcg_fb[] = { 50const 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 */
62static const struct gating_desc gm20b_slcg_fifo[] = { 56const 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 */
67static const struct gating_desc gm20b_slcg_gr[] = { 61const 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 */
129static const struct gating_desc gm20b_slcg_ltc[] = { 123const 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 */
135static const struct gating_desc gm20b_slcg_perf[] = { 129const 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 */
143static const struct gating_desc gm20b_slcg_priring[] = { 137const 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 */
148static const struct gating_desc gm20b_slcg_pwr_csb[] = { 142const 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 */
156static const struct gating_desc gm20b_slcg_pmu[] = { 150const 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 */
163static const struct gating_desc gm20b_slcg_therm[] = { 157const 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 */
168static const struct gating_desc gm20b_slcg_xbar[] = { 162const 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 */
174static const struct gating_desc gm20b_blcg_bus[] = { 168const 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 */
179static const struct gating_desc gm20b_blcg_ctxsw_firmware[] = { 173const struct gating_desc gm20b_blcg_ctxsw_prog[] = {
180}; 174};
181 175
182/* blcg fb */ 176/* blcg fb */
183static const struct gating_desc gm20b_blcg_fb[] = { 177const 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 */
193static const struct gating_desc gm20b_blcg_fifo[] = { 187const 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 */
198static const struct gating_desc gm20b_blcg_gr[] = { 192const 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 */
263static const struct gating_desc gm20b_blcg_ltc[] = { 257const 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 */
271static const struct gating_desc gm20b_blcg_pwr_csb[] = { 265const 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 */
276static const struct gating_desc gm20b_blcg_pmu[] = { 270const 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 */
281static const struct gating_desc gm20b_blcg_xbar[] = { 275const 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 */
287static const struct gating_desc gm20b_pg_gr[] = { 281const 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,
337void gm20b_slcg_ctxsw_firmware_load_gating_prod(struct gk20a *g, 331void 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
352void gm20b_slcg_fb_load_gating_prod(struct gk20a *g, 336void 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
426void 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
442void gm20b_slcg_pmu_load_gating_prod(struct gk20a *g, 441void 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
606void 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
607void gr_gm20b_pg_gr_load_gating_prod(struct gk20a *g, 621void gr_gm20b_pg_gr_load_gating_prod(struct gk20a *g,
608 bool prod) 622 bool prod)
609{ 623{