xref: /rk3399_rockchip-uboot/arch/m68k/include/asm/fsl_mcdmafec.h (revision 326ea986ac150acdc7656d57fca647db80b50158)
1819833afSPeter Tyser /*
2819833afSPeter Tyser  * fsl_mcdmafec.h -- Multi-channel DMA Fast Ethernet Controller definitions
3819833afSPeter Tyser  *
4819833afSPeter Tyser  * Copyright (C) 2004-2007 Freescale Semiconductor, Inc.
5819833afSPeter Tyser  * TsiChung Liew (Tsi-Chung.Liew@freescale.com)
6819833afSPeter Tyser  *
7*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
8819833afSPeter Tyser  */
9819833afSPeter Tyser 
10819833afSPeter Tyser #ifndef fsl_mcdmafec_h
11819833afSPeter Tyser #define fsl_mcdmafec_h
12819833afSPeter Tyser 
13819833afSPeter Tyser /* Re-use of the definitions */
14819833afSPeter Tyser #include <asm/fec.h>
15819833afSPeter Tyser 
16819833afSPeter Tyser typedef struct fecdma {
17819833afSPeter Tyser 	u32 rsvd0;		/* 0x000 */
18819833afSPeter Tyser 	u32 eir;		/* 0x004 */
19819833afSPeter Tyser 	u32 eimr;		/* 0x008 */
20819833afSPeter Tyser 	u32 rsvd1[6];		/* 0x00C - 0x023 */
21819833afSPeter Tyser 	u32 ecr;		/* 0x024 */
22819833afSPeter Tyser 	u32 rsvd2[6];		/* 0x028 - 0x03F */
23819833afSPeter Tyser 	u32 mmfr;		/* 0x040 */
24819833afSPeter Tyser 	u32 mscr;		/* 0x044 */
25819833afSPeter Tyser 	u32 rsvd3[7];		/* 0x048 - 0x063 */
26819833afSPeter Tyser 	u32 mibc;		/* 0x064 */
27819833afSPeter Tyser 	u32 rsvd4[7];		/* 0x068 - 0x083 */
28819833afSPeter Tyser 	u32 rcr;		/* 0x084 */
29819833afSPeter Tyser 	u32 rhr;		/* 0x088 */
30819833afSPeter Tyser 	u32 rsvd5[14];		/* 0x08C - 0x0C3 */
31819833afSPeter Tyser 	u32 tcr;		/* 0x0C4 */
32819833afSPeter Tyser 	u32 rsvd6[7];		/* 0x0C8 - 0x0E3 */
33819833afSPeter Tyser 	u32 palr;		/* 0x0E4 */
34819833afSPeter Tyser 	u32 paur;		/* 0x0E8 */
35819833afSPeter Tyser 	u32 opd;		/* 0x0EC */
36819833afSPeter Tyser 	u32 rsvd7[10];		/* 0x0F0 - 0x117 */
37819833afSPeter Tyser 	u32 iaur;		/* 0x118 */
38819833afSPeter Tyser 	u32 ialr;		/* 0x11C */
39819833afSPeter Tyser 	u32 gaur;		/* 0x120 */
40819833afSPeter Tyser 	u32 galr;		/* 0x124 */
41819833afSPeter Tyser 	u32 rsvd8[7];		/* 0x128 - 0x143 */
42819833afSPeter Tyser 	u32 tfwr;		/* 0x144 */
43819833afSPeter Tyser 	u32 rsvd9[14];		/* 0x148 - 0x17F */
44819833afSPeter Tyser 	u32 fmc;		/* 0x180 */
45819833afSPeter Tyser 	u32 rfdr;		/* 0x184 */
46819833afSPeter Tyser 	u32 rfsr;		/* 0x188 */
47819833afSPeter Tyser 	u32 rfcr;		/* 0x18C */
48819833afSPeter Tyser 	u32 rlrfp;		/* 0x190 */
49819833afSPeter Tyser 	u32 rlwfp;		/* 0x194 */
50819833afSPeter Tyser 	u32 rfar;		/* 0x198 */
51819833afSPeter Tyser 	u32 rfrp;		/* 0x19C */
52819833afSPeter Tyser 	u32 rfwp;		/* 0x1A0 */
53819833afSPeter Tyser 	u32 tfdr;		/* 0x1A4 */
54819833afSPeter Tyser 	u32 tfsr;		/* 0x1A8 */
55819833afSPeter Tyser 	u32 tfcr;		/* 0x1AC */
56819833afSPeter Tyser 	u32 tlrfp;		/* 0x1B0 */
57819833afSPeter Tyser 	u32 tlwfp;		/* 0x1B4 */
58819833afSPeter Tyser 	u32 tfar;		/* 0x1B8 */
59819833afSPeter Tyser 	u32 tfrp;		/* 0x1BC */
60819833afSPeter Tyser 	u32 tfwp;		/* 0x1C0 */
61819833afSPeter Tyser 	u32 frst;		/* 0x1C4 */
62819833afSPeter Tyser 	u32 ctcwr;		/* 0x1C8 */
63819833afSPeter Tyser } fecdma_t;
64819833afSPeter Tyser 
65819833afSPeter Tyser struct fec_info_dma {
66819833afSPeter Tyser 	int index;
67819833afSPeter Tyser 	u32 iobase;
68819833afSPeter Tyser 	u32 pinmux;
69819833afSPeter Tyser 	u32 miibase;
70819833afSPeter Tyser 	int phy_addr;
71819833afSPeter Tyser 	int dup_spd;
72819833afSPeter Tyser 	char *phy_name;
73819833afSPeter Tyser 	int phyname_init;
74819833afSPeter Tyser 	cbd_t *rxbd;		/* Rx BD */
75819833afSPeter Tyser 	cbd_t *txbd;		/* Tx BD */
76819833afSPeter Tyser 	uint rxIdx;
77819833afSPeter Tyser 	uint txIdx;
78819833afSPeter Tyser 	char *txbuf;
79819833afSPeter Tyser 	int initialized;
80819833afSPeter Tyser 	struct fec_info_dma *next;
81819833afSPeter Tyser 
82819833afSPeter Tyser 	u16 rxTask;		/* DMA receive Task Number */
83819833afSPeter Tyser 	u16 txTask;		/* DMA Transmit Task Number */
84819833afSPeter Tyser 	u16 rxPri;		/* DMA Receive Priority */
85819833afSPeter Tyser 	u16 txPri;		/* DMA Transmit Priority */
86819833afSPeter Tyser 	u16 rxInit;		/* DMA Receive Initiator */
87819833afSPeter Tyser 	u16 txInit;		/* DMA Transmit Initiator */
88819833afSPeter Tyser 	u16 usedTbdIdx;		/* next transmit BD to clean */
89819833afSPeter Tyser 	u16 cleanTbdNum;	/* the number of available transmit BDs */
90819833afSPeter Tyser };
91819833afSPeter Tyser 
92819833afSPeter Tyser /* Bit definitions and macros for IEVENT */
93819833afSPeter Tyser #define FEC_EIR_TXERR		(0x00040000)
94819833afSPeter Tyser #define FEC_EIR_RXERR		(0x00020000)
95819833afSPeter Tyser #undef FEC_EIR_CLEAR_ALL
96819833afSPeter Tyser #define FEC_EIR_CLEAR_ALL	(0xFFFE0000)
97819833afSPeter Tyser 
98819833afSPeter Tyser /* Bit definitions and macros for R_HASH */
99819833afSPeter Tyser #define FEC_RHASH_FCE_DC	(0x80000000)
100819833afSPeter Tyser #define FEC_RHASH_MULTCAST	(0x40000000)
101819833afSPeter Tyser #define FEC_RHASH_HASH(x)	(((x)&0x0000003F)<<24)
102819833afSPeter Tyser 
103819833afSPeter Tyser /* Bit definitions and macros for FEC_TFWR */
104819833afSPeter Tyser #undef FEC_TFWR_X_WMRK
105819833afSPeter Tyser #undef FEC_TFWR_X_WMRK_64
106819833afSPeter Tyser #undef FEC_TFWR_X_WMRK_128
107819833afSPeter Tyser #undef FEC_TFWR_X_WMRK_192
108819833afSPeter Tyser 
109819833afSPeter Tyser #define FEC_TFWR_X_WMRK(x)	((x)&0x0F)
110819833afSPeter Tyser #define FEC_TFWR_X_WMRK_64	(0x00)
111819833afSPeter Tyser #define FEC_TFWR_X_WMRK_128	(0x01)
112819833afSPeter Tyser #define FEC_TFWR_X_WMRK_192	(0x02)
113819833afSPeter Tyser #define FEC_TFWR_X_WMRK_256	(0x03)
114819833afSPeter Tyser #define FEC_TFWR_X_WMRK_320	(0x04)
115819833afSPeter Tyser #define FEC_TFWR_X_WMRK_384	(0x05)
116819833afSPeter Tyser #define FEC_TFWR_X_WMRK_448	(0x06)
117819833afSPeter Tyser #define FEC_TFWR_X_WMRK_512	(0x07)
118819833afSPeter Tyser #define FEC_TFWR_X_WMRK_576	(0x08)
119819833afSPeter Tyser #define FEC_TFWR_X_WMRK_640	(0x09)
120819833afSPeter Tyser #define FEC_TFWR_X_WMRK_704	(0x0A)
121819833afSPeter Tyser #define FEC_TFWR_X_WMRK_768	(0x0B)
122819833afSPeter Tyser #define FEC_TFWR_X_WMRK_832	(0x0C)
123819833afSPeter Tyser #define FEC_TFWR_X_WMRK_896	(0x0D)
124819833afSPeter Tyser #define FEC_TFWR_X_WMRK_960	(0x0E)
125819833afSPeter Tyser #define FEC_TFWR_X_WMRK_1024	(0x0F)
126819833afSPeter Tyser 
127819833afSPeter Tyser /* FIFO definitions */
128819833afSPeter Tyser /* Bit definitions and macros for FSTAT */
129819833afSPeter Tyser #define FIFO_STAT_IP		(0x80000000)
130819833afSPeter Tyser #define FIFO_STAT_FRAME(x)	(((x)&0x0000000F)<<24)
131819833afSPeter Tyser #define FIFO_STAT_FAE		(0x00800000)
132819833afSPeter Tyser #define FIFO_STAT_RXW		(0x00400000)
133819833afSPeter Tyser #define FIFO_STAT_UF		(0x00200000)
134819833afSPeter Tyser #define FIFO_STAT_OF		(0x00100000)
135819833afSPeter Tyser #define FIFO_STAT_FR		(0x00080000)
136819833afSPeter Tyser #define FIFO_STAT_FULL		(0x00040000)
137819833afSPeter Tyser #define FIFO_STAT_ALARM		(0x00020000)
138819833afSPeter Tyser #define FIFO_STAT_EMPTY		(0x00010000)
139819833afSPeter Tyser 
140819833afSPeter Tyser /* Bit definitions and macros for FCTRL */
141819833afSPeter Tyser #define FIFO_CTRL_WCTL		(0x40000000)
142819833afSPeter Tyser #define FIFO_CTRL_WFR		(0x20000000)
143819833afSPeter Tyser #define FIFO_CTRL_FRAME		(0x08000000)
144819833afSPeter Tyser #define FIFO_CTRL_GR(x)		(((x)&0x00000007)<<24)
145819833afSPeter Tyser #define FIFO_CTRL_IPMASK	(0x00800000)
146819833afSPeter Tyser #define FIFO_CTRL_FAEMASK	(0x00400000)
147819833afSPeter Tyser #define FIFO_CTRL_RXWMASK	(0x00200000)
148819833afSPeter Tyser #define FIFO_CTRL_UFMASK	(0x00100000)
149819833afSPeter Tyser #define FIFO_CTRL_OFMASK	(0x00080000)
150819833afSPeter Tyser 
151819833afSPeter Tyser #endif				/* fsl_mcdmafec_h */
152