summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
diff options
context:
space:
mode:
authorSami Kiminki <skiminki@nvidia.com>2017-11-02 16:03:15 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-11-10 11:38:19 -0500
commitcefabe7eb1f1f1dba9692e21ab4f1b88b9163489 (patch)
treeb0f4e6ce64cd408e780925b8b3365b45805b7d95 /drivers/gpu/nvgpu/gp10b/fb_gp10b.c
parentb584bf8aa814d026498ebcee23480d1963338e47 (diff)
gpu: nvgpu: Remove PTE kind logic
Since NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL was made mandatory, kernel does not need to know the details about the PTE kinds anymore. Thus, we can remove the kind_gk20a.h header and the code related to kind table setup, as well as simplify buffer mapping code a bit. Bug 1902982 Change-Id: Iaf798023c219a64fb0a84da09431c5ce4bc046eb Signed-off-by: Sami Kiminki <skiminki@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1560933 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/fb_gp10b.c')
-rw-r--r--drivers/gpu/nvgpu/gp10b/fb_gp10b.c440
1 files changed, 0 insertions, 440 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
index a66476b9..9df4c851 100644
--- a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
@@ -23,448 +23,8 @@
23 */ 23 */
24 24
25#include "gk20a/gk20a.h" 25#include "gk20a/gk20a.h"
26#include "gm20b/fb_gm20b.h"
27#include "gk20a/kind_gk20a.h"
28#include "fb_gp10b.h" 26#include "fb_gp10b.h"
29 27
30#include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h>
31
32noinline_for_stack void gp10b_init_uncompressed_kind_map(void)
33{
34 int i;
35
36 for (i = 0; i < 256; i++)
37 gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
38
39 /* From gp10b */
40 gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] =
41 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] =
42 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] =
43 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2cz_v()] =
44 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms16_2cz_v()] =
45 gmmu_pte_kind_z16_v();
46
47 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] =
48 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] =
49 gmmu_pte_kind_generic_16bx2_v();
50
51 /* From gm20b */
52 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] =
53 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] =
54 gmmu_pte_kind_s8_v();
55
56 /* From gk20a */
57 gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
58 gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
59 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
60 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
61 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
62 gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
63 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
64 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
65 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
66 gmmu_pte_kind_z16_v();
67
68 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
69 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
70 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
71 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
72 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
73 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
74 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
75 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
76 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
77 gmmu_pte_kind_s8z24_v();
78
79 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
80 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
81 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
82 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
83 gmmu_pte_kind_v8z24_ms4_vc4_v();
84
85 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
86 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
87 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
88 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
89 gmmu_pte_kind_v8z24_ms8_vc8_v();
90
91 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
92 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
93 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
94 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
95 gmmu_pte_kind_v8z24_ms4_vc12_v();
96
97 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
98 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
99 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
100 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
101 gmmu_pte_kind_v8z24_ms8_vc24_v();
102
103 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
104 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
105 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
106 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
107 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
108 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
109 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
110 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
111 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
112 gmmu_pte_kind_z24s8_v();
113
114 gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
115 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
116 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
117 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
118 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
119 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
120 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
121 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
122 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
123 gmmu_pte_kind_zf32_v();
124
125 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
126 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
127 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
128 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
129
130 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
131 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
132 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
133 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
134
135 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
136 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
137 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
138 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
139
140 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
141 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
142 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
143 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
144
145 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
146 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
147 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
148 gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
149
150 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
151 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
152 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
153 gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
154
155 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
156 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
157 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
158 gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
159
160 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
161 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
162 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
163 gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
164
165 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
166 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
167 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
168 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
169 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
170 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
171 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
172 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
173 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
174 gmmu_pte_kind_zf32_x24s8_v();
175
176 gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
177 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
178 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
179 gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
180 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
181 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
182 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
183 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
184 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
185 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
186 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
187 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
188 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
189 gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
190 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
191 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
192 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
193 gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
194 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
195 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
196 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
197 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
198 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
199 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
200 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
201 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
202 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
203 gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
204 gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
205 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
206 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
207 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
208 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
209 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
210 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
211 gmmu_pte_kind_generic_16bx2_v();
212
213 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
214 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
215 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
216 gmmu_pte_kind_z24v8_ms4_vc4_v();
217
218 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
219 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
220 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
221 gmmu_pte_kind_z24v8_ms4_vc12_v();
222
223 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
224 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
225 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
226 gmmu_pte_kind_z24v8_ms8_vc8_v();
227
228 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
229 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
230 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
231 gmmu_pte_kind_z24v8_ms8_vc24_v();
232
233 gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
234 gmmu_pte_kind_x8c24_v();
235}
236
237static noinline_for_stack bool gp10b_kind_supported(u8 k)
238{
239 return /* From gp10b */
240 (k >= gmmu_pte_kind_z16_2cz_v() &&
241 k <= gmmu_pte_kind_z16_ms8_2cz_v())
242 || k == gmmu_pte_kind_z16_ms16_2cz_v()
243 || k == gmmu_pte_kind_c32_ms4_4cbra_v()
244 || k == gmmu_pte_kind_c64_ms4_4cbra_v()
245 /* From gm20b */
246 || (k == gmmu_pte_kind_smsked_message_v())
247 || (k >= gmmu_pte_kind_s8_v() &&
248 k <= gmmu_pte_kind_s8_2s_v())
249 /* From gk20a */
250 || gk20a_kind_work_creation(k)
251 || (k == gmmu_pte_kind_invalid_v())
252 || (k == gmmu_pte_kind_pitch_v())
253 || (k >= gmmu_pte_kind_z16_v() &&
254 k <= gmmu_pte_kind_z16_ms8_2c_v())
255 || (k >= gmmu_pte_kind_z16_2z_v() &&
256 k <= gmmu_pte_kind_z16_ms8_2z_v())
257 || (k == gmmu_pte_kind_s8z24_v())
258 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
259 k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
260 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
261 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
262 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
263 k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
264 || (k == gmmu_pte_kind_z24s8_v())
265 || (k >= gmmu_pte_kind_z24s8_2cz_v() &&
266 k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
267 || (k == gmmu_pte_kind_zf32_v())
268 || (k >= gmmu_pte_kind_zf32_2cz_v() &&
269 k <= gmmu_pte_kind_zf32_ms8_2cz_v())
270 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
271 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
272 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
273 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
274 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
275 k <= gmmu_pte_kind_zf32_x24s8_v())
276 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
277 k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
278 || (k == gmmu_pte_kind_generic_16bx2_v())
279 || (k == gmmu_pte_kind_c32_2c_v())
280 || (k == gmmu_pte_kind_c32_2cra_v())
281 || (k == gmmu_pte_kind_c32_ms2_2c_v())
282 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
283 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
284 k <= gmmu_pte_kind_c32_ms4_2cbr_v())
285 || (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
286 k <= gmmu_pte_kind_c64_2c_v())
287 || (k == gmmu_pte_kind_c64_2cra_v())
288 || (k == gmmu_pte_kind_c64_ms2_2c_v())
289 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
290 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
291 k <= gmmu_pte_kind_c64_ms4_2cbr_v())
292 || (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
293 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
294 || (k == gmmu_pte_kind_pitch_no_swizzle_v());
295}
296
297static noinline_for_stack bool gp10b_kind_z(u8 k)
298{
299 return /* From gp10b */
300 (k >= gmmu_pte_kind_z16_2cz_v() &&
301 k <= gmmu_pte_kind_z16_ms8_2cz_v())
302 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
303 /* From gm20b */
304 || (k >= gmmu_pte_kind_s8_v() &&
305 k <= gmmu_pte_kind_s8_2s_v())
306 /* From gk20a */
307 || (k >= gmmu_pte_kind_z16_v() &&
308 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
309 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
310 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
311 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
312 k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
313 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
314 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
315 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
316 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
317 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
318 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
319 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
320 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
321}
322
323static noinline_for_stack bool gp10b_kind_c(u8 k)
324{
325 return gk20a_kind_work_creation(k)
326 || (k == gmmu_pte_kind_pitch_v())
327 || (k == gmmu_pte_kind_generic_16bx2_v())
328 || (k >= gmmu_pte_kind_c32_2c_v() &&
329 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
330 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
331 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
332 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
333 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
334 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
335 k <= gmmu_pte_kind_pitch_no_swizzle_v());
336}
337
338static noinline_for_stack bool gp10b_kind_compressible(u8 k)
339{
340 return /* From gp10b */
341 (k >= gmmu_pte_kind_z16_2cz_v() &&
342 k <= gmmu_pte_kind_z16_ms8_2cz_v())
343 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
344 || (k >= gmmu_pte_kind_z16_4cz_v() &&
345 k <= gmmu_pte_kind_z16_ms16_4cz_v())
346 || (k == gmmu_pte_kind_c32_ms4_4cbra_v())
347 || (k == gmmu_pte_kind_c64_ms4_4cbra_v())
348 /* From gm20b */
349 || (k >= gmmu_pte_kind_s8_v() &&
350 k <= gmmu_pte_kind_s8_2s_v())
351 /* From gk20a */
352 || (k >= gmmu_pte_kind_z16_2c_v() &&
353 k <= gmmu_pte_kind_z16_ms16_4cz_v())
354 || (k >= gmmu_pte_kind_s8z24_1z_v() &&
355 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
356 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
357 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
358 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
359 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
360 || (k >= gmmu_pte_kind_z24s8_1z_v() &&
361 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
362 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
363 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
364 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
365 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
366 || (k >= gmmu_pte_kind_zf32_1z_v() &&
367 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
368 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
369 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
370 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
371 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
372 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
373 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
374 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
375 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
376 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
377 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
378 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
379 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
380 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
381 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
382 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
383 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
384 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
385 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
386}
387
388static noinline_for_stack bool gp10b_kind_zbc(u8 k)
389{
390 return /* From gp10b */
391 (k >= gmmu_pte_kind_z16_2cz_v() &&
392 k <= gmmu_pte_kind_z16_ms8_2cz_v())
393 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
394 || (k == gmmu_pte_kind_c32_ms4_4cbra_v())
395 || (k == gmmu_pte_kind_c64_ms4_4cbra_v())
396 /* From gm20b */
397 || (k >= gmmu_pte_kind_s8_v() &&
398 k <= gmmu_pte_kind_s8_2s_v())
399 /* From gk20a */
400 || (k >= gmmu_pte_kind_z16_2c_v() &&
401 k <= gmmu_pte_kind_z16_ms16_2c_v())
402 || (k >= gmmu_pte_kind_z16_4cz_v() &&
403 k <= gmmu_pte_kind_z16_ms16_4cz_v())
404 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
405 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
406 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
407 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
408 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
409 k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
410 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
411 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
412 || (k >= gmmu_pte_kind_z24s8_2cs_v() &&
413 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
414 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
415 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
416 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
417 k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
418 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
419 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
420 || (k >= gmmu_pte_kind_zf32_2cs_v() &&
421 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
422 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
423 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
424 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
425 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
426 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
427 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
428 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
429 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
430 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
431 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
432 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
433 k <= gmmu_pte_kind_c32_2cra_v())
434 || (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
435 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
436 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
437 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
438 k <= gmmu_pte_kind_c32_ms4_2cra_v())
439 || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
440 k <= gmmu_pte_kind_c64_2cra_v())
441 || (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
442 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
443 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
444 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
445 k <= gmmu_pte_kind_c64_ms4_2cra_v())
446 || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
447 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
448}
449
450void gp10b_init_kind_attr(void)
451{
452 u16 k;
453
454 for (k = 0; k < NV_KIND_ATTR_SIZE; k++) {
455 if (gp10b_kind_supported((u8)k))
456 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
457 if (gp10b_kind_compressible((u8)k))
458 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
459 if (gp10b_kind_z((u8)k))
460 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
461 if (gp10b_kind_c((u8)k))
462 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
463 if (gp10b_kind_zbc((u8)k))
464 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
465 }
466}
467
468unsigned int gp10b_fb_compression_page_size(struct gk20a *g) 28unsigned int gp10b_fb_compression_page_size(struct gk20a *g)
469{ 29{
470 return SZ_64K; 30 return SZ_64K;