AM62L FreeRTOS SDK  11.02.00
csl_udmap_tr.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2019 Texas Instruments Incorporated.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
47 #ifndef CSL_UDMAP_TR_H_
48 #define CSL_UDMAP_TR_H_
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
54 #include <stdint.h>
55 #include <drivers/hw_include/cslr.h>
56 
57 /*-----------------------------------------------------------------------------
58  * Transfer Request (TR) support
59  *---------------------------------------------------------------------------*/
60 
63 {
64  uint32_t flags;
65  uint16_t icnt0;
66  uint16_t icnt1;
67  uint64_t addr;
68  int32_t dim1;
69  uint16_t icnt2;
70  uint16_t icnt3;
71  int32_t dim2;
72  int32_t dim3;
73  uint32_t fmtflags;
74  int32_t ddim1;
75  uint64_t daddr;
76  int32_t ddim2;
77  int32_t ddim3;
78  uint16_t dicnt0;
79  uint16_t dicnt1;
80  uint16_t dicnt2;
81  uint16_t dicnt3;
82 } __attribute__((__packed__));
83 
84 typedef struct CSL_UdmapTR_t CSL_UdmapTR;
85 
88 {
89  uint32_t flags;
90  uint32_t icnt0;
91  uint64_t addr;
92 } __attribute__((__packed__));
93 
94 typedef struct CSL_UdmapTR0_t CSL_UdmapTR0;
95 
98 {
99  uint32_t flags;
100  uint16_t icnt0;
101  uint16_t icnt1;
102  uint64_t addr;
103  int32_t dim1;
104 } __attribute__((__packed__));
105 
106 typedef struct CSL_UdmapTR1_t CSL_UdmapTR1;
107 
110 {
111  uint32_t flags;
112  uint16_t icnt0;
113  uint16_t icnt1;
114  uint64_t addr;
115  int32_t dim1;
116  uint32_t icnt2;
117  int32_t dim2;
118 } __attribute__((__packed__));
119 
120 typedef struct CSL_UdmapTR2_t CSL_UdmapTR2;
121 
124 {
125  uint32_t flags;
126  uint16_t icnt0;
127  uint16_t icnt1;
128  uint64_t addr;
129  int32_t dim1;
130  uint16_t icnt2;
131  uint16_t icnt3;
132  int32_t dim2;
133  int32_t dim3;
134 } __attribute__((__packed__));
135 
136 typedef struct CSL_UdmapTR3_t CSL_UdmapTR3;
137 
140 {
141  uint32_t flags;
142  uint16_t icnt0;
143  uint16_t icnt1;
144  uint64_t addr;
145  int32_t dim1;
146  uint16_t icnt2;
147  uint16_t icnt3;
148  int32_t dim2;
149  int32_t dim3;
150  uint32_t fmtflags;
151  int32_t ddim1;
152  uint64_t daddr;
153  int32_t ddim2;
154  int32_t ddim3;
155  uint16_t dicnt0;
156  uint16_t dicnt1;
157  uint16_t dicnt2;
158  uint16_t dicnt3;
159 } __attribute__((__packed__));
160 
161 typedef struct CSL_UdmapTR15_t CSL_UdmapTR15;
162 
171 #define CSL_UDMAP_TR_FLAGS_TYPE_SHIFT ((uint32_t) 0U)
172 #define CSL_UDMAP_TR_FLAGS_TYPE_MASK (((uint32_t) 0xFU) << CSL_UDMAP_TR_FLAGS_TYPE_SHIFT)
173 #define CSL_UDMAP_TR_FLAGS_STATIC_SHIFT ((uint32_t) 4U)
174 #define CSL_UDMAP_TR_FLAGS_STATIC_MASK (((uint32_t) 1U) << CSL_UDMAP_TR_FLAGS_STATIC_SHIFT)
175 #define CSL_UDMAP_TR_FLAGS_WAIT_SHIFT ((uint32_t) 5U)
176 #define CSL_UDMAP_TR_FLAGS_WAIT_MASK (((uint32_t) 1U) << CSL_UDMAP_TR_FLAGS_WAIT_SHIFT)
177 #define CSL_UDMAP_TR_FLAGS_EVENT_SIZE_SHIFT ((uint32_t) 6U)
178 #define CSL_UDMAP_TR_FLAGS_EVENT_SIZE_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FLAGS_EVENT_SIZE_SHIFT)
179 #define CSL_UDMAP_TR_FLAGS_TRIGGER0_SHIFT ((uint32_t) 8U)
180 #define CSL_UDMAP_TR_FLAGS_TRIGGER0_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FLAGS_TRIGGER0_SHIFT)
181 #define CSL_UDMAP_TR_FLAGS_TRIGGER0_TYPE_SHIFT ((uint32_t) 10U)
182 #define CSL_UDMAP_TR_FLAGS_TRIGGER0_TYPE_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FLAGS_TRIGGER0_TYPE_SHIFT)
183 #define CSL_UDMAP_TR_FLAGS_TRIGGER1_SHIFT ((uint32_t) 12U)
184 #define CSL_UDMAP_TR_FLAGS_TRIGGER1_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FLAGS_TRIGGER1_SHIFT)
185 #define CSL_UDMAP_TR_FLAGS_TRIGGER1_TYPE_SHIFT ((uint32_t) 14U)
186 #define CSL_UDMAP_TR_FLAGS_TRIGGER1_TYPE_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FLAGS_TRIGGER1_TYPE_SHIFT)
187 #define CSL_UDMAP_TR_FLAGS_CMD_ID_SHIFT ((uint32_t) 16U)
188 #define CSL_UDMAP_TR_FLAGS_CMD_ID_MASK (((uint32_t) 0xFFU) << CSL_UDMAP_TR_FLAGS_CMD_ID_SHIFT)
189 #define CSL_UDMAP_TR_FLAGS_CFG_FLAGS_SHIFT ((uint32_t) 24U)
190 #define CSL_UDMAP_TR_FLAGS_CFG_FLAGS_MASK (((uint32_t) 0xFFU) << CSL_UDMAP_TR_FLAGS_CFG_FLAGS_SHIFT)
191 #define CSL_UDMAP_TR_FLAGS_SA_INDIRECT_SHIFT ((uint32_t) 24U)
192 #define CSL_UDMAP_TR_FLAGS_SA_INDIRECT_MASK (((uint32_t) 1U) << CSL_UDMAP_TR_FLAGS_SA_INDIRECT_SHIFT)
193 #define CSL_UDMAP_TR_FLAGS_DA_INDIRECT_SHIFT ((uint32_t) 25U)
194 #define CSL_UDMAP_TR_FLAGS_DA_INDIRECT_MASK (((uint32_t) 1U) << CSL_UDMAP_TR_FLAGS_DA_INDIRECT_SHIFT)
195 #define CSL_UDMAP_TR_FLAGS_SUPR_EVT_SHIFT ((uint32_t) 26U)
196 #define CSL_UDMAP_TR_FLAGS_SUPR_EVT_MASK (((uint32_t) 1U) << CSL_UDMAP_TR_FLAGS_SUPR_EVT_SHIFT)
197 #define CSL_UDMAP_TR_FLAGS_EOL_SHIFT ((uint32_t) 28U)
198 #define CSL_UDMAP_TR_FLAGS_EOL_MASK (((uint32_t) 7U) << CSL_UDMAP_TR_FLAGS_EOL_SHIFT)
199 #define CSL_UDMAP_TR_FLAGS_EOP_SHIFT ((uint32_t) 31U)
200 #define CSL_UDMAP_TR_FLAGS_EOP_MASK (((uint32_t) 1U) << CSL_UDMAP_TR_FLAGS_EOP_SHIFT)
201 
211 typedef uint32_t CSL_UdmapTrFlagsType;
212 #define CSL_UDMAP_TR_FLAGS_TYPE_1D_DATA_MOVE ((uint32_t) 0U)
213 #define CSL_UDMAP_TR_FLAGS_TYPE_2D_DATA_MOVE ((uint32_t) 1U)
214 #define CSL_UDMAP_TR_FLAGS_TYPE_3D_DATA_MOVE ((uint32_t) 2U)
215 #define CSL_UDMAP_TR_FLAGS_TYPE_4D_DATA_MOVE ((uint32_t) 3U)
216 #define CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPACKING_INDIRECTION ((uint32_t) 15U)
217 
227 typedef uint32_t CSL_UdmapTrFlagsEventSize;
228 /* When TR is complete and all status for the TR has been received */
229 #define CSL_UDMAP_TR_FLAGS_EVENT_SIZE_COMPLETION ((uint32_t) 0U)
230 /* Type 0: when the last data transaction is sent for the TR; Type 1-11: when ICNT1 is decremented */
231 #define CSL_UDMAP_TR_FLAGS_EVENT_SIZE_ICNT1_DEC ((uint32_t) 1U)
232 /* Type 0-1,10-11: when the last data transaction is sent for the TR; All other types: when ICNT2 is decremented */
233 #define CSL_UDMAP_TR_FLAGS_EVENT_SIZE_ICNT2_DEC ((uint32_t) 2U)
234 /* Type 0-2,10-11: when the last data transaction is sent for the TR; All other types: when ICNT3 is decremented */
235 #define CSL_UDMAP_TR_FLAGS_EVENT_SIZE_ICNT3_DEC ((uint32_t) 3U)
236 
247 typedef uint32_t CSL_UdmapTrFlagsTrigger;
248 #define CSL_UDMAP_TR_FLAGS_TRIGGER_NONE ((uint32_t) 0U)
249 #define CSL_UDMAP_TR_FLAGS_TRIGGER_GLOBAL0 ((uint32_t) 1U)
250 #define CSL_UDMAP_TR_FLAGS_TRIGGER_LOCAL0 ((uint32_t) 2U)
251 #define CSL_UDMAP_TR_FLAGS_TRIGGER_LOCAL1 ((uint32_t) 3U)
252 #define CSL_UDMAP_TR_FLAGS_TRIGGER_LOCAL_EVENT ((uint32_t) 3U)
253 
265 #define CSL_UDMAP_TR_FLAGS_TRIGGER_TYPE_ICNT1_DEC ((uint32_t) 0U)
266 #define CSL_UDMAP_TR_FLAGS_TRIGGER_TYPE_ICNT2_DEC ((uint32_t) 1U)
267 #define CSL_UDMAP_TR_FLAGS_TRIGGER_TYPE_ICNT3_DEC ((uint32_t) 2U)
268 #define CSL_UDMAP_TR_FLAGS_TRIGGER_TYPE_ALL ((uint32_t) 3U)
269 
279 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SHIFT ((uint32_t) 0U)
280 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_MASK (((uint32_t) 7U) << CSL_UDMAP_TR_FMTFLAGS_AMODE_SHIFT)
281 #define CSL_UDMAP_TR_FMTFLAGS_DIR_SHIFT ((uint32_t) 3U)
282 #define CSL_UDMAP_TR_FMTFLAGS_DIR_MASK (((uint32_t) 1U) << CSL_UDMAP_TR_FMTFLAGS_DIR_SHIFT)
283 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_SHIFT ((uint32_t) 4U)
284 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_MASK (((uint32_t) 0xFU) << CSL_UDMAP_TR_FMTFLAGS_ELYPE_SHIFT)
285 #define CSL_UDMAP_TR_FMTFLAGS_DFMT_SHIFT ((uint32_t) 8U)
286 #define CSL_UDMAP_TR_FMTFLAGS_DFMT_MASK (((uint32_t) 0xFU) << CSL_UDMAP_TR_FMTFLAGS_DFMT_SHIFT)
287 #define CSL_UDMAP_TR_FMTFLAGS_SECTR_SHIFT ((uint32_t) 12U)
288 #define CSL_UDMAP_TR_FMTFLAGS_SECTR_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FMTFLAGS_SECTR_SHIFT)
289 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK0_SHIFT ((uint32_t) 16U)
290 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK0_MASK (((uint32_t) 0xFU) << CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK0_SHIFT)
291 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK1_SHIFT ((uint32_t) 20U)
292 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK1_MASK (((uint32_t) 0xFU) << CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK1_SHIFT)
293 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM0_SHIFT ((uint32_t) 24U)
294 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM0_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM0_SHIFT)
295 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM1_SHIFT ((uint32_t) 26U)
296 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM1_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM1_SHIFT)
297 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM2_SHIFT ((uint32_t) 28U)
298 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM2_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM2_SHIFT)
299 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM3_SHIFT ((uint32_t) 30U)
300 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM3_MASK (((uint32_t) 3U) << CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AM3_SHIFT)
301 #define CSL_UDMAP_TR_CACHEFLAGS_CACHEID_SHIFT ((uint32_t) 0U)
302 #define CSL_UDMAP_TR_CACHEFLAGS_CACHEID_MASK (((uint32_t) 0xFFU) << CSL_UDMAP_TR_CACHEFLAGS_CACHEID_SHIFT)
303 #define CSL_UDMAP_TR_CACHEFLAGS_CACHEOP_SHIFT ((uint32_t) 24U)
304 #define CSL_UDMAP_TR_CACHEFLAGS_CACHEOP_MASK (((uint32_t) 0xFFU) << CSL_UDMAP_TR_CACHEFLAGS_CACHEOP_SHIFT)
305 
315 typedef uint32_t CSL_UdmapTrFmtflagsAmode;
316 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_LINEAR ((uint32_t) 0U)
317 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_CIRCULAR ((uint32_t) 1U)
318 
330 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_512B ((uint32_t) 0U)
331 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_1KB ((uint32_t) 1U)
332 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_2KB ((uint32_t) 2U)
333 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_4KB ((uint32_t) 3U)
334 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_8KB ((uint32_t) 4U)
335 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_16KB ((uint32_t) 5U)
336 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_32KB ((uint32_t) 6U)
337 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_64KB ((uint32_t) 7U)
338 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_128KB ((uint32_t) 8U)
339 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_256KB ((uint32_t) 9U)
340 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_512KB ((uint32_t) 10U)
341 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_1GB ((uint32_t) 11U)
342 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_2GB ((uint32_t) 12U)
343 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_4GB ((uint32_t) 13U)
344 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_8GB ((uint32_t) 14U)
345 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_CBK_16GB ((uint32_t) 15U)
346 
357 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AMODE_LINEAR ((uint32_t) 0U)
358 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AMODE_CBK0 ((uint32_t) 1U)
359 #define CSL_UDMAP_TR_FMTFLAGS_AMODE_SPECIFIC_AMODE_CBK1 ((uint32_t) 2U)
360 
370 typedef uint32_t CSL_UdmapTrFmtflagsDir;
371 #define CSL_UDMAP_TR_FMTFLAGS_DIR_SRC_USES_AMODE ((uint32_t) 0U)
372 #define CSL_UDMAP_TR_FMTFLAGS_DIR_DST_USES_AMODE ((uint32_t) 1U)
373 
384 typedef uint32_t CSL_UdmapTrFmtflagsEltype;
385 /* 1 Byte per element */
386 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_1 ((uint32_t) 0U)
387 /* 1.5 Bytes (12 bits) per element */
388 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_1p5 ((uint32_t) 1U)
389 /* 2 Bytes per element */
390 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_2 ((uint32_t) 2U)
391 /* 3 Bytes per element */
392 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_3 ((uint32_t) 3U)
393 /* 4 Bytes per element */
394 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_4 ((uint32_t) 4U)
395 /* 5 Bytes per element */
396 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_5 ((uint32_t) 5U)
397 /* 16 Bytes per element */
398 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_16 ((uint32_t) 6U)
399 /* 32 Bytes per element */
400 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_32 ((uint32_t) 7U)
401 /* 1 Byte per input element 2 Bytes per output element */
402 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_1_2 ((uint32_t) 8U)
403 /* 1.5 Bytes per input element 2 Bytes per output element */
404 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_1p5_2 ((uint32_t) 9U)
405 /* 2 Bytes per input element 1 Byte per output element */
406 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_2_1 ((uint32_t) 10U)
407 /* 2 Bytes per input element 1.5 Bytes per output element */
408 #define CSL_UDMAP_TR_FMTFLAGS_ELYPE_2_1p5 ((uint32_t) 11U)
409 
420 typedef uint32_t CSL_UdmapTrFmtflagsDfmt;
421 /* The input and output block will remain identical. */
422 #define CSL_UDMAP_TR_FMTFLAGS_DFMT_NO_CHANGE ((uint32_t) 0U)
423 /* The input block is not an address but the address is up to a 64 bit constant. */
424 #define CSL_UDMAP_TR_FMTFLAGS_DFMT_CONSTANT_COPY ((uint32_t) 1U)
425 /* The inner and second most inner loops are swapped so that rows become columns and columns become rows. */
426 #define CSL_UDMAP_TR_FMTFLAGS_DFMT_TRANSPOSE ((uint32_t) 2U)
427 /* The data in the row will be accessed in the reverse of the order that it is read. */
428 #define CSL_UDMAP_TR_FMTFLAGS_DFMT_REVERSE ((uint32_t) 3U)
429 /* The data will be written in the reverse of the order that is read as well as transposed. */
430 #define CSL_UDMAP_TR_FMTFLAGS_DFMT_REVERSE_TRANSPOSE ((uint32_t) 4U)
431 
441 typedef uint32_t CSL_UdmapTrCacheflagsOp;
442 #define CSL_UDMAP_TR_CACHEFLAGS_OP_PREWARM_CACHE ((uint32_t) 0U)
443 #define CSL_UDMAP_TR_CACHEFLAGS_OP_PREWARM_MMU ((uint32_t) 1U)
444 
446 /*-----------------------------------------------------------------------------
447  * Secondary TR support
448  *---------------------------------------------------------------------------*/
451 {
452  uint64_t addr;
453  uint32_t flags;
454  uint32_t data[13];
455 } __attribute__((__packed__));
456 
457 typedef struct CSL_UdmapSecTR_t CSL_UdmapSecTR;
458 
467 #define CSL_UDMAP_SECTR_FLAGS_TYPE_SHIFT ((uint32_t) 0U)
468 #define CSL_UDMAP_SECTR_FLAGS_TYPE_MASK (((uint32_t) 0xFU) << CSL_UDMAP_SECTR_FLAGS_TYPE_SHIFT)
469 #define CSL_UDMAP_SECTR_FLAGS_TYPE_SPECIFIC_SHIFT ((uint32_t) 4U)
470 #define CSL_UDMAP_SECTR_FLAGS_TYPE_SPECIFIC_MASK (((uint32_t) 0xFFFFFFF0U) << CSL_UDMAP_SECTR_FLAGS_TYPE_SPECIFIC_SHIFT)
471 
482 typedef uint32_t CSL_UdmapTrFmtflagsSectr;
483 /* The TR does not require a secondary TR. */
484 #define CSL_UDMAP_TR_FMTFLAGS_SECTR_NONE ((uint32_t) 0U)
485 /* The TR will fetch a 64 byte secondary TR prior to the initial read. */
486 #define CSL_UDMAP_TR_FMTFLAGS_SECTR_64 ((uint32_t) 1U)
487 /* The TR will fetch a 128 byte secondary TR prior to the initial read. */
488 #define CSL_UDMAP_TR_FMTFLAGS_SECTR_128 ((uint32_t) 2U)
489 
491 /*-----------------------------------------------------------------------------
492  * TR response support
493  *---------------------------------------------------------------------------*/
495 {
496  uint32_t flags;
497 } __attribute__((__packed__));
498 
499 typedef struct CSL_UdmapTrResponse_t CSL_UdmapTrResponse;
500 
509 #define CSL_UDMAP_TR_RESPONSE_STATUS_TYPE_SHIFT ((uint32_t) 0U)
510 #define CSL_UDMAP_TR_RESPONSE_STATUS_TYPE_MASK (((uint32_t) 0xFU) << CSL_UDMAP_TR_RESPONSE_STATUS_TYPE_SHIFT)
511 #define CSL_UDMAP_TR_RESPONSE_STATUS_INFO_SHIFT ((uint32_t) 4U)
512 #define CSL_UDMAP_TR_RESPONSE_STATUS_INFO_MASK (((uint32_t) 0xFU) << CSL_UDMAP_TR_RESPONSE_STATUS_FIELD_SHIFT)
513 #define CSL_UDMAP_TR_RESPONSE_CMDID_SHIFT ((uint32_t) 16U)
514 #define CSL_UDMAP_TR_RESPONSE_CMDID_MASK (((uint32_t) 0xFFU) << CSL_UDMAP_TR_RESPONSE_CMDID_SHIFT)
515 #define CSL_UDMAP_TR_RESPONSE_CFG_SPECIFIC_SHIFT ((uint32_t) 24U)
516 #define CSL_UDMAP_TR_RESPONSE_CFG_SPECIFIC_MASK (((uint32_t) 0xFFU) << CSL_UDMAP_TR_RESPONSE_CFG_SPECIFIC_SHIFT)
517 
528 typedef uint32_t CSL_UdmapTrResponseStatus;
529 #define CSL_UDMAP_TR_RESPONSE_STATUS_COMPLETE ((uint32_t) 0U)
530 #define CSL_UDMAP_TR_RESPONSE_STATUS_TRANSFER_ERR ((uint32_t) 1U)
531 #define CSL_UDMAP_TR_RESPONSE_STATUS_ABORTED_ERR ((uint32_t) 2U)
532 #define CSL_UDMAP_TR_RESPONSE_STATUS_SUBMISSION_ERR ((uint32_t) 3U)
533 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_ERR ((uint32_t) 4U)
534 
546 /* ICNT0 was 0 */
547 #define CSL_UDMAP_TR_RESPONSE_STATUS_SUBMISSION_ICNT0 ((uint32_t) 0U)
548 /* Channel FIFO was full when TR received */
549 #define CSL_UDMAP_TR_RESPONSE_STATUS_SUBMISSION_FIFO_FULL ((uint32_t) 1U)
550 /* Channel is not owned by the submitter */
551 #define CSL_UDMAP_TR_RESPONSE_STATUS_SUBMISSION_OWN ((uint32_t) 2U)
552 
565 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_TR_TYPE ((uint32_t) 0U)
566 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_STATIC ((uint32_t) 1U)
567 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_EOL ((uint32_t) 2U)
568 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_CFG_SPECIFIC ((uint32_t) 3U)
569 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_AMODE ((uint32_t) 4U)
570 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_ELTYPE ((uint32_t) 5U)
571 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_DFMT ((uint32_t) 6U)
572 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_SECTR ((uint32_t) 7U)
573 #define CSL_UDMAP_TR_RESPONSE_STATUS_UNSUPPORTED_AMODE_SPECIFIC ((uint32_t) 8U)
574 
590 typedef uint32_t CSL_UdmapTrFlagsEol;
591 /* For Source (Read) split TRs, SOL/EOL match SOP/EOP
592  * On destination (Write) split TRs, Ignore EOL */
593 #define CSL_UDMAP_TR_FLAGS_EOL_MATCH_SOL_EOL ((uint32_t) 0U)
594 /* For Source (Read) split TRs, SOL/EOL boundaries are each ICNT0 bytes
595  * On destination (Write) split TRs, Line length is ICNT0 bytes. Clear any remaining ICNT0 bytes and increment ICNT1 by 1 */
596 #define CSL_UDMAP_TR_FLAGS_EOL_ICNT0 ((uint32_t) 1U)
597 /* For Source (Read) split TRs, SOL/EOL boundaries are each ICNT0�ICNT1 bytes
598  * On destination (Write) split TRs, Line length is ICNT0�ICNT1 bytes. Clear any remaining ICNT0/1 bytes and increment ICNT2 by 1 */
599 #define CSL_UDMAP_TR_FLAGS_EOL_ICNT0_ICNT1 ((uint32_t) 2U)
600 /* For Source (Read) split TRs, SOL/EOL boundaries are each ICNT0�ICNT1�ICNT2 bytes
601  * On destination (Write) split TRs, Line length is ICNT0�ICNT1�ICNT2 bytes. Clear any remaining ICNT0/1/2 bytes and increment ICNT3 by 1 */
602 #define CSL_UDMAP_TR_FLAGS_EOL_ICNT0_ICNT1_ICNT2 ((uint32_t) 3U)
603 /* For Source (Read) split TRs, SOL/EOL boundaries are each ICNT0�ICNT1�ICNT2�ICNT3 bytes
604  * On destination (Write) split TRs, Line length is ICNT0�ICNT1�ICNT2�ICNT3 bytes. Move on to next TR */
605 #define CSL_UDMAP_TR_FLAGS_EOL_ICNT0_ICNT1_ICNT2_ICNT3 ((uint32_t) 4U)
606 /* Reserved */
607 #define CSL_UDMAP_TR_FLAGS_EOL_RESERVED ((uint32_t) 5U)
608 
620 static inline CSL_UdmapTrResponseStatus CSL_udmapTrResponseGetStatusType( const CSL_UdmapTrResponse *pTrResponse )
621 {
622  return (CSL_UdmapTrResponseStatus)CSL_FEXT( pTrResponse->flags, UDMAP_TR_RESPONSE_STATUS_TYPE );
623 }
624 
625 /*-----------------------------------------------------------------------------
626  * Teardown response support
627  *---------------------------------------------------------------------------*/
629 {
630  uint32_t tdIndicator;
632  uint32_t chId;
634  uint32_t forced;
638 } __attribute__((__packed__));
639 
640 typedef struct CSL_UdmapTdResponse_t CSL_UdmapTdResponse;
641 
650 #define CSL_UDMAP_TD_RESPONSE_TD_INDICATOR_SHIFT ((uint32_t) 0U)
651 #define CSL_UDMAP_TD_RESPONSE_TD_INDICATOR_MASK (((uint32_t) 0xFU) << CSL_UDMAP_TD_RESPONSE_TD_INDICATOR_SHIFT)
652 #define CSL_UDMAP_TD_RESPONSE_CHAN_ID_SHIFT ((uint32_t) 4U)
653 #define CSL_UDMAP_TD_RESPONSE_CHAN_ID_MASK (((uint32_t) 0x3FFU) << CSL_UDMAP_TD_RESPONSE_CHAN_ID_SHIFT)
654 #define CSL_UDMAP_TD_RESPONSE_FORCED_SHIFT ((uint32_t) 31U)
655 #define CSL_UDMAP_TD_RESPONSE_FORCED_MASK (((uint32_t) 0x1U) << CSL_UDMAP_TD_RESPONSE_FORCED_SHIFT)
656 
667 static inline void CSL_udmapGetTdResponse(uint64_t tdResponseWord,
668  CSL_UdmapTdResponse *pTdResponse);
669 static inline void CSL_udmapGetTdResponse(uint64_t tdResponseWord,
670  CSL_UdmapTdResponse *pTdResponse)
671 {
672  if(NULL != pTdResponse)
673  {
674  uint32_t tdResponseWordLow = (uint32_t)tdResponseWord;
675 
676  pTdResponse->tdIndicator = CSL_FEXT(tdResponseWordLow, UDMAP_TD_RESPONSE_TD_INDICATOR);
677  pTdResponse->chId = CSL_FEXT(tdResponseWordLow, UDMAP_TD_RESPONSE_CHAN_ID);
678  pTdResponse->forced = CSL_FEXT(tdResponseWordLow, UDMAP_TD_RESPONSE_FORCED);
679  }
680 }
681 
682 #ifdef __cplusplus
683 }
684 #endif
685 
686 #endif /* #ifndef CSL_UDMAP_TR_H_ */
687 
__attribute__
struct CSL_UdmapTR_t __attribute__((__packed__))
CSL_UdmapTR1_t::dim1
int32_t dim1
Definition: csl_udmap_tr.h:103
CSL_UdmapTR_t::icnt2
uint16_t icnt2
Definition: csl_udmap_tr.h:69
CSL_UdmapTdResponse_t::chId
uint32_t chId
Definition: csl_udmap_tr.h:632
CSL_UdmapTrFlagsType
uint32_t CSL_UdmapTrFlagsType
Definition: csl_udmap_tr.h:211
CSL_UdmapTR_t::dim3
int32_t dim3
Definition: csl_udmap_tr.h:72
CSL_UdmapTR0_t::addr
uint64_t addr
Definition: csl_udmap_tr.h:91
CSL_UdmapTR2_t::addr
uint64_t addr
Definition: csl_udmap_tr.h:114
CSL_udmapGetTdResponse
static void CSL_udmapGetTdResponse(uint64_t tdResponseWord, CSL_UdmapTdResponse *pTdResponse)
Parses the TD response word.
Definition: csl_udmap_tr.h:669
CSL_UdmapTrFlagsEol
uint32_t CSL_UdmapTrFlagsEol
Definition: csl_udmap_tr.h:590
CSL_UdmapTrFlagsEventSize
uint32_t CSL_UdmapTrFlagsEventSize
Definition: csl_udmap_tr.h:227
CSL_UdmapTR15_t::ddim3
int32_t ddim3
Definition: csl_udmap_tr.h:154
CSL_UdmapTR_t::dicnt0
uint16_t dicnt0
Definition: csl_udmap_tr.h:78
CSL_UdmapTrResponseStatusUnsupported
uint32_t CSL_UdmapTrResponseStatusUnsupported
Definition: csl_udmap_tr.h:564
CSL_UdmapTR2_t::icnt1
uint16_t icnt1
Definition: csl_udmap_tr.h:113
CSL_UdmapTrResponseStatusSubmission
uint32_t CSL_UdmapTrResponseStatusSubmission
Definition: csl_udmap_tr.h:545
CSL_UdmapTR15_t::ddim1
int32_t ddim1
Definition: csl_udmap_tr.h:151
CSL_UdmapTR2_t
CSL_UdmapTR2 specifies a Type 2 (Three dimensional data move) Transfer Request.
Definition: csl_udmap_tr.h:110
CSL_UdmapTR3_t::dim3
int32_t dim3
Definition: csl_udmap_tr.h:133
CSL_UdmapTR2_t::dim1
int32_t dim1
Definition: csl_udmap_tr.h:115
CSL_UdmapTrFlagsTrigger
uint32_t CSL_UdmapTrFlagsTrigger
Definition: csl_udmap_tr.h:247
CSL_UdmapTR0_t
CSL_UdmapTR0 specifies a Type 0 (One dimensional data move) Transfer Request.
Definition: csl_udmap_tr.h:88
CSL_UdmapTR_t::daddr
uint64_t daddr
Definition: csl_udmap_tr.h:75
CSL_UdmapTR_t::icnt3
uint16_t icnt3
Definition: csl_udmap_tr.h:70
NULL
#define NULL
Define NULL if not defined.
Definition: csl_types.h:100
CSL_UdmapTR3_t
CSL_UdmapTR3 specifies a Type 3 (Four dimensional data move) Transfer Request.
Definition: csl_udmap_tr.h:124
CSL_UdmapTR2_t::dim2
int32_t dim2
Definition: csl_udmap_tr.h:117
CSL_UdmapTR3_t::icnt3
uint16_t icnt3
Definition: csl_udmap_tr.h:131
CSL_UdmapTR15_t::addr
uint64_t addr
Definition: csl_udmap_tr.h:144
CSL_UdmapTR3_t::dim2
int32_t dim2
Definition: csl_udmap_tr.h:132
CSL_UdmapTR15_t::dicnt0
uint16_t dicnt0
Definition: csl_udmap_tr.h:155
CSL_UdmapTdResponse_t::forced
uint32_t forced
Definition: csl_udmap_tr.h:634
CSL_UdmapTR1_t::icnt1
uint16_t icnt1
Definition: csl_udmap_tr.h:101
CSL_UdmapTR15_t::dim3
int32_t dim3
Definition: csl_udmap_tr.h:149
CSL_UdmapTR3_t::icnt2
uint16_t icnt2
Definition: csl_udmap_tr.h:130
CSL_UdmapTR15_t::fmtflags
uint32_t fmtflags
Definition: csl_udmap_tr.h:150
CSL_UdmapTR15_t::icnt2
uint16_t icnt2
Definition: csl_udmap_tr.h:146
CSL_UdmapTrFmtflagsSectr
uint32_t CSL_UdmapTrFmtflagsSectr
Definition: csl_udmap_tr.h:482
CSL_UdmapTdResponse_t::tdIndicator
uint32_t tdIndicator
Definition: csl_udmap_tr.h:630
CSL_UdmapTrFmtflagsAmodeSpecificAmode
uint32_t CSL_UdmapTrFmtflagsAmodeSpecificAmode
Definition: csl_udmap_tr.h:356
CSL_UdmapTR_t::dicnt2
uint16_t dicnt2
Definition: csl_udmap_tr.h:80
CSL_UdmapTR15_t::icnt1
uint16_t icnt1
Definition: csl_udmap_tr.h:143
CSL_UdmapTR15_t::dim1
int32_t dim1
Definition: csl_udmap_tr.h:145
CSL_UdmapTrResponse_t
Definition: csl_udmap_tr.h:495
CSL_udmapTrResponseGetStatusType
static CSL_UdmapTrResponseStatus CSL_udmapTrResponseGetStatusType(const CSL_UdmapTrResponse *pTrResponse)
Return the TR response status type.
Definition: csl_udmap_tr.h:620
CSL_UdmapTR15_t::dicnt3
uint16_t dicnt3
Definition: csl_udmap_tr.h:158
CSL_UdmapSecTR_t::data
uint32_t data[13]
Definition: csl_udmap_tr.h:454
CSL_UdmapSecTR_t
CSL_UdmapSecTR specifies a secondary Transfer Request.
Definition: csl_udmap_tr.h:451
CSL_UdmapTR3_t::flags
uint32_t flags
Definition: csl_udmap_tr.h:125
CSL_UdmapTR15_t::ddim2
int32_t ddim2
Definition: csl_udmap_tr.h:153
CSL_UdmapTrResponseStatus
uint32_t CSL_UdmapTrResponseStatus
Definition: csl_udmap_tr.h:528
CSL_UdmapTR_t::icnt0
uint16_t icnt0
Definition: csl_udmap_tr.h:65
CSL_UdmapTR1_t::icnt0
uint16_t icnt0
Definition: csl_udmap_tr.h:100
CSL_UdmapTR_t::ddim2
int32_t ddim2
Definition: csl_udmap_tr.h:76
CSL_UdmapTR3_t::dim1
int32_t dim1
Definition: csl_udmap_tr.h:129
CSL_UdmapTR_t::dicnt3
uint16_t dicnt3
Definition: csl_udmap_tr.h:81
CSL_UdmapTR15_t::dicnt2
uint16_t dicnt2
Definition: csl_udmap_tr.h:157
CSL_UdmapTrFlagsTriggerType
uint32_t CSL_UdmapTrFlagsTriggerType
Definition: csl_udmap_tr.h:264
CSL_UdmapTR1_t::addr
uint64_t addr
Definition: csl_udmap_tr.h:102
CSL_UdmapTR15_t::icnt0
uint16_t icnt0
Definition: csl_udmap_tr.h:142
CSL_UdmapTR15_t::icnt3
uint16_t icnt3
Definition: csl_udmap_tr.h:147
CSL_UdmapTR2_t::icnt0
uint16_t icnt0
Definition: csl_udmap_tr.h:112
CSL_UdmapTR_t::addr
uint64_t addr
Definition: csl_udmap_tr.h:67
CSL_UdmapTR15_t::flags
uint32_t flags
Definition: csl_udmap_tr.h:141
CSL_UdmapTR_t::flags
uint32_t flags
Definition: csl_udmap_tr.h:64
CSL_UdmapTrFmtflagsAmodeSpecificCbk
uint32_t CSL_UdmapTrFmtflagsAmodeSpecificCbk
Definition: csl_udmap_tr.h:329
CSL_UdmapTR1_t::flags
uint32_t flags
Definition: csl_udmap_tr.h:99
CSL_UdmapTrFmtflagsEltype
uint32_t CSL_UdmapTrFmtflagsEltype
Definition: csl_udmap_tr.h:384
CSL_UdmapTR_t
CSL_UdmapTR specifies a Transfer Request.
Definition: csl_udmap_tr.h:63
CSL_UdmapTdResponse_t
Definition: csl_udmap_tr.h:629
CSL_UdmapTrResponse_t::flags
uint32_t flags
Definition: csl_udmap_tr.h:496
CSL_UdmapTR_t::dim1
int32_t dim1
Definition: csl_udmap_tr.h:68
CSL_UdmapTR_t::ddim1
int32_t ddim1
Definition: csl_udmap_tr.h:74
CSL_UdmapTR15_t::dim2
int32_t dim2
Definition: csl_udmap_tr.h:148
CSL_UdmapTR2_t::flags
uint32_t flags
Definition: csl_udmap_tr.h:111
CSL_UdmapTR_t::fmtflags
uint32_t fmtflags
Definition: csl_udmap_tr.h:73
CSL_UdmapTrFmtflagsDir
uint32_t CSL_UdmapTrFmtflagsDir
Definition: csl_udmap_tr.h:370
CSL_UdmapTR_t::dim2
int32_t dim2
Definition: csl_udmap_tr.h:71
CSL_UdmapTR2_t::icnt2
uint32_t icnt2
Definition: csl_udmap_tr.h:116
CSL_UdmapTR1_t
CSL_UdmapTR1 specifies a Type 1 (Two dimensional data move) Transfer Request.
Definition: csl_udmap_tr.h:98
CSL_UdmapTR15_t::daddr
uint64_t daddr
Definition: csl_udmap_tr.h:152
CSL_UdmapSecTR_t::addr
uint64_t addr
Definition: csl_udmap_tr.h:452
CSL_UdmapTrFmtflagsAmode
uint32_t CSL_UdmapTrFmtflagsAmode
Definition: csl_udmap_tr.h:315
CSL_UdmapTR_t::icnt1
uint16_t icnt1
Definition: csl_udmap_tr.h:66
CSL_UdmapTR15_t::dicnt1
uint16_t dicnt1
Definition: csl_udmap_tr.h:156
CSL_UdmapTR0_t::icnt0
uint32_t icnt0
Definition: csl_udmap_tr.h:90
CSL_UdmapTrCacheflagsOp
uint32_t CSL_UdmapTrCacheflagsOp
Definition: csl_udmap_tr.h:441
CSL_UdmapTR3_t::icnt0
uint16_t icnt0
Definition: csl_udmap_tr.h:126
CSL_UdmapTR3_t::icnt1
uint16_t icnt1
Definition: csl_udmap_tr.h:127
CSL_UdmapTR_t::dicnt1
uint16_t dicnt1
Definition: csl_udmap_tr.h:79
CSL_UdmapTR15_t
CSL_UdmapTR15 specifies a Type 15 Transfer Request.
Definition: csl_udmap_tr.h:140
CSL_UdmapTrFmtflagsDfmt
uint32_t CSL_UdmapTrFmtflagsDfmt
Definition: csl_udmap_tr.h:420
CSL_UdmapSecTR_t::flags
uint32_t flags
Definition: csl_udmap_tr.h:453
CSL_UdmapTR_t::ddim3
int32_t ddim3
Definition: csl_udmap_tr.h:77
CSL_UdmapTR3_t::addr
uint64_t addr
Definition: csl_udmap_tr.h:128
CSL_UdmapTR0_t::flags
uint32_t flags
Definition: csl_udmap_tr.h:89