465 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			465 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| 
 | |
| /* Renesas Ethernet-TSN device driver
 | |
|  *
 | |
|  * Copyright (C) 2022 Renesas Electronics Corporation
 | |
|  * Copyright (C) 2023 Niklas Söderlund <niklas.soderlund@ragnatech.se>
 | |
|  */
 | |
| 
 | |
| #ifndef __RTSN_H__
 | |
| #define __RTSN_H__
 | |
| 
 | |
| #include <linux/types.h>
 | |
| 
 | |
| #define AXIBMI	0x0000
 | |
| #define TSNMHD	0x1000
 | |
| #define RMSO	0x2000
 | |
| #define RMRO	0x3800
 | |
| 
 | |
| enum rtsn_reg {
 | |
| 	AXIWC		= AXIBMI + 0x0000,
 | |
| 	AXIRC		= AXIBMI + 0x0004,
 | |
| 	TDPC0		= AXIBMI + 0x0010,
 | |
| 	TFT		= AXIBMI + 0x0090,
 | |
| 	TATLS0		= AXIBMI + 0x00a0,
 | |
| 	TATLS1		= AXIBMI + 0x00a4,
 | |
| 	TATLR		= AXIBMI + 0x00a8,
 | |
| 	RATLS0		= AXIBMI + 0x00b0,
 | |
| 	RATLS1		= AXIBMI + 0x00b4,
 | |
| 	RATLR		= AXIBMI + 0x00b8,
 | |
| 	TSA0		= AXIBMI + 0x00c0,
 | |
| 	TSS0		= AXIBMI + 0x00c4,
 | |
| 	TRCR0		= AXIBMI + 0x0140,
 | |
| 	RIDAUAS0	= AXIBMI + 0x0180,
 | |
| 	RR		= AXIBMI + 0x0200,
 | |
| 	TATS		= AXIBMI + 0x0210,
 | |
| 	TATSR0		= AXIBMI + 0x0214,
 | |
| 	TATSR1		= AXIBMI + 0x0218,
 | |
| 	TATSR2		= AXIBMI + 0x021c,
 | |
| 	RATS		= AXIBMI + 0x0220,
 | |
| 	RATSR0		= AXIBMI + 0x0224,
 | |
| 	RATSR1		= AXIBMI + 0x0228,
 | |
| 	RATSR2		= AXIBMI + 0x022c,
 | |
| 	RIDASM0		= AXIBMI + 0x0240,
 | |
| 	RIDASAM0	= AXIBMI + 0x0244,
 | |
| 	RIDACAM0	= AXIBMI + 0x0248,
 | |
| 	EIS0		= AXIBMI + 0x0300,
 | |
| 	EIE0		= AXIBMI + 0x0304,
 | |
| 	EID0		= AXIBMI + 0x0308,
 | |
| 	EIS1		= AXIBMI + 0x0310,
 | |
| 	EIE1		= AXIBMI + 0x0314,
 | |
| 	EID1		= AXIBMI + 0x0318,
 | |
| 	TCEIS0		= AXIBMI + 0x0340,
 | |
| 	TCEIE0		= AXIBMI + 0x0344,
 | |
| 	TCEID0		= AXIBMI + 0x0348,
 | |
| 	RFSEIS0		= AXIBMI + 0x04c0,
 | |
| 	RFSEIE0		= AXIBMI + 0x04c4,
 | |
| 	RFSEID0		= AXIBMI + 0x04c8,
 | |
| 	RFEIS0		= AXIBMI + 0x0540,
 | |
| 	RFEIE0		= AXIBMI + 0x0544,
 | |
| 	RFEID0		= AXIBMI + 0x0548,
 | |
| 	RCEIS0		= AXIBMI + 0x05c0,
 | |
| 	RCEIE0		= AXIBMI + 0x05c4,
 | |
| 	RCEID0		= AXIBMI + 0x05c8,
 | |
| 	RIDAOIS		= AXIBMI + 0x0640,
 | |
| 	RIDAOIE		= AXIBMI + 0x0644,
 | |
| 	RIDAOID		= AXIBMI + 0x0648,
 | |
| 	TSFEIS		= AXIBMI + 0x06c0,
 | |
| 	TSFEIE		= AXIBMI + 0x06c4,
 | |
| 	TSFEID		= AXIBMI + 0x06c8,
 | |
| 	TSCEIS		= AXIBMI + 0x06d0,
 | |
| 	TSCEIE		= AXIBMI + 0x06d4,
 | |
| 	TSCEID		= AXIBMI + 0x06d8,
 | |
| 	DIS		= AXIBMI + 0x0b00,
 | |
| 	DIE		= AXIBMI + 0x0b04,
 | |
| 	DID		= AXIBMI + 0x0b08,
 | |
| 	TDIS0		= AXIBMI + 0x0b10,
 | |
| 	TDIE0		= AXIBMI + 0x0b14,
 | |
| 	TDID0		= AXIBMI + 0x0b18,
 | |
| 	RDIS0		= AXIBMI + 0x0b90,
 | |
| 	RDIE0		= AXIBMI + 0x0b94,
 | |
| 	RDID0		= AXIBMI + 0x0b98,
 | |
| 	TSDIS		= AXIBMI + 0x0c10,
 | |
| 	TSDIE		= AXIBMI + 0x0c14,
 | |
| 	TSDID		= AXIBMI + 0x0c18,
 | |
| 	GPOUT		= AXIBMI + 0x6000,
 | |
| 
 | |
| 	OCR		= TSNMHD + 0x0000,
 | |
| 	OSR		= TSNMHD + 0x0004,
 | |
| 	SWR		= TSNMHD + 0x0008,
 | |
| 	SIS		= TSNMHD + 0x000c,
 | |
| 	GIS		= TSNMHD + 0x0010,
 | |
| 	GIE		= TSNMHD + 0x0014,
 | |
| 	GID		= TSNMHD + 0x0018,
 | |
| 	TIS1		= TSNMHD + 0x0020,
 | |
| 	TIE1		= TSNMHD + 0x0024,
 | |
| 	TID1		= TSNMHD + 0x0028,
 | |
| 	TIS2		= TSNMHD + 0x0030,
 | |
| 	TIE2		= TSNMHD + 0x0034,
 | |
| 	TID2		= TSNMHD + 0x0038,
 | |
| 	RIS		= TSNMHD + 0x0040,
 | |
| 	RIE		= TSNMHD + 0x0044,
 | |
| 	RID		= TSNMHD + 0x0048,
 | |
| 	TGC1		= TSNMHD + 0x0050,
 | |
| 	TGC2		= TSNMHD + 0x0054,
 | |
| 	TFS0		= TSNMHD + 0x0060,
 | |
| 	TCF0		= TSNMHD + 0x0070,
 | |
| 	TCR1		= TSNMHD + 0x0080,
 | |
| 	TCR2		= TSNMHD + 0x0084,
 | |
| 	TCR3		= TSNMHD + 0x0088,
 | |
| 	TCR4		= TSNMHD + 0x008c,
 | |
| 	TMS0		= TSNMHD + 0x0090,
 | |
| 	TSR1		= TSNMHD + 0x00b0,
 | |
| 	TSR2		= TSNMHD + 0x00b4,
 | |
| 	TSR3		= TSNMHD + 0x00b8,
 | |
| 	TSR4		= TSNMHD + 0x00bc,
 | |
| 	TSR5		= TSNMHD + 0x00c0,
 | |
| 	RGC		= TSNMHD + 0x00d0,
 | |
| 	RDFCR		= TSNMHD + 0x00d4,
 | |
| 	RCFCR		= TSNMHD + 0x00d8,
 | |
| 	REFCNCR		= TSNMHD + 0x00dc,
 | |
| 	RSR1		= TSNMHD + 0x00e0,
 | |
| 	RSR2		= TSNMHD + 0x00e4,
 | |
| 	RSR3		= TSNMHD + 0x00e8,
 | |
| 	TCIS		= TSNMHD + 0x01e0,
 | |
| 	TCIE		= TSNMHD + 0x01e4,
 | |
| 	TCID		= TSNMHD + 0x01e8,
 | |
| 	TPTPC		= TSNMHD + 0x01f0,
 | |
| 	TTML		= TSNMHD + 0x01f4,
 | |
| 	TTJ		= TSNMHD + 0x01f8,
 | |
| 	TCC		= TSNMHD + 0x0200,
 | |
| 	TCS		= TSNMHD + 0x0204,
 | |
| 	TGS		= TSNMHD + 0x020c,
 | |
| 	TACST0		= TSNMHD + 0x0210,
 | |
| 	TACST1		= TSNMHD + 0x0214,
 | |
| 	TACST2		= TSNMHD + 0x0218,
 | |
| 	TALIT0		= TSNMHD + 0x0220,
 | |
| 	TALIT1		= TSNMHD + 0x0224,
 | |
| 	TALIT2		= TSNMHD + 0x0228,
 | |
| 	TAEN0		= TSNMHD + 0x0230,
 | |
| 	TAEN1		= TSNMHD + 0x0234,
 | |
| 	TASFE		= TSNMHD + 0x0240,
 | |
| 	TACLL0		= TSNMHD + 0x0250,
 | |
| 	TACLL1		= TSNMHD + 0x0254,
 | |
| 	TACLL2		= TSNMHD + 0x0258,
 | |
| 	CACC		= TSNMHD + 0x0260,
 | |
| 	CCS		= TSNMHD + 0x0264,
 | |
| 	CAIV0		= TSNMHD + 0x0270,
 | |
| 	CAUL0		= TSNMHD + 0x0290,
 | |
| 	TOCST0		= TSNMHD + 0x0300,
 | |
| 	TOCST1		= TSNMHD + 0x0304,
 | |
| 	TOCST2		= TSNMHD + 0x0308,
 | |
| 	TOLIT0		= TSNMHD + 0x0310,
 | |
| 	TOLIT1		= TSNMHD + 0x0314,
 | |
| 	TOLIT2		= TSNMHD + 0x0318,
 | |
| 	TOEN0		= TSNMHD + 0x0320,
 | |
| 	TOEN1		= TSNMHD + 0x0324,
 | |
| 	TOSFE		= TSNMHD + 0x0330,
 | |
| 	TCLR0		= TSNMHD + 0x0340,
 | |
| 	TCLR1		= TSNMHD + 0x0344,
 | |
| 	TCLR2		= TSNMHD + 0x0348,
 | |
| 	TSMS		= TSNMHD + 0x0350,
 | |
| 	COCC		= TSNMHD + 0x0360,
 | |
| 	COIV0		= TSNMHD + 0x03b0,
 | |
| 	COUL0		= TSNMHD + 0x03d0,
 | |
| 	QSTMACU0	= TSNMHD + 0x0400,
 | |
| 	QSTMACD0	= TSNMHD + 0x0404,
 | |
| 	QSTMAMU0	= TSNMHD + 0x0408,
 | |
| 	QSTMAMD0	= TSNMHD + 0x040c,
 | |
| 	QSFTVL0		= TSNMHD + 0x0410,
 | |
| 	QSFTVLM0	= TSNMHD + 0x0414,
 | |
| 	QSFTMSD0	= TSNMHD + 0x0418,
 | |
| 	QSFTGMI0	= TSNMHD + 0x041c,
 | |
| 	QSFTLS		= TSNMHD + 0x0600,
 | |
| 	QSFTLIS		= TSNMHD + 0x0604,
 | |
| 	QSFTLIE		= TSNMHD + 0x0608,
 | |
| 	QSFTLID		= TSNMHD + 0x060c,
 | |
| 	QSMSMC		= TSNMHD + 0x0610,
 | |
| 	QSGTMC		= TSNMHD + 0x0614,
 | |
| 	QSEIS		= TSNMHD + 0x0618,
 | |
| 	QSEIE		= TSNMHD + 0x061c,
 | |
| 	QSEID		= TSNMHD + 0x0620,
 | |
| 	QGACST0		= TSNMHD + 0x0630,
 | |
| 	QGACST1		= TSNMHD + 0x0634,
 | |
| 	QGACST2		= TSNMHD + 0x0638,
 | |
| 	QGALIT1		= TSNMHD + 0x0640,
 | |
| 	QGALIT2		= TSNMHD + 0x0644,
 | |
| 	QGAEN0		= TSNMHD + 0x0648,
 | |
| 	QGAEN1		= TSNMHD + 0x074c,
 | |
| 	QGIGS		= TSNMHD + 0x0650,
 | |
| 	QGGC		= TSNMHD + 0x0654,
 | |
| 	QGATL0		= TSNMHD + 0x0664,
 | |
| 	QGATL1		= TSNMHD + 0x0668,
 | |
| 	QGATL2		= TSNMHD + 0x066c,
 | |
| 	QGOCST0		= TSNMHD + 0x0670,
 | |
| 	QGOCST1		= TSNMHD + 0x0674,
 | |
| 	QGOCST2		= TSNMHD + 0x0678,
 | |
| 	QGOLIT0		= TSNMHD + 0x067c,
 | |
| 	QGOLIT1		= TSNMHD + 0x0680,
 | |
| 	QGOLIT2		= TSNMHD + 0x0684,
 | |
| 	QGOEN0		= TSNMHD + 0x0688,
 | |
| 	QGOEN1		= TSNMHD + 0x068c,
 | |
| 	QGTRO		= TSNMHD + 0x0690,
 | |
| 	QGTR1		= TSNMHD + 0x0694,
 | |
| 	QGTR2		= TSNMHD + 0x0698,
 | |
| 	QGFSMS		= TSNMHD + 0x069c,
 | |
| 	QTMIS		= TSNMHD + 0x06e0,
 | |
| 	QTMIE		= TSNMHD + 0x06e4,
 | |
| 	QTMID		= TSNMHD + 0x06e8,
 | |
| 	QMEC		= TSNMHD + 0x0700,
 | |
| 	QMMC		= TSNMHD + 0x0704,
 | |
| 	QRFDC		= TSNMHD + 0x0708,
 | |
| 	QYFDC		= TSNMHD + 0x070c,
 | |
| 	QVTCMC0		= TSNMHD + 0x0710,
 | |
| 	QMCBSC0		= TSNMHD + 0x0750,
 | |
| 	QMCIRC0		= TSNMHD + 0x0790,
 | |
| 	QMEBSC0		= TSNMHD + 0x07d0,
 | |
| 	QMEIRC0		= TSNMHD + 0x0710,
 | |
| 	QMCFC		= TSNMHD + 0x0850,
 | |
| 	QMEIS		= TSNMHD + 0x0860,
 | |
| 	QMEIE		= TSNMHD + 0x0864,
 | |
| 	QMEID		= TSNMHD + 0x086c,
 | |
| 	QSMFC0		= TSNMHD + 0x0870,
 | |
| 	QMSPPC0		= TSNMHD + 0x08b0,
 | |
| 	QMSRPC0		= TSNMHD + 0x08f0,
 | |
| 	QGPPC0		= TSNMHD + 0x0930,
 | |
| 	QGRPC0		= TSNMHD + 0x0950,
 | |
| 	QMDPC0		= TSNMHD + 0x0970,
 | |
| 	QMGPC0		= TSNMHD + 0x09b0,
 | |
| 	QMYPC0		= TSNMHD + 0x09f0,
 | |
| 	QMRPC0		= TSNMHD + 0x0a30,
 | |
| 	MQSTMACU	= TSNMHD + 0x0a70,
 | |
| 	MQSTMACD	= TSNMHD + 0x0a74,
 | |
| 	MQSTMAMU	= TSNMHD + 0x0a78,
 | |
| 	MQSTMAMD	= TSNMHD + 0x0a7c,
 | |
| 	MQSFTVL		= TSNMHD + 0x0a80,
 | |
| 	MQSFTVLM	= TSNMHD + 0x0a84,
 | |
| 	MQSFTMSD	= TSNMHD + 0x0a88,
 | |
| 	MQSFTGMI	= TSNMHD + 0x0a8c,
 | |
| 
 | |
| 	CFCR0		= RMSO + 0x0800,
 | |
| 	FMSCR		= RMSO + 0x0c10,
 | |
| 
 | |
| 	MMC		= RMRO + 0x0000,
 | |
| 	MPSM		= RMRO + 0x0010,
 | |
| 	MPIC		= RMRO + 0x0014,
 | |
| 	MTFFC		= RMRO + 0x0020,
 | |
| 	MTPFC		= RMRO + 0x0024,
 | |
| 	MTATC0		= RMRO + 0x0040,
 | |
| 	MRGC		= RMRO + 0x0080,
 | |
| 	MRMAC0		= RMRO + 0x0084,
 | |
| 	MRMAC1		= RMRO + 0x0088,
 | |
| 	MRAFC		= RMRO + 0x008c,
 | |
| 	MRSCE		= RMRO + 0x0090,
 | |
| 	MRSCP		= RMRO + 0x0094,
 | |
| 	MRSCC		= RMRO + 0x0098,
 | |
| 	MRFSCE		= RMRO + 0x009c,
 | |
| 	MRFSCP		= RMRO + 0x00a0,
 | |
| 	MTRC		= RMRO + 0x00a4,
 | |
| 	MPFC		= RMRO + 0x0100,
 | |
| 	MLVC		= RMRO + 0x0340,
 | |
| 	MEEEC		= RMRO + 0x0350,
 | |
| 	MLBC		= RMRO + 0x0360,
 | |
| 	MGMR		= RMRO + 0x0400,
 | |
| 	MMPFTCT		= RMRO + 0x0410,
 | |
| 	MAPFTCT		= RMRO + 0x0414,
 | |
| 	MPFRCT		= RMRO + 0x0418,
 | |
| 	MFCICT		= RMRO + 0x041c,
 | |
| 	MEEECT		= RMRO + 0x0420,
 | |
| 	MEIS		= RMRO + 0x0500,
 | |
| 	MEIE		= RMRO + 0x0504,
 | |
| 	MEID		= RMRO + 0x0508,
 | |
| 	MMIS0		= RMRO + 0x0510,
 | |
| 	MMIE0		= RMRO + 0x0514,
 | |
| 	MMID0		= RMRO + 0x0518,
 | |
| 	MMIS1		= RMRO + 0x0520,
 | |
| 	MMIE1		= RMRO + 0x0524,
 | |
| 	MMID1		= RMRO + 0x0528,
 | |
| 	MMIS2		= RMRO + 0x0530,
 | |
| 	MMIE2		= RMRO + 0x0534,
 | |
| 	MMID2		= RMRO + 0x0538,
 | |
| 	MXMS		= RMRO + 0x0600,
 | |
| 
 | |
| };
 | |
| 
 | |
| /* AXIBMI */
 | |
| #define RR_RATRR		BIT(0)
 | |
| #define RR_TATRR		BIT(1)
 | |
| #define RR_RST			(RR_RATRR | RR_TATRR)
 | |
| #define RR_RST_COMPLETE		0x03
 | |
| 
 | |
| #define AXIWC_DEFAULT		0xffff
 | |
| #define AXIRC_DEFAULT		0xffff
 | |
| 
 | |
| #define TATLS0_TEDE		BIT(1)
 | |
| #define TATLS0_TATEN_SHIFT	24
 | |
| #define TATLS0_TATEN(n)		((n) << TATLS0_TATEN_SHIFT)
 | |
| #define TATLR_TATL		BIT(31)
 | |
| 
 | |
| #define RATLS0_RETS		BIT(2)
 | |
| #define RATLS0_REDE		BIT(3)
 | |
| #define RATLS0_RATEN_SHIFT	24
 | |
| #define RATLS0_RATEN(n)		((n) << RATLS0_RATEN_SHIFT)
 | |
| #define RATLR_RATL		BIT(31)
 | |
| 
 | |
| #define DIE_DID_TDICX(n)	BIT((n))
 | |
| #define DIE_DID_RDICX(n)	BIT((n) + 8)
 | |
| #define TDIE_TDID_TDX(n)	BIT(n)
 | |
| #define RDIE_RDID_RDX(n)	BIT(n)
 | |
| #define TDIS_TDS(n)		BIT(n)
 | |
| #define RDIS_RDS(n)		BIT(n)
 | |
| 
 | |
| /* MHD */
 | |
| #define OSR_OPS			0x07
 | |
| #define SWR_SWR			BIT(0)
 | |
| 
 | |
| #define TGC1_TQTM_SFM		0xff00
 | |
| #define TGC1_STTV_DEFAULT	0x03
 | |
| 
 | |
| #define TMS_MFS_MAX		0x2800
 | |
| 
 | |
| /* RMAC System */
 | |
| #define CFCR_SDID(n)		((n) << 16)
 | |
| #define FMSCR_FMSIE(n)		((n) << 0)
 | |
| 
 | |
| /* RMAC */
 | |
| #define MPIC_PIS_MASK		GENMASK(1, 0)
 | |
| #define MPIC_PIS_MII		0
 | |
| #define MPIC_PIS_RMII		0x01
 | |
| #define MPIC_PIS_GMII		0x02
 | |
| #define MPIC_PIS_RGMII		0x03
 | |
| #define MPIC_LSC_SHIFT		2
 | |
| #define MPIC_LSC_MASK		GENMASK(3, MPIC_LSC_SHIFT)
 | |
| #define MPIC_LSC_10M		(0 << MPIC_LSC_SHIFT)
 | |
| #define MPIC_LSC_100M		(0x01 << MPIC_LSC_SHIFT)
 | |
| #define MPIC_LSC_1G		(0x02 << MPIC_LSC_SHIFT)
 | |
| #define MPIC_PSMCS_SHIFT	16
 | |
| #define MPIC_PSMCS_MASK		GENMASK(21, MPIC_PSMCS_SHIFT)
 | |
| #define MPIC_PSMCS_DEFAULT	(0x0a << MPIC_PSMCS_SHIFT)
 | |
| #define MPIC_PSMHT_SHIFT	24
 | |
| #define MPIC_PSMHT_MASK		GENMASK(26, MPIC_PSMHT_SHIFT)
 | |
| #define MPIC_PSMHT_DEFAULT	(0x07 << MPIC_PSMHT_SHIFT)
 | |
| 
 | |
| #define MLVC_PASE		BIT(8)
 | |
| #define MLVC_PSE		BIT(16)
 | |
| #define MLVC_PLV		BIT(17)
 | |
| 
 | |
| #define MPSM_PSME		BIT(0)
 | |
| #define MPSM_PSMAD		BIT(1)
 | |
| #define MPSM_PDA_SHIFT		3
 | |
| #define MPSM_PDA_MASK		GENMASK(7, 3)
 | |
| #define MPSM_PDA(n)		(((n) << MPSM_PDA_SHIFT) & MPSM_PDA_MASK)
 | |
| #define MPSM_PRA_SHIFT		8
 | |
| #define MPSM_PRA_MASK		GENMASK(12, 8)
 | |
| #define MPSM_PRA(n)		(((n) << MPSM_PRA_SHIFT) & MPSM_PRA_MASK)
 | |
| #define MPSM_PRD_SHIFT		16
 | |
| #define MPSM_PRD_SET(n)		((n) << MPSM_PRD_SHIFT)
 | |
| #define MPSM_PRD_GET(n)		((n) >> MPSM_PRD_SHIFT)
 | |
| 
 | |
| #define GPOUT_RDM		BIT(13)
 | |
| #define GPOUT_TDM		BIT(14)
 | |
| 
 | |
| /* RTSN */
 | |
| #define RTSN_INTERVAL_US	1000
 | |
| #define RTSN_TIMEOUT_US		1000000
 | |
| 
 | |
| #define TX_NUM_CHAINS		1
 | |
| #define RX_NUM_CHAINS		1
 | |
| 
 | |
| #define TX_CHAIN_SIZE		1024
 | |
| #define RX_CHAIN_SIZE		1024
 | |
| 
 | |
| #define TX_CHAIN_IDX		0
 | |
| #define RX_CHAIN_IDX		0
 | |
| 
 | |
| #define TX_CHAIN_ADDR_OFFSET	(sizeof(struct rtsn_desc) * TX_CHAIN_IDX)
 | |
| #define RX_CHAIN_ADDR_OFFSET	(sizeof(struct rtsn_desc) * RX_CHAIN_IDX)
 | |
| 
 | |
| #define PKT_BUF_SZ		1584
 | |
| #define RTSN_ALIGN		128
 | |
| 
 | |
| enum rtsn_mode {
 | |
| 	OCR_OPC_DISABLE,
 | |
| 	OCR_OPC_CONFIG,
 | |
| 	OCR_OPC_OPERATION,
 | |
| };
 | |
| 
 | |
| /* Descriptors */
 | |
| enum RX_DS_CC_BIT {
 | |
| 	RX_DS	= 0x0fff, /* Data size */
 | |
| 	RX_TR	= 0x1000, /* Truncation indication */
 | |
| 	RX_EI	= 0x2000, /* Error indication */
 | |
| 	RX_PS	= 0xc000, /* Padding selection */
 | |
| };
 | |
| 
 | |
| enum TX_FS_TAGL_BIT {
 | |
| 	TX_DS	= 0x0fff, /* Data size */
 | |
| 	TX_TAGL	= 0xf000, /* Frame tag LSBs */
 | |
| };
 | |
| 
 | |
| enum DIE_DT {
 | |
| 	/* HW/SW arbitration */
 | |
| 	DT_FEMPTY_IS	= 0x10,
 | |
| 	DT_FEMPTY_IC	= 0x20,
 | |
| 	DT_FEMPTY_ND	= 0x30,
 | |
| 	DT_FEMPTY	= 0x40,
 | |
| 	DT_FEMPTY_START	= 0x50,
 | |
| 	DT_FEMPTY_MID	= 0x60,
 | |
| 	DT_FEMPTY_END	= 0x70,
 | |
| 
 | |
| 	/* Frame data */
 | |
| 	DT_FSINGLE	= 0x80,
 | |
| 	DT_FSTART	= 0x90,
 | |
| 	DT_FMID		= 0xa0,
 | |
| 	DT_FEND		= 0xb0,
 | |
| 
 | |
| 	/* Chain control */
 | |
| 	DT_LEMPTY	= 0xc0,
 | |
| 	DT_EEMPTY	= 0xd0,
 | |
| 	DT_LINK		= 0xe0,
 | |
| 	DT_EOS		= 0xf0,
 | |
| 
 | |
| 	DT_MASK		= 0xf0,
 | |
| 	D_DIE		= 0x08,
 | |
| };
 | |
| 
 | |
| struct rtsn_desc {
 | |
| 	__le16 info_ds;
 | |
| 	__u8 info;
 | |
| 	u8 die_dt;
 | |
| 	__le32 dptr;
 | |
| } __packed;
 | |
| 
 | |
| struct rtsn_ts_desc {
 | |
| 	__le16 info_ds;
 | |
| 	__u8 info;
 | |
| 	u8 die_dt;
 | |
| 	__le32 dptr;
 | |
| 	__le32 ts_nsec;
 | |
| 	__le32 ts_sec;
 | |
| } __packed;
 | |
| 
 | |
| struct rtsn_ext_desc {
 | |
| 	__le16 info_ds;
 | |
| 	__u8 info;
 | |
| 	u8 die_dt;
 | |
| 	__le32 dptr;
 | |
| 	__le64 info1;
 | |
| } __packed;
 | |
| 
 | |
| struct rtsn_ext_ts_desc {
 | |
| 	__le16 info_ds;
 | |
| 	__u8 info;
 | |
| 	u8 die_dt;
 | |
| 	__le32 dptr;
 | |
| 	__le64 info1;
 | |
| 	__le32 ts_nsec;
 | |
| 	__le32 ts_sec;
 | |
| } __packed;
 | |
| 
 | |
| enum EXT_INFO_DS_BIT {
 | |
| 	TXC = 0x4000,
 | |
| };
 | |
| 
 | |
| #endif
 |