Skip to content

Commit 3b08b37

Browse files
r-vigneshvinodkoul
authored andcommitted
dmaengine: ti: k3-udma: Add PSIL threads for AM62P and J722S
Add PSIL thread information and enable UDMA support for AM62P and J722S SoC. J722S SoC family is a superset of AM62P, thus common PSIL thread ID map is reused for both devices. For those interested, more details about the SoC can be found in the Technical Reference Manual here: AM62P - https://www.ti.com/lit/pdf/spruj83 J722S - https://www.ti.com/lit/zip/sprujb3 Signed-off-by: Vignesh Raghavendra <[email protected]> Signed-off-by: Bryan Brattlof <[email protected]> Signed-off-by: Vaishnav Achath <[email protected]> Reviewed-by: Jai Luthra <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
1 parent f5c24d9 commit 3b08b37

File tree

5 files changed

+332
-1
lines changed

5 files changed

+332
-1
lines changed

drivers/dma/ti/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ k3-psil-lib-objs := k3-psil.o \
1212
k3-psil-j721s2.o \
1313
k3-psil-am62.o \
1414
k3-psil-am62a.o \
15-
k3-psil-j784s4.o
15+
k3-psil-j784s4.o \
16+
k3-psil-am62p.o
1617
obj-$(CONFIG_TI_K3_PSIL) += k3-psil-lib.o
1718
obj-$(CONFIG_TI_DMA_CROSSBAR) += dma-crossbar.o

drivers/dma/ti/k3-psil-am62p.c

Lines changed: 325 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,325 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com
4+
*/
5+
6+
#include <linux/kernel.h>
7+
8+
#include "k3-psil-priv.h"
9+
10+
#define PSIL_PDMA_XY_TR(x) \
11+
{ \
12+
.thread_id = x, \
13+
.ep_config = { \
14+
.ep_type = PSIL_EP_PDMA_XY, \
15+
.mapped_channel_id = -1, \
16+
.default_flow_id = -1, \
17+
}, \
18+
}
19+
20+
#define PSIL_PDMA_XY_PKT(x) \
21+
{ \
22+
.thread_id = x, \
23+
.ep_config = { \
24+
.ep_type = PSIL_EP_PDMA_XY, \
25+
.mapped_channel_id = -1, \
26+
.default_flow_id = -1, \
27+
.pkt_mode = 1, \
28+
}, \
29+
}
30+
31+
#define PSIL_ETHERNET(x, ch, flow_base, flow_cnt) \
32+
{ \
33+
.thread_id = x, \
34+
.ep_config = { \
35+
.ep_type = PSIL_EP_NATIVE, \
36+
.pkt_mode = 1, \
37+
.needs_epib = 1, \
38+
.psd_size = 16, \
39+
.mapped_channel_id = ch, \
40+
.flow_start = flow_base, \
41+
.flow_num = flow_cnt, \
42+
.default_flow_id = flow_base, \
43+
}, \
44+
}
45+
46+
#define PSIL_SAUL(x, ch, flow_base, flow_cnt, default_flow, tx) \
47+
{ \
48+
.thread_id = x, \
49+
.ep_config = { \
50+
.ep_type = PSIL_EP_NATIVE, \
51+
.pkt_mode = 1, \
52+
.needs_epib = 1, \
53+
.psd_size = 64, \
54+
.mapped_channel_id = ch, \
55+
.flow_start = flow_base, \
56+
.flow_num = flow_cnt, \
57+
.default_flow_id = default_flow, \
58+
.notdpkt = tx, \
59+
}, \
60+
}
61+
62+
#define PSIL_PDMA_MCASP(x) \
63+
{ \
64+
.thread_id = x, \
65+
.ep_config = { \
66+
.ep_type = PSIL_EP_PDMA_XY, \
67+
.pdma_acc32 = 1, \
68+
.pdma_burst = 1, \
69+
}, \
70+
}
71+
72+
#define PSIL_CSI2RX(x) \
73+
{ \
74+
.thread_id = x, \
75+
.ep_config = { \
76+
.ep_type = PSIL_EP_NATIVE, \
77+
}, \
78+
}
79+
80+
/* PSI-L source thread IDs, used for RX (DMA_DEV_TO_MEM) */
81+
static struct psil_ep am62p_src_ep_map[] = {
82+
/* SAUL */
83+
PSIL_SAUL(0x7504, 20, 35, 8, 35, 0),
84+
PSIL_SAUL(0x7505, 21, 35, 8, 36, 0),
85+
PSIL_SAUL(0x7506, 22, 43, 8, 43, 0),
86+
PSIL_SAUL(0x7507, 23, 43, 8, 44, 0),
87+
/* PDMA_MAIN0 - SPI0-2 */
88+
PSIL_PDMA_XY_PKT(0x4300),
89+
PSIL_PDMA_XY_PKT(0x4301),
90+
PSIL_PDMA_XY_PKT(0x4302),
91+
PSIL_PDMA_XY_PKT(0x4303),
92+
PSIL_PDMA_XY_PKT(0x4304),
93+
PSIL_PDMA_XY_PKT(0x4305),
94+
PSIL_PDMA_XY_PKT(0x4306),
95+
PSIL_PDMA_XY_PKT(0x4307),
96+
PSIL_PDMA_XY_PKT(0x4308),
97+
PSIL_PDMA_XY_PKT(0x4309),
98+
PSIL_PDMA_XY_PKT(0x430a),
99+
PSIL_PDMA_XY_PKT(0x430b),
100+
/* PDMA_MAIN1 - UART0-6 */
101+
PSIL_PDMA_XY_PKT(0x4400),
102+
PSIL_PDMA_XY_PKT(0x4401),
103+
PSIL_PDMA_XY_PKT(0x4402),
104+
PSIL_PDMA_XY_PKT(0x4403),
105+
PSIL_PDMA_XY_PKT(0x4404),
106+
PSIL_PDMA_XY_PKT(0x4405),
107+
PSIL_PDMA_XY_PKT(0x4406),
108+
/* PDMA_MAIN2 - MCASP0-2 */
109+
PSIL_PDMA_MCASP(0x4500),
110+
PSIL_PDMA_MCASP(0x4501),
111+
PSIL_PDMA_MCASP(0x4502),
112+
/* CPSW3G */
113+
PSIL_ETHERNET(0x4600, 19, 19, 16),
114+
/* CSI2RX */
115+
PSIL_CSI2RX(0x5000),
116+
PSIL_CSI2RX(0x5001),
117+
PSIL_CSI2RX(0x5002),
118+
PSIL_CSI2RX(0x5003),
119+
PSIL_CSI2RX(0x5004),
120+
PSIL_CSI2RX(0x5005),
121+
PSIL_CSI2RX(0x5006),
122+
PSIL_CSI2RX(0x5007),
123+
PSIL_CSI2RX(0x5008),
124+
PSIL_CSI2RX(0x5009),
125+
PSIL_CSI2RX(0x500a),
126+
PSIL_CSI2RX(0x500b),
127+
PSIL_CSI2RX(0x500c),
128+
PSIL_CSI2RX(0x500d),
129+
PSIL_CSI2RX(0x500e),
130+
PSIL_CSI2RX(0x500f),
131+
PSIL_CSI2RX(0x5010),
132+
PSIL_CSI2RX(0x5011),
133+
PSIL_CSI2RX(0x5012),
134+
PSIL_CSI2RX(0x5013),
135+
PSIL_CSI2RX(0x5014),
136+
PSIL_CSI2RX(0x5015),
137+
PSIL_CSI2RX(0x5016),
138+
PSIL_CSI2RX(0x5017),
139+
PSIL_CSI2RX(0x5018),
140+
PSIL_CSI2RX(0x5019),
141+
PSIL_CSI2RX(0x501a),
142+
PSIL_CSI2RX(0x501b),
143+
PSIL_CSI2RX(0x501c),
144+
PSIL_CSI2RX(0x501d),
145+
PSIL_CSI2RX(0x501e),
146+
PSIL_CSI2RX(0x501f),
147+
PSIL_CSI2RX(0x5000),
148+
PSIL_CSI2RX(0x5001),
149+
PSIL_CSI2RX(0x5002),
150+
PSIL_CSI2RX(0x5003),
151+
PSIL_CSI2RX(0x5004),
152+
PSIL_CSI2RX(0x5005),
153+
PSIL_CSI2RX(0x5006),
154+
PSIL_CSI2RX(0x5007),
155+
PSIL_CSI2RX(0x5008),
156+
PSIL_CSI2RX(0x5009),
157+
PSIL_CSI2RX(0x500a),
158+
PSIL_CSI2RX(0x500b),
159+
PSIL_CSI2RX(0x500c),
160+
PSIL_CSI2RX(0x500d),
161+
PSIL_CSI2RX(0x500e),
162+
PSIL_CSI2RX(0x500f),
163+
PSIL_CSI2RX(0x5010),
164+
PSIL_CSI2RX(0x5011),
165+
PSIL_CSI2RX(0x5012),
166+
PSIL_CSI2RX(0x5013),
167+
PSIL_CSI2RX(0x5014),
168+
PSIL_CSI2RX(0x5015),
169+
PSIL_CSI2RX(0x5016),
170+
PSIL_CSI2RX(0x5017),
171+
PSIL_CSI2RX(0x5018),
172+
PSIL_CSI2RX(0x5019),
173+
PSIL_CSI2RX(0x501a),
174+
PSIL_CSI2RX(0x501b),
175+
PSIL_CSI2RX(0x501c),
176+
PSIL_CSI2RX(0x501d),
177+
PSIL_CSI2RX(0x501e),
178+
PSIL_CSI2RX(0x501f),
179+
/* CSIRX 1-3 (only for J722S) */
180+
PSIL_CSI2RX(0x5100),
181+
PSIL_CSI2RX(0x5101),
182+
PSIL_CSI2RX(0x5102),
183+
PSIL_CSI2RX(0x5103),
184+
PSIL_CSI2RX(0x5104),
185+
PSIL_CSI2RX(0x5105),
186+
PSIL_CSI2RX(0x5106),
187+
PSIL_CSI2RX(0x5107),
188+
PSIL_CSI2RX(0x5108),
189+
PSIL_CSI2RX(0x5109),
190+
PSIL_CSI2RX(0x510a),
191+
PSIL_CSI2RX(0x510b),
192+
PSIL_CSI2RX(0x510c),
193+
PSIL_CSI2RX(0x510d),
194+
PSIL_CSI2RX(0x510e),
195+
PSIL_CSI2RX(0x510f),
196+
PSIL_CSI2RX(0x5110),
197+
PSIL_CSI2RX(0x5111),
198+
PSIL_CSI2RX(0x5112),
199+
PSIL_CSI2RX(0x5113),
200+
PSIL_CSI2RX(0x5114),
201+
PSIL_CSI2RX(0x5115),
202+
PSIL_CSI2RX(0x5116),
203+
PSIL_CSI2RX(0x5117),
204+
PSIL_CSI2RX(0x5118),
205+
PSIL_CSI2RX(0x5119),
206+
PSIL_CSI2RX(0x511a),
207+
PSIL_CSI2RX(0x511b),
208+
PSIL_CSI2RX(0x511c),
209+
PSIL_CSI2RX(0x511d),
210+
PSIL_CSI2RX(0x511e),
211+
PSIL_CSI2RX(0x511f),
212+
PSIL_CSI2RX(0x5200),
213+
PSIL_CSI2RX(0x5201),
214+
PSIL_CSI2RX(0x5202),
215+
PSIL_CSI2RX(0x5203),
216+
PSIL_CSI2RX(0x5204),
217+
PSIL_CSI2RX(0x5205),
218+
PSIL_CSI2RX(0x5206),
219+
PSIL_CSI2RX(0x5207),
220+
PSIL_CSI2RX(0x5208),
221+
PSIL_CSI2RX(0x5209),
222+
PSIL_CSI2RX(0x520a),
223+
PSIL_CSI2RX(0x520b),
224+
PSIL_CSI2RX(0x520c),
225+
PSIL_CSI2RX(0x520d),
226+
PSIL_CSI2RX(0x520e),
227+
PSIL_CSI2RX(0x520f),
228+
PSIL_CSI2RX(0x5210),
229+
PSIL_CSI2RX(0x5211),
230+
PSIL_CSI2RX(0x5212),
231+
PSIL_CSI2RX(0x5213),
232+
PSIL_CSI2RX(0x5214),
233+
PSIL_CSI2RX(0x5215),
234+
PSIL_CSI2RX(0x5216),
235+
PSIL_CSI2RX(0x5217),
236+
PSIL_CSI2RX(0x5218),
237+
PSIL_CSI2RX(0x5219),
238+
PSIL_CSI2RX(0x521a),
239+
PSIL_CSI2RX(0x521b),
240+
PSIL_CSI2RX(0x521c),
241+
PSIL_CSI2RX(0x521d),
242+
PSIL_CSI2RX(0x521e),
243+
PSIL_CSI2RX(0x521f),
244+
PSIL_CSI2RX(0x5300),
245+
PSIL_CSI2RX(0x5301),
246+
PSIL_CSI2RX(0x5302),
247+
PSIL_CSI2RX(0x5303),
248+
PSIL_CSI2RX(0x5304),
249+
PSIL_CSI2RX(0x5305),
250+
PSIL_CSI2RX(0x5306),
251+
PSIL_CSI2RX(0x5307),
252+
PSIL_CSI2RX(0x5308),
253+
PSIL_CSI2RX(0x5309),
254+
PSIL_CSI2RX(0x530a),
255+
PSIL_CSI2RX(0x530b),
256+
PSIL_CSI2RX(0x530c),
257+
PSIL_CSI2RX(0x530d),
258+
PSIL_CSI2RX(0x530e),
259+
PSIL_CSI2RX(0x530f),
260+
PSIL_CSI2RX(0x5310),
261+
PSIL_CSI2RX(0x5311),
262+
PSIL_CSI2RX(0x5312),
263+
PSIL_CSI2RX(0x5313),
264+
PSIL_CSI2RX(0x5314),
265+
PSIL_CSI2RX(0x5315),
266+
PSIL_CSI2RX(0x5316),
267+
PSIL_CSI2RX(0x5317),
268+
PSIL_CSI2RX(0x5318),
269+
PSIL_CSI2RX(0x5319),
270+
PSIL_CSI2RX(0x531a),
271+
PSIL_CSI2RX(0x531b),
272+
PSIL_CSI2RX(0x531c),
273+
PSIL_CSI2RX(0x531d),
274+
PSIL_CSI2RX(0x531e),
275+
PSIL_CSI2RX(0x531f),
276+
};
277+
278+
/* PSI-L destination thread IDs, used for TX (DMA_MEM_TO_DEV) */
279+
static struct psil_ep am62p_dst_ep_map[] = {
280+
/* SAUL */
281+
PSIL_SAUL(0xf500, 27, 83, 8, 83, 1),
282+
PSIL_SAUL(0xf501, 28, 91, 8, 91, 1),
283+
/* PDMA_MAIN0 - SPI0-2 */
284+
PSIL_PDMA_XY_PKT(0xc300),
285+
PSIL_PDMA_XY_PKT(0xc301),
286+
PSIL_PDMA_XY_PKT(0xc302),
287+
PSIL_PDMA_XY_PKT(0xc303),
288+
PSIL_PDMA_XY_PKT(0xc304),
289+
PSIL_PDMA_XY_PKT(0xc305),
290+
PSIL_PDMA_XY_PKT(0xc306),
291+
PSIL_PDMA_XY_PKT(0xc307),
292+
PSIL_PDMA_XY_PKT(0xc308),
293+
PSIL_PDMA_XY_PKT(0xc309),
294+
PSIL_PDMA_XY_PKT(0xc30a),
295+
PSIL_PDMA_XY_PKT(0xc30b),
296+
/* PDMA_MAIN1 - UART0-6 */
297+
PSIL_PDMA_XY_PKT(0xc400),
298+
PSIL_PDMA_XY_PKT(0xc401),
299+
PSIL_PDMA_XY_PKT(0xc402),
300+
PSIL_PDMA_XY_PKT(0xc403),
301+
PSIL_PDMA_XY_PKT(0xc404),
302+
PSIL_PDMA_XY_PKT(0xc405),
303+
PSIL_PDMA_XY_PKT(0xc406),
304+
/* PDMA_MAIN2 - MCASP0-2 */
305+
PSIL_PDMA_MCASP(0xc500),
306+
PSIL_PDMA_MCASP(0xc501),
307+
PSIL_PDMA_MCASP(0xc502),
308+
/* CPSW3G */
309+
PSIL_ETHERNET(0xc600, 19, 19, 8),
310+
PSIL_ETHERNET(0xc601, 20, 27, 8),
311+
PSIL_ETHERNET(0xc602, 21, 35, 8),
312+
PSIL_ETHERNET(0xc603, 22, 43, 8),
313+
PSIL_ETHERNET(0xc604, 23, 51, 8),
314+
PSIL_ETHERNET(0xc605, 24, 59, 8),
315+
PSIL_ETHERNET(0xc606, 25, 67, 8),
316+
PSIL_ETHERNET(0xc607, 26, 75, 8),
317+
};
318+
319+
struct psil_ep_map am62p_ep_map = {
320+
.name = "am62p",
321+
.src = am62p_src_ep_map,
322+
.src_count = ARRAY_SIZE(am62p_src_ep_map),
323+
.dst = am62p_dst_ep_map,
324+
.dst_count = ARRAY_SIZE(am62p_dst_ep_map),
325+
};

drivers/dma/ti/k3-psil-priv.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,6 @@ extern struct psil_ep_map j721s2_ep_map;
4545
extern struct psil_ep_map am62_ep_map;
4646
extern struct psil_ep_map am62a_ep_map;
4747
extern struct psil_ep_map j784s4_ep_map;
48+
extern struct psil_ep_map am62p_ep_map;
4849

4950
#endif /* K3_PSIL_PRIV_H_ */

drivers/dma/ti/k3-psil.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ static const struct soc_device_attribute k3_soc_devices[] = {
2626
{ .family = "AM62X", .data = &am62_ep_map },
2727
{ .family = "AM62AX", .data = &am62a_ep_map },
2828
{ .family = "J784S4", .data = &j784s4_ep_map },
29+
{ .family = "AM62PX", .data = &am62p_ep_map },
30+
{ .family = "J722S", .data = &am62p_ep_map },
2931
{ /* sentinel */ }
3032
};
3133

drivers/dma/ti/k3-udma.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4441,6 +4441,8 @@ static const struct soc_device_attribute k3_soc_devices[] = {
44414441
{ .family = "AM62X", .data = &am64_soc_data },
44424442
{ .family = "AM62AX", .data = &am64_soc_data },
44434443
{ .family = "J784S4", .data = &j721e_soc_data },
4444+
{ .family = "AM62PX", .data = &am64_soc_data },
4445+
{ .family = "J722S", .data = &am64_soc_data },
44444446
{ /* sentinel */ }
44454447
};
44464448

0 commit comments

Comments
 (0)