diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/clock_gating/gv11b_gating_reglist.c')
-rw-r--r-- | drivers/gpu/nvgpu/common/clock_gating/gv11b_gating_reglist.c | 67 |
1 files changed, 47 insertions, 20 deletions
diff --git a/drivers/gpu/nvgpu/common/clock_gating/gv11b_gating_reglist.c b/drivers/gpu/nvgpu/common/clock_gating/gv11b_gating_reglist.c index 418f2c12..57b1443b 100644 --- a/drivers/gpu/nvgpu/common/clock_gating/gv11b_gating_reglist.c +++ b/drivers/gpu/nvgpu/common/clock_gating/gv11b_gating_reglist.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2014-2018, NVIDIA CORPORATION. All rights reserved. | 2 | * Copyright (c) 2014-2019, NVIDIA CORPORATION. All rights reserved. |
3 | * | 3 | * |
4 | * Permission is hereby granted, free of charge, to any person obtaining a | 4 | * Permission is hereby granted, free of charge, to any person obtaining a |
5 | * copy of this software and associated documentation files (the "Software"), | 5 | * copy of this software and associated documentation files (the "Software"), |
@@ -43,9 +43,7 @@ static const struct gating_desc gv11b_slcg_ce2[] = { | |||
43 | 43 | ||
44 | /* slcg chiplet */ | 44 | /* slcg chiplet */ |
45 | static const struct gating_desc gv11b_slcg_chiplet[] = { | 45 | static const struct gating_desc gv11b_slcg_chiplet[] = { |
46 | {.addr = 0x0010c07cU, .prod = 0x00000000U, .disable = 0x00000007U}, | ||
47 | {.addr = 0x0010e07cU, .prod = 0x00000000U, .disable = 0x00000007U}, | 46 | {.addr = 0x0010e07cU, .prod = 0x00000000U, .disable = 0x00000007U}, |
48 | {.addr = 0x0010d07cU, .prod = 0x00000000U, .disable = 0x00000007U}, | ||
49 | {.addr = 0x0010e17cU, .prod = 0x00000000U, .disable = 0x00000007U}, | 47 | {.addr = 0x0010e17cU, .prod = 0x00000000U, .disable = 0x00000007U}, |
50 | }; | 48 | }; |
51 | 49 | ||
@@ -70,22 +68,15 @@ static const struct gating_desc gv11b_slcg_gr[] = { | |||
70 | {.addr = 0x00405864U, .prod = 0x00000000U, .disable = 0x000001feU}, | 68 | {.addr = 0x00405864U, .prod = 0x00000000U, .disable = 0x000001feU}, |
71 | {.addr = 0x00405910U, .prod = 0xfffffff0U, .disable = 0xfffffffeU}, | 69 | {.addr = 0x00405910U, .prod = 0xfffffff0U, .disable = 0xfffffffeU}, |
72 | {.addr = 0x00408044U, .prod = 0x00000000U, .disable = 0x000007feU}, | 70 | {.addr = 0x00408044U, .prod = 0x00000000U, .disable = 0x000007feU}, |
73 | /* fix priv error */ | ||
74 | /*{.addr = 0x00407004U, .prod = 0x00000000U, .disable = 0x000001feU},*/ | ||
75 | /*{.addr = 0x00405bf4U, .prod = 0x00000000U, .disable = 0x00000002U},*/ | ||
76 | {.addr = 0x0041a134U, .prod = 0x00020008U, .disable = 0x0003fffeU}, | 71 | {.addr = 0x0041a134U, .prod = 0x00020008U, .disable = 0x0003fffeU}, |
77 | {.addr = 0x0041a894U, .prod = 0x00000000U, .disable = 0x0000fffeU}, | 72 | {.addr = 0x0041a894U, .prod = 0x00000000U, .disable = 0x0000fffeU}, |
78 | {.addr = 0x00418504U, .prod = 0x00000000U, .disable = 0x0007fffeU}, | 73 | {.addr = 0x00418504U, .prod = 0x00000000U, .disable = 0x0007fffeU}, |
79 | /* fix priv error */ | ||
80 | /*{.addr = 0x0041860cU, .prod = 0x00000000U, .disable = 0x000001feU},*/ | ||
81 | {.addr = 0x0041868cU, .prod = 0x00000000U, .disable = 0x0000001eU}, | 74 | {.addr = 0x0041868cU, .prod = 0x00000000U, .disable = 0x0000001eU}, |
82 | {.addr = 0x0041871cU, .prod = 0x00000000U, .disable = 0x000003feU}, | 75 | {.addr = 0x0041871cU, .prod = 0x00000000U, .disable = 0x000003feU}, |
83 | {.addr = 0x00418388U, .prod = 0x00000000U, .disable = 0x00000001U}, | 76 | {.addr = 0x00418388U, .prod = 0x00000000U, .disable = 0x00000001U}, |
84 | {.addr = 0x0041882cU, .prod = 0x00000000U, .disable = 0x0001fffeU}, | 77 | {.addr = 0x0041882cU, .prod = 0x00000000U, .disable = 0x0001fffeU}, |
85 | {.addr = 0x00418bc0U, .prod = 0x00000000U, .disable = 0x000001feU}, | 78 | {.addr = 0x00418bc0U, .prod = 0x00000000U, .disable = 0x000001feU}, |
86 | {.addr = 0x00418974U, .prod = 0x00000000U, .disable = 0x0001fffeU}, | 79 | {.addr = 0x00418974U, .prod = 0x00000000U, .disable = 0x0001fffeU}, |
87 | /* fix priv error */ | ||
88 | /*{.addr = 0x00418c74U, .prod = 0xffffff80U, .disable = 0xfffffffeU},*/ | ||
89 | {.addr = 0x00418cf4U, .prod = 0xfffffff8U, .disable = 0xfffffffeU}, | 80 | {.addr = 0x00418cf4U, .prod = 0xfffffff8U, .disable = 0xfffffffeU}, |
90 | {.addr = 0x00418d74U, .prod = 0xffffffe0U, .disable = 0xfffffffeU}, | 81 | {.addr = 0x00418d74U, .prod = 0xffffffe0U, .disable = 0xfffffffeU}, |
91 | {.addr = 0x00418f10U, .prod = 0xffffffe0U, .disable = 0xfffffffeU}, | 82 | {.addr = 0x00418f10U, .prod = 0xffffffe0U, .disable = 0xfffffffeU}, |
@@ -95,8 +86,6 @@ static const struct gating_desc gv11b_slcg_gr[] = { | |||
95 | {.addr = 0x00419d24U, .prod = 0x00000000U, .disable = 0x000000ffU}, | 86 | {.addr = 0x00419d24U, .prod = 0x00000000U, .disable = 0x000000ffU}, |
96 | {.addr = 0x0041986cU, .prod = 0x00000104U, .disable = 0x00fffffeU}, | 87 | {.addr = 0x0041986cU, .prod = 0x00000104U, .disable = 0x00fffffeU}, |
97 | {.addr = 0x00419c74U, .prod = 0x0000001eU, .disable = 0x0000001eU}, | 88 | {.addr = 0x00419c74U, .prod = 0x0000001eU, .disable = 0x0000001eU}, |
98 | /* fix priv error */ | ||
99 | /*{.addr = 0x00419c84U, .prod = 0x0003fff8U, .disable = 0x0003fffeU},*/ | ||
100 | {.addr = 0x00419c8cU, .prod = 0xffffff84U, .disable = 0xfffffffeU}, | 89 | {.addr = 0x00419c8cU, .prod = 0xffffff84U, .disable = 0xfffffffeU}, |
101 | {.addr = 0x00419c94U, .prod = 0x00080040U, .disable = 0x000ffffeU}, | 90 | {.addr = 0x00419c94U, .prod = 0x00080040U, .disable = 0x000ffffeU}, |
102 | {.addr = 0x00419ca4U, .prod = 0x00003ffeU, .disable = 0x00003ffeU}, | 91 | {.addr = 0x00419ca4U, .prod = 0x00003ffeU, .disable = 0x00003ffeU}, |
@@ -110,8 +99,6 @@ static const struct gating_desc gv11b_slcg_gr[] = { | |||
110 | {.addr = 0x00419a84U, .prod = 0x0000000cU, .disable = 0x0000000eU}, | 99 | {.addr = 0x00419a84U, .prod = 0x0000000cU, .disable = 0x0000000eU}, |
111 | {.addr = 0x0041be2cU, .prod = 0x04115fc0U, .disable = 0xfffffffeU}, | 100 | {.addr = 0x0041be2cU, .prod = 0x04115fc0U, .disable = 0xfffffffeU}, |
112 | {.addr = 0x0041bfecU, .prod = 0xfffffff0U, .disable = 0xfffffffeU}, | 101 | {.addr = 0x0041bfecU, .prod = 0xfffffff0U, .disable = 0xfffffffeU}, |
113 | /* fix priv error */ | ||
114 | /*{.addr = 0x0041bed4U, .prod = 0xfffffff8U, .disable = 0xfffffffeU},*/ | ||
115 | {.addr = 0x00408814U, .prod = 0x00000000U, .disable = 0x0001fffeU}, | 102 | {.addr = 0x00408814U, .prod = 0x00000000U, .disable = 0x0001fffeU}, |
116 | {.addr = 0x00408a84U, .prod = 0x00000000U, .disable = 0x0001fffeU}, | 103 | {.addr = 0x00408a84U, .prod = 0x00000000U, .disable = 0x0001fffeU}, |
117 | {.addr = 0x004089acU, .prod = 0x00000000U, .disable = 0x0001fffeU}, | 104 | {.addr = 0x004089acU, .prod = 0x00000000U, .disable = 0x0001fffeU}, |
@@ -130,8 +117,6 @@ static const struct gating_desc gv11b_slcg_perf[] = { | |||
130 | {.addr = 0x00248018U, .prod = 0xffffffffU, .disable = 0x00000000U}, | 117 | {.addr = 0x00248018U, .prod = 0xffffffffU, .disable = 0x00000000U}, |
131 | {.addr = 0x00246018U, .prod = 0xffffffffU, .disable = 0x00000000U}, | 118 | {.addr = 0x00246018U, .prod = 0xffffffffU, .disable = 0x00000000U}, |
132 | {.addr = 0x00246018U, .prod = 0xffffffffU, .disable = 0x00000000U}, | 119 | {.addr = 0x00246018U, .prod = 0xffffffffU, .disable = 0x00000000U}, |
133 | {.addr = 0x00246018U, .prod = 0xffffffffU, .disable = 0x00000000U}, | ||
134 | {.addr = 0x00244018U, .prod = 0xffffffffU, .disable = 0x00000000U}, | ||
135 | {.addr = 0x00244018U, .prod = 0xffffffffU, .disable = 0x00000000U}, | 120 | {.addr = 0x00244018U, .prod = 0xffffffffU, .disable = 0x00000000U}, |
136 | {.addr = 0x00244018U, .prod = 0xffffffffU, .disable = 0x00000000U}, | 121 | {.addr = 0x00244018U, .prod = 0xffffffffU, .disable = 0x00000000U}, |
137 | {.addr = 0x0024a124U, .prod = 0x00000001U, .disable = 0x00000000U}, | 122 | {.addr = 0x0024a124U, .prod = 0x00000001U, .disable = 0x00000000U}, |
@@ -168,7 +153,13 @@ static const struct gating_desc gv11b_slcg_xbar[] = { | |||
168 | {.addr = 0x0013dc08U, .prod = 0x00000000U, .disable = 0xfffffffeU}, | 153 | {.addr = 0x0013dc08U, .prod = 0x00000000U, .disable = 0xfffffffeU}, |
169 | {.addr = 0x0013c924U, .prod = 0x00000000U, .disable = 0x7ffffffeU}, | 154 | {.addr = 0x0013c924U, .prod = 0x00000000U, .disable = 0x7ffffffeU}, |
170 | {.addr = 0x0013cbe4U, .prod = 0x00000000U, .disable = 0x1ffffffeU}, | 155 | {.addr = 0x0013cbe4U, .prod = 0x00000000U, .disable = 0x1ffffffeU}, |
171 | {.addr = 0x0013cc04U, .prod = 0x00000000U, .disable = 0x1ffffffeU}, | 156 | }; |
157 | |||
158 | /* slcg Hshub */ | ||
159 | static const struct gating_desc gv11b_slcg_hshub[] = { | ||
160 | {.addr = 0x001fb3f4U, .prod = 0x00000000U, .disable = 0xfffffffeU}, | ||
161 | {.addr = 0x001fb7f4U, .prod = 0x00000000U, .disable = 0xfffffffeU}, | ||
162 | {.addr = 0x001fbbf4U, .prod = 0x00000000U, .disable = 0xfffffffeU}, | ||
172 | }; | 163 | }; |
173 | 164 | ||
174 | /* blcg bus */ | 165 | /* blcg bus */ |
@@ -191,8 +182,6 @@ static const struct gating_desc gv11b_blcg_fb[] = { | |||
191 | {.addr = 0x00100d30U, .prod = 0x0000c242U, .disable = 0x00000000U}, | 182 | {.addr = 0x00100d30U, .prod = 0x0000c242U, .disable = 0x00000000U}, |
192 | {.addr = 0x00100d3cU, .prod = 0x00000242U, .disable = 0x00000000U}, | 183 | {.addr = 0x00100d3cU, .prod = 0x00000242U, .disable = 0x00000000U}, |
193 | {.addr = 0x00100d48U, .prod = 0x0000c242U, .disable = 0x00000000U}, | 184 | {.addr = 0x00100d48U, .prod = 0x0000c242U, .disable = 0x00000000U}, |
194 | /* fix priv error */ | ||
195 | /*{.addr = 0x00100d1cU, .prod = 0x00000042U, .disable = 0x00000000U},*/ | ||
196 | {.addr = 0x00100c98U, .prod = 0x00004242U, .disable = 0x00000000U}, | 185 | {.addr = 0x00100c98U, .prod = 0x00004242U, .disable = 0x00000000U}, |
197 | }; | 186 | }; |
198 | 187 | ||
@@ -279,7 +268,13 @@ static const struct gating_desc gv11b_blcg_xbar[] = { | |||
279 | {.addr = 0x0013dc04U, .prod = 0x0001004aU, .disable = 0x00000000U}, | 268 | {.addr = 0x0013dc04U, .prod = 0x0001004aU, .disable = 0x00000000U}, |
280 | {.addr = 0x0013c920U, .prod = 0x0000004aU, .disable = 0x00000000U}, | 269 | {.addr = 0x0013c920U, .prod = 0x0000004aU, .disable = 0x00000000U}, |
281 | {.addr = 0x0013cbe0U, .prod = 0x00000042U, .disable = 0x00000000U}, | 270 | {.addr = 0x0013cbe0U, .prod = 0x00000042U, .disable = 0x00000000U}, |
282 | {.addr = 0x0013cc00U, .prod = 0x00000042U, .disable = 0x00000000U}, | 271 | }; |
272 | |||
273 | /* blcg Hshub */ | ||
274 | static const struct gating_desc gv11b_blcg_hshub[] = { | ||
275 | {.addr = 0x001fb3f0U, .prod = 0x0000c242U, .disable = 0x00000000U}, | ||
276 | {.addr = 0x001fb7f0U, .prod = 0x0000c242U, .disable = 0x00000000U}, | ||
277 | {.addr = 0x001fbbf0U, .prod = 0x0000c242U, .disable = 0x00000000U}, | ||
283 | }; | 278 | }; |
284 | 279 | ||
285 | /* pg gr */ | 280 | /* pg gr */ |
@@ -502,6 +497,22 @@ void gv11b_slcg_xbar_load_gating_prod(struct gk20a *g, | |||
502 | } | 497 | } |
503 | } | 498 | } |
504 | 499 | ||
500 | void gv11b_slcg_hshub_load_gating_prod(struct gk20a *g, | ||
501 | bool prod) | ||
502 | { | ||
503 | u32 i; | ||
504 | u32 size = (u32)(sizeof(gv11b_slcg_hshub) / GATING_DESC_SIZE); | ||
505 | |||
506 | if (nvgpu_is_enabled(g, NVGPU_GPU_CAN_SLCG)) { | ||
507 | for (i = 0; i < size; i++) { | ||
508 | u32 reg = gv11b_slcg_hshub[i].addr; | ||
509 | u32 val = prod ? gv11b_slcg_hshub[i].prod : | ||
510 | gv11b_slcg_hshub[i].disable; | ||
511 | gk20a_writel(g, reg, val); | ||
512 | } | ||
513 | } | ||
514 | } | ||
515 | |||
505 | void gv11b_blcg_bus_load_gating_prod(struct gk20a *g, | 516 | void gv11b_blcg_bus_load_gating_prod(struct gk20a *g, |
506 | bool prod) | 517 | bool prod) |
507 | { | 518 | { |
@@ -662,6 +673,22 @@ void gv11b_blcg_xbar_load_gating_prod(struct gk20a *g, | |||
662 | } | 673 | } |
663 | } | 674 | } |
664 | 675 | ||
676 | void gv11b_blcg_hshub_load_gating_prod(struct gk20a *g, | ||
677 | bool prod) | ||
678 | { | ||
679 | u32 i; | ||
680 | u32 size = (u32)(sizeof(gv11b_blcg_hshub) / GATING_DESC_SIZE); | ||
681 | |||
682 | if (nvgpu_is_enabled(g, NVGPU_GPU_CAN_BLCG)) { | ||
683 | for (i = 0; i < size; i++) { | ||
684 | u32 reg = gv11b_blcg_hshub[i].addr; | ||
685 | u32 val = prod ? gv11b_blcg_hshub[i].prod : | ||
686 | gv11b_blcg_hshub[i].disable; | ||
687 | gk20a_writel(g, reg, val); | ||
688 | } | ||
689 | } | ||
690 | } | ||
691 | |||
665 | void gr_gv11b_pg_gr_load_gating_prod(struct gk20a *g, | 692 | void gr_gv11b_pg_gr_load_gating_prod(struct gk20a *g, |
666 | bool prod) | 693 | bool prod) |
667 | { | 694 | { |