summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
diff options
context:
space:
mode:
authorSunny He <suhe@nvidia.com>2017-08-11 17:44:06 -0400
committerShu Zhong <shuz@nvidia.com>2017-08-11 17:57:42 -0400
commit5248d6b4b5f74a5dca492d7666e80a819734f8da (patch)
tree47b7fd47d02fb39b210d9e21cd4ef36d898450b1 /drivers/gpu/nvgpu/gm20b/fb_gm20b.c
parent36c07aaf5da4d0e739c5143ed00d4ca8a2263ce1 (diff)
Revert "gpu: nvgpu: remove kind map inheritance"
Conflicts with gv100 changes This reverts commit 83e49b39181a86d32f6350c65659b5892f8f7670. Change-Id: Ic5720fd3c214fa306645fb628a28ecf7d6d0c26d Signed-off-by: Sunny He <suhe@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1537673 Reviewed-by: Shu Zhong <shuz@nvidia.com> Tested-by: Shu Zhong <shuz@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/fb_gm20b.c')
-rw-r--r--drivers/gpu/nvgpu/gm20b/fb_gm20b.c383
1 files changed, 17 insertions, 366 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
index 47b4313b..8b811cbe 100644
--- a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
@@ -33,402 +33,53 @@ static void fb_gm20b_init_fs_state(struct gk20a *g)
33 g->ltc_count); 33 g->ltc_count);
34} 34}
35 35
36noinline_for_stack void gm20b_init_uncompressed_kind_map(void) 36void gm20b_init_uncompressed_kind_map(void)
37{ 37{
38 int i; 38 gk20a_init_uncompressed_kind_map();
39 39
40 for (i = 0; i < 256; i++)
41 gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
42
43 /* From gm20b */
44 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] = 40 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] =
45 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] = 41 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] =
46 gmmu_pte_kind_s8_v(); 42 gmmu_pte_kind_s8_v();
47
48 /* From gk20a */
49 gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
50 gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
51 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
52 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
53 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
54 gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
55 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
56 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
57 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
58 gmmu_pte_kind_z16_v();
59
60 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
61 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
62 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
63 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
64 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
65 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
66 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
67 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
68 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
69 gmmu_pte_kind_s8z24_v();
70
71 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
72 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
73 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
74 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
75 gmmu_pte_kind_v8z24_ms4_vc4_v();
76
77 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
78 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
79 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
80 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
81 gmmu_pte_kind_v8z24_ms8_vc8_v();
82
83 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
84 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
85 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
86 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
87 gmmu_pte_kind_v8z24_ms4_vc12_v();
88
89 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
90 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
91 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
92 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
93 gmmu_pte_kind_v8z24_ms8_vc24_v();
94
95 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
96 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
97 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
98 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
99 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
100 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
101 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
102 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
103 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
104 gmmu_pte_kind_z24s8_v();
105
106 gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
107 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
108 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
109 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
110 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
111 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
112 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
113 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
114 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
115 gmmu_pte_kind_zf32_v();
116
117 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
118 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
119 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
120 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
121
122 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
123 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
124 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
125 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
126
127 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
128 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
129 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
130 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
131
132 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
133 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
134 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
135 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
136
137 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
138 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
139 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
140 gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
141
142 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
143 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
144 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
145 gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
146
147 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
148 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
149 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
150 gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
151
152 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
153 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
154 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
155 gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
156
157 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
158 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
159 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
160 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
161 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
162 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
163 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
164 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
165 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
166 gmmu_pte_kind_zf32_x24s8_v();
167
168 gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
169 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
170 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
171 gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
172 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
173 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
174 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
175 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
176 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
177 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
178 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
179 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
180 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
181 gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
182 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
183 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
184 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
185 gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
186 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
187 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
188 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
189 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
190 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
191 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
192 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
193 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
194 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
195 gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
196 gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
197 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
198 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
199 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
200 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
201 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
202 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
203 gmmu_pte_kind_generic_16bx2_v();
204
205 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
206 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
207 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
208 gmmu_pte_kind_z24v8_ms4_vc4_v();
209
210 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
211 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
212 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
213 gmmu_pte_kind_z24v8_ms4_vc12_v();
214
215 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
216 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
217 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
218 gmmu_pte_kind_z24v8_ms8_vc8_v();
219
220 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
221 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
222 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
223 gmmu_pte_kind_z24v8_ms8_vc24_v();
224
225 gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
226 gmmu_pte_kind_x8c24_v();
227} 43}
228 44
229static noinline_for_stack bool gm20b_kind_supported(u8 k) 45static bool gm20b_kind_supported(u8 k)
230{ 46{
231 return /* From gm20b */ 47 return k == gmmu_pte_kind_smsked_message_v()
232 (k == gmmu_pte_kind_smsked_message_v())
233 || (k >= gmmu_pte_kind_s8_v() && 48 || (k >= gmmu_pte_kind_s8_v() &&
234 k <= gmmu_pte_kind_s8_2s_v()) 49 k <= gmmu_pte_kind_s8_2s_v());
235 /* From gk20a */
236 || gk20a_kind_work_creation(k)
237 || (k == gmmu_pte_kind_invalid_v())
238 || (k == gmmu_pte_kind_pitch_v())
239 || (k >= gmmu_pte_kind_z16_v() &&
240 k <= gmmu_pte_kind_z16_ms8_2c_v())
241 || (k >= gmmu_pte_kind_z16_2z_v() &&
242 k <= gmmu_pte_kind_z16_ms8_2z_v())
243 || (k == gmmu_pte_kind_s8z24_v())
244 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
245 k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
246 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
247 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
248 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
249 k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
250 || (k == gmmu_pte_kind_z24s8_v())
251 || (k >= gmmu_pte_kind_z24s8_2cz_v() &&
252 k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
253 || (k == gmmu_pte_kind_zf32_v())
254 || (k >= gmmu_pte_kind_zf32_2cz_v() &&
255 k <= gmmu_pte_kind_zf32_ms8_2cz_v())
256 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
257 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
258 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
259 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
260 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
261 k <= gmmu_pte_kind_zf32_x24s8_v())
262 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
263 k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
264 || (k == gmmu_pte_kind_generic_16bx2_v())
265 || (k == gmmu_pte_kind_c32_2c_v())
266 || (k == gmmu_pte_kind_c32_2cra_v())
267 || (k == gmmu_pte_kind_c32_ms2_2c_v())
268 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
269 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
270 k <= gmmu_pte_kind_c32_ms4_2cbr_v())
271 || (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
272 k <= gmmu_pte_kind_c64_2c_v())
273 || (k == gmmu_pte_kind_c64_2cra_v())
274 || (k == gmmu_pte_kind_c64_ms2_2c_v())
275 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
276 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
277 k <= gmmu_pte_kind_c64_ms4_2cbr_v())
278 || (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
279 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
280 || (k == gmmu_pte_kind_pitch_no_swizzle_v());
281}
282
283static noinline_for_stack bool gm20b_kind_z(u8 k)
284{
285 return /* From gm20b */
286 (k >= gmmu_pte_kind_s8_v() &&
287 k <= gmmu_pte_kind_s8_2s_v())
288 /* From gk20a */
289 || (k >= gmmu_pte_kind_z16_v() &&
290 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
291 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
292 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
293 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
294 k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
295 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
296 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
297 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
298 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
299 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
300 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
301 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
302 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
303} 50}
304 51
305static noinline_for_stack bool gm20b_kind_c(u8 k) 52static bool gm20b_kind_z(u8 k)
306{ 53{
307 return gk20a_kind_work_creation(k) 54 return (k >= gmmu_pte_kind_s8_v() &&
308 || (k == gmmu_pte_kind_pitch_v()) 55 k <= gmmu_pte_kind_s8_2s_v());
309 || (k == gmmu_pte_kind_generic_16bx2_v())
310 || (k >= gmmu_pte_kind_c32_2c_v() &&
311 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
312 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
313 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
314 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
315 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
316 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
317 k <= gmmu_pte_kind_pitch_no_swizzle_v());
318} 56}
319 57
320static noinline_for_stack bool gm20b_kind_compressible(u8 k) 58static bool gm20b_kind_compressible(u8 k)
321{ 59{
322 return /* From gm20b */ 60 return (k >= gmmu_pte_kind_s8_v() &&
323 (k >= gmmu_pte_kind_s8_v() && 61 k <= gmmu_pte_kind_s8_2s_v());
324 k <= gmmu_pte_kind_s8_2s_v())
325 /* From gk20a */
326 || (k >= gmmu_pte_kind_z16_2c_v() &&
327 k <= gmmu_pte_kind_z16_ms16_4cz_v())
328 || (k >= gmmu_pte_kind_s8z24_1z_v() &&
329 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
330 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
331 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
332 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
333 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
334 || (k >= gmmu_pte_kind_z24s8_1z_v() &&
335 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
336 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
337 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
338 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
339 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
340 || (k >= gmmu_pte_kind_zf32_1z_v() &&
341 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
342 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
343 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
344 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
345 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
346 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
347 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
348 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
349 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
350 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
351 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
352 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
353 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
354 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
355 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
356 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
357 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
358 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
359 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
360} 62}
361 63
362static noinline_for_stack bool gm20b_kind_zbc(u8 k) 64static bool gm20b_kind_zbc(u8 k)
363{ 65{
364 return /* From gm20b */ 66 return (k >= gmmu_pte_kind_s8_v() &&
365 (k >= gmmu_pte_kind_s8_v() && 67 k <= gmmu_pte_kind_s8_2s_v());
366 k <= gmmu_pte_kind_s8_2s_v())
367 /* From gk20a */
368 || (k >= gmmu_pte_kind_z16_2c_v() &&
369 k <= gmmu_pte_kind_z16_ms16_2c_v())
370 || (k >= gmmu_pte_kind_z16_4cz_v() &&
371 k <= gmmu_pte_kind_z16_ms16_4cz_v())
372 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
373 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
374 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
375 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
376 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
377 k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
378 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
379 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
380 || (k >= gmmu_pte_kind_z24s8_2cs_v() &&
381 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
382 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
383 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
384 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
385 k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
386 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
387 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
388 || (k >= gmmu_pte_kind_zf32_2cs_v() &&
389 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
390 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
391 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
392 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
393 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
394 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
395 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
396 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
397 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
398 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
399 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
400 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
401 k <= gmmu_pte_kind_c32_2cra_v())
402 || (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
403 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
404 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
405 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
406 k <= gmmu_pte_kind_c32_ms4_2cra_v())
407 || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
408 k <= gmmu_pte_kind_c64_2cra_v())
409 || (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
410 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
411 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
412 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
413 k <= gmmu_pte_kind_c64_ms4_2cra_v())
414 || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
415 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
416} 68}
417 69
418void gm20b_init_kind_attr(void) 70void gm20b_init_kind_attr(void)
419{ 71{
420 u16 k; 72 u16 k;
421 73
422 for (k = 0; k < NV_KIND_ATTR_SIZE; k++) { 74 gk20a_init_kind_attr();
423 gk20a_kind_attr[k] = 0; 75
76 for (k = 0; k < 256; k++) {
424 if (gm20b_kind_supported((u8)k)) 77 if (gm20b_kind_supported((u8)k))
425 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; 78 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
426 if (gm20b_kind_compressible((u8)k)) 79 if (gm20b_kind_compressible((u8)k))
427 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; 80 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
428 if (gm20b_kind_z((u8)k)) 81 if (gm20b_kind_z((u8)k))
429 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; 82 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
430 if (gm20b_kind_c((u8)k))
431 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
432 if (gm20b_kind_zbc((u8)k)) 83 if (gm20b_kind_zbc((u8)k))
433 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; 84 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
434 } 85 }