PDK API Guide for J721E
cpsw_dma_psi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Texas Instruments Incorporated 2018
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 
44 #ifndef CPSW_DMA_PSI_H_
45 #define CPSW_DMA_PSI_H_
46 
47 /* ========================================================================== */
48 /* Include Files */
49 /* ========================================================================== */
50 
51 #ifdef __cplusplus
52 extern "C" {
53 #endif
54 
55 /* ========================================================================== */
56 /* Macros & Typedefs */
57 /* ========================================================================== */
58 
59 /* -------------------- CPPI TX Info Word 0 definitions --------------------- */
60 
62 #define CPSWDMA_CPPI_TXINFO_WORD0_FLOWID_SHIFT (0U)
63 
65 #define CPSWDMA_CPPI_TXINFO_WORD0_FLOWID_MASK (((uint32_t) 0xFFU) << CPSWDMA_CPPI_TXINFO_WORD0_FLOWID_SHIFT)
66 
68 #define CPSWDMA_CPPI_TXINFO_WORD0_CRCTYPE_SHIFT (22U)
69 
71 #define CPSWDMA_CPPI_TXINFO_WORD0_CRCTYPE_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_TXINFO_WORD0_CRCTYPE_SHIFT)
72 
74 #define CPSWDMA_CPPI_TXINFO_WORD0_PASSCRC_SHIFT (23U)
75 
77 #define CPSWDMA_CPPI_TXINFO_WORD0_PASSCRC_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_TXINFO_WORD0_PASSCRC_SHIFT)
78 
80 #define CPSWDMA_CPPI_TXINFO_WORD0_PKTTYPE_SHIFT (27U)
81 
83 #define CPSWDMA_CPPI_TXINFO_WORD0_PKTTYPE_MASK (((uint32_t) 0x1FU) << CPSWDMA_CPPI_TXINFO_WORD0_PKTTYPE_SHIFT)
84 
85 
86 /* -------------------- CPPI TX Info Word 1 definitions --------------------- */
87 
89 #define CPSWDMA_CPPI_TXINFO_WORD1_PKTLEN_SHIFT (0U)
90 
92 #define CPSWDMA_CPPI_TXINFO_WORD1_PKTLEN_MASK (((uint32_t) 0x3FFF) << CPSWDMA_CPPI_TXINFO_WORD1_PKTLEN_SHIFT)
93 
94 
95 /* -------------------- CPPI TX Info Word 3 definitions --------------------- */
96 
98 #define CPSWDMA_CPPI_TXINFO_WORD3_SRCID_SHIFT (16U)
99 
101 #define CPSWDMA_CPPI_TXINFO_WORD3_SRCID_MASK (((uint32_t) 0xFF) << CPSWDMA_CPPI_TXINFO_WORD3_SRCID_SHIFT)
102 
103 
104 /* -------------------- CPPI TX Status Word 2 definitions --------------------- */
105 
107 #define CPSWDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD_SHIFT (0U)
108 
110 #define CPSWDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD_MASK (((uint32_t) 0xFFFF) << CPSWDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD_SHIFT)
111 
113 #define CPSWDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR_SHIFT (16U)
114 
116 #define CPSWDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR_SHIFT)
117 
119 #define CPSWDMA_CPPI_TXSTATUS_WORD2_FRAGMENT_SHIFT (17U)
120 
122 #define CPSWDMA_CPPI_TXSTATUS_WORD2_FRAGMENT_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_TXSTATUS_WORD2_FRAGMENT_SHIFT)
123 
125 #define CPSWDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N_SHIFT (18U)
126 
128 #define CPSWDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N_SHIFT)
129 
131 #define CPSWDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID_SHIFT (19U)
132 
134 #define CPSWDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID_SHIFT)
135 
137 #define CPSWDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID_SHIFT (20U)
138 
140 #define CPSWDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID_SHIFT)
141 
142 
143 /* -------------------- CPPI RX Info Word 0 definitions --------------------- */
144 
146 #define CPSWDMA_CPPI_RXINFO_WORD0_CRCTYPE_SHIFT (22U)
147 
149 #define CPSWDMA_CPPI_RXINFO_WORD0_CRCTYPE_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_RXINFO_WORD0_CRCTYPE_SHIFT)
150 
152 #define CPSWDMA_CPPI_RXINFO_WORD0_PASSCRC_SHIFT (23U)
153 
155 #define CPSWDMA_CPPI_RXINFO_WORD0_PASSCRC_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_RXINFO_WORD0_PASSCRC_SHIFT)
156 
157 
158 /* -------------------- CPPI RX Info Word 2 definitions --------------------- */
159 
161 #define CPSWDMA_CPPI_RXINFO_WORD2_TOPORT_SHIFT (16U)
162 
164 #define CPSWDMA_CPPI_RXINFO_WORD2_TOPORT_MASK (((uint32_t) 0x1FU) << CPSWDMA_CPPI_RXINFO_WORD2_TOPORT_SHIFT)
165 
166 
167 /* -------------------- CPPI RX Control Word 1 definitions --------------------- */
168 
170 #define CPSWDMA_CPPI_RXCTRL_WORD1_SEQID_SHIFT (0U)
171 
173 #define CPSWDMA_CPPI_RXCTRL_WORD1_SEQID_MASK (((uint32_t) 0xFFFFU) << CPSWDMA_CPPI_RXCTRL_WORD1_SEQID_SHIFT)
174 
176 #define CPSWDMA_CPPI_RXCTRL_WORD1_MSGTYPE_SHIFT (16U)
177 
179 #define CPSWDMA_CPPI_RXCTRL_WORD1_MSGTYPE_MASK (((uint32_t) 0xFU) << CPSWDMA_CPPI_RXCTRL_WORD1_MSGTYPE_SHIFT)
180 
182 #define CPSWDMA_CPPI_RXCTRL_WORD1_DOMAIN_SHIFT (20U)
183 
185 #define CPSWDMA_CPPI_RXCTRL_WORD1_DOMAIN_MASK (((uint32_t) 0xFFU) << CPSWDMA_CPPI_RXCTRL_WORD1_DOMAIN_SHIFT)
186 
188 #define CPSWDMA_CPPI_RXCTRL_WORD1_TSEN_SHIFT (31U)
189 
191 #define CPSWDMA_CPPI_RXCTRL_WORD1_TSEN_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_RXCTRL_WORD1_TSEN_SHIFT)
192 
193 
194 /* -------------------- CPPI RX Control Word 2 definitions --------------------- */
195 
197 #define CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT_SHIFT (0U)
198 
200 #define CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT_MASK (((uint32_t) 0x3FFFU) << CPSWDMA_CPPI_RXCTRL_WORD1_SEQID_SHIFT)
201 
203 #define CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_SHIFT (15U)
204 
206 #define CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_MASK (((uint32_t) 0x1U) << CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV_SHIFT)
207 
209 #define CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_SHIFT (16U)
210 
212 #define CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_MASK (((uint32_t) 0xFFU) << CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE_SHIFT)
213 
215 #define CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_SHIFT (24U)
216 
218 #define CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_MASK (((uint32_t) 0xFFU) << CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT_SHIFT)
219 
220 
221 /* -- Utilities macros to extract fields from the CPPI TX (host RX) PSI words -- */
222 
224 #define CPSWDMA_CPPIPSI_GET_IPV4_FLAG(chkSumInfo) \
225  CPSW_FEXT(chkSumInfo, CPSWDMA_CPPI_TXSTATUS_WORD2_IPV4_VALID)
226 
228 #define CPSWDMA_CPPIPSI_GET_IPV6_FLAG(chkSumInfo) \
229  CPSW_FEXT(chkSumInfo, CPSWDMA_CPPI_TXSTATUS_WORD2_IPV6_VALID)
230 
232 #define CPSWDMA_CPPIPSI_GET_TCPUDP_N_FLAG(chkSumInfo) \
233  CPSW_FEXT(chkSumInfo, CPSWDMA_CPPI_TXSTATUS_WORD2_TCP_UDP_N)
234 
236 #define CPSWDMA_CPPIPSI_GET_FRAGMENT_FLAG(chkSumInfo) \
237  CPSW_FEXT(chkSumInfo, CPSWDMA_CPPI_TXSTATUS_WORD2_FRAGMENT)
238 
240 #define CPSWDMA_CPPIPSI_GET_CHKSUM_ERR_FLAG(chkSumInfo) \
241  CPSW_FEXT(chkSumInfo, CPSWDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ERR)
242 
244 #define CPSWDMA_CPPIPSI_GET_CHKSUM_RESULT(chkSumInfo) \
245  CPSW_FEXT(chkSumInfo, CPSWDMA_CPPI_TXSTATUS_WORD2_CHKSUM_ADD)
246 
247 
248 /* --- Utilities macros to insert fields into the CPPI RX (host TX) PSI words --- */
249 
251 #define CPSWDMA_CPPIPSI_SET_CHKSUM_RES(chkSumInfo, val) \
252  CPSW_FINS(chkSumInfo, CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_RESULT, val)
253 
255 #define CPSWDMA_CPPIPSI_SET_CHKSUM_STARTBYTE(chkSumInfo, val) \
256  CPSW_FINS(chkSumInfo, CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_STARTBYTE, val)
257 
259 #define CPSWDMA_CPPIPSI_SET_CHKSUM_INV_FLAG(chkSumInfo, val) \
260  CPSW_FINS(chkSumInfo, CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_INV, val)
261 
263 #define CPSWDMA_CPPIPSI_SET_CHKSUM_BYTECNT(chkSumInfo, val) \
264  CPSW_FINS(chkSumInfo, CPSWDMA_CPPI_RXCTRL_WORD2_CHKSUM_BYTECNT, val)
265 
267 #define CPSWDMA_CPPIPSI_SET_TSEN(tsInfo, val) \
268  CPSW_FINS(tsInfo, CPSWDMA_CPPI_RXCTRL_WORD1_TSEN, val)
269 
271 #define CPSWDMA_CPPIPSI_SET_DOMAIN(tsInfo, val) \
272  CPSW_FINS(tsInfo, CPSWDMA_CPPI_RXCTRL_WORD1_DOMAIN, val)
273 
275 #define CPSWDMA_CPPIPSI_SET_MSGTYPE(tsInfo, val) \
276  CPSW_FINS(tsInfo, CPSWDMA_CPPI_RXCTRL_WORD1_MSGTYPE, val)
277 
279 #define CPSWDMA_CPPIPSI_SET_SEQID(tsInfo, val) \
280  CPSW_FINS(tsInfo, CPSWDMA_CPPI_RXCTRL_WORD1_SEQID, val)
281 
282 /* ========================================================================== */
283 /* Structure Declarations */
284 /* ========================================================================== */
285 
292 typedef struct CpswDma_rxProtoInfo_s
293 {
295  bool ipv6Valid;
296 
298  bool ipv4Valid;
299 
302 
304  bool fragment;
305 
307  bool chkSumErr;
308 
310  uint16_t chkSum;
312 
319 typedef struct CpswDma_txProtoInfo_s
320 {
324  uint16_t chkSumResOffset;
325 
328  uint16_t chkSumStartByte;
329 
332  bool chkSumInv;
333 
337  uint16_t chkSumByteCnt;
339 
340 /* ========================================================================== */
341 /* Global Variables */
342 /* ========================================================================== */
343 
344 /* None */
345 
346 /* ========================================================================== */
347 /* Function Declarations */
348 /* ========================================================================== */
349 
350 /* None */
351 
352 /* ========================================================================== */
353 /* Static Function Definitions */
354 /* ========================================================================== */
355 
356 /* None */
357 
358 #ifdef __cplusplus
359 }
360 #endif
361 
362 #endif /* #ifndef CPSW_DMA_PSI_H_ */
363 
uint16_t chkSumResOffset
Definition: cpsw_dma_psi.h:324
bool fragment
Definition: cpsw_dma_psi.h:304
bool tcpudpIndicator
Definition: cpsw_dma_psi.h:301
uint16_t chkSum
Definition: cpsw_dma_psi.h:310
uint16_t chkSumByteCnt
Definition: cpsw_dma_psi.h:337
bool ipv6Valid
Definition: cpsw_dma_psi.h:295
bool chkSumInv
Definition: cpsw_dma_psi.h:332
uint16_t chkSumStartByte
Definition: cpsw_dma_psi.h:328
Tx protocol info structure.
Definition: cpsw_dma_psi.h:319
bool chkSumErr
Definition: cpsw_dma_psi.h:307
bool ipv4Valid
Definition: cpsw_dma_psi.h:298
Rx Protcol info structure.
Definition: cpsw_dma_psi.h:292