summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/kind_gk20a.c
diff options
context:
space:
mode:
authorArto Merilainen <amerilainen@nvidia.com>2014-03-19 03:38:25 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:08:53 -0400
commita9785995d5f22aaeb659285f8aeb64d8b56982e0 (patch)
treecc75f75bcf43db316a002a7a240b81f299bf6d7f /drivers/gpu/nvgpu/gk20a/kind_gk20a.c
parent61efaf843c22b85424036ec98015121c08f5f16c (diff)
gpu: nvgpu: Add NVIDIA GPU Driver
This patch moves the NVIDIA GPU driver to a new location. Bug 1482562 Change-Id: I24293810b9d0f1504fd9be00135e21dad656ccb6 Signed-off-by: Arto Merilainen <amerilainen@nvidia.com> Reviewed-on: http://git-master/r/383722 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/kind_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/kind_gk20a.c424
1 files changed, 424 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c
new file mode 100644
index 00000000..b0a74056
--- /dev/null
+++ b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c
@@ -0,0 +1,424 @@
1/*
2 * drivers/video/tegra/host/gk20a/kind_gk20a.c
3 *
4 * GK20A memory kind management
5 *
6 * Copyright (c) 2011, NVIDIA CORPORATION. All rights reserved.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms and conditions of the GNU General Public License,
10 * version 2, as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 * more details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
20 */
21#include <linux/bitops.h>
22
23#include "hw_gmmu_gk20a.h"
24#include "kind_gk20a.h"
25
26/* TBD: generate these from kind_macros.h */
27
28/* TBD: not sure on the work creation for gk20a, doubtful */
29static inline bool gk20a_kind_work_creation_sked(u8 k)
30{
31 return false;
32}
33static inline bool gk20a_kind_work_creation_host(u8 k)
34{
35 return false;
36}
37
38static inline bool gk20a_kind_work_creation(u8 k)
39{
40 return gk20a_kind_work_creation_sked(k) ||
41 gk20a_kind_work_creation_host(k);
42}
43
44/* note: taken from the !2cs_compression case */
45static inline bool gk20a_kind_supported(u8 k)
46{
47 return gk20a_kind_work_creation(k) ||
48 (k == gmmu_pte_kind_invalid_v()) ||
49 (k == gmmu_pte_kind_pitch_v()) ||
50 (k >= gmmu_pte_kind_z16_v() &&
51 k <= gmmu_pte_kind_z16_ms8_2c_v()) ||
52 (k >= gmmu_pte_kind_z16_2z_v() &&
53 k <= gmmu_pte_kind_z16_ms8_2z_v()) ||
54 (k == gmmu_pte_kind_s8z24_v()) ||
55 (k >= gmmu_pte_kind_s8z24_2cz_v() &&
56 k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) ||
57 (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
58 k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) ||
59 (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
60 k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) ||
61 (k == gmmu_pte_kind_z24s8_v()) ||
62 (k >= gmmu_pte_kind_z24s8_2cz_v() &&
63 k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) ||
64 (k == gmmu_pte_kind_zf32_v()) ||
65 (k >= gmmu_pte_kind_zf32_2cz_v() &&
66 k <= gmmu_pte_kind_zf32_ms8_2cz_v()) ||
67 (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
68 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) ||
69 (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
70 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) ||
71 (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
72 k <= gmmu_pte_kind_zf32_x24s8_v()) ||
73 (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
74 k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) ||
75 (k == gmmu_pte_kind_generic_16bx2_v()) ||
76 (k == gmmu_pte_kind_c32_2c_v()) ||
77 (k == gmmu_pte_kind_c32_2cra_v()) ||
78 (k == gmmu_pte_kind_c32_ms2_2c_v()) ||
79 (k == gmmu_pte_kind_c32_ms2_2cra_v()) ||
80 (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
81 k <= gmmu_pte_kind_c32_ms4_2cbr_v()) ||
82 (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
83 k <= gmmu_pte_kind_c64_2c_v()) ||
84 (k == gmmu_pte_kind_c64_2cra_v()) ||
85 (k == gmmu_pte_kind_c64_ms2_2c_v()) ||
86 (k == gmmu_pte_kind_c64_ms2_2cra_v()) ||
87 (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
88 k <= gmmu_pte_kind_c64_ms4_2cbr_v()) ||
89 (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
90 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) ||
91 (k == gmmu_pte_kind_pitch_no_swizzle_v());
92 }
93
94static inline bool gk20a_kind_z(u8 k)
95{
96 return (k >= gmmu_pte_kind_z16_v() &&
97 k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) ||
98 (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
99 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) ||
100 (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
101 k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) ||
102 (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
103 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) ||
104 (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
105 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) ||
106 (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
107 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) ||
108 (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
109 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
110 /* ||
111 (k >= gmmu_pte_kind_zv32_x24s8_2cszv_v() &&
112 k <= gmmu_pte_kind_xf32_x24s8_ms16_2cs_v())*/;
113}
114
115static inline bool gk20a_kind_c(u8 k)
116{
117 return gk20a_kind_work_creation(k) ||
118 (k == gmmu_pte_kind_pitch_v()) ||
119 (k == gmmu_pte_kind_generic_16bx2_v()) ||
120 (k >= gmmu_pte_kind_c32_2c_v() &&
121 k <= gmmu_pte_kind_c32_ms2_2cbr_v()) ||
122 (k == gmmu_pte_kind_c32_ms2_2cra_v()) ||
123 (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
124 k <= gmmu_pte_kind_c64_ms2_2cbr_v()) ||
125 (k == gmmu_pte_kind_c64_ms2_2cra_v()) ||
126 (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
127 k <= gmmu_pte_kind_pitch_no_swizzle_v());
128}
129
130static inline bool gk20a_kind_compressible(u8 k)
131{
132 return (k >= gmmu_pte_kind_z16_2c_v() &&
133 k <= gmmu_pte_kind_z16_ms16_4cz_v()) ||
134 (k >= gmmu_pte_kind_s8z24_1z_v() &&
135 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) ||
136 (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
137 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) ||
138 (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
139 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) ||
140 (k >= gmmu_pte_kind_z24s8_1z_v() &&
141 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) ||
142 (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
143 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) ||
144 (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
145 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) ||
146 (k >= gmmu_pte_kind_zf32_1z_v() &&
147 k <= gmmu_pte_kind_zf32_ms16_2cz_v()) ||
148 (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
149 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) ||
150 (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
151 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) ||
152 (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
153 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) ||
154 (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
155 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) ||
156 (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
157 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) ||
158 (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
159 k <= gmmu_pte_kind_c32_ms2_2cbr_v()) ||
160 (k == gmmu_pte_kind_c32_ms2_2cra_v()) ||
161 (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
162 k <= gmmu_pte_kind_c64_ms2_2cbr_v()) ||
163 (k == gmmu_pte_kind_c64_ms2_2cra_v()) ||
164 (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
165 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
166}
167
168static inline bool gk20a_kind_zbc(u8 k)
169{
170 return (k >= gmmu_pte_kind_z16_2c_v() &&
171 k <= gmmu_pte_kind_z16_ms16_2c_v()) ||
172 (k >= gmmu_pte_kind_z16_4cz_v() &&
173 k <= gmmu_pte_kind_z16_ms16_4cz_v()) ||
174 (k >= gmmu_pte_kind_s8z24_2cz_v() &&
175 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) ||
176 (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
177 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) ||
178 (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
179 k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) ||
180 (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
181 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) ||
182 (k >= gmmu_pte_kind_z24s8_2cs_v() &&
183 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) ||
184 (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
185 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) ||
186 (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
187 k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) ||
188 (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
189 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) ||
190 (k >= gmmu_pte_kind_zf32_2cs_v() &&
191 k <= gmmu_pte_kind_zf32_ms16_2cz_v()) ||
192 (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
193 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) ||
194 (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
195 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) ||
196 (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
197 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) ||
198 (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
199 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) ||
200 (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
201 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) ||
202 (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
203 k <= gmmu_pte_kind_c32_2cra_v()) ||
204 (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
205 k <= gmmu_pte_kind_c32_ms2_2cbr_v()) ||
206 (k == gmmu_pte_kind_c32_ms2_2cra_v()) ||
207 (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
208 k <= gmmu_pte_kind_c32_ms4_2cra_v()) ||
209 (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
210 k <= gmmu_pte_kind_c64_2cra_v()) ||
211 (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
212 k <= gmmu_pte_kind_c64_ms2_2cbr_v()) ||
213 (k == gmmu_pte_kind_c64_ms2_2cra_v()) ||
214 (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
215 k <= gmmu_pte_kind_c64_ms4_2cra_v()) ||
216 (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
217 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
218}
219
220u8 gk20a_uc_kind_map[256];
221void gk20a_init_uncompressed_kind_map(void)
222{
223 int i;
224 for (i = 0; i < 256; i++)
225 gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
226
227 gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
228 gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
229 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
230 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
231 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
232 gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
233 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
234 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
235 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
236 gmmu_pte_kind_z16_v();
237
238 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
239 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
240 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
241 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
242 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
243 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
244 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
245 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
246 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
247 gmmu_pte_kind_s8z24_v();
248
249 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
250 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
251 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
252 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
253 gmmu_pte_kind_v8z24_ms4_vc4_v();
254
255 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
256 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
257 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
258 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
259 gmmu_pte_kind_v8z24_ms8_vc8_v();
260
261 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
262 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
263 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
264 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
265 gmmu_pte_kind_v8z24_ms4_vc12_v();
266
267 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
268 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
269 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
270 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
271 gmmu_pte_kind_v8z24_ms8_vc24_v();
272
273 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
274 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
275 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
276 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
277 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
278 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
279 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
280 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
281 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
282 gmmu_pte_kind_z24s8_v();
283
284 gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
285 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
286 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
287 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
288 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
289 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
290 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
291 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
292 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
293 gmmu_pte_kind_zf32_v();
294
295 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
296 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
297 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
298 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
299
300 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
301 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
302 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
303 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
304
305 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
306 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
307 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
308 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
309
310 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
311 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
312 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
313 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
314
315 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
316 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
317 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
318 gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
319
320 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
321 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
322 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
323 gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
324
325 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
326 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
327 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
328 gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
329
330 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
331 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
332 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
333 gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
334
335 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
336 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
337 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
338 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
339 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
340 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
341 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
342 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
343 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
344 gmmu_pte_kind_zf32_x24s8_v();
345
346 gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
347 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
348 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
349 gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
350 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
351 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
352 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
353 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
354 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
355 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
356 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
357 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
358 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
359 gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
360 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
361 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
362 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
363 gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
364 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
365 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
366 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
367 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
368 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
369 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
370 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
371 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
372 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
373 gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
374 gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
375 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
376 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
377 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
378 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
379 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
380 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
381 gmmu_pte_kind_generic_16bx2_v();
382
383 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
384 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
385 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
386 gmmu_pte_kind_z24v8_ms4_vc4_v();
387
388 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
389 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
390 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
391 gmmu_pte_kind_z24v8_ms4_vc12_v();
392
393 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
394 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
395 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
396 gmmu_pte_kind_z24v8_ms8_vc8_v();
397
398 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
399 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
400 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
401 gmmu_pte_kind_z24v8_ms8_vc24_v();
402
403 gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
404 gmmu_pte_kind_x8c24_v();
405}
406
407u16 gk20a_kind_attr[256];
408void gk20a_init_kind_attr(void)
409{
410 u16 k;
411 for (k = 0; k < 256; k++) {
412 gk20a_kind_attr[k] = 0;
413 if (gk20a_kind_supported((u8)k))
414 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
415 if (gk20a_kind_compressible((u8)k))
416 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
417 if (gk20a_kind_z((u8)k))
418 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
419 if (gk20a_kind_c((u8)k))
420 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
421 if (gk20a_kind_zbc((u8)k))
422 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
423 }
424}