brintos

brintos / linux-shallow public Read only

0
0
Text · 11.0 KiB · 3183e80 Raw
465 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2 3/* Renesas Ethernet-TSN device driver4 *5 * Copyright (C) 2022 Renesas Electronics Corporation6 * Copyright (C) 2023 Niklas Söderlund <niklas.soderlund@ragnatech.se>7 */8 9#ifndef __RTSN_H__10#define __RTSN_H__11 12#include <linux/types.h>13 14#define AXIBMI	0x000015#define TSNMHD	0x100016#define RMSO	0x200017#define RMRO	0x380018 19enum rtsn_reg {20	AXIWC		= AXIBMI + 0x0000,21	AXIRC		= AXIBMI + 0x0004,22	TDPC0		= AXIBMI + 0x0010,23	TFT		= AXIBMI + 0x0090,24	TATLS0		= AXIBMI + 0x00a0,25	TATLS1		= AXIBMI + 0x00a4,26	TATLR		= AXIBMI + 0x00a8,27	RATLS0		= AXIBMI + 0x00b0,28	RATLS1		= AXIBMI + 0x00b4,29	RATLR		= AXIBMI + 0x00b8,30	TSA0		= AXIBMI + 0x00c0,31	TSS0		= AXIBMI + 0x00c4,32	TRCR0		= AXIBMI + 0x0140,33	RIDAUAS0	= AXIBMI + 0x0180,34	RR		= AXIBMI + 0x0200,35	TATS		= AXIBMI + 0x0210,36	TATSR0		= AXIBMI + 0x0214,37	TATSR1		= AXIBMI + 0x0218,38	TATSR2		= AXIBMI + 0x021c,39	RATS		= AXIBMI + 0x0220,40	RATSR0		= AXIBMI + 0x0224,41	RATSR1		= AXIBMI + 0x0228,42	RATSR2		= AXIBMI + 0x022c,43	RIDASM0		= AXIBMI + 0x0240,44	RIDASAM0	= AXIBMI + 0x0244,45	RIDACAM0	= AXIBMI + 0x0248,46	EIS0		= AXIBMI + 0x0300,47	EIE0		= AXIBMI + 0x0304,48	EID0		= AXIBMI + 0x0308,49	EIS1		= AXIBMI + 0x0310,50	EIE1		= AXIBMI + 0x0314,51	EID1		= AXIBMI + 0x0318,52	TCEIS0		= AXIBMI + 0x0340,53	TCEIE0		= AXIBMI + 0x0344,54	TCEID0		= AXIBMI + 0x0348,55	RFSEIS0		= AXIBMI + 0x04c0,56	RFSEIE0		= AXIBMI + 0x04c4,57	RFSEID0		= AXIBMI + 0x04c8,58	RFEIS0		= AXIBMI + 0x0540,59	RFEIE0		= AXIBMI + 0x0544,60	RFEID0		= AXIBMI + 0x0548,61	RCEIS0		= AXIBMI + 0x05c0,62	RCEIE0		= AXIBMI + 0x05c4,63	RCEID0		= AXIBMI + 0x05c8,64	RIDAOIS		= AXIBMI + 0x0640,65	RIDAOIE		= AXIBMI + 0x0644,66	RIDAOID		= AXIBMI + 0x0648,67	TSFEIS		= AXIBMI + 0x06c0,68	TSFEIE		= AXIBMI + 0x06c4,69	TSFEID		= AXIBMI + 0x06c8,70	TSCEIS		= AXIBMI + 0x06d0,71	TSCEIE		= AXIBMI + 0x06d4,72	TSCEID		= AXIBMI + 0x06d8,73	DIS		= AXIBMI + 0x0b00,74	DIE		= AXIBMI + 0x0b04,75	DID		= AXIBMI + 0x0b08,76	TDIS0		= AXIBMI + 0x0b10,77	TDIE0		= AXIBMI + 0x0b14,78	TDID0		= AXIBMI + 0x0b18,79	RDIS0		= AXIBMI + 0x0b90,80	RDIE0		= AXIBMI + 0x0b94,81	RDID0		= AXIBMI + 0x0b98,82	TSDIS		= AXIBMI + 0x0c10,83	TSDIE		= AXIBMI + 0x0c14,84	TSDID		= AXIBMI + 0x0c18,85	GPOUT		= AXIBMI + 0x6000,86 87	OCR		= TSNMHD + 0x0000,88	OSR		= TSNMHD + 0x0004,89	SWR		= TSNMHD + 0x0008,90	SIS		= TSNMHD + 0x000c,91	GIS		= TSNMHD + 0x0010,92	GIE		= TSNMHD + 0x0014,93	GID		= TSNMHD + 0x0018,94	TIS1		= TSNMHD + 0x0020,95	TIE1		= TSNMHD + 0x0024,96	TID1		= TSNMHD + 0x0028,97	TIS2		= TSNMHD + 0x0030,98	TIE2		= TSNMHD + 0x0034,99	TID2		= TSNMHD + 0x0038,100	RIS		= TSNMHD + 0x0040,101	RIE		= TSNMHD + 0x0044,102	RID		= TSNMHD + 0x0048,103	TGC1		= TSNMHD + 0x0050,104	TGC2		= TSNMHD + 0x0054,105	TFS0		= TSNMHD + 0x0060,106	TCF0		= TSNMHD + 0x0070,107	TCR1		= TSNMHD + 0x0080,108	TCR2		= TSNMHD + 0x0084,109	TCR3		= TSNMHD + 0x0088,110	TCR4		= TSNMHD + 0x008c,111	TMS0		= TSNMHD + 0x0090,112	TSR1		= TSNMHD + 0x00b0,113	TSR2		= TSNMHD + 0x00b4,114	TSR3		= TSNMHD + 0x00b8,115	TSR4		= TSNMHD + 0x00bc,116	TSR5		= TSNMHD + 0x00c0,117	RGC		= TSNMHD + 0x00d0,118	RDFCR		= TSNMHD + 0x00d4,119	RCFCR		= TSNMHD + 0x00d8,120	REFCNCR		= TSNMHD + 0x00dc,121	RSR1		= TSNMHD + 0x00e0,122	RSR2		= TSNMHD + 0x00e4,123	RSR3		= TSNMHD + 0x00e8,124	TCIS		= TSNMHD + 0x01e0,125	TCIE		= TSNMHD + 0x01e4,126	TCID		= TSNMHD + 0x01e8,127	TPTPC		= TSNMHD + 0x01f0,128	TTML		= TSNMHD + 0x01f4,129	TTJ		= TSNMHD + 0x01f8,130	TCC		= TSNMHD + 0x0200,131	TCS		= TSNMHD + 0x0204,132	TGS		= TSNMHD + 0x020c,133	TACST0		= TSNMHD + 0x0210,134	TACST1		= TSNMHD + 0x0214,135	TACST2		= TSNMHD + 0x0218,136	TALIT0		= TSNMHD + 0x0220,137	TALIT1		= TSNMHD + 0x0224,138	TALIT2		= TSNMHD + 0x0228,139	TAEN0		= TSNMHD + 0x0230,140	TAEN1		= TSNMHD + 0x0234,141	TASFE		= TSNMHD + 0x0240,142	TACLL0		= TSNMHD + 0x0250,143	TACLL1		= TSNMHD + 0x0254,144	TACLL2		= TSNMHD + 0x0258,145	CACC		= TSNMHD + 0x0260,146	CCS		= TSNMHD + 0x0264,147	CAIV0		= TSNMHD + 0x0270,148	CAUL0		= TSNMHD + 0x0290,149	TOCST0		= TSNMHD + 0x0300,150	TOCST1		= TSNMHD + 0x0304,151	TOCST2		= TSNMHD + 0x0308,152	TOLIT0		= TSNMHD + 0x0310,153	TOLIT1		= TSNMHD + 0x0314,154	TOLIT2		= TSNMHD + 0x0318,155	TOEN0		= TSNMHD + 0x0320,156	TOEN1		= TSNMHD + 0x0324,157	TOSFE		= TSNMHD + 0x0330,158	TCLR0		= TSNMHD + 0x0340,159	TCLR1		= TSNMHD + 0x0344,160	TCLR2		= TSNMHD + 0x0348,161	TSMS		= TSNMHD + 0x0350,162	COCC		= TSNMHD + 0x0360,163	COIV0		= TSNMHD + 0x03b0,164	COUL0		= TSNMHD + 0x03d0,165	QSTMACU0	= TSNMHD + 0x0400,166	QSTMACD0	= TSNMHD + 0x0404,167	QSTMAMU0	= TSNMHD + 0x0408,168	QSTMAMD0	= TSNMHD + 0x040c,169	QSFTVL0		= TSNMHD + 0x0410,170	QSFTVLM0	= TSNMHD + 0x0414,171	QSFTMSD0	= TSNMHD + 0x0418,172	QSFTGMI0	= TSNMHD + 0x041c,173	QSFTLS		= TSNMHD + 0x0600,174	QSFTLIS		= TSNMHD + 0x0604,175	QSFTLIE		= TSNMHD + 0x0608,176	QSFTLID		= TSNMHD + 0x060c,177	QSMSMC		= TSNMHD + 0x0610,178	QSGTMC		= TSNMHD + 0x0614,179	QSEIS		= TSNMHD + 0x0618,180	QSEIE		= TSNMHD + 0x061c,181	QSEID		= TSNMHD + 0x0620,182	QGACST0		= TSNMHD + 0x0630,183	QGACST1		= TSNMHD + 0x0634,184	QGACST2		= TSNMHD + 0x0638,185	QGALIT1		= TSNMHD + 0x0640,186	QGALIT2		= TSNMHD + 0x0644,187	QGAEN0		= TSNMHD + 0x0648,188	QGAEN1		= TSNMHD + 0x074c,189	QGIGS		= TSNMHD + 0x0650,190	QGGC		= TSNMHD + 0x0654,191	QGATL0		= TSNMHD + 0x0664,192	QGATL1		= TSNMHD + 0x0668,193	QGATL2		= TSNMHD + 0x066c,194	QGOCST0		= TSNMHD + 0x0670,195	QGOCST1		= TSNMHD + 0x0674,196	QGOCST2		= TSNMHD + 0x0678,197	QGOLIT0		= TSNMHD + 0x067c,198	QGOLIT1		= TSNMHD + 0x0680,199	QGOLIT2		= TSNMHD + 0x0684,200	QGOEN0		= TSNMHD + 0x0688,201	QGOEN1		= TSNMHD + 0x068c,202	QGTRO		= TSNMHD + 0x0690,203	QGTR1		= TSNMHD + 0x0694,204	QGTR2		= TSNMHD + 0x0698,205	QGFSMS		= TSNMHD + 0x069c,206	QTMIS		= TSNMHD + 0x06e0,207	QTMIE		= TSNMHD + 0x06e4,208	QTMID		= TSNMHD + 0x06e8,209	QMEC		= TSNMHD + 0x0700,210	QMMC		= TSNMHD + 0x0704,211	QRFDC		= TSNMHD + 0x0708,212	QYFDC		= TSNMHD + 0x070c,213	QVTCMC0		= TSNMHD + 0x0710,214	QMCBSC0		= TSNMHD + 0x0750,215	QMCIRC0		= TSNMHD + 0x0790,216	QMEBSC0		= TSNMHD + 0x07d0,217	QMEIRC0		= TSNMHD + 0x0710,218	QMCFC		= TSNMHD + 0x0850,219	QMEIS		= TSNMHD + 0x0860,220	QMEIE		= TSNMHD + 0x0864,221	QMEID		= TSNMHD + 0x086c,222	QSMFC0		= TSNMHD + 0x0870,223	QMSPPC0		= TSNMHD + 0x08b0,224	QMSRPC0		= TSNMHD + 0x08f0,225	QGPPC0		= TSNMHD + 0x0930,226	QGRPC0		= TSNMHD + 0x0950,227	QMDPC0		= TSNMHD + 0x0970,228	QMGPC0		= TSNMHD + 0x09b0,229	QMYPC0		= TSNMHD + 0x09f0,230	QMRPC0		= TSNMHD + 0x0a30,231	MQSTMACU	= TSNMHD + 0x0a70,232	MQSTMACD	= TSNMHD + 0x0a74,233	MQSTMAMU	= TSNMHD + 0x0a78,234	MQSTMAMD	= TSNMHD + 0x0a7c,235	MQSFTVL		= TSNMHD + 0x0a80,236	MQSFTVLM	= TSNMHD + 0x0a84,237	MQSFTMSD	= TSNMHD + 0x0a88,238	MQSFTGMI	= TSNMHD + 0x0a8c,239 240	CFCR0		= RMSO + 0x0800,241	FMSCR		= RMSO + 0x0c10,242 243	MMC		= RMRO + 0x0000,244	MPSM		= RMRO + 0x0010,245	MPIC		= RMRO + 0x0014,246	MTFFC		= RMRO + 0x0020,247	MTPFC		= RMRO + 0x0024,248	MTATC0		= RMRO + 0x0040,249	MRGC		= RMRO + 0x0080,250	MRMAC0		= RMRO + 0x0084,251	MRMAC1		= RMRO + 0x0088,252	MRAFC		= RMRO + 0x008c,253	MRSCE		= RMRO + 0x0090,254	MRSCP		= RMRO + 0x0094,255	MRSCC		= RMRO + 0x0098,256	MRFSCE		= RMRO + 0x009c,257	MRFSCP		= RMRO + 0x00a0,258	MTRC		= RMRO + 0x00a4,259	MPFC		= RMRO + 0x0100,260	MLVC		= RMRO + 0x0340,261	MEEEC		= RMRO + 0x0350,262	MLBC		= RMRO + 0x0360,263	MGMR		= RMRO + 0x0400,264	MMPFTCT		= RMRO + 0x0410,265	MAPFTCT		= RMRO + 0x0414,266	MPFRCT		= RMRO + 0x0418,267	MFCICT		= RMRO + 0x041c,268	MEEECT		= RMRO + 0x0420,269	MEIS		= RMRO + 0x0500,270	MEIE		= RMRO + 0x0504,271	MEID		= RMRO + 0x0508,272	MMIS0		= RMRO + 0x0510,273	MMIE0		= RMRO + 0x0514,274	MMID0		= RMRO + 0x0518,275	MMIS1		= RMRO + 0x0520,276	MMIE1		= RMRO + 0x0524,277	MMID1		= RMRO + 0x0528,278	MMIS2		= RMRO + 0x0530,279	MMIE2		= RMRO + 0x0534,280	MMID2		= RMRO + 0x0538,281	MXMS		= RMRO + 0x0600,282 283};284 285/* AXIBMI */286#define RR_RATRR		BIT(0)287#define RR_TATRR		BIT(1)288#define RR_RST			(RR_RATRR | RR_TATRR)289#define RR_RST_COMPLETE		0x03290 291#define AXIWC_DEFAULT		0xffff292#define AXIRC_DEFAULT		0xffff293 294#define TATLS0_TEDE		BIT(1)295#define TATLS0_TATEN_SHIFT	24296#define TATLS0_TATEN(n)		((n) << TATLS0_TATEN_SHIFT)297#define TATLR_TATL		BIT(31)298 299#define RATLS0_RETS		BIT(2)300#define RATLS0_REDE		BIT(3)301#define RATLS0_RATEN_SHIFT	24302#define RATLS0_RATEN(n)		((n) << RATLS0_RATEN_SHIFT)303#define RATLR_RATL		BIT(31)304 305#define DIE_DID_TDICX(n)	BIT((n))306#define DIE_DID_RDICX(n)	BIT((n) + 8)307#define TDIE_TDID_TDX(n)	BIT(n)308#define RDIE_RDID_RDX(n)	BIT(n)309#define TDIS_TDS(n)		BIT(n)310#define RDIS_RDS(n)		BIT(n)311 312/* MHD */313#define OSR_OPS			0x07314#define SWR_SWR			BIT(0)315 316#define TGC1_TQTM_SFM		0xff00317#define TGC1_STTV_DEFAULT	0x03318 319#define TMS_MFS_MAX		0x2800320 321/* RMAC System */322#define CFCR_SDID(n)		((n) << 16)323#define FMSCR_FMSIE(n)		((n) << 0)324 325/* RMAC */326#define MPIC_PIS_MASK		GENMASK(1, 0)327#define MPIC_PIS_MII		0328#define MPIC_PIS_RMII		0x01329#define MPIC_PIS_GMII		0x02330#define MPIC_PIS_RGMII		0x03331#define MPIC_LSC_SHIFT		2332#define MPIC_LSC_MASK		GENMASK(3, MPIC_LSC_SHIFT)333#define MPIC_LSC_10M		(0 << MPIC_LSC_SHIFT)334#define MPIC_LSC_100M		(0x01 << MPIC_LSC_SHIFT)335#define MPIC_LSC_1G		(0x02 << MPIC_LSC_SHIFT)336#define MPIC_PSMCS_SHIFT	16337#define MPIC_PSMCS_MASK		GENMASK(21, MPIC_PSMCS_SHIFT)338#define MPIC_PSMCS_DEFAULT	(0x0a << MPIC_PSMCS_SHIFT)339#define MPIC_PSMHT_SHIFT	24340#define MPIC_PSMHT_MASK		GENMASK(26, MPIC_PSMHT_SHIFT)341#define MPIC_PSMHT_DEFAULT	(0x07 << MPIC_PSMHT_SHIFT)342 343#define MLVC_PASE		BIT(8)344#define MLVC_PSE		BIT(16)345#define MLVC_PLV		BIT(17)346 347#define MPSM_PSME		BIT(0)348#define MPSM_PSMAD		BIT(1)349#define MPSM_PDA_SHIFT		3350#define MPSM_PDA_MASK		GENMASK(7, 3)351#define MPSM_PDA(n)		(((n) << MPSM_PDA_SHIFT) & MPSM_PDA_MASK)352#define MPSM_PRA_SHIFT		8353#define MPSM_PRA_MASK		GENMASK(12, 8)354#define MPSM_PRA(n)		(((n) << MPSM_PRA_SHIFT) & MPSM_PRA_MASK)355#define MPSM_PRD_SHIFT		16356#define MPSM_PRD_SET(n)		((n) << MPSM_PRD_SHIFT)357#define MPSM_PRD_GET(n)		((n) >> MPSM_PRD_SHIFT)358 359#define GPOUT_RDM		BIT(13)360#define GPOUT_TDM		BIT(14)361 362/* RTSN */363#define RTSN_INTERVAL_US	1000364#define RTSN_TIMEOUT_US		1000000365 366#define TX_NUM_CHAINS		1367#define RX_NUM_CHAINS		1368 369#define TX_CHAIN_SIZE		1024370#define RX_CHAIN_SIZE		1024371 372#define TX_CHAIN_IDX		0373#define RX_CHAIN_IDX		0374 375#define TX_CHAIN_ADDR_OFFSET	(sizeof(struct rtsn_desc) * TX_CHAIN_IDX)376#define RX_CHAIN_ADDR_OFFSET	(sizeof(struct rtsn_desc) * RX_CHAIN_IDX)377 378#define PKT_BUF_SZ		1584379#define RTSN_ALIGN		128380 381enum rtsn_mode {382	OCR_OPC_DISABLE,383	OCR_OPC_CONFIG,384	OCR_OPC_OPERATION,385};386 387/* Descriptors */388enum RX_DS_CC_BIT {389	RX_DS	= 0x0fff, /* Data size */390	RX_TR	= 0x1000, /* Truncation indication */391	RX_EI	= 0x2000, /* Error indication */392	RX_PS	= 0xc000, /* Padding selection */393};394 395enum TX_FS_TAGL_BIT {396	TX_DS	= 0x0fff, /* Data size */397	TX_TAGL	= 0xf000, /* Frame tag LSBs */398};399 400enum DIE_DT {401	/* HW/SW arbitration */402	DT_FEMPTY_IS	= 0x10,403	DT_FEMPTY_IC	= 0x20,404	DT_FEMPTY_ND	= 0x30,405	DT_FEMPTY	= 0x40,406	DT_FEMPTY_START	= 0x50,407	DT_FEMPTY_MID	= 0x60,408	DT_FEMPTY_END	= 0x70,409 410	/* Frame data */411	DT_FSINGLE	= 0x80,412	DT_FSTART	= 0x90,413	DT_FMID		= 0xa0,414	DT_FEND		= 0xb0,415 416	/* Chain control */417	DT_LEMPTY	= 0xc0,418	DT_EEMPTY	= 0xd0,419	DT_LINK		= 0xe0,420	DT_EOS		= 0xf0,421 422	DT_MASK		= 0xf0,423	D_DIE		= 0x08,424};425 426struct rtsn_desc {427	__le16 info_ds;428	__u8 info;429	u8 die_dt;430	__le32 dptr;431} __packed;432 433struct rtsn_ts_desc {434	__le16 info_ds;435	__u8 info;436	u8 die_dt;437	__le32 dptr;438	__le32 ts_nsec;439	__le32 ts_sec;440} __packed;441 442struct rtsn_ext_desc {443	__le16 info_ds;444	__u8 info;445	u8 die_dt;446	__le32 dptr;447	__le64 info1;448} __packed;449 450struct rtsn_ext_ts_desc {451	__le16 info_ds;452	__u8 info;453	u8 die_dt;454	__le32 dptr;455	__le64 info1;456	__le32 ts_nsec;457	__le32 ts_sec;458} __packed;459 460enum EXT_INFO_DS_BIT {461	TXC = 0x4000,462};463 464#endif465