1*4882a593Smuzhiyun /* Synopsys DesignWare Core Enterprise Ethernet (XLGMAC) Driver 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright (c) 2017 Synopsys, Inc. (www.synopsys.com) 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This program is dual-licensed; you may select either version 2 of 6*4882a593Smuzhiyun * the GNU General Public License ("GPL") or BSD license ("BSD"). 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * This Synopsys DWC XLGMAC software driver and associated documentation 9*4882a593Smuzhiyun * (hereinafter the "Software") is an unsupported proprietary work of 10*4882a593Smuzhiyun * Synopsys, Inc. unless otherwise expressly agreed to in writing between 11*4882a593Smuzhiyun * Synopsys and you. The Software IS NOT an item of Licensed Software or a 12*4882a593Smuzhiyun * Licensed Product under any End User Software License Agreement or 13*4882a593Smuzhiyun * Agreement for Licensed Products with Synopsys or any supplement thereto. 14*4882a593Smuzhiyun * Synopsys is a registered trademark of Synopsys, Inc. Other names included 15*4882a593Smuzhiyun * in the SOFTWARE may be the trademarks of their respective owners. 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #ifndef __DWC_XLGMAC_REG_H__ 19*4882a593Smuzhiyun #define __DWC_XLGMAC_REG_H__ 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* MAC register offsets */ 22*4882a593Smuzhiyun #define MAC_TCR 0x0000 23*4882a593Smuzhiyun #define MAC_RCR 0x0004 24*4882a593Smuzhiyun #define MAC_PFR 0x0008 25*4882a593Smuzhiyun #define MAC_HTR0 0x0010 26*4882a593Smuzhiyun #define MAC_VLANTR 0x0050 27*4882a593Smuzhiyun #define MAC_VLANHTR 0x0058 28*4882a593Smuzhiyun #define MAC_VLANIR 0x0060 29*4882a593Smuzhiyun #define MAC_Q0TFCR 0x0070 30*4882a593Smuzhiyun #define MAC_RFCR 0x0090 31*4882a593Smuzhiyun #define MAC_RQC0R 0x00a0 32*4882a593Smuzhiyun #define MAC_RQC1R 0x00a4 33*4882a593Smuzhiyun #define MAC_RQC2R 0x00a8 34*4882a593Smuzhiyun #define MAC_RQC3R 0x00ac 35*4882a593Smuzhiyun #define MAC_ISR 0x00b0 36*4882a593Smuzhiyun #define MAC_IER 0x00b4 37*4882a593Smuzhiyun #define MAC_VR 0x0110 38*4882a593Smuzhiyun #define MAC_HWF0R 0x011c 39*4882a593Smuzhiyun #define MAC_HWF1R 0x0120 40*4882a593Smuzhiyun #define MAC_HWF2R 0x0124 41*4882a593Smuzhiyun #define MAC_MACA0HR 0x0300 42*4882a593Smuzhiyun #define MAC_MACA0LR 0x0304 43*4882a593Smuzhiyun #define MAC_MACA1HR 0x0308 44*4882a593Smuzhiyun #define MAC_MACA1LR 0x030c 45*4882a593Smuzhiyun #define MAC_RSSCR 0x0c80 46*4882a593Smuzhiyun #define MAC_RSSAR 0x0c88 47*4882a593Smuzhiyun #define MAC_RSSDR 0x0c8c 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun #define MAC_QTFCR_INC 4 50*4882a593Smuzhiyun #define MAC_MACA_INC 4 51*4882a593Smuzhiyun #define MAC_HTR_INC 4 52*4882a593Smuzhiyun #define MAC_RQC2_INC 4 53*4882a593Smuzhiyun #define MAC_RQC2_Q_PER_REG 4 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun /* MAC register entry bit positions and sizes */ 56*4882a593Smuzhiyun #define MAC_HWF0R_ADDMACADRSEL_POS 18 57*4882a593Smuzhiyun #define MAC_HWF0R_ADDMACADRSEL_LEN 5 58*4882a593Smuzhiyun #define MAC_HWF0R_ARPOFFSEL_POS 9 59*4882a593Smuzhiyun #define MAC_HWF0R_ARPOFFSEL_LEN 1 60*4882a593Smuzhiyun #define MAC_HWF0R_EEESEL_POS 13 61*4882a593Smuzhiyun #define MAC_HWF0R_EEESEL_LEN 1 62*4882a593Smuzhiyun #define MAC_HWF0R_PHYIFSEL_POS 1 63*4882a593Smuzhiyun #define MAC_HWF0R_PHYIFSEL_LEN 2 64*4882a593Smuzhiyun #define MAC_HWF0R_MGKSEL_POS 7 65*4882a593Smuzhiyun #define MAC_HWF0R_MGKSEL_LEN 1 66*4882a593Smuzhiyun #define MAC_HWF0R_MMCSEL_POS 8 67*4882a593Smuzhiyun #define MAC_HWF0R_MMCSEL_LEN 1 68*4882a593Smuzhiyun #define MAC_HWF0R_RWKSEL_POS 6 69*4882a593Smuzhiyun #define MAC_HWF0R_RWKSEL_LEN 1 70*4882a593Smuzhiyun #define MAC_HWF0R_RXCOESEL_POS 16 71*4882a593Smuzhiyun #define MAC_HWF0R_RXCOESEL_LEN 1 72*4882a593Smuzhiyun #define MAC_HWF0R_SAVLANINS_POS 27 73*4882a593Smuzhiyun #define MAC_HWF0R_SAVLANINS_LEN 1 74*4882a593Smuzhiyun #define MAC_HWF0R_SMASEL_POS 5 75*4882a593Smuzhiyun #define MAC_HWF0R_SMASEL_LEN 1 76*4882a593Smuzhiyun #define MAC_HWF0R_TSSEL_POS 12 77*4882a593Smuzhiyun #define MAC_HWF0R_TSSEL_LEN 1 78*4882a593Smuzhiyun #define MAC_HWF0R_TSSTSSEL_POS 25 79*4882a593Smuzhiyun #define MAC_HWF0R_TSSTSSEL_LEN 2 80*4882a593Smuzhiyun #define MAC_HWF0R_TXCOESEL_POS 14 81*4882a593Smuzhiyun #define MAC_HWF0R_TXCOESEL_LEN 1 82*4882a593Smuzhiyun #define MAC_HWF0R_VLHASH_POS 4 83*4882a593Smuzhiyun #define MAC_HWF0R_VLHASH_LEN 1 84*4882a593Smuzhiyun #define MAC_HWF1R_ADDR64_POS 14 85*4882a593Smuzhiyun #define MAC_HWF1R_ADDR64_LEN 2 86*4882a593Smuzhiyun #define MAC_HWF1R_ADVTHWORD_POS 13 87*4882a593Smuzhiyun #define MAC_HWF1R_ADVTHWORD_LEN 1 88*4882a593Smuzhiyun #define MAC_HWF1R_DBGMEMA_POS 19 89*4882a593Smuzhiyun #define MAC_HWF1R_DBGMEMA_LEN 1 90*4882a593Smuzhiyun #define MAC_HWF1R_DCBEN_POS 16 91*4882a593Smuzhiyun #define MAC_HWF1R_DCBEN_LEN 1 92*4882a593Smuzhiyun #define MAC_HWF1R_HASHTBLSZ_POS 24 93*4882a593Smuzhiyun #define MAC_HWF1R_HASHTBLSZ_LEN 3 94*4882a593Smuzhiyun #define MAC_HWF1R_L3L4FNUM_POS 27 95*4882a593Smuzhiyun #define MAC_HWF1R_L3L4FNUM_LEN 4 96*4882a593Smuzhiyun #define MAC_HWF1R_NUMTC_POS 21 97*4882a593Smuzhiyun #define MAC_HWF1R_NUMTC_LEN 3 98*4882a593Smuzhiyun #define MAC_HWF1R_RSSEN_POS 20 99*4882a593Smuzhiyun #define MAC_HWF1R_RSSEN_LEN 1 100*4882a593Smuzhiyun #define MAC_HWF1R_RXFIFOSIZE_POS 0 101*4882a593Smuzhiyun #define MAC_HWF1R_RXFIFOSIZE_LEN 5 102*4882a593Smuzhiyun #define MAC_HWF1R_SPHEN_POS 17 103*4882a593Smuzhiyun #define MAC_HWF1R_SPHEN_LEN 1 104*4882a593Smuzhiyun #define MAC_HWF1R_TSOEN_POS 18 105*4882a593Smuzhiyun #define MAC_HWF1R_TSOEN_LEN 1 106*4882a593Smuzhiyun #define MAC_HWF1R_TXFIFOSIZE_POS 6 107*4882a593Smuzhiyun #define MAC_HWF1R_TXFIFOSIZE_LEN 5 108*4882a593Smuzhiyun #define MAC_HWF2R_AUXSNAPNUM_POS 28 109*4882a593Smuzhiyun #define MAC_HWF2R_AUXSNAPNUM_LEN 3 110*4882a593Smuzhiyun #define MAC_HWF2R_PPSOUTNUM_POS 24 111*4882a593Smuzhiyun #define MAC_HWF2R_PPSOUTNUM_LEN 3 112*4882a593Smuzhiyun #define MAC_HWF2R_RXCHCNT_POS 12 113*4882a593Smuzhiyun #define MAC_HWF2R_RXCHCNT_LEN 4 114*4882a593Smuzhiyun #define MAC_HWF2R_RXQCNT_POS 0 115*4882a593Smuzhiyun #define MAC_HWF2R_RXQCNT_LEN 4 116*4882a593Smuzhiyun #define MAC_HWF2R_TXCHCNT_POS 18 117*4882a593Smuzhiyun #define MAC_HWF2R_TXCHCNT_LEN 4 118*4882a593Smuzhiyun #define MAC_HWF2R_TXQCNT_POS 6 119*4882a593Smuzhiyun #define MAC_HWF2R_TXQCNT_LEN 4 120*4882a593Smuzhiyun #define MAC_IER_TSIE_POS 12 121*4882a593Smuzhiyun #define MAC_IER_TSIE_LEN 1 122*4882a593Smuzhiyun #define MAC_ISR_MMCRXIS_POS 9 123*4882a593Smuzhiyun #define MAC_ISR_MMCRXIS_LEN 1 124*4882a593Smuzhiyun #define MAC_ISR_MMCTXIS_POS 10 125*4882a593Smuzhiyun #define MAC_ISR_MMCTXIS_LEN 1 126*4882a593Smuzhiyun #define MAC_ISR_PMTIS_POS 4 127*4882a593Smuzhiyun #define MAC_ISR_PMTIS_LEN 1 128*4882a593Smuzhiyun #define MAC_ISR_TSIS_POS 12 129*4882a593Smuzhiyun #define MAC_ISR_TSIS_LEN 1 130*4882a593Smuzhiyun #define MAC_MACA1HR_AE_POS 31 131*4882a593Smuzhiyun #define MAC_MACA1HR_AE_LEN 1 132*4882a593Smuzhiyun #define MAC_PFR_HMC_POS 2 133*4882a593Smuzhiyun #define MAC_PFR_HMC_LEN 1 134*4882a593Smuzhiyun #define MAC_PFR_HPF_POS 10 135*4882a593Smuzhiyun #define MAC_PFR_HPF_LEN 1 136*4882a593Smuzhiyun #define MAC_PFR_HUC_POS 1 137*4882a593Smuzhiyun #define MAC_PFR_HUC_LEN 1 138*4882a593Smuzhiyun #define MAC_PFR_PM_POS 4 139*4882a593Smuzhiyun #define MAC_PFR_PM_LEN 1 140*4882a593Smuzhiyun #define MAC_PFR_PR_POS 0 141*4882a593Smuzhiyun #define MAC_PFR_PR_LEN 1 142*4882a593Smuzhiyun #define MAC_PFR_VTFE_POS 16 143*4882a593Smuzhiyun #define MAC_PFR_VTFE_LEN 1 144*4882a593Smuzhiyun #define MAC_Q0TFCR_PT_POS 16 145*4882a593Smuzhiyun #define MAC_Q0TFCR_PT_LEN 16 146*4882a593Smuzhiyun #define MAC_Q0TFCR_TFE_POS 1 147*4882a593Smuzhiyun #define MAC_Q0TFCR_TFE_LEN 1 148*4882a593Smuzhiyun #define MAC_RCR_ACS_POS 1 149*4882a593Smuzhiyun #define MAC_RCR_ACS_LEN 1 150*4882a593Smuzhiyun #define MAC_RCR_CST_POS 2 151*4882a593Smuzhiyun #define MAC_RCR_CST_LEN 1 152*4882a593Smuzhiyun #define MAC_RCR_DCRCC_POS 3 153*4882a593Smuzhiyun #define MAC_RCR_DCRCC_LEN 1 154*4882a593Smuzhiyun #define MAC_RCR_HDSMS_POS 12 155*4882a593Smuzhiyun #define MAC_RCR_HDSMS_LEN 3 156*4882a593Smuzhiyun #define MAC_RCR_IPC_POS 9 157*4882a593Smuzhiyun #define MAC_RCR_IPC_LEN 1 158*4882a593Smuzhiyun #define MAC_RCR_JE_POS 8 159*4882a593Smuzhiyun #define MAC_RCR_JE_LEN 1 160*4882a593Smuzhiyun #define MAC_RCR_LM_POS 10 161*4882a593Smuzhiyun #define MAC_RCR_LM_LEN 1 162*4882a593Smuzhiyun #define MAC_RCR_RE_POS 0 163*4882a593Smuzhiyun #define MAC_RCR_RE_LEN 1 164*4882a593Smuzhiyun #define MAC_RFCR_PFCE_POS 8 165*4882a593Smuzhiyun #define MAC_RFCR_PFCE_LEN 1 166*4882a593Smuzhiyun #define MAC_RFCR_RFE_POS 0 167*4882a593Smuzhiyun #define MAC_RFCR_RFE_LEN 1 168*4882a593Smuzhiyun #define MAC_RFCR_UP_POS 1 169*4882a593Smuzhiyun #define MAC_RFCR_UP_LEN 1 170*4882a593Smuzhiyun #define MAC_RQC0R_RXQ0EN_POS 0 171*4882a593Smuzhiyun #define MAC_RQC0R_RXQ0EN_LEN 2 172*4882a593Smuzhiyun #define MAC_RSSAR_ADDRT_POS 2 173*4882a593Smuzhiyun #define MAC_RSSAR_ADDRT_LEN 1 174*4882a593Smuzhiyun #define MAC_RSSAR_CT_POS 1 175*4882a593Smuzhiyun #define MAC_RSSAR_CT_LEN 1 176*4882a593Smuzhiyun #define MAC_RSSAR_OB_POS 0 177*4882a593Smuzhiyun #define MAC_RSSAR_OB_LEN 1 178*4882a593Smuzhiyun #define MAC_RSSAR_RSSIA_POS 8 179*4882a593Smuzhiyun #define MAC_RSSAR_RSSIA_LEN 8 180*4882a593Smuzhiyun #define MAC_RSSCR_IP2TE_POS 1 181*4882a593Smuzhiyun #define MAC_RSSCR_IP2TE_LEN 1 182*4882a593Smuzhiyun #define MAC_RSSCR_RSSE_POS 0 183*4882a593Smuzhiyun #define MAC_RSSCR_RSSE_LEN 1 184*4882a593Smuzhiyun #define MAC_RSSCR_TCP4TE_POS 2 185*4882a593Smuzhiyun #define MAC_RSSCR_TCP4TE_LEN 1 186*4882a593Smuzhiyun #define MAC_RSSCR_UDP4TE_POS 3 187*4882a593Smuzhiyun #define MAC_RSSCR_UDP4TE_LEN 1 188*4882a593Smuzhiyun #define MAC_RSSDR_DMCH_POS 0 189*4882a593Smuzhiyun #define MAC_RSSDR_DMCH_LEN 4 190*4882a593Smuzhiyun #define MAC_TCR_SS_POS 28 191*4882a593Smuzhiyun #define MAC_TCR_SS_LEN 3 192*4882a593Smuzhiyun #define MAC_TCR_TE_POS 0 193*4882a593Smuzhiyun #define MAC_TCR_TE_LEN 1 194*4882a593Smuzhiyun #define MAC_VLANHTR_VLHT_POS 0 195*4882a593Smuzhiyun #define MAC_VLANHTR_VLHT_LEN 16 196*4882a593Smuzhiyun #define MAC_VLANIR_VLTI_POS 20 197*4882a593Smuzhiyun #define MAC_VLANIR_VLTI_LEN 1 198*4882a593Smuzhiyun #define MAC_VLANIR_CSVL_POS 19 199*4882a593Smuzhiyun #define MAC_VLANIR_CSVL_LEN 1 200*4882a593Smuzhiyun #define MAC_VLANTR_DOVLTC_POS 20 201*4882a593Smuzhiyun #define MAC_VLANTR_DOVLTC_LEN 1 202*4882a593Smuzhiyun #define MAC_VLANTR_ERSVLM_POS 19 203*4882a593Smuzhiyun #define MAC_VLANTR_ERSVLM_LEN 1 204*4882a593Smuzhiyun #define MAC_VLANTR_ESVL_POS 18 205*4882a593Smuzhiyun #define MAC_VLANTR_ESVL_LEN 1 206*4882a593Smuzhiyun #define MAC_VLANTR_ETV_POS 16 207*4882a593Smuzhiyun #define MAC_VLANTR_ETV_LEN 1 208*4882a593Smuzhiyun #define MAC_VLANTR_EVLS_POS 21 209*4882a593Smuzhiyun #define MAC_VLANTR_EVLS_LEN 2 210*4882a593Smuzhiyun #define MAC_VLANTR_EVLRXS_POS 24 211*4882a593Smuzhiyun #define MAC_VLANTR_EVLRXS_LEN 1 212*4882a593Smuzhiyun #define MAC_VLANTR_VL_POS 0 213*4882a593Smuzhiyun #define MAC_VLANTR_VL_LEN 16 214*4882a593Smuzhiyun #define MAC_VLANTR_VTHM_POS 25 215*4882a593Smuzhiyun #define MAC_VLANTR_VTHM_LEN 1 216*4882a593Smuzhiyun #define MAC_VLANTR_VTIM_POS 17 217*4882a593Smuzhiyun #define MAC_VLANTR_VTIM_LEN 1 218*4882a593Smuzhiyun #define MAC_VR_DEVID_POS 8 219*4882a593Smuzhiyun #define MAC_VR_DEVID_LEN 8 220*4882a593Smuzhiyun #define MAC_VR_SNPSVER_POS 0 221*4882a593Smuzhiyun #define MAC_VR_SNPSVER_LEN 8 222*4882a593Smuzhiyun #define MAC_VR_USERVER_POS 16 223*4882a593Smuzhiyun #define MAC_VR_USERVER_LEN 8 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun /* MMC register offsets */ 226*4882a593Smuzhiyun #define MMC_CR 0x0800 227*4882a593Smuzhiyun #define MMC_RISR 0x0804 228*4882a593Smuzhiyun #define MMC_TISR 0x0808 229*4882a593Smuzhiyun #define MMC_RIER 0x080c 230*4882a593Smuzhiyun #define MMC_TIER 0x0810 231*4882a593Smuzhiyun #define MMC_TXOCTETCOUNT_GB_LO 0x0814 232*4882a593Smuzhiyun #define MMC_TXFRAMECOUNT_GB_LO 0x081c 233*4882a593Smuzhiyun #define MMC_TXBROADCASTFRAMES_G_LO 0x0824 234*4882a593Smuzhiyun #define MMC_TXMULTICASTFRAMES_G_LO 0x082c 235*4882a593Smuzhiyun #define MMC_TX64OCTETS_GB_LO 0x0834 236*4882a593Smuzhiyun #define MMC_TX65TO127OCTETS_GB_LO 0x083c 237*4882a593Smuzhiyun #define MMC_TX128TO255OCTETS_GB_LO 0x0844 238*4882a593Smuzhiyun #define MMC_TX256TO511OCTETS_GB_LO 0x084c 239*4882a593Smuzhiyun #define MMC_TX512TO1023OCTETS_GB_LO 0x0854 240*4882a593Smuzhiyun #define MMC_TX1024TOMAXOCTETS_GB_LO 0x085c 241*4882a593Smuzhiyun #define MMC_TXUNICASTFRAMES_GB_LO 0x0864 242*4882a593Smuzhiyun #define MMC_TXMULTICASTFRAMES_GB_LO 0x086c 243*4882a593Smuzhiyun #define MMC_TXBROADCASTFRAMES_GB_LO 0x0874 244*4882a593Smuzhiyun #define MMC_TXUNDERFLOWERROR_LO 0x087c 245*4882a593Smuzhiyun #define MMC_TXOCTETCOUNT_G_LO 0x0884 246*4882a593Smuzhiyun #define MMC_TXFRAMECOUNT_G_LO 0x088c 247*4882a593Smuzhiyun #define MMC_TXPAUSEFRAMES_LO 0x0894 248*4882a593Smuzhiyun #define MMC_TXVLANFRAMES_G_LO 0x089c 249*4882a593Smuzhiyun #define MMC_RXFRAMECOUNT_GB_LO 0x0900 250*4882a593Smuzhiyun #define MMC_RXOCTETCOUNT_GB_LO 0x0908 251*4882a593Smuzhiyun #define MMC_RXOCTETCOUNT_G_LO 0x0910 252*4882a593Smuzhiyun #define MMC_RXBROADCASTFRAMES_G_LO 0x0918 253*4882a593Smuzhiyun #define MMC_RXMULTICASTFRAMES_G_LO 0x0920 254*4882a593Smuzhiyun #define MMC_RXCRCERROR_LO 0x0928 255*4882a593Smuzhiyun #define MMC_RXRUNTERROR 0x0930 256*4882a593Smuzhiyun #define MMC_RXJABBERERROR 0x0934 257*4882a593Smuzhiyun #define MMC_RXUNDERSIZE_G 0x0938 258*4882a593Smuzhiyun #define MMC_RXOVERSIZE_G 0x093c 259*4882a593Smuzhiyun #define MMC_RX64OCTETS_GB_LO 0x0940 260*4882a593Smuzhiyun #define MMC_RX65TO127OCTETS_GB_LO 0x0948 261*4882a593Smuzhiyun #define MMC_RX128TO255OCTETS_GB_LO 0x0950 262*4882a593Smuzhiyun #define MMC_RX256TO511OCTETS_GB_LO 0x0958 263*4882a593Smuzhiyun #define MMC_RX512TO1023OCTETS_GB_LO 0x0960 264*4882a593Smuzhiyun #define MMC_RX1024TOMAXOCTETS_GB_LO 0x0968 265*4882a593Smuzhiyun #define MMC_RXUNICASTFRAMES_G_LO 0x0970 266*4882a593Smuzhiyun #define MMC_RXLENGTHERROR_LO 0x0978 267*4882a593Smuzhiyun #define MMC_RXOUTOFRANGETYPE_LO 0x0980 268*4882a593Smuzhiyun #define MMC_RXPAUSEFRAMES_LO 0x0988 269*4882a593Smuzhiyun #define MMC_RXFIFOOVERFLOW_LO 0x0990 270*4882a593Smuzhiyun #define MMC_RXVLANFRAMES_GB_LO 0x0998 271*4882a593Smuzhiyun #define MMC_RXWATCHDOGERROR 0x09a0 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun /* MMC register entry bit positions and sizes */ 274*4882a593Smuzhiyun #define MMC_CR_CR_POS 0 275*4882a593Smuzhiyun #define MMC_CR_CR_LEN 1 276*4882a593Smuzhiyun #define MMC_CR_CSR_POS 1 277*4882a593Smuzhiyun #define MMC_CR_CSR_LEN 1 278*4882a593Smuzhiyun #define MMC_CR_ROR_POS 2 279*4882a593Smuzhiyun #define MMC_CR_ROR_LEN 1 280*4882a593Smuzhiyun #define MMC_CR_MCF_POS 3 281*4882a593Smuzhiyun #define MMC_CR_MCF_LEN 1 282*4882a593Smuzhiyun #define MMC_CR_MCT_POS 4 283*4882a593Smuzhiyun #define MMC_CR_MCT_LEN 2 284*4882a593Smuzhiyun #define MMC_RIER_ALL_INTERRUPTS_POS 0 285*4882a593Smuzhiyun #define MMC_RIER_ALL_INTERRUPTS_LEN 23 286*4882a593Smuzhiyun #define MMC_RISR_RXFRAMECOUNT_GB_POS 0 287*4882a593Smuzhiyun #define MMC_RISR_RXFRAMECOUNT_GB_LEN 1 288*4882a593Smuzhiyun #define MMC_RISR_RXOCTETCOUNT_GB_POS 1 289*4882a593Smuzhiyun #define MMC_RISR_RXOCTETCOUNT_GB_LEN 1 290*4882a593Smuzhiyun #define MMC_RISR_RXOCTETCOUNT_G_POS 2 291*4882a593Smuzhiyun #define MMC_RISR_RXOCTETCOUNT_G_LEN 1 292*4882a593Smuzhiyun #define MMC_RISR_RXBROADCASTFRAMES_G_POS 3 293*4882a593Smuzhiyun #define MMC_RISR_RXBROADCASTFRAMES_G_LEN 1 294*4882a593Smuzhiyun #define MMC_RISR_RXMULTICASTFRAMES_G_POS 4 295*4882a593Smuzhiyun #define MMC_RISR_RXMULTICASTFRAMES_G_LEN 1 296*4882a593Smuzhiyun #define MMC_RISR_RXCRCERROR_POS 5 297*4882a593Smuzhiyun #define MMC_RISR_RXCRCERROR_LEN 1 298*4882a593Smuzhiyun #define MMC_RISR_RXRUNTERROR_POS 6 299*4882a593Smuzhiyun #define MMC_RISR_RXRUNTERROR_LEN 1 300*4882a593Smuzhiyun #define MMC_RISR_RXJABBERERROR_POS 7 301*4882a593Smuzhiyun #define MMC_RISR_RXJABBERERROR_LEN 1 302*4882a593Smuzhiyun #define MMC_RISR_RXUNDERSIZE_G_POS 8 303*4882a593Smuzhiyun #define MMC_RISR_RXUNDERSIZE_G_LEN 1 304*4882a593Smuzhiyun #define MMC_RISR_RXOVERSIZE_G_POS 9 305*4882a593Smuzhiyun #define MMC_RISR_RXOVERSIZE_G_LEN 1 306*4882a593Smuzhiyun #define MMC_RISR_RX64OCTETS_GB_POS 10 307*4882a593Smuzhiyun #define MMC_RISR_RX64OCTETS_GB_LEN 1 308*4882a593Smuzhiyun #define MMC_RISR_RX65TO127OCTETS_GB_POS 11 309*4882a593Smuzhiyun #define MMC_RISR_RX65TO127OCTETS_GB_LEN 1 310*4882a593Smuzhiyun #define MMC_RISR_RX128TO255OCTETS_GB_POS 12 311*4882a593Smuzhiyun #define MMC_RISR_RX128TO255OCTETS_GB_LEN 1 312*4882a593Smuzhiyun #define MMC_RISR_RX256TO511OCTETS_GB_POS 13 313*4882a593Smuzhiyun #define MMC_RISR_RX256TO511OCTETS_GB_LEN 1 314*4882a593Smuzhiyun #define MMC_RISR_RX512TO1023OCTETS_GB_POS 14 315*4882a593Smuzhiyun #define MMC_RISR_RX512TO1023OCTETS_GB_LEN 1 316*4882a593Smuzhiyun #define MMC_RISR_RX1024TOMAXOCTETS_GB_POS 15 317*4882a593Smuzhiyun #define MMC_RISR_RX1024TOMAXOCTETS_GB_LEN 1 318*4882a593Smuzhiyun #define MMC_RISR_RXUNICASTFRAMES_G_POS 16 319*4882a593Smuzhiyun #define MMC_RISR_RXUNICASTFRAMES_G_LEN 1 320*4882a593Smuzhiyun #define MMC_RISR_RXLENGTHERROR_POS 17 321*4882a593Smuzhiyun #define MMC_RISR_RXLENGTHERROR_LEN 1 322*4882a593Smuzhiyun #define MMC_RISR_RXOUTOFRANGETYPE_POS 18 323*4882a593Smuzhiyun #define MMC_RISR_RXOUTOFRANGETYPE_LEN 1 324*4882a593Smuzhiyun #define MMC_RISR_RXPAUSEFRAMES_POS 19 325*4882a593Smuzhiyun #define MMC_RISR_RXPAUSEFRAMES_LEN 1 326*4882a593Smuzhiyun #define MMC_RISR_RXFIFOOVERFLOW_POS 20 327*4882a593Smuzhiyun #define MMC_RISR_RXFIFOOVERFLOW_LEN 1 328*4882a593Smuzhiyun #define MMC_RISR_RXVLANFRAMES_GB_POS 21 329*4882a593Smuzhiyun #define MMC_RISR_RXVLANFRAMES_GB_LEN 1 330*4882a593Smuzhiyun #define MMC_RISR_RXWATCHDOGERROR_POS 22 331*4882a593Smuzhiyun #define MMC_RISR_RXWATCHDOGERROR_LEN 1 332*4882a593Smuzhiyun #define MMC_TIER_ALL_INTERRUPTS_POS 0 333*4882a593Smuzhiyun #define MMC_TIER_ALL_INTERRUPTS_LEN 18 334*4882a593Smuzhiyun #define MMC_TISR_TXOCTETCOUNT_GB_POS 0 335*4882a593Smuzhiyun #define MMC_TISR_TXOCTETCOUNT_GB_LEN 1 336*4882a593Smuzhiyun #define MMC_TISR_TXFRAMECOUNT_GB_POS 1 337*4882a593Smuzhiyun #define MMC_TISR_TXFRAMECOUNT_GB_LEN 1 338*4882a593Smuzhiyun #define MMC_TISR_TXBROADCASTFRAMES_G_POS 2 339*4882a593Smuzhiyun #define MMC_TISR_TXBROADCASTFRAMES_G_LEN 1 340*4882a593Smuzhiyun #define MMC_TISR_TXMULTICASTFRAMES_G_POS 3 341*4882a593Smuzhiyun #define MMC_TISR_TXMULTICASTFRAMES_G_LEN 1 342*4882a593Smuzhiyun #define MMC_TISR_TX64OCTETS_GB_POS 4 343*4882a593Smuzhiyun #define MMC_TISR_TX64OCTETS_GB_LEN 1 344*4882a593Smuzhiyun #define MMC_TISR_TX65TO127OCTETS_GB_POS 5 345*4882a593Smuzhiyun #define MMC_TISR_TX65TO127OCTETS_GB_LEN 1 346*4882a593Smuzhiyun #define MMC_TISR_TX128TO255OCTETS_GB_POS 6 347*4882a593Smuzhiyun #define MMC_TISR_TX128TO255OCTETS_GB_LEN 1 348*4882a593Smuzhiyun #define MMC_TISR_TX256TO511OCTETS_GB_POS 7 349*4882a593Smuzhiyun #define MMC_TISR_TX256TO511OCTETS_GB_LEN 1 350*4882a593Smuzhiyun #define MMC_TISR_TX512TO1023OCTETS_GB_POS 8 351*4882a593Smuzhiyun #define MMC_TISR_TX512TO1023OCTETS_GB_LEN 1 352*4882a593Smuzhiyun #define MMC_TISR_TX1024TOMAXOCTETS_GB_POS 9 353*4882a593Smuzhiyun #define MMC_TISR_TX1024TOMAXOCTETS_GB_LEN 1 354*4882a593Smuzhiyun #define MMC_TISR_TXUNICASTFRAMES_GB_POS 10 355*4882a593Smuzhiyun #define MMC_TISR_TXUNICASTFRAMES_GB_LEN 1 356*4882a593Smuzhiyun #define MMC_TISR_TXMULTICASTFRAMES_GB_POS 11 357*4882a593Smuzhiyun #define MMC_TISR_TXMULTICASTFRAMES_GB_LEN 1 358*4882a593Smuzhiyun #define MMC_TISR_TXBROADCASTFRAMES_GB_POS 12 359*4882a593Smuzhiyun #define MMC_TISR_TXBROADCASTFRAMES_GB_LEN 1 360*4882a593Smuzhiyun #define MMC_TISR_TXUNDERFLOWERROR_POS 13 361*4882a593Smuzhiyun #define MMC_TISR_TXUNDERFLOWERROR_LEN 1 362*4882a593Smuzhiyun #define MMC_TISR_TXOCTETCOUNT_G_POS 14 363*4882a593Smuzhiyun #define MMC_TISR_TXOCTETCOUNT_G_LEN 1 364*4882a593Smuzhiyun #define MMC_TISR_TXFRAMECOUNT_G_POS 15 365*4882a593Smuzhiyun #define MMC_TISR_TXFRAMECOUNT_G_LEN 1 366*4882a593Smuzhiyun #define MMC_TISR_TXPAUSEFRAMES_POS 16 367*4882a593Smuzhiyun #define MMC_TISR_TXPAUSEFRAMES_LEN 1 368*4882a593Smuzhiyun #define MMC_TISR_TXVLANFRAMES_G_POS 17 369*4882a593Smuzhiyun #define MMC_TISR_TXVLANFRAMES_G_LEN 1 370*4882a593Smuzhiyun 371*4882a593Smuzhiyun /* MTL register offsets */ 372*4882a593Smuzhiyun #define MTL_OMR 0x1000 373*4882a593Smuzhiyun #define MTL_FDDR 0x1010 374*4882a593Smuzhiyun #define MTL_RQDCM0R 0x1030 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun #define MTL_RQDCM_INC 4 377*4882a593Smuzhiyun #define MTL_RQDCM_Q_PER_REG 4 378*4882a593Smuzhiyun 379*4882a593Smuzhiyun /* MTL register entry bit positions and sizes */ 380*4882a593Smuzhiyun #define MTL_OMR_ETSALG_POS 5 381*4882a593Smuzhiyun #define MTL_OMR_ETSALG_LEN 2 382*4882a593Smuzhiyun #define MTL_OMR_RAA_POS 2 383*4882a593Smuzhiyun #define MTL_OMR_RAA_LEN 1 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun /* MTL queue register offsets 386*4882a593Smuzhiyun * Multiple queues can be active. The first queue has registers 387*4882a593Smuzhiyun * that begin at 0x1100. Each subsequent queue has registers that 388*4882a593Smuzhiyun * are accessed using an offset of 0x80 from the previous queue. 389*4882a593Smuzhiyun */ 390*4882a593Smuzhiyun #define MTL_Q_BASE 0x1100 391*4882a593Smuzhiyun #define MTL_Q_INC 0x80 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun #define MTL_Q_TQOMR 0x00 394*4882a593Smuzhiyun #define MTL_Q_RQOMR 0x40 395*4882a593Smuzhiyun #define MTL_Q_RQDR 0x48 396*4882a593Smuzhiyun #define MTL_Q_RQFCR 0x50 397*4882a593Smuzhiyun #define MTL_Q_IER 0x70 398*4882a593Smuzhiyun #define MTL_Q_ISR 0x74 399*4882a593Smuzhiyun 400*4882a593Smuzhiyun /* MTL queue register entry bit positions and sizes */ 401*4882a593Smuzhiyun #define MTL_Q_RQDR_PRXQ_POS 16 402*4882a593Smuzhiyun #define MTL_Q_RQDR_PRXQ_LEN 14 403*4882a593Smuzhiyun #define MTL_Q_RQDR_RXQSTS_POS 4 404*4882a593Smuzhiyun #define MTL_Q_RQDR_RXQSTS_LEN 2 405*4882a593Smuzhiyun #define MTL_Q_RQFCR_RFA_POS 1 406*4882a593Smuzhiyun #define MTL_Q_RQFCR_RFA_LEN 6 407*4882a593Smuzhiyun #define MTL_Q_RQFCR_RFD_POS 17 408*4882a593Smuzhiyun #define MTL_Q_RQFCR_RFD_LEN 6 409*4882a593Smuzhiyun #define MTL_Q_RQOMR_EHFC_POS 7 410*4882a593Smuzhiyun #define MTL_Q_RQOMR_EHFC_LEN 1 411*4882a593Smuzhiyun #define MTL_Q_RQOMR_RQS_POS 16 412*4882a593Smuzhiyun #define MTL_Q_RQOMR_RQS_LEN 9 413*4882a593Smuzhiyun #define MTL_Q_RQOMR_RSF_POS 5 414*4882a593Smuzhiyun #define MTL_Q_RQOMR_RSF_LEN 1 415*4882a593Smuzhiyun #define MTL_Q_RQOMR_FEP_POS 4 416*4882a593Smuzhiyun #define MTL_Q_RQOMR_FEP_LEN 1 417*4882a593Smuzhiyun #define MTL_Q_RQOMR_FUP_POS 3 418*4882a593Smuzhiyun #define MTL_Q_RQOMR_FUP_LEN 1 419*4882a593Smuzhiyun #define MTL_Q_RQOMR_RTC_POS 0 420*4882a593Smuzhiyun #define MTL_Q_RQOMR_RTC_LEN 2 421*4882a593Smuzhiyun #define MTL_Q_TQOMR_FTQ_POS 0 422*4882a593Smuzhiyun #define MTL_Q_TQOMR_FTQ_LEN 1 423*4882a593Smuzhiyun #define MTL_Q_TQOMR_Q2TCMAP_POS 8 424*4882a593Smuzhiyun #define MTL_Q_TQOMR_Q2TCMAP_LEN 3 425*4882a593Smuzhiyun #define MTL_Q_TQOMR_TQS_POS 16 426*4882a593Smuzhiyun #define MTL_Q_TQOMR_TQS_LEN 10 427*4882a593Smuzhiyun #define MTL_Q_TQOMR_TSF_POS 1 428*4882a593Smuzhiyun #define MTL_Q_TQOMR_TSF_LEN 1 429*4882a593Smuzhiyun #define MTL_Q_TQOMR_TTC_POS 4 430*4882a593Smuzhiyun #define MTL_Q_TQOMR_TTC_LEN 3 431*4882a593Smuzhiyun #define MTL_Q_TQOMR_TXQEN_POS 2 432*4882a593Smuzhiyun #define MTL_Q_TQOMR_TXQEN_LEN 2 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun /* MTL queue register value */ 435*4882a593Smuzhiyun #define MTL_RSF_DISABLE 0x00 436*4882a593Smuzhiyun #define MTL_RSF_ENABLE 0x01 437*4882a593Smuzhiyun #define MTL_TSF_DISABLE 0x00 438*4882a593Smuzhiyun #define MTL_TSF_ENABLE 0x01 439*4882a593Smuzhiyun 440*4882a593Smuzhiyun #define MTL_RX_THRESHOLD_64 0x00 441*4882a593Smuzhiyun #define MTL_RX_THRESHOLD_96 0x02 442*4882a593Smuzhiyun #define MTL_RX_THRESHOLD_128 0x03 443*4882a593Smuzhiyun #define MTL_TX_THRESHOLD_64 0x00 444*4882a593Smuzhiyun #define MTL_TX_THRESHOLD_96 0x02 445*4882a593Smuzhiyun #define MTL_TX_THRESHOLD_128 0x03 446*4882a593Smuzhiyun #define MTL_TX_THRESHOLD_192 0x04 447*4882a593Smuzhiyun #define MTL_TX_THRESHOLD_256 0x05 448*4882a593Smuzhiyun #define MTL_TX_THRESHOLD_384 0x06 449*4882a593Smuzhiyun #define MTL_TX_THRESHOLD_512 0x07 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun #define MTL_ETSALG_WRR 0x00 452*4882a593Smuzhiyun #define MTL_ETSALG_WFQ 0x01 453*4882a593Smuzhiyun #define MTL_ETSALG_DWRR 0x02 454*4882a593Smuzhiyun #define MTL_RAA_SP 0x00 455*4882a593Smuzhiyun #define MTL_RAA_WSP 0x01 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun #define MTL_Q_DISABLED 0x00 458*4882a593Smuzhiyun #define MTL_Q_ENABLED 0x02 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun #define MTL_RQDCM0R_Q0MDMACH 0x0 461*4882a593Smuzhiyun #define MTL_RQDCM0R_Q1MDMACH 0x00000100 462*4882a593Smuzhiyun #define MTL_RQDCM0R_Q2MDMACH 0x00020000 463*4882a593Smuzhiyun #define MTL_RQDCM0R_Q3MDMACH 0x03000000 464*4882a593Smuzhiyun #define MTL_RQDCM1R_Q4MDMACH 0x00000004 465*4882a593Smuzhiyun #define MTL_RQDCM1R_Q5MDMACH 0x00000500 466*4882a593Smuzhiyun #define MTL_RQDCM1R_Q6MDMACH 0x00060000 467*4882a593Smuzhiyun #define MTL_RQDCM1R_Q7MDMACH 0x07000000 468*4882a593Smuzhiyun #define MTL_RQDCM2R_Q8MDMACH 0x00000008 469*4882a593Smuzhiyun #define MTL_RQDCM2R_Q9MDMACH 0x00000900 470*4882a593Smuzhiyun #define MTL_RQDCM2R_Q10MDMACH 0x000A0000 471*4882a593Smuzhiyun #define MTL_RQDCM2R_Q11MDMACH 0x0B000000 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun /* MTL traffic class register offsets 474*4882a593Smuzhiyun * Multiple traffic classes can be active. The first class has registers 475*4882a593Smuzhiyun * that begin at 0x1100. Each subsequent queue has registers that 476*4882a593Smuzhiyun * are accessed using an offset of 0x80 from the previous queue. 477*4882a593Smuzhiyun */ 478*4882a593Smuzhiyun #define MTL_TC_BASE MTL_Q_BASE 479*4882a593Smuzhiyun #define MTL_TC_INC MTL_Q_INC 480*4882a593Smuzhiyun 481*4882a593Smuzhiyun #define MTL_TC_ETSCR 0x10 482*4882a593Smuzhiyun #define MTL_TC_ETSSR 0x14 483*4882a593Smuzhiyun #define MTL_TC_QWR 0x18 484*4882a593Smuzhiyun 485*4882a593Smuzhiyun /* MTL traffic class register entry bit positions and sizes */ 486*4882a593Smuzhiyun #define MTL_TC_ETSCR_TSA_POS 0 487*4882a593Smuzhiyun #define MTL_TC_ETSCR_TSA_LEN 2 488*4882a593Smuzhiyun #define MTL_TC_QWR_QW_POS 0 489*4882a593Smuzhiyun #define MTL_TC_QWR_QW_LEN 21 490*4882a593Smuzhiyun 491*4882a593Smuzhiyun /* MTL traffic class register value */ 492*4882a593Smuzhiyun #define MTL_TSA_SP 0x00 493*4882a593Smuzhiyun #define MTL_TSA_ETS 0x02 494*4882a593Smuzhiyun 495*4882a593Smuzhiyun /* DMA register offsets */ 496*4882a593Smuzhiyun #define DMA_MR 0x3000 497*4882a593Smuzhiyun #define DMA_SBMR 0x3004 498*4882a593Smuzhiyun #define DMA_ISR 0x3008 499*4882a593Smuzhiyun #define DMA_DSR0 0x3020 500*4882a593Smuzhiyun #define DMA_DSR1 0x3024 501*4882a593Smuzhiyun 502*4882a593Smuzhiyun /* DMA register entry bit positions and sizes */ 503*4882a593Smuzhiyun #define DMA_ISR_MACIS_POS 17 504*4882a593Smuzhiyun #define DMA_ISR_MACIS_LEN 1 505*4882a593Smuzhiyun #define DMA_ISR_MTLIS_POS 16 506*4882a593Smuzhiyun #define DMA_ISR_MTLIS_LEN 1 507*4882a593Smuzhiyun #define DMA_MR_SWR_POS 0 508*4882a593Smuzhiyun #define DMA_MR_SWR_LEN 1 509*4882a593Smuzhiyun #define DMA_SBMR_EAME_POS 11 510*4882a593Smuzhiyun #define DMA_SBMR_EAME_LEN 1 511*4882a593Smuzhiyun #define DMA_SBMR_BLEN_64_POS 5 512*4882a593Smuzhiyun #define DMA_SBMR_BLEN_64_LEN 1 513*4882a593Smuzhiyun #define DMA_SBMR_BLEN_128_POS 6 514*4882a593Smuzhiyun #define DMA_SBMR_BLEN_128_LEN 1 515*4882a593Smuzhiyun #define DMA_SBMR_BLEN_256_POS 7 516*4882a593Smuzhiyun #define DMA_SBMR_BLEN_256_LEN 1 517*4882a593Smuzhiyun #define DMA_SBMR_UNDEF_POS 0 518*4882a593Smuzhiyun #define DMA_SBMR_UNDEF_LEN 1 519*4882a593Smuzhiyun 520*4882a593Smuzhiyun /* DMA register values */ 521*4882a593Smuzhiyun #define DMA_DSR_RPS_LEN 4 522*4882a593Smuzhiyun #define DMA_DSR_TPS_LEN 4 523*4882a593Smuzhiyun #define DMA_DSR_Q_LEN (DMA_DSR_RPS_LEN + DMA_DSR_TPS_LEN) 524*4882a593Smuzhiyun #define DMA_DSR0_TPS_START 12 525*4882a593Smuzhiyun #define DMA_DSRX_FIRST_QUEUE 3 526*4882a593Smuzhiyun #define DMA_DSRX_INC 4 527*4882a593Smuzhiyun #define DMA_DSRX_QPR 4 528*4882a593Smuzhiyun #define DMA_DSRX_TPS_START 4 529*4882a593Smuzhiyun #define DMA_TPS_STOPPED 0x00 530*4882a593Smuzhiyun #define DMA_TPS_SUSPENDED 0x06 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun /* DMA channel register offsets 533*4882a593Smuzhiyun * Multiple channels can be active. The first channel has registers 534*4882a593Smuzhiyun * that begin at 0x3100. Each subsequent channel has registers that 535*4882a593Smuzhiyun * are accessed using an offset of 0x80 from the previous channel. 536*4882a593Smuzhiyun */ 537*4882a593Smuzhiyun #define DMA_CH_BASE 0x3100 538*4882a593Smuzhiyun #define DMA_CH_INC 0x80 539*4882a593Smuzhiyun 540*4882a593Smuzhiyun #define DMA_CH_CR 0x00 541*4882a593Smuzhiyun #define DMA_CH_TCR 0x04 542*4882a593Smuzhiyun #define DMA_CH_RCR 0x08 543*4882a593Smuzhiyun #define DMA_CH_TDLR_HI 0x10 544*4882a593Smuzhiyun #define DMA_CH_TDLR_LO 0x14 545*4882a593Smuzhiyun #define DMA_CH_RDLR_HI 0x18 546*4882a593Smuzhiyun #define DMA_CH_RDLR_LO 0x1c 547*4882a593Smuzhiyun #define DMA_CH_TDTR_LO 0x24 548*4882a593Smuzhiyun #define DMA_CH_RDTR_LO 0x2c 549*4882a593Smuzhiyun #define DMA_CH_TDRLR 0x30 550*4882a593Smuzhiyun #define DMA_CH_RDRLR 0x34 551*4882a593Smuzhiyun #define DMA_CH_IER 0x38 552*4882a593Smuzhiyun #define DMA_CH_RIWT 0x3c 553*4882a593Smuzhiyun #define DMA_CH_SR 0x60 554*4882a593Smuzhiyun 555*4882a593Smuzhiyun /* DMA channel register entry bit positions and sizes */ 556*4882a593Smuzhiyun #define DMA_CH_CR_PBLX8_POS 16 557*4882a593Smuzhiyun #define DMA_CH_CR_PBLX8_LEN 1 558*4882a593Smuzhiyun #define DMA_CH_CR_SPH_POS 24 559*4882a593Smuzhiyun #define DMA_CH_CR_SPH_LEN 1 560*4882a593Smuzhiyun #define DMA_CH_IER_AIE_POS 15 561*4882a593Smuzhiyun #define DMA_CH_IER_AIE_LEN 1 562*4882a593Smuzhiyun #define DMA_CH_IER_FBEE_POS 12 563*4882a593Smuzhiyun #define DMA_CH_IER_FBEE_LEN 1 564*4882a593Smuzhiyun #define DMA_CH_IER_NIE_POS 16 565*4882a593Smuzhiyun #define DMA_CH_IER_NIE_LEN 1 566*4882a593Smuzhiyun #define DMA_CH_IER_RBUE_POS 7 567*4882a593Smuzhiyun #define DMA_CH_IER_RBUE_LEN 1 568*4882a593Smuzhiyun #define DMA_CH_IER_RIE_POS 6 569*4882a593Smuzhiyun #define DMA_CH_IER_RIE_LEN 1 570*4882a593Smuzhiyun #define DMA_CH_IER_RSE_POS 8 571*4882a593Smuzhiyun #define DMA_CH_IER_RSE_LEN 1 572*4882a593Smuzhiyun #define DMA_CH_IER_TBUE_POS 2 573*4882a593Smuzhiyun #define DMA_CH_IER_TBUE_LEN 1 574*4882a593Smuzhiyun #define DMA_CH_IER_TIE_POS 0 575*4882a593Smuzhiyun #define DMA_CH_IER_TIE_LEN 1 576*4882a593Smuzhiyun #define DMA_CH_IER_TXSE_POS 1 577*4882a593Smuzhiyun #define DMA_CH_IER_TXSE_LEN 1 578*4882a593Smuzhiyun #define DMA_CH_RCR_PBL_POS 16 579*4882a593Smuzhiyun #define DMA_CH_RCR_PBL_LEN 6 580*4882a593Smuzhiyun #define DMA_CH_RCR_RBSZ_POS 1 581*4882a593Smuzhiyun #define DMA_CH_RCR_RBSZ_LEN 14 582*4882a593Smuzhiyun #define DMA_CH_RCR_SR_POS 0 583*4882a593Smuzhiyun #define DMA_CH_RCR_SR_LEN 1 584*4882a593Smuzhiyun #define DMA_CH_RIWT_RWT_POS 0 585*4882a593Smuzhiyun #define DMA_CH_RIWT_RWT_LEN 8 586*4882a593Smuzhiyun #define DMA_CH_SR_FBE_POS 12 587*4882a593Smuzhiyun #define DMA_CH_SR_FBE_LEN 1 588*4882a593Smuzhiyun #define DMA_CH_SR_RBU_POS 7 589*4882a593Smuzhiyun #define DMA_CH_SR_RBU_LEN 1 590*4882a593Smuzhiyun #define DMA_CH_SR_RI_POS 6 591*4882a593Smuzhiyun #define DMA_CH_SR_RI_LEN 1 592*4882a593Smuzhiyun #define DMA_CH_SR_RPS_POS 8 593*4882a593Smuzhiyun #define DMA_CH_SR_RPS_LEN 1 594*4882a593Smuzhiyun #define DMA_CH_SR_TBU_POS 2 595*4882a593Smuzhiyun #define DMA_CH_SR_TBU_LEN 1 596*4882a593Smuzhiyun #define DMA_CH_SR_TI_POS 0 597*4882a593Smuzhiyun #define DMA_CH_SR_TI_LEN 1 598*4882a593Smuzhiyun #define DMA_CH_SR_TPS_POS 1 599*4882a593Smuzhiyun #define DMA_CH_SR_TPS_LEN 1 600*4882a593Smuzhiyun #define DMA_CH_TCR_OSP_POS 4 601*4882a593Smuzhiyun #define DMA_CH_TCR_OSP_LEN 1 602*4882a593Smuzhiyun #define DMA_CH_TCR_PBL_POS 16 603*4882a593Smuzhiyun #define DMA_CH_TCR_PBL_LEN 6 604*4882a593Smuzhiyun #define DMA_CH_TCR_ST_POS 0 605*4882a593Smuzhiyun #define DMA_CH_TCR_ST_LEN 1 606*4882a593Smuzhiyun #define DMA_CH_TCR_TSE_POS 12 607*4882a593Smuzhiyun #define DMA_CH_TCR_TSE_LEN 1 608*4882a593Smuzhiyun 609*4882a593Smuzhiyun /* DMA channel register values */ 610*4882a593Smuzhiyun #define DMA_OSP_DISABLE 0x00 611*4882a593Smuzhiyun #define DMA_OSP_ENABLE 0x01 612*4882a593Smuzhiyun #define DMA_PBL_1 1 613*4882a593Smuzhiyun #define DMA_PBL_2 2 614*4882a593Smuzhiyun #define DMA_PBL_4 4 615*4882a593Smuzhiyun #define DMA_PBL_8 8 616*4882a593Smuzhiyun #define DMA_PBL_16 16 617*4882a593Smuzhiyun #define DMA_PBL_32 32 618*4882a593Smuzhiyun #define DMA_PBL_64 64 619*4882a593Smuzhiyun #define DMA_PBL_128 128 620*4882a593Smuzhiyun #define DMA_PBL_256 256 621*4882a593Smuzhiyun #define DMA_PBL_X8_DISABLE 0x00 622*4882a593Smuzhiyun #define DMA_PBL_X8_ENABLE 0x01 623*4882a593Smuzhiyun 624*4882a593Smuzhiyun /* Descriptor/Packet entry bit positions and sizes */ 625*4882a593Smuzhiyun #define RX_PACKET_ERRORS_CRC_POS 2 626*4882a593Smuzhiyun #define RX_PACKET_ERRORS_CRC_LEN 1 627*4882a593Smuzhiyun #define RX_PACKET_ERRORS_FRAME_POS 3 628*4882a593Smuzhiyun #define RX_PACKET_ERRORS_FRAME_LEN 1 629*4882a593Smuzhiyun #define RX_PACKET_ERRORS_LENGTH_POS 0 630*4882a593Smuzhiyun #define RX_PACKET_ERRORS_LENGTH_LEN 1 631*4882a593Smuzhiyun #define RX_PACKET_ERRORS_OVERRUN_POS 1 632*4882a593Smuzhiyun #define RX_PACKET_ERRORS_OVERRUN_LEN 1 633*4882a593Smuzhiyun 634*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_CSUM_DONE_POS 0 635*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_CSUM_DONE_LEN 1 636*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_POS 1 637*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_LEN 1 638*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_INCOMPLETE_POS 2 639*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_INCOMPLETE_LEN 1 640*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_POS 3 641*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_LEN 1 642*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_CONTEXT_POS 4 643*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_CONTEXT_LEN 1 644*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_POS 5 645*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_LEN 1 646*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_RSS_HASH_POS 6 647*4882a593Smuzhiyun #define RX_PACKET_ATTRIBUTES_RSS_HASH_LEN 1 648*4882a593Smuzhiyun 649*4882a593Smuzhiyun #define RX_NORMAL_DESC0_OVT_POS 0 650*4882a593Smuzhiyun #define RX_NORMAL_DESC0_OVT_LEN 16 651*4882a593Smuzhiyun #define RX_NORMAL_DESC2_HL_POS 0 652*4882a593Smuzhiyun #define RX_NORMAL_DESC2_HL_LEN 10 653*4882a593Smuzhiyun #define RX_NORMAL_DESC3_CDA_POS 27 654*4882a593Smuzhiyun #define RX_NORMAL_DESC3_CDA_LEN 1 655*4882a593Smuzhiyun #define RX_NORMAL_DESC3_CTXT_POS 30 656*4882a593Smuzhiyun #define RX_NORMAL_DESC3_CTXT_LEN 1 657*4882a593Smuzhiyun #define RX_NORMAL_DESC3_ES_POS 15 658*4882a593Smuzhiyun #define RX_NORMAL_DESC3_ES_LEN 1 659*4882a593Smuzhiyun #define RX_NORMAL_DESC3_ETLT_POS 16 660*4882a593Smuzhiyun #define RX_NORMAL_DESC3_ETLT_LEN 4 661*4882a593Smuzhiyun #define RX_NORMAL_DESC3_FD_POS 29 662*4882a593Smuzhiyun #define RX_NORMAL_DESC3_FD_LEN 1 663*4882a593Smuzhiyun #define RX_NORMAL_DESC3_INTE_POS 30 664*4882a593Smuzhiyun #define RX_NORMAL_DESC3_INTE_LEN 1 665*4882a593Smuzhiyun #define RX_NORMAL_DESC3_L34T_POS 20 666*4882a593Smuzhiyun #define RX_NORMAL_DESC3_L34T_LEN 4 667*4882a593Smuzhiyun #define RX_NORMAL_DESC3_LD_POS 28 668*4882a593Smuzhiyun #define RX_NORMAL_DESC3_LD_LEN 1 669*4882a593Smuzhiyun #define RX_NORMAL_DESC3_OWN_POS 31 670*4882a593Smuzhiyun #define RX_NORMAL_DESC3_OWN_LEN 1 671*4882a593Smuzhiyun #define RX_NORMAL_DESC3_PL_POS 0 672*4882a593Smuzhiyun #define RX_NORMAL_DESC3_PL_LEN 14 673*4882a593Smuzhiyun #define RX_NORMAL_DESC3_RSV_POS 26 674*4882a593Smuzhiyun #define RX_NORMAL_DESC3_RSV_LEN 1 675*4882a593Smuzhiyun 676*4882a593Smuzhiyun #define RX_DESC3_L34T_IPV4_TCP 1 677*4882a593Smuzhiyun #define RX_DESC3_L34T_IPV4_UDP 2 678*4882a593Smuzhiyun #define RX_DESC3_L34T_IPV4_ICMP 3 679*4882a593Smuzhiyun #define RX_DESC3_L34T_IPV6_TCP 9 680*4882a593Smuzhiyun #define RX_DESC3_L34T_IPV6_UDP 10 681*4882a593Smuzhiyun #define RX_DESC3_L34T_IPV6_ICMP 11 682*4882a593Smuzhiyun 683*4882a593Smuzhiyun #define RX_CONTEXT_DESC3_TSA_POS 4 684*4882a593Smuzhiyun #define RX_CONTEXT_DESC3_TSA_LEN 1 685*4882a593Smuzhiyun #define RX_CONTEXT_DESC3_TSD_POS 6 686*4882a593Smuzhiyun #define RX_CONTEXT_DESC3_TSD_LEN 1 687*4882a593Smuzhiyun 688*4882a593Smuzhiyun #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_POS 0 689*4882a593Smuzhiyun #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_LEN 1 690*4882a593Smuzhiyun #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_POS 1 691*4882a593Smuzhiyun #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_LEN 1 692*4882a593Smuzhiyun #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_POS 2 693*4882a593Smuzhiyun #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_LEN 1 694*4882a593Smuzhiyun #define TX_PACKET_ATTRIBUTES_PTP_POS 3 695*4882a593Smuzhiyun #define TX_PACKET_ATTRIBUTES_PTP_LEN 1 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun #define TX_CONTEXT_DESC2_MSS_POS 0 698*4882a593Smuzhiyun #define TX_CONTEXT_DESC2_MSS_LEN 15 699*4882a593Smuzhiyun #define TX_CONTEXT_DESC3_CTXT_POS 30 700*4882a593Smuzhiyun #define TX_CONTEXT_DESC3_CTXT_LEN 1 701*4882a593Smuzhiyun #define TX_CONTEXT_DESC3_TCMSSV_POS 26 702*4882a593Smuzhiyun #define TX_CONTEXT_DESC3_TCMSSV_LEN 1 703*4882a593Smuzhiyun #define TX_CONTEXT_DESC3_VLTV_POS 16 704*4882a593Smuzhiyun #define TX_CONTEXT_DESC3_VLTV_LEN 1 705*4882a593Smuzhiyun #define TX_CONTEXT_DESC3_VT_POS 0 706*4882a593Smuzhiyun #define TX_CONTEXT_DESC3_VT_LEN 16 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun #define TX_NORMAL_DESC2_HL_B1L_POS 0 709*4882a593Smuzhiyun #define TX_NORMAL_DESC2_HL_B1L_LEN 14 710*4882a593Smuzhiyun #define TX_NORMAL_DESC2_IC_POS 31 711*4882a593Smuzhiyun #define TX_NORMAL_DESC2_IC_LEN 1 712*4882a593Smuzhiyun #define TX_NORMAL_DESC2_TTSE_POS 30 713*4882a593Smuzhiyun #define TX_NORMAL_DESC2_TTSE_LEN 1 714*4882a593Smuzhiyun #define TX_NORMAL_DESC2_VTIR_POS 14 715*4882a593Smuzhiyun #define TX_NORMAL_DESC2_VTIR_LEN 2 716*4882a593Smuzhiyun #define TX_NORMAL_DESC3_CIC_POS 16 717*4882a593Smuzhiyun #define TX_NORMAL_DESC3_CIC_LEN 2 718*4882a593Smuzhiyun #define TX_NORMAL_DESC3_CPC_POS 26 719*4882a593Smuzhiyun #define TX_NORMAL_DESC3_CPC_LEN 2 720*4882a593Smuzhiyun #define TX_NORMAL_DESC3_CTXT_POS 30 721*4882a593Smuzhiyun #define TX_NORMAL_DESC3_CTXT_LEN 1 722*4882a593Smuzhiyun #define TX_NORMAL_DESC3_FD_POS 29 723*4882a593Smuzhiyun #define TX_NORMAL_DESC3_FD_LEN 1 724*4882a593Smuzhiyun #define TX_NORMAL_DESC3_FL_POS 0 725*4882a593Smuzhiyun #define TX_NORMAL_DESC3_FL_LEN 15 726*4882a593Smuzhiyun #define TX_NORMAL_DESC3_LD_POS 28 727*4882a593Smuzhiyun #define TX_NORMAL_DESC3_LD_LEN 1 728*4882a593Smuzhiyun #define TX_NORMAL_DESC3_OWN_POS 31 729*4882a593Smuzhiyun #define TX_NORMAL_DESC3_OWN_LEN 1 730*4882a593Smuzhiyun #define TX_NORMAL_DESC3_TCPHDRLEN_POS 19 731*4882a593Smuzhiyun #define TX_NORMAL_DESC3_TCPHDRLEN_LEN 4 732*4882a593Smuzhiyun #define TX_NORMAL_DESC3_TCPPL_POS 0 733*4882a593Smuzhiyun #define TX_NORMAL_DESC3_TCPPL_LEN 18 734*4882a593Smuzhiyun #define TX_NORMAL_DESC3_TSE_POS 18 735*4882a593Smuzhiyun #define TX_NORMAL_DESC3_TSE_LEN 1 736*4882a593Smuzhiyun 737*4882a593Smuzhiyun #define TX_NORMAL_DESC2_VLAN_INSERT 0x2 738*4882a593Smuzhiyun 739*4882a593Smuzhiyun #define XLGMAC_MTL_REG(pdata, n, reg) \ 740*4882a593Smuzhiyun ((pdata)->mac_regs + MTL_Q_BASE + ((n) * MTL_Q_INC) + (reg)) 741*4882a593Smuzhiyun 742*4882a593Smuzhiyun #define XLGMAC_DMA_REG(channel, reg) ((channel)->dma_regs + (reg)) 743*4882a593Smuzhiyun 744*4882a593Smuzhiyun #endif /* __DWC_XLGMAC_REG_H__ */ 745