1b84fdd39SApeksha Gupta /* SPDX-License-Identifier: BSD-3-Clause 2b84fdd39SApeksha Gupta * Copyright 2020 NXP 3b84fdd39SApeksha Gupta */ 4b84fdd39SApeksha Gupta 5b84fdd39SApeksha Gupta #ifndef __ENETFEC_REGS_H 6b84fdd39SApeksha Gupta #define __ENETFEC_REGS_H 7b84fdd39SApeksha Gupta 8b84fdd39SApeksha Gupta /* Ethernet receive use control and status of buffer descriptor 9b84fdd39SApeksha Gupta */ 10b84fdd39SApeksha Gupta #define RX_BD_TR ((ushort)0x0001) /* Truncated */ 11b84fdd39SApeksha Gupta #define RX_BD_OV ((ushort)0x0002) /* Over-run */ 12b84fdd39SApeksha Gupta #define RX_BD_CR ((ushort)0x0004) /* CRC or Frame error */ 13b84fdd39SApeksha Gupta #define RX_BD_SH ((ushort)0x0008) /* Reserved */ 14b84fdd39SApeksha Gupta #define RX_BD_NO ((ushort)0x0010) /* Rcvd non-octet aligned frame */ 15*7be78d02SJosh Soref #define RX_BD_LG ((ushort)0x0020) /* Rcvd frame length violation */ 16b84fdd39SApeksha Gupta #define RX_BD_FIRST ((ushort)0x0400) /* Reserved */ 17b84fdd39SApeksha Gupta #define RX_BD_LAST ((ushort)0x0800) /* last buffer in the frame */ 18b84fdd39SApeksha Gupta #define RX_BD_INT 0x00800000 19b84fdd39SApeksha Gupta #define RX_BD_ICE 0x00000020 20b84fdd39SApeksha Gupta #define RX_BD_PCR 0x00000010 21b84fdd39SApeksha Gupta 22b84fdd39SApeksha Gupta /* 23b84fdd39SApeksha Gupta * 0 The next BD in consecutive location 24b84fdd39SApeksha Gupta * 1 The next BD in ENETFECn_RDSR. 25b84fdd39SApeksha Gupta */ 26b84fdd39SApeksha Gupta #define RX_BD_WRAP ((ushort)0x2000) 27b84fdd39SApeksha Gupta #define RX_BD_EMPTY ((ushort)0x8000) /* BD is empty */ 28b84fdd39SApeksha Gupta #define RX_BD_STATS ((ushort)0x013f) /* All buffer descriptor status bits */ 29b84fdd39SApeksha Gupta 30c75b9c3aSApeksha Gupta /* Ethernet receive use control and status of enhanced buffer descriptor */ 31c75b9c3aSApeksha Gupta #define BD_ENETFEC_RX_VLAN 0x00000004 32c75b9c3aSApeksha Gupta 33c75b9c3aSApeksha Gupta #define RX_FLAG_CSUM_EN (RX_BD_ICE | RX_BD_PCR) 34c75b9c3aSApeksha Gupta #define RX_FLAG_CSUM_ERR (RX_BD_ICE | RX_BD_PCR) 35c75b9c3aSApeksha Gupta 36b84fdd39SApeksha Gupta /* Ethernet transmit use control and status of buffer descriptor */ 37b84fdd39SApeksha Gupta #define TX_BD_TC ((ushort)0x0400) /* Transmit CRC */ 38b84fdd39SApeksha Gupta #define TX_BD_LAST ((ushort)0x0800) /* Last in frame */ 39b84fdd39SApeksha Gupta #define TX_BD_READY ((ushort)0x8000) /* Data is ready */ 40b84fdd39SApeksha Gupta #define TX_BD_STATS ((ushort)0x0fff) /* All buffer descriptor status bits */ 41b84fdd39SApeksha Gupta #define TX_BD_WRAP ((ushort)0x2000) 42b84fdd39SApeksha Gupta 43b84fdd39SApeksha Gupta /* Ethernet transmit use control and status of enhanced buffer descriptor */ 44b84fdd39SApeksha Gupta #define TX_BD_IINS 0x08000000 45b84fdd39SApeksha Gupta #define TX_BD_PINS 0x10000000 46b84fdd39SApeksha Gupta 47b84fdd39SApeksha Gupta #define ENETFEC_RD_START(X) (((X) == 1) ? ENETFEC_RD_START_1 : \ 48b84fdd39SApeksha Gupta (((X) == 2) ? \ 49b84fdd39SApeksha Gupta ENETFEC_RD_START_2 : ENETFEC_RD_START_0)) 50b84fdd39SApeksha Gupta #define ENETFEC_TD_START(X) (((X) == 1) ? ENETFEC_TD_START_1 : \ 51b84fdd39SApeksha Gupta (((X) == 2) ? \ 52b84fdd39SApeksha Gupta ENETFEC_TD_START_2 : ENETFEC_TD_START_0)) 53b84fdd39SApeksha Gupta #define ENETFEC_MRB_SIZE(X) (((X) == 1) ? ENETFEC_MRB_SIZE_1 : \ 54b84fdd39SApeksha Gupta (((X) == 2) ? \ 55b84fdd39SApeksha Gupta ENETFEC_MRB_SIZE_2 : ENETFEC_MRB_SIZE_0)) 56b84fdd39SApeksha Gupta 57b84fdd39SApeksha Gupta #define ENETFEC_ETHEREN ((uint)0x00000002) 58b84fdd39SApeksha Gupta #define ENETFEC_TXC_DLY ((uint)0x00010000) 59b84fdd39SApeksha Gupta #define ENETFEC_RXC_DLY ((uint)0x00020000) 60b84fdd39SApeksha Gupta 61b84fdd39SApeksha Gupta /* ENETFEC MAC is in controller */ 62b84fdd39SApeksha Gupta #define QUIRK_HAS_ENETFEC_MAC (1 << 0) 63b84fdd39SApeksha Gupta /* GBIT supported in controller */ 64b84fdd39SApeksha Gupta #define QUIRK_GBIT (1 << 3) 65c75b9c3aSApeksha Gupta /* Controller support hardware checksum */ 66c75b9c3aSApeksha Gupta #define QUIRK_CSUM (1 << 5) 67c75b9c3aSApeksha Gupta /* Controller support hardware vlan */ 68c75b9c3aSApeksha Gupta #define QUIRK_VLAN (1 << 6) 69b84fdd39SApeksha Gupta /* RACC register supported by controller */ 70b84fdd39SApeksha Gupta #define QUIRK_RACC (1 << 12) 71b84fdd39SApeksha Gupta /* i.MX8 ENETFEC IP version added the feature to generate the delayed TXC or 72b84fdd39SApeksha Gupta * RXC. For its implementation, ENETFEC uses synchronized clocks (250MHz) for 73b84fdd39SApeksha Gupta * generating delay of 2ns. 74b84fdd39SApeksha Gupta */ 75b84fdd39SApeksha Gupta #define QUIRK_SUPPORT_DELAYED_CLKS (1 << 18) 76b84fdd39SApeksha Gupta 77b84fdd39SApeksha Gupta #define ENETFEC_EIR 0x004 /* Interrupt event register */ 78b84fdd39SApeksha Gupta #define ENETFEC_EIMR 0x008 /* Interrupt mask register */ 79b84fdd39SApeksha Gupta #define ENETFEC_RDAR_0 0x010 /* Receive descriptor active register ring0 */ 80b84fdd39SApeksha Gupta #define ENETFEC_TDAR_0 0x014 /* Transmit descriptor active register ring0 */ 81b84fdd39SApeksha Gupta #define ENETFEC_ECR 0x024 /* Ethernet control register */ 82b84fdd39SApeksha Gupta #define ENETFEC_MSCR 0x044 /* MII speed control register */ 83b84fdd39SApeksha Gupta #define ENETFEC_MIBC 0x064 /* MIB control and status register */ 84b84fdd39SApeksha Gupta #define ENETFEC_RCR 0x084 /* Receive control register */ 85b84fdd39SApeksha Gupta #define ENETFEC_TCR 0x0c4 /* Transmit Control register */ 86b84fdd39SApeksha Gupta #define ENETFEC_PALR 0x0e4 /* MAC address low 32 bits */ 87b84fdd39SApeksha Gupta #define ENETFEC_PAUR 0x0e8 /* MAC address high 16 bits */ 88b84fdd39SApeksha Gupta #define ENETFEC_OPD 0x0ec /* Opcode/Pause duration register */ 89b84fdd39SApeksha Gupta #define ENETFEC_IAUR 0x118 /* hash table 32 bits high */ 90b84fdd39SApeksha Gupta #define ENETFEC_IALR 0x11c /* hash table 32 bits low */ 91b84fdd39SApeksha Gupta #define ENETFEC_GAUR 0x120 /* grp hash table 32 bits high */ 92b84fdd39SApeksha Gupta #define ENETFEC_GALR 0x124 /* grp hash table 32 bits low */ 93b84fdd39SApeksha Gupta #define ENETFEC_TFWR 0x144 /* transmit FIFO water_mark */ 94b84fdd39SApeksha Gupta #define ENETFEC_RACC 0x1c4 /* Receive Accelerator function configuration*/ 95b84fdd39SApeksha Gupta #define ENETFEC_DMA1CFG 0x1d8 /* DMA class based configuration ring1 */ 96b84fdd39SApeksha Gupta #define ENETFEC_DMA2CFG 0x1dc /* DMA class based Configuration ring2 */ 97b84fdd39SApeksha Gupta #define ENETFEC_RDAR_1 0x1e0 /* Rx descriptor active register ring1 */ 98b84fdd39SApeksha Gupta #define ENETFEC_TDAR_1 0x1e4 /* Tx descriptor active register ring1 */ 99b84fdd39SApeksha Gupta #define ENETFEC_RDAR_2 0x1e8 /* Rx descriptor active register ring2 */ 100b84fdd39SApeksha Gupta #define ENETFEC_TDAR_2 0x1ec /* Tx descriptor active register ring2 */ 101b84fdd39SApeksha Gupta #define ENETFEC_RD_START_1 0x160 /* Receive descriptor ring1 start reg */ 102b84fdd39SApeksha Gupta #define ENETFEC_TD_START_1 0x164 /* Transmit descriptor ring1 start reg */ 103b84fdd39SApeksha Gupta #define ENETFEC_MRB_SIZE_1 0x168 /* Max receive buffer size reg ring1 */ 104b84fdd39SApeksha Gupta #define ENETFEC_RD_START_2 0x16c /* Receive descriptor ring2 start reg */ 105b84fdd39SApeksha Gupta #define ENETFEC_TD_START_2 0x170 /* Transmit descriptor ring2 start reg */ 106b84fdd39SApeksha Gupta #define ENETFEC_MRB_SIZE_2 0x174 /* Max receive buffer size reg ring2 */ 107b84fdd39SApeksha Gupta #define ENETFEC_RD_START_0 0x180 /* Receive descriptor ring0 start reg */ 108b84fdd39SApeksha Gupta #define ENETFEC_TD_START_0 0x184 /* Transmit descriptor ring0 start reg */ 109b84fdd39SApeksha Gupta #define ENETFEC_MRB_SIZE_0 0x188 /* Max receive buffer size reg ring0*/ 110b84fdd39SApeksha Gupta #define ENETFEC_R_FIFO_SFL 0x190 /* Rx FIFO full threshold */ 111b84fdd39SApeksha Gupta #define ENETFEC_R_FIFO_SEM 0x194 /* Rx FIFO empty threshold */ 112b84fdd39SApeksha Gupta #define ENETFEC_R_FIFO_AEM 0x198 /* Rx FIFO almost empty threshold */ 113b84fdd39SApeksha Gupta #define ENETFEC_R_FIFO_AFL 0x19c /* Rx FIFO almost full threshold */ 114b84fdd39SApeksha Gupta #define ENETFEC_FRAME_TRL 0x1b0 /* Frame truncation length */ 115b84fdd39SApeksha Gupta 116b84fdd39SApeksha Gupta #endif /*__ENETFEC_REGS_H */ 117