brintos

brintos / linux-shallow public Read only

0
0
Text · 7.4 KiB · 0f338e1 Raw
326 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 *  Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com4 */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) */81static 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) */279static 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 319struct 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};326