1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com
4 * Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
7 #include <linux/kernel.h>
9 #include "k3-psil-priv.h"
11 #define PSIL_PDMA_XY_TR(x) \
15 .ep_type = PSIL_EP_PDMA_XY, \
19 #define PSIL_PDMA_XY_PKT(x) \
23 .ep_type = PSIL_EP_PDMA_XY, \
28 #define PSIL_PDMA_MCASP(x) \
32 .ep_type = PSIL_EP_PDMA_XY, \
38 #define PSIL_ETHERNET(x) \
42 .ep_type = PSIL_EP_NATIVE, \
49 #define PSIL_SA2UL(x, tx) \
53 .ep_type = PSIL_EP_NATIVE, \
61 /* PSI-L source thread IDs, used for RX (DMA_DEV_TO_MEM) */
62 static struct psil_ep j721e_src_ep_map
[] = {
64 PSIL_SA2UL(0x4000, 0),
65 PSIL_SA2UL(0x4001, 0),
66 PSIL_SA2UL(0x4002, 0),
67 PSIL_SA2UL(0x4003, 0),
69 PSIL_ETHERNET(0x4100),
70 PSIL_ETHERNET(0x4101),
71 PSIL_ETHERNET(0x4102),
72 PSIL_ETHERNET(0x4103),
74 PSIL_ETHERNET(0x4200),
75 PSIL_ETHERNET(0x4201),
76 PSIL_ETHERNET(0x4202),
77 PSIL_ETHERNET(0x4203),
78 /* PDMA6 (PSIL_PDMA_MCASP_G0) - McASP0-2 */
79 PSIL_PDMA_MCASP(0x4400),
80 PSIL_PDMA_MCASP(0x4401),
81 PSIL_PDMA_MCASP(0x4402),
82 /* PDMA7 (PSIL_PDMA_MCASP_G1) - McASP3-11 */
83 PSIL_PDMA_MCASP(0x4500),
84 PSIL_PDMA_MCASP(0x4501),
85 PSIL_PDMA_MCASP(0x4502),
86 PSIL_PDMA_MCASP(0x4503),
87 PSIL_PDMA_MCASP(0x4504),
88 PSIL_PDMA_MCASP(0x4505),
89 PSIL_PDMA_MCASP(0x4506),
90 PSIL_PDMA_MCASP(0x4507),
91 PSIL_PDMA_MCASP(0x4508),
92 /* PDMA8 (PDMA_MISC_G0) - SPI0-1 */
93 PSIL_PDMA_XY_PKT(0x4600),
94 PSIL_PDMA_XY_PKT(0x4601),
95 PSIL_PDMA_XY_PKT(0x4602),
96 PSIL_PDMA_XY_PKT(0x4603),
97 PSIL_PDMA_XY_PKT(0x4604),
98 PSIL_PDMA_XY_PKT(0x4605),
99 PSIL_PDMA_XY_PKT(0x4606),
100 PSIL_PDMA_XY_PKT(0x4607),
101 /* PDMA9 (PDMA_MISC_G1) - SPI2-3 */
102 PSIL_PDMA_XY_PKT(0x460c),
103 PSIL_PDMA_XY_PKT(0x460d),
104 PSIL_PDMA_XY_PKT(0x460e),
105 PSIL_PDMA_XY_PKT(0x460f),
106 PSIL_PDMA_XY_PKT(0x4610),
107 PSIL_PDMA_XY_PKT(0x4611),
108 PSIL_PDMA_XY_PKT(0x4612),
109 PSIL_PDMA_XY_PKT(0x4613),
110 /* PDMA10 (PDMA_MISC_G2) - SPI4-5 */
111 PSIL_PDMA_XY_PKT(0x4618),
112 PSIL_PDMA_XY_PKT(0x4619),
113 PSIL_PDMA_XY_PKT(0x461a),
114 PSIL_PDMA_XY_PKT(0x461b),
115 PSIL_PDMA_XY_PKT(0x461c),
116 PSIL_PDMA_XY_PKT(0x461d),
117 PSIL_PDMA_XY_PKT(0x461e),
118 PSIL_PDMA_XY_PKT(0x461f),
119 /* PDMA11 (PDMA_MISC_G3) */
120 PSIL_PDMA_XY_PKT(0x4624),
121 PSIL_PDMA_XY_PKT(0x4625),
122 PSIL_PDMA_XY_PKT(0x4626),
123 PSIL_PDMA_XY_PKT(0x4627),
124 PSIL_PDMA_XY_PKT(0x4628),
125 PSIL_PDMA_XY_PKT(0x4629),
126 PSIL_PDMA_XY_PKT(0x4630),
127 PSIL_PDMA_XY_PKT(0x463a),
128 /* PDMA13 (PDMA_USART_G0) - UART0-1 */
129 PSIL_PDMA_XY_PKT(0x4700),
130 PSIL_PDMA_XY_PKT(0x4701),
131 /* PDMA14 (PDMA_USART_G1) - UART2-3 */
132 PSIL_PDMA_XY_PKT(0x4702),
133 PSIL_PDMA_XY_PKT(0x4703),
134 /* PDMA15 (PDMA_USART_G2) - UART4-9 */
135 PSIL_PDMA_XY_PKT(0x4704),
136 PSIL_PDMA_XY_PKT(0x4705),
137 PSIL_PDMA_XY_PKT(0x4706),
138 PSIL_PDMA_XY_PKT(0x4707),
139 PSIL_PDMA_XY_PKT(0x4708),
140 PSIL_PDMA_XY_PKT(0x4709),
142 PSIL_ETHERNET(0x4a00),
144 PSIL_ETHERNET(0x7000),
145 /* MCU_PDMA0 (MCU_PDMA_MISC_G0) - SPI0 */
146 PSIL_PDMA_XY_PKT(0x7100),
147 PSIL_PDMA_XY_PKT(0x7101),
148 PSIL_PDMA_XY_PKT(0x7102),
149 PSIL_PDMA_XY_PKT(0x7103),
150 /* MCU_PDMA1 (MCU_PDMA_MISC_G1) - SPI1-2 */
151 PSIL_PDMA_XY_PKT(0x7200),
152 PSIL_PDMA_XY_PKT(0x7201),
153 PSIL_PDMA_XY_PKT(0x7202),
154 PSIL_PDMA_XY_PKT(0x7203),
155 PSIL_PDMA_XY_PKT(0x7204),
156 PSIL_PDMA_XY_PKT(0x7205),
157 PSIL_PDMA_XY_PKT(0x7206),
158 PSIL_PDMA_XY_PKT(0x7207),
159 /* MCU_PDMA2 (MCU_PDMA_MISC_G2) - UART0 */
160 PSIL_PDMA_XY_PKT(0x7300),
161 /* MCU_PDMA_ADC - ADC0-1 */
162 PSIL_PDMA_XY_TR(0x7400),
163 PSIL_PDMA_XY_TR(0x7401),
164 PSIL_PDMA_XY_TR(0x7402),
165 PSIL_PDMA_XY_TR(0x7403),
167 PSIL_SA2UL(0x7500, 0),
168 PSIL_SA2UL(0x7501, 0),
169 PSIL_SA2UL(0x7502, 0),
170 PSIL_SA2UL(0x7503, 0),
173 /* PSI-L destination thread IDs, used for TX (DMA_MEM_TO_DEV) */
174 static struct psil_ep j721e_dst_ep_map
[] = {
176 PSIL_SA2UL(0xc000, 1),
177 PSIL_SA2UL(0xc001, 1),
179 PSIL_ETHERNET(0xc100),
180 PSIL_ETHERNET(0xc101),
181 PSIL_ETHERNET(0xc102),
182 PSIL_ETHERNET(0xc103),
183 PSIL_ETHERNET(0xc104),
184 PSIL_ETHERNET(0xc105),
185 PSIL_ETHERNET(0xc106),
186 PSIL_ETHERNET(0xc107),
188 PSIL_ETHERNET(0xc200),
189 PSIL_ETHERNET(0xc201),
190 PSIL_ETHERNET(0xc202),
191 PSIL_ETHERNET(0xc203),
192 PSIL_ETHERNET(0xc204),
193 PSIL_ETHERNET(0xc205),
194 PSIL_ETHERNET(0xc206),
195 PSIL_ETHERNET(0xc207),
197 PSIL_ETHERNET(0xca00),
198 PSIL_ETHERNET(0xca01),
199 PSIL_ETHERNET(0xca02),
200 PSIL_ETHERNET(0xca03),
201 PSIL_ETHERNET(0xca04),
202 PSIL_ETHERNET(0xca05),
203 PSIL_ETHERNET(0xca06),
204 PSIL_ETHERNET(0xca07),
206 PSIL_ETHERNET(0xf000),
207 PSIL_ETHERNET(0xf001),
208 PSIL_ETHERNET(0xf002),
209 PSIL_ETHERNET(0xf003),
210 PSIL_ETHERNET(0xf004),
211 PSIL_ETHERNET(0xf005),
212 PSIL_ETHERNET(0xf006),
213 PSIL_ETHERNET(0xf007),
215 PSIL_SA2UL(0xf500, 1),
216 PSIL_SA2UL(0xf501, 1),
219 struct psil_ep_map j721e_ep_map
= {
221 .src
= j721e_src_ep_map
,
222 .src_count
= ARRAY_SIZE(j721e_src_ep_map
),
223 .dst
= j721e_dst_ep_map
,
224 .dst_count
= ARRAY_SIZE(j721e_dst_ep_map
),