Revert "gpu: nvgpu: enable semaphore acquire timeout"
[linux-3.10.git] / drivers / gpu / nvgpu / gk20a / hw_pbdma_gk20a.h
1 /*
2  * Copyright (c) 2012-2015, NVIDIA CORPORATION.  All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms and conditions of the GNU General Public License,
6  * version 2, as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
11  * more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16 /*
17  * Function naming determines intended use:
18  *
19  *     <x>_r(void) : Returns the offset for register <x>.
20  *
21  *     <x>_o(void) : Returns the offset for element <x>.
22  *
23  *     <x>_w(void) : Returns the word offset for word (4 byte) element <x>.
24  *
25  *     <x>_<y>_s(void) : Returns size of field <y> of register <x> in bits.
26  *
27  *     <x>_<y>_f(u32 v) : Returns a value based on 'v' which has been shifted
28  *         and masked to place it at field <y> of register <x>.  This value
29  *         can be |'d with others to produce a full register value for
30  *         register <x>.
31  *
32  *     <x>_<y>_m(void) : Returns a mask for field <y> of register <x>.  This
33  *         value can be ~'d and then &'d to clear the value of field <y> for
34  *         register <x>.
35  *
36  *     <x>_<y>_<z>_f(void) : Returns the constant value <z> after being shifted
37  *         to place it at field <y> of register <x>.  This value can be |'d
38  *         with others to produce a full register value for <x>.
39  *
40  *     <x>_<y>_v(u32 r) : Returns the value of field <y> from a full register
41  *         <x> value 'r' after being shifted to place its LSB at bit 0.
42  *         This value is suitable for direct comparison with other unshifted
43  *         values appropriate for use in field <y> of register <x>.
44  *
45  *     <x>_<y>_<z>_v(void) : Returns the constant value for <z> defined for
46  *         field <y> of register <x>.  This value is suitable for direct
47  *         comparison with unshifted values appropriate for use in field <y>
48  *         of register <x>.
49  */
50 #ifndef _hw_pbdma_gk20a_h_
51 #define _hw_pbdma_gk20a_h_
52
53 static inline u32 pbdma_gp_entry1_r(void)
54 {
55         return 0x10000004;
56 }
57 static inline u32 pbdma_gp_entry1_get_hi_v(u32 r)
58 {
59         return (r >> 0) & 0xff;
60 }
61 static inline u32 pbdma_gp_entry1_length_f(u32 v)
62 {
63         return (v & 0x1fffff) << 10;
64 }
65 static inline u32 pbdma_gp_entry1_length_v(u32 r)
66 {
67         return (r >> 10) & 0x1fffff;
68 }
69 static inline u32 pbdma_gp_base_r(u32 i)
70 {
71         return 0x00040048 + i*8192;
72 }
73 static inline u32 pbdma_gp_base__size_1_v(void)
74 {
75         return 0x00000001;
76 }
77 static inline u32 pbdma_gp_base_offset_f(u32 v)
78 {
79         return (v & 0x1fffffff) << 3;
80 }
81 static inline u32 pbdma_gp_base_rsvd_s(void)
82 {
83         return 3;
84 }
85 static inline u32 pbdma_gp_base_hi_r(u32 i)
86 {
87         return 0x0004004c + i*8192;
88 }
89 static inline u32 pbdma_gp_base_hi_offset_f(u32 v)
90 {
91         return (v & 0xff) << 0;
92 }
93 static inline u32 pbdma_gp_base_hi_limit2_f(u32 v)
94 {
95         return (v & 0x1f) << 16;
96 }
97 static inline u32 pbdma_gp_fetch_r(u32 i)
98 {
99         return 0x00040050 + i*8192;
100 }
101 static inline u32 pbdma_gp_get_r(u32 i)
102 {
103         return 0x00040014 + i*8192;
104 }
105 static inline u32 pbdma_gp_put_r(u32 i)
106 {
107         return 0x00040000 + i*8192;
108 }
109 static inline u32 pbdma_timeout_r(u32 i)
110 {
111         return 0x0004012c + i*8192;
112 }
113 static inline u32 pbdma_timeout__size_1_v(void)
114 {
115         return 0x00000001;
116 }
117 static inline u32 pbdma_timeout_period_m(void)
118 {
119         return 0xffffffff << 0;
120 }
121 static inline u32 pbdma_timeout_period_max_f(void)
122 {
123         return 0xffffffff;
124 }
125 static inline u32 pbdma_pb_fetch_r(u32 i)
126 {
127         return 0x00040054 + i*8192;
128 }
129 static inline u32 pbdma_pb_fetch_hi_r(u32 i)
130 {
131         return 0x00040058 + i*8192;
132 }
133 static inline u32 pbdma_get_r(u32 i)
134 {
135         return 0x00040018 + i*8192;
136 }
137 static inline u32 pbdma_get_hi_r(u32 i)
138 {
139         return 0x0004001c + i*8192;
140 }
141 static inline u32 pbdma_put_r(u32 i)
142 {
143         return 0x0004005c + i*8192;
144 }
145 static inline u32 pbdma_put_hi_r(u32 i)
146 {
147         return 0x00040060 + i*8192;
148 }
149 static inline u32 pbdma_formats_r(u32 i)
150 {
151         return 0x0004009c + i*8192;
152 }
153 static inline u32 pbdma_formats_gp_fermi0_f(void)
154 {
155         return 0x0;
156 }
157 static inline u32 pbdma_formats_pb_fermi1_f(void)
158 {
159         return 0x100;
160 }
161 static inline u32 pbdma_formats_mp_fermi0_f(void)
162 {
163         return 0x0;
164 }
165 static inline u32 pbdma_pb_header_r(u32 i)
166 {
167         return 0x00040084 + i*8192;
168 }
169 static inline u32 pbdma_pb_header_priv_user_f(void)
170 {
171         return 0x0;
172 }
173 static inline u32 pbdma_pb_header_method_zero_f(void)
174 {
175         return 0x0;
176 }
177 static inline u32 pbdma_pb_header_subchannel_zero_f(void)
178 {
179         return 0x0;
180 }
181 static inline u32 pbdma_pb_header_level_main_f(void)
182 {
183         return 0x0;
184 }
185 static inline u32 pbdma_pb_header_first_true_f(void)
186 {
187         return 0x400000;
188 }
189 static inline u32 pbdma_pb_header_type_inc_f(void)
190 {
191         return 0x20000000;
192 }
193 static inline u32 pbdma_pb_header_type_non_inc_f(void)
194 {
195         return 0x60000000;
196 }
197 static inline u32 pbdma_hdr_shadow_r(u32 i)
198 {
199         return 0x00040118 + i*8192;
200 }
201 static inline u32 pbdma_subdevice_r(u32 i)
202 {
203         return 0x00040094 + i*8192;
204 }
205 static inline u32 pbdma_subdevice_id_f(u32 v)
206 {
207         return (v & 0xfff) << 0;
208 }
209 static inline u32 pbdma_subdevice_status_active_f(void)
210 {
211         return 0x10000000;
212 }
213 static inline u32 pbdma_subdevice_channel_dma_enable_f(void)
214 {
215         return 0x20000000;
216 }
217 static inline u32 pbdma_method0_r(u32 i)
218 {
219         return 0x000400c0 + i*8192;
220 }
221 static inline u32 pbdma_method0_addr_f(u32 v)
222 {
223         return (v & 0xfff) << 2;
224 }
225 static inline u32 pbdma_method0_addr_v(u32 r)
226 {
227         return (r >> 2) & 0xfff;
228 }
229 static inline u32 pbdma_method0_subch_v(u32 r)
230 {
231         return (r >> 16) & 0x7;
232 }
233 static inline u32 pbdma_method0_first_true_f(void)
234 {
235         return 0x400000;
236 }
237 static inline u32 pbdma_method0_valid_true_f(void)
238 {
239         return 0x80000000;
240 }
241 static inline u32 pbdma_method1_r(u32 i)
242 {
243         return 0x000400c8 + i*8192;
244 }
245 static inline u32 pbdma_method2_r(u32 i)
246 {
247         return 0x000400d0 + i*8192;
248 }
249 static inline u32 pbdma_method3_r(u32 i)
250 {
251         return 0x000400d8 + i*8192;
252 }
253 static inline u32 pbdma_data0_r(u32 i)
254 {
255         return 0x000400c4 + i*8192;
256 }
257 static inline u32 pbdma_target_r(u32 i)
258 {
259         return 0x000400ac + i*8192;
260 }
261 static inline u32 pbdma_target_engine_sw_f(void)
262 {
263         return 0x1f;
264 }
265 static inline u32 pbdma_acquire_r(u32 i)
266 {
267         return 0x00040030 + i*8192;
268 }
269 static inline u32 pbdma_acquire_retry_man_2_f(void)
270 {
271         return 0x2;
272 }
273 static inline u32 pbdma_acquire_retry_exp_2_f(void)
274 {
275         return 0x100;
276 }
277 static inline u32 pbdma_acquire_timeout_exp_max_f(void)
278 {
279         return 0x7800;
280 }
281 static inline u32 pbdma_acquire_timeout_man_max_f(void)
282 {
283         return 0x7fff8000;
284 }
285 static inline u32 pbdma_acquire_timeout_en_disable_f(void)
286 {
287         return 0x0;
288 }
289 static inline u32 pbdma_status_r(u32 i)
290 {
291         return 0x00040100 + i*8192;
292 }
293 static inline u32 pbdma_channel_r(u32 i)
294 {
295         return 0x00040120 + i*8192;
296 }
297 static inline u32 pbdma_signature_r(u32 i)
298 {
299         return 0x00040010 + i*8192;
300 }
301 static inline u32 pbdma_signature_hw_valid_f(void)
302 {
303         return 0xface;
304 }
305 static inline u32 pbdma_signature_sw_zero_f(void)
306 {
307         return 0x0;
308 }
309 static inline u32 pbdma_userd_r(u32 i)
310 {
311         return 0x00040008 + i*8192;
312 }
313 static inline u32 pbdma_userd_target_vid_mem_f(void)
314 {
315         return 0x0;
316 }
317 static inline u32 pbdma_userd_addr_f(u32 v)
318 {
319         return (v & 0x7fffff) << 9;
320 }
321 static inline u32 pbdma_userd_hi_r(u32 i)
322 {
323         return 0x0004000c + i*8192;
324 }
325 static inline u32 pbdma_userd_hi_addr_f(u32 v)
326 {
327         return (v & 0xff) << 0;
328 }
329 static inline u32 pbdma_hce_ctrl_r(u32 i)
330 {
331         return 0x000400e4 + i*8192;
332 }
333 static inline u32 pbdma_hce_ctrl_hce_priv_mode_yes_f(void)
334 {
335         return 0x20;
336 }
337 static inline u32 pbdma_intr_0_r(u32 i)
338 {
339         return 0x00040108 + i*8192;
340 }
341 static inline u32 pbdma_intr_0_memreq_v(u32 r)
342 {
343         return (r >> 0) & 0x1;
344 }
345 static inline u32 pbdma_intr_0_memreq_pending_f(void)
346 {
347         return 0x1;
348 }
349 static inline u32 pbdma_intr_0_memack_timeout_pending_f(void)
350 {
351         return 0x2;
352 }
353 static inline u32 pbdma_intr_0_memack_extra_pending_f(void)
354 {
355         return 0x4;
356 }
357 static inline u32 pbdma_intr_0_memdat_timeout_pending_f(void)
358 {
359         return 0x8;
360 }
361 static inline u32 pbdma_intr_0_memdat_extra_pending_f(void)
362 {
363         return 0x10;
364 }
365 static inline u32 pbdma_intr_0_memflush_pending_f(void)
366 {
367         return 0x20;
368 }
369 static inline u32 pbdma_intr_0_memop_pending_f(void)
370 {
371         return 0x40;
372 }
373 static inline u32 pbdma_intr_0_lbconnect_pending_f(void)
374 {
375         return 0x80;
376 }
377 static inline u32 pbdma_intr_0_lbreq_pending_f(void)
378 {
379         return 0x100;
380 }
381 static inline u32 pbdma_intr_0_lback_timeout_pending_f(void)
382 {
383         return 0x200;
384 }
385 static inline u32 pbdma_intr_0_lback_extra_pending_f(void)
386 {
387         return 0x400;
388 }
389 static inline u32 pbdma_intr_0_lbdat_timeout_pending_f(void)
390 {
391         return 0x800;
392 }
393 static inline u32 pbdma_intr_0_lbdat_extra_pending_f(void)
394 {
395         return 0x1000;
396 }
397 static inline u32 pbdma_intr_0_gpfifo_pending_f(void)
398 {
399         return 0x2000;
400 }
401 static inline u32 pbdma_intr_0_gpptr_pending_f(void)
402 {
403         return 0x4000;
404 }
405 static inline u32 pbdma_intr_0_gpentry_pending_f(void)
406 {
407         return 0x8000;
408 }
409 static inline u32 pbdma_intr_0_gpcrc_pending_f(void)
410 {
411         return 0x10000;
412 }
413 static inline u32 pbdma_intr_0_pbptr_pending_f(void)
414 {
415         return 0x20000;
416 }
417 static inline u32 pbdma_intr_0_pbentry_pending_f(void)
418 {
419         return 0x40000;
420 }
421 static inline u32 pbdma_intr_0_pbcrc_pending_f(void)
422 {
423         return 0x80000;
424 }
425 static inline u32 pbdma_intr_0_xbarconnect_pending_f(void)
426 {
427         return 0x100000;
428 }
429 static inline u32 pbdma_intr_0_method_pending_f(void)
430 {
431         return 0x200000;
432 }
433 static inline u32 pbdma_intr_0_methodcrc_pending_f(void)
434 {
435         return 0x400000;
436 }
437 static inline u32 pbdma_intr_0_device_pending_f(void)
438 {
439         return 0x800000;
440 }
441 static inline u32 pbdma_intr_0_semaphore_pending_f(void)
442 {
443         return 0x2000000;
444 }
445 static inline u32 pbdma_intr_0_acquire_pending_f(void)
446 {
447         return 0x4000000;
448 }
449 static inline u32 pbdma_intr_0_pri_pending_f(void)
450 {
451         return 0x8000000;
452 }
453 static inline u32 pbdma_intr_0_no_ctxsw_seg_pending_f(void)
454 {
455         return 0x20000000;
456 }
457 static inline u32 pbdma_intr_0_pbseg_pending_f(void)
458 {
459         return 0x40000000;
460 }
461 static inline u32 pbdma_intr_0_signature_pending_f(void)
462 {
463         return 0x80000000;
464 }
465 static inline u32 pbdma_intr_1_r(u32 i)
466 {
467         return 0x00040148 + i*8192;
468 }
469 static inline u32 pbdma_intr_en_0_r(u32 i)
470 {
471         return 0x0004010c + i*8192;
472 }
473 static inline u32 pbdma_intr_en_0_lbreq_enabled_f(void)
474 {
475         return 0x100;
476 }
477 static inline u32 pbdma_intr_en_1_r(u32 i)
478 {
479         return 0x0004014c + i*8192;
480 }
481 static inline u32 pbdma_intr_stall_r(u32 i)
482 {
483         return 0x0004013c + i*8192;
484 }
485 static inline u32 pbdma_intr_stall_lbreq_enabled_f(void)
486 {
487         return 0x100;
488 }
489 static inline u32 pbdma_udma_nop_r(void)
490 {
491         return 0x00000008;
492 }
493 static inline u32 pbdma_syncpointa_r(u32 i)
494 {
495         return 0x000400a4 + i*8192;
496 }
497 static inline u32 pbdma_syncpointa_payload_v(u32 r)
498 {
499         return (r >> 0) & 0xffffffff;
500 }
501 static inline u32 pbdma_syncpointb_r(u32 i)
502 {
503         return 0x000400a8 + i*8192;
504 }
505 static inline u32 pbdma_syncpointb_op_v(u32 r)
506 {
507         return (r >> 0) & 0x3;
508 }
509 static inline u32 pbdma_syncpointb_op_wait_v(void)
510 {
511         return 0x00000000;
512 }
513 static inline u32 pbdma_syncpointb_wait_switch_v(u32 r)
514 {
515         return (r >> 4) & 0x1;
516 }
517 static inline u32 pbdma_syncpointb_wait_switch_en_v(void)
518 {
519         return 0x00000001;
520 }
521 static inline u32 pbdma_syncpointb_syncpt_index_v(u32 r)
522 {
523         return (r >> 8) & 0xff;
524 }
525 #endif