1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
12 #ifndef K3_NAVSS_UDMA_HWDEF_H_
13 #define K3_NAVSS_UDMA_HWDEF_H_
15 #define UDMA_PSIL_DST_THREAD_ID_OFFSET 0x8000
17 /* Global registers */
18 #define UDMA_REV_REG 0x0
19 #define UDMA_PERF_CTL_REG 0x4
20 #define UDMA_EMU_CTL_REG 0x8
21 #define UDMA_PSIL_TO_REG 0x10
22 #define UDMA_UTC_CTL_REG 0x1c
23 #define UDMA_CAP_REG(i) (0x20 + (i * 4))
24 #define UDMA_RX_FLOW_ID_FW_OES_REG 0x80
25 #define UDMA_RX_FLOW_ID_FW_STATUS_REG 0x88
28 #define UDMA_RFLOW_RFA_REG 0x0
29 #define UDMA_RFLOW_RFB_REG 0x4
30 #define UDMA_RFLOW_RFC_REG 0x8
31 #define UDMA_RFLOW_RFD_REG 0xc
32 #define UDMA_RFLOW_RFE_REG 0x10
33 #define UDMA_RFLOW_RFF_REG 0x14
34 #define UDMA_RFLOW_RFG_REG 0x18
35 #define UDMA_RFLOW_RFH_REG 0x1c
37 #define UDMA_RFLOW_REG(x) (UDMA_RFLOW_RF##x##_REG)
40 #define UDMA_TCHAN_TCFG_REG 0x0
41 #define UDMA_TCHAN_TCREDIT_REG 0x4
42 #define UDMA_TCHAN_TCQ_REG 0x14
43 #define UDMA_TCHAN_TOES_REG(i) (0x20 + (i) * 4)
44 #define UDMA_TCHAN_TEOES_REG 0x60
45 #define UDMA_TCHAN_TPRI_CTRL_REG 0x64
46 #define UDMA_TCHAN_THREAD_ID_REG 0x68
47 #define UDMA_TCHAN_TFIFO_DEPTH_REG 0x70
48 #define UDMA_TCHAN_TST_SCHED_REG 0x80
51 #define UDMA_RCHAN_RCFG_REG 0x0
52 #define UDMA_RCHAN_RCQ_REG 0x14
53 #define UDMA_RCHAN_ROES_REG(i) (0x20 + (i) * 4)
54 #define UDMA_RCHAN_REOES_REG 0x60
55 #define UDMA_RCHAN_RPRI_CTRL_REG 0x64
56 #define UDMA_RCHAN_THREAD_ID_REG 0x68
57 #define UDMA_RCHAN_RST_SCHED_REG 0x80
58 #define UDMA_RCHAN_RFLOW_RNG_REG 0xf0
61 #define UDMA_TCHAN_RT_CTL_REG 0x0
62 #define UDMA_TCHAN_RT_SWTRIG_REG 0x8
63 #define UDMA_TCHAN_RT_STDATA_REG 0x80
65 #define UDMA_TCHAN_RT_PEERn_REG(i) (0x200 + (i * 0x4))
66 #define UDMA_TCHAN_RT_PEER_STATIC_TR_XY_REG \
67 UDMA_TCHAN_RT_PEERn_REG(0) /* PSI-L: 0x400 */
68 #define UDMA_TCHAN_RT_PEER_STATIC_TR_Z_REG \
69 UDMA_TCHAN_RT_PEERn_REG(1) /* PSI-L: 0x401 */
70 #define UDMA_TCHAN_RT_PEER_BCNT_REG \
71 UDMA_TCHAN_RT_PEERn_REG(4) /* PSI-L: 0x404 */
72 #define UDMA_TCHAN_RT_PEER_RT_EN_REG \
73 UDMA_TCHAN_RT_PEERn_REG(8) /* PSI-L: 0x408 */
75 #define UDMA_TCHAN_RT_PCNT_REG 0x400
76 #define UDMA_TCHAN_RT_BCNT_REG 0x408
77 #define UDMA_TCHAN_RT_SBCNT_REG 0x410
80 #define UDMA_RCHAN_RT_CTL_REG 0x0
81 #define UDMA_RCHAN_RT_SWTRIG_REG 0x8
82 #define UDMA_RCHAN_RT_STDATA_REG 0x80
84 #define UDMA_RCHAN_RT_PEERn_REG(i) (0x200 + (i * 0x4))
85 #define UDMA_RCHAN_RT_PEER_STATIC_TR_XY_REG \
86 UDMA_RCHAN_RT_PEERn_REG(0) /* PSI-L: 0x400 */
87 #define UDMA_RCHAN_RT_PEER_STATIC_TR_Z_REG \
88 UDMA_RCHAN_RT_PEERn_REG(1) /* PSI-L: 0x401 */
89 #define UDMA_RCHAN_RT_PEER_BCNT_REG \
90 UDMA_RCHAN_RT_PEERn_REG(4) /* PSI-L: 0x404 */
91 #define UDMA_RCHAN_RT_PEER_RT_EN_REG \
92 UDMA_RCHAN_RT_PEERn_REG(8) /* PSI-L: 0x408 */
94 #define UDMA_RCHAN_RT_PCNT_REG 0x400
95 #define UDMA_RCHAN_RT_BCNT_REG 0x408
96 #define UDMA_RCHAN_RT_SBCNT_REG 0x410
98 /* UDMA_TCHAN_TCFG_REG/UDMA_RCHAN_RCFG_REG */
99 #define UDMA_CHAN_CFG_PAUSE_ON_ERR BIT(31)
100 #define UDMA_TCHAN_CFG_FILT_EINFO BIT(30)
101 #define UDMA_TCHAN_CFG_FILT_PSWORDS BIT(29)
102 #define UDMA_CHAN_CFG_ATYPE_MASK GENMASK(25, 24)
103 #define UDMA_CHAN_CFG_ATYPE_SHIFT 24
104 #define UDMA_CHAN_CFG_CHAN_TYPE_MASK GENMASK(19, 16)
105 #define UDMA_CHAN_CFG_CHAN_TYPE_SHIFT 16
107 * PBVR - using pass by value rings
108 * PBRR - using pass by reference rings
109 * 3RDP - Third Party DMA
111 * SB - single buffer packet mode enabled
113 #define UDMA_CHAN_CFG_CHAN_TYPE_PACKET_PBRR \
114 (2 << UDMA_CHAN_CFG_CHAN_TYPE_SHIFT)
115 #define UDMA_CHAN_CFG_CHAN_TYPE_PACKET_SB_PBRR \
116 (3 << UDMA_CHAN_CFG_CHAN_TYPE_SHIFT)
117 #define UDMA_CHAN_CFG_CHAN_TYPE_3RDP_PBRR \
118 (10 << UDMA_CHAN_CFG_CHAN_TYPE_SHIFT)
119 #define UDMA_CHAN_CFG_CHAN_TYPE_3RDP_PBVR \
120 (11 << UDMA_CHAN_CFG_CHAN_TYPE_SHIFT)
121 #define UDMA_CHAN_CFG_CHAN_TYPE_3RDP_BC_PBRR \
122 (12 << UDMA_CHAN_CFG_CHAN_TYPE_SHIFT)
123 #define UDMA_RCHAN_CFG_IGNORE_SHORT BIT(15)
124 #define UDMA_RCHAN_CFG_IGNORE_LONG BIT(14)
125 #define UDMA_TCHAN_CFG_SUPR_TDPKT BIT(8)
126 #define UDMA_CHAN_CFG_FETCH_SIZE_MASK GENMASK(6, 0)
127 #define UDMA_CHAN_CFG_FETCH_SIZE_SHIFT 0
129 /* UDMA_TCHAN_RT_CTL_REG/UDMA_RCHAN_RT_CTL_REG */
130 #define UDMA_CHAN_RT_CTL_EN BIT(31)
131 #define UDMA_CHAN_RT_CTL_TDOWN BIT(30)
132 #define UDMA_CHAN_RT_CTL_PAUSE BIT(29)
133 #define UDMA_CHAN_RT_CTL_FTDOWN BIT(28)
134 #define UDMA_CHAN_RT_CTL_ERROR BIT(0)
136 /* UDMA_TCHAN_RT_PEER_RT_EN_REG/UDMA_RCHAN_RT_PEER_RT_EN_REG (PSI-L: 0x408) */
137 #define UDMA_PEER_RT_EN_ENABLE BIT(31)
138 #define UDMA_PEER_RT_EN_TEARDOWN BIT(30)
139 #define UDMA_PEER_RT_EN_PAUSE BIT(29)
140 #define UDMA_PEER_RT_EN_FLUSH BIT(28)
141 #define UDMA_PEER_RT_EN_IDLE BIT(1)
143 /* RX Flow reg RFA */
144 #define UDMA_RFLOW_RFA_EINFO BIT(30)
145 #define UDMA_RFLOW_RFA_PSINFO BIT(29)
146 #define UDMA_RFLOW_RFA_ERR_HANDLING BIT(28)
147 #define UDMA_RFLOW_RFA_DESC_TYPE_MASK GENMASK(27, 26)
148 #define UDMA_RFLOW_RFA_DESC_TYPE_SHIFT 26
149 #define UDMA_RFLOW_RFA_PS_LOC BIT(25)
150 #define UDMA_RFLOW_RFA_SOP_OFF_MASK GENMASK(24, 16)
151 #define UDMA_RFLOW_RFA_SOP_OFF_SHIFT 16
152 #define UDMA_RFLOW_RFA_DEST_QNUM_MASK GENMASK(15, 0)
153 #define UDMA_RFLOW_RFA_DEST_QNUM_SHIFT 0
155 /* RX Flow reg RFC */
156 #define UDMA_RFLOW_RFC_SRC_TAG_HI_SEL_SHIFT 28
157 #define UDMA_RFLOW_RFC_SRC_TAG_LO_SEL_SHIFT 24
158 #define UDMA_RFLOW_RFC_DST_TAG_HI_SEL_SHIFT 20
159 #define UDMA_RFLOW_RFC_DST_TAG_LO_SE_SHIFT 16
162 * UDMA_TCHAN_RT_PEER_STATIC_TR_XY_REG /
163 * UDMA_RCHAN_RT_PEER_STATIC_TR_XY_REG
165 #define PDMA_STATIC_TR_X_MASK GENMASK(26, 24)
166 #define PDMA_STATIC_TR_X_SHIFT (24)
167 #define PDMA_STATIC_TR_Y_MASK GENMASK(11, 0)
168 #define PDMA_STATIC_TR_Y_SHIFT (0)
170 #define PDMA_STATIC_TR_Y(x) \
171 (((x) << PDMA_STATIC_TR_Y_SHIFT) & PDMA_STATIC_TR_Y_MASK)
172 #define PDMA_STATIC_TR_X(x) \
173 (((x) << PDMA_STATIC_TR_X_SHIFT) & PDMA_STATIC_TR_X_MASK)
176 * UDMA_TCHAN_RT_PEER_STATIC_TR_Z_REG /
177 * UDMA_RCHAN_RT_PEER_STATIC_TR_Z_REG
179 #define PDMA_STATIC_TR_Z_MASK GENMASK(11, 0)
180 #define PDMA_STATIC_TR_Z_SHIFT (0)
181 #define PDMA_STATIC_TR_Z(x) \
182 (((x) << PDMA_STATIC_TR_Z_SHIFT) & PDMA_STATIC_TR_Z_MASK)
184 #endif /* K3_NAVSS_UDMA_HWDEF_H_ */