Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * DWMAC4 Header file.
0004  *
0005  * Copyright (C) 2015  STMicroelectronics Ltd
0006  *
0007  * Author: Alexandre Torgue <alexandre.torgue@st.com>
0008  */
0009 
0010 #ifndef __DWMAC4_H__
0011 #define __DWMAC4_H__
0012 
0013 #include "common.h"
0014 
0015 /*  MAC registers */
0016 #define GMAC_CONFIG         0x00000000
0017 #define GMAC_EXT_CONFIG         0x00000004
0018 #define GMAC_PACKET_FILTER      0x00000008
0019 #define GMAC_HASH_TAB(x)        (0x10 + (x) * 4)
0020 #define GMAC_VLAN_TAG           0x00000050
0021 #define GMAC_VLAN_TAG_DATA      0x00000054
0022 #define GMAC_VLAN_HASH_TABLE        0x00000058
0023 #define GMAC_RX_FLOW_CTRL       0x00000090
0024 #define GMAC_VLAN_INCL          0x00000060
0025 #define GMAC_QX_TX_FLOW_CTRL(x)     (0x70 + x * 4)
0026 #define GMAC_TXQ_PRTY_MAP0      0x98
0027 #define GMAC_TXQ_PRTY_MAP1      0x9C
0028 #define GMAC_RXQ_CTRL0          0x000000a0
0029 #define GMAC_RXQ_CTRL1          0x000000a4
0030 #define GMAC_RXQ_CTRL2          0x000000a8
0031 #define GMAC_RXQ_CTRL3          0x000000ac
0032 #define GMAC_INT_STATUS         0x000000b0
0033 #define GMAC_INT_EN         0x000000b4
0034 #define GMAC_1US_TIC_COUNTER        0x000000dc
0035 #define GMAC_PCS_BASE           0x000000e0
0036 #define GMAC_PHYIF_CONTROL_STATUS   0x000000f8
0037 #define GMAC_PMT            0x000000c0
0038 #define GMAC_DEBUG          0x00000114
0039 #define GMAC_HW_FEATURE0        0x0000011c
0040 #define GMAC_HW_FEATURE1        0x00000120
0041 #define GMAC_HW_FEATURE2        0x00000124
0042 #define GMAC_HW_FEATURE3        0x00000128
0043 #define GMAC_MDIO_ADDR          0x00000200
0044 #define GMAC_MDIO_DATA          0x00000204
0045 #define GMAC_GPIO_STATUS        0x0000020C
0046 #define GMAC_ARP_ADDR           0x00000210
0047 #define GMAC_ADDR_HIGH(reg)     (0x300 + reg * 8)
0048 #define GMAC_ADDR_LOW(reg)      (0x304 + reg * 8)
0049 #define GMAC_L3L4_CTRL(reg)     (0x900 + (reg) * 0x30)
0050 #define GMAC_L4_ADDR(reg)       (0x904 + (reg) * 0x30)
0051 #define GMAC_L3_ADDR0(reg)      (0x910 + (reg) * 0x30)
0052 #define GMAC_L3_ADDR1(reg)      (0x914 + (reg) * 0x30)
0053 #define GMAC_TIMESTAMP_STATUS       0x00000b20
0054 
0055 /* RX Queues Routing */
0056 #define GMAC_RXQCTRL_AVCPQ_MASK     GENMASK(2, 0)
0057 #define GMAC_RXQCTRL_AVCPQ_SHIFT    0
0058 #define GMAC_RXQCTRL_PTPQ_MASK      GENMASK(6, 4)
0059 #define GMAC_RXQCTRL_PTPQ_SHIFT     4
0060 #define GMAC_RXQCTRL_DCBCPQ_MASK    GENMASK(10, 8)
0061 #define GMAC_RXQCTRL_DCBCPQ_SHIFT   8
0062 #define GMAC_RXQCTRL_UPQ_MASK       GENMASK(14, 12)
0063 #define GMAC_RXQCTRL_UPQ_SHIFT      12
0064 #define GMAC_RXQCTRL_MCBCQ_MASK     GENMASK(18, 16)
0065 #define GMAC_RXQCTRL_MCBCQ_SHIFT    16
0066 #define GMAC_RXQCTRL_MCBCQEN        BIT(20)
0067 #define GMAC_RXQCTRL_MCBCQEN_SHIFT  20
0068 #define GMAC_RXQCTRL_TACPQE     BIT(21)
0069 #define GMAC_RXQCTRL_TACPQE_SHIFT   21
0070 #define GMAC_RXQCTRL_FPRQ       GENMASK(26, 24)
0071 #define GMAC_RXQCTRL_FPRQ_SHIFT     24
0072 
0073 /* MAC Packet Filtering */
0074 #define GMAC_PACKET_FILTER_PR       BIT(0)
0075 #define GMAC_PACKET_FILTER_HMC      BIT(2)
0076 #define GMAC_PACKET_FILTER_PM       BIT(4)
0077 #define GMAC_PACKET_FILTER_PCF      BIT(7)
0078 #define GMAC_PACKET_FILTER_HPF      BIT(10)
0079 #define GMAC_PACKET_FILTER_VTFE     BIT(16)
0080 #define GMAC_PACKET_FILTER_IPFE     BIT(20)
0081 #define GMAC_PACKET_FILTER_RA       BIT(31)
0082 
0083 #define GMAC_MAX_PERFECT_ADDRESSES  128
0084 
0085 /* MAC VLAN */
0086 #define GMAC_VLAN_EDVLP         BIT(26)
0087 #define GMAC_VLAN_VTHM          BIT(25)
0088 #define GMAC_VLAN_DOVLTC        BIT(20)
0089 #define GMAC_VLAN_ESVL          BIT(18)
0090 #define GMAC_VLAN_ETV           BIT(16)
0091 #define GMAC_VLAN_VID           GENMASK(15, 0)
0092 #define GMAC_VLAN_VLTI          BIT(20)
0093 #define GMAC_VLAN_CSVL          BIT(19)
0094 #define GMAC_VLAN_VLC           GENMASK(17, 16)
0095 #define GMAC_VLAN_VLC_SHIFT     16
0096 #define GMAC_VLAN_VLHT          GENMASK(15, 0)
0097 
0098 /* MAC VLAN Tag */
0099 #define GMAC_VLAN_TAG_VID       GENMASK(15, 0)
0100 #define GMAC_VLAN_TAG_ETV       BIT(16)
0101 
0102 /* MAC VLAN Tag Control */
0103 #define GMAC_VLAN_TAG_CTRL_OB       BIT(0)
0104 #define GMAC_VLAN_TAG_CTRL_CT       BIT(1)
0105 #define GMAC_VLAN_TAG_CTRL_OFS_MASK GENMASK(6, 2)
0106 #define GMAC_VLAN_TAG_CTRL_OFS_SHIFT    2
0107 #define GMAC_VLAN_TAG_CTRL_EVLS_MASK    GENMASK(22, 21)
0108 #define GMAC_VLAN_TAG_CTRL_EVLS_SHIFT   21
0109 #define GMAC_VLAN_TAG_CTRL_EVLRXS   BIT(24)
0110 
0111 #define GMAC_VLAN_TAG_STRIP_NONE    (0x0 << GMAC_VLAN_TAG_CTRL_EVLS_SHIFT)
0112 #define GMAC_VLAN_TAG_STRIP_PASS    (0x1 << GMAC_VLAN_TAG_CTRL_EVLS_SHIFT)
0113 #define GMAC_VLAN_TAG_STRIP_FAIL    (0x2 << GMAC_VLAN_TAG_CTRL_EVLS_SHIFT)
0114 #define GMAC_VLAN_TAG_STRIP_ALL     (0x3 << GMAC_VLAN_TAG_CTRL_EVLS_SHIFT)
0115 
0116 /* MAC VLAN Tag Data/Filter */
0117 #define GMAC_VLAN_TAG_DATA_VID      GENMASK(15, 0)
0118 #define GMAC_VLAN_TAG_DATA_VEN      BIT(16)
0119 #define GMAC_VLAN_TAG_DATA_ETV      BIT(17)
0120 
0121 /* MAC RX Queue Enable */
0122 #define GMAC_RX_QUEUE_CLEAR(queue)  ~(GENMASK(1, 0) << ((queue) * 2))
0123 #define GMAC_RX_AV_QUEUE_ENABLE(queue)  BIT((queue) * 2)
0124 #define GMAC_RX_DCB_QUEUE_ENABLE(queue) BIT(((queue) * 2) + 1)
0125 
0126 /* MAC Flow Control RX */
0127 #define GMAC_RX_FLOW_CTRL_RFE       BIT(0)
0128 
0129 /* RX Queues Priorities */
0130 #define GMAC_RXQCTRL_PSRQX_MASK(x)  GENMASK(7 + ((x) * 8), 0 + ((x) * 8))
0131 #define GMAC_RXQCTRL_PSRQX_SHIFT(x) ((x) * 8)
0132 
0133 /* TX Queues Priorities */
0134 #define GMAC_TXQCTRL_PSTQX_MASK(x)  GENMASK(7 + ((x) * 8), 0 + ((x) * 8))
0135 #define GMAC_TXQCTRL_PSTQX_SHIFT(x) ((x) * 8)
0136 
0137 /* MAC Flow Control TX */
0138 #define GMAC_TX_FLOW_CTRL_TFE       BIT(1)
0139 #define GMAC_TX_FLOW_CTRL_PT_SHIFT  16
0140 
0141 /*  MAC Interrupt bitmap*/
0142 #define GMAC_INT_RGSMIIS        BIT(0)
0143 #define GMAC_INT_PCS_LINK       BIT(1)
0144 #define GMAC_INT_PCS_ANE        BIT(2)
0145 #define GMAC_INT_PCS_PHYIS      BIT(3)
0146 #define GMAC_INT_PMT_EN         BIT(4)
0147 #define GMAC_INT_LPI_EN         BIT(5)
0148 #define GMAC_INT_TSIE           BIT(12)
0149 
0150 #define GMAC_PCS_IRQ_DEFAULT    (GMAC_INT_RGSMIIS | GMAC_INT_PCS_LINK | \
0151                  GMAC_INT_PCS_ANE)
0152 
0153 #define GMAC_INT_DEFAULT_ENABLE (GMAC_INT_PMT_EN | GMAC_INT_LPI_EN | \
0154                  GMAC_INT_TSIE)
0155 
0156 enum dwmac4_irq_status {
0157     time_stamp_irq = 0x00001000,
0158     mmc_rx_csum_offload_irq = 0x00000800,
0159     mmc_tx_irq = 0x00000400,
0160     mmc_rx_irq = 0x00000200,
0161     mmc_irq = 0x00000100,
0162     lpi_irq = 0x00000020,
0163     pmt_irq = 0x00000010,
0164 };
0165 
0166 /* MAC PMT bitmap */
0167 enum power_event {
0168     pointer_reset = 0x80000000,
0169     global_unicast = 0x00000200,
0170     wake_up_rx_frame = 0x00000040,
0171     magic_frame = 0x00000020,
0172     wake_up_frame_en = 0x00000004,
0173     magic_pkt_en = 0x00000002,
0174     power_down = 0x00000001,
0175 };
0176 
0177 /* Energy Efficient Ethernet (EEE) for GMAC4
0178  *
0179  * LPI status, timer and control register offset
0180  */
0181 #define GMAC4_LPI_CTRL_STATUS   0xd0
0182 #define GMAC4_LPI_TIMER_CTRL    0xd4
0183 #define GMAC4_LPI_ENTRY_TIMER   0xd8
0184 
0185 /* LPI control and status defines */
0186 #define GMAC4_LPI_CTRL_STATUS_LPITCSE   BIT(21) /* LPI Tx Clock Stop Enable */
0187 #define GMAC4_LPI_CTRL_STATUS_LPIATE    BIT(20) /* LPI Timer Enable */
0188 #define GMAC4_LPI_CTRL_STATUS_LPITXA    BIT(19) /* Enable LPI TX Automate */
0189 #define GMAC4_LPI_CTRL_STATUS_PLS   BIT(17) /* PHY Link Status */
0190 #define GMAC4_LPI_CTRL_STATUS_LPIEN BIT(16) /* LPI Enable */
0191 #define GMAC4_LPI_CTRL_STATUS_RLPIEX    BIT(3) /* Receive LPI Exit */
0192 #define GMAC4_LPI_CTRL_STATUS_RLPIEN    BIT(2) /* Receive LPI Entry */
0193 #define GMAC4_LPI_CTRL_STATUS_TLPIEX    BIT(1) /* Transmit LPI Exit */
0194 #define GMAC4_LPI_CTRL_STATUS_TLPIEN    BIT(0) /* Transmit LPI Entry */
0195 
0196 /* MAC Debug bitmap */
0197 #define GMAC_DEBUG_TFCSTS_MASK      GENMASK(18, 17)
0198 #define GMAC_DEBUG_TFCSTS_SHIFT     17
0199 #define GMAC_DEBUG_TFCSTS_IDLE      0
0200 #define GMAC_DEBUG_TFCSTS_WAIT      1
0201 #define GMAC_DEBUG_TFCSTS_GEN_PAUSE 2
0202 #define GMAC_DEBUG_TFCSTS_XFER      3
0203 #define GMAC_DEBUG_TPESTS       BIT(16)
0204 #define GMAC_DEBUG_RFCFCSTS_MASK    GENMASK(2, 1)
0205 #define GMAC_DEBUG_RFCFCSTS_SHIFT   1
0206 #define GMAC_DEBUG_RPESTS       BIT(0)
0207 
0208 /* MAC config */
0209 #define GMAC_CONFIG_ARPEN       BIT(31)
0210 #define GMAC_CONFIG_SARC        GENMASK(30, 28)
0211 #define GMAC_CONFIG_SARC_SHIFT      28
0212 #define GMAC_CONFIG_IPC         BIT(27)
0213 #define GMAC_CONFIG_IPG         GENMASK(26, 24)
0214 #define GMAC_CONFIG_IPG_SHIFT       24
0215 #define GMAC_CONFIG_2K          BIT(22)
0216 #define GMAC_CONFIG_ACS         BIT(20)
0217 #define GMAC_CONFIG_BE          BIT(18)
0218 #define GMAC_CONFIG_JD          BIT(17)
0219 #define GMAC_CONFIG_JE          BIT(16)
0220 #define GMAC_CONFIG_PS          BIT(15)
0221 #define GMAC_CONFIG_FES         BIT(14)
0222 #define GMAC_CONFIG_FES_SHIFT       14
0223 #define GMAC_CONFIG_DM          BIT(13)
0224 #define GMAC_CONFIG_LM          BIT(12)
0225 #define GMAC_CONFIG_DCRS        BIT(9)
0226 #define GMAC_CONFIG_TE          BIT(1)
0227 #define GMAC_CONFIG_RE          BIT(0)
0228 
0229 /* MAC extended config */
0230 #define GMAC_CONFIG_EIPG        GENMASK(29, 25)
0231 #define GMAC_CONFIG_EIPG_SHIFT      25
0232 #define GMAC_CONFIG_EIPG_EN     BIT(24)
0233 #define GMAC_CONFIG_HDSMS       GENMASK(22, 20)
0234 #define GMAC_CONFIG_HDSMS_SHIFT     20
0235 #define GMAC_CONFIG_HDSMS_256       (0x2 << GMAC_CONFIG_HDSMS_SHIFT)
0236 
0237 /* MAC HW features0 bitmap */
0238 #define GMAC_HW_FEAT_SAVLANINS      BIT(27)
0239 #define GMAC_HW_FEAT_ADDMAC     BIT(18)
0240 #define GMAC_HW_FEAT_RXCOESEL       BIT(16)
0241 #define GMAC_HW_FEAT_TXCOSEL        BIT(14)
0242 #define GMAC_HW_FEAT_EEESEL     BIT(13)
0243 #define GMAC_HW_FEAT_TSSEL      BIT(12)
0244 #define GMAC_HW_FEAT_ARPOFFSEL      BIT(9)
0245 #define GMAC_HW_FEAT_MMCSEL     BIT(8)
0246 #define GMAC_HW_FEAT_MGKSEL     BIT(7)
0247 #define GMAC_HW_FEAT_RWKSEL     BIT(6)
0248 #define GMAC_HW_FEAT_SMASEL     BIT(5)
0249 #define GMAC_HW_FEAT_VLHASH     BIT(4)
0250 #define GMAC_HW_FEAT_PCSSEL     BIT(3)
0251 #define GMAC_HW_FEAT_HDSEL      BIT(2)
0252 #define GMAC_HW_FEAT_GMIISEL        BIT(1)
0253 #define GMAC_HW_FEAT_MIISEL     BIT(0)
0254 
0255 /* MAC HW features1 bitmap */
0256 #define GMAC_HW_FEAT_L3L4FNUM       GENMASK(30, 27)
0257 #define GMAC_HW_HASH_TB_SZ      GENMASK(25, 24)
0258 #define GMAC_HW_FEAT_AVSEL      BIT(20)
0259 #define GMAC_HW_TSOEN           BIT(18)
0260 #define GMAC_HW_FEAT_SPHEN      BIT(17)
0261 #define GMAC_HW_ADDR64          GENMASK(15, 14)
0262 #define GMAC_HW_TXFIFOSIZE      GENMASK(10, 6)
0263 #define GMAC_HW_RXFIFOSIZE      GENMASK(4, 0)
0264 
0265 /* MAC HW features2 bitmap */
0266 #define GMAC_HW_FEAT_AUXSNAPNUM     GENMASK(30, 28)
0267 #define GMAC_HW_FEAT_PPSOUTNUM      GENMASK(26, 24)
0268 #define GMAC_HW_FEAT_TXCHCNT        GENMASK(21, 18)
0269 #define GMAC_HW_FEAT_RXCHCNT        GENMASK(15, 12)
0270 #define GMAC_HW_FEAT_TXQCNT     GENMASK(9, 6)
0271 #define GMAC_HW_FEAT_RXQCNT     GENMASK(3, 0)
0272 
0273 /* MAC HW features3 bitmap */
0274 #define GMAC_HW_FEAT_ASP        GENMASK(29, 28)
0275 #define GMAC_HW_FEAT_TBSSEL     BIT(27)
0276 #define GMAC_HW_FEAT_FPESEL     BIT(26)
0277 #define GMAC_HW_FEAT_ESTWID     GENMASK(21, 20)
0278 #define GMAC_HW_FEAT_ESTDEP     GENMASK(19, 17)
0279 #define GMAC_HW_FEAT_ESTSEL     BIT(16)
0280 #define GMAC_HW_FEAT_FRPES      GENMASK(14, 13)
0281 #define GMAC_HW_FEAT_FRPBS      GENMASK(12, 11)
0282 #define GMAC_HW_FEAT_FRPSEL     BIT(10)
0283 #define GMAC_HW_FEAT_DVLAN      BIT(5)
0284 #define GMAC_HW_FEAT_NRVF       GENMASK(2, 0)
0285 
0286 /* GMAC GPIO Status reg */
0287 #define GMAC_GPO0           BIT(16)
0288 #define GMAC_GPO1           BIT(17)
0289 #define GMAC_GPO2           BIT(18)
0290 #define GMAC_GPO3           BIT(19)
0291 
0292 /* MAC HW ADDR regs */
0293 #define GMAC_HI_DCS         GENMASK(18, 16)
0294 #define GMAC_HI_DCS_SHIFT       16
0295 #define GMAC_HI_REG_AE          BIT(31)
0296 
0297 /* L3/L4 Filters regs */
0298 #define GMAC_L4DPIM0            BIT(21)
0299 #define GMAC_L4DPM0         BIT(20)
0300 #define GMAC_L4SPIM0            BIT(19)
0301 #define GMAC_L4SPM0         BIT(18)
0302 #define GMAC_L4PEN0         BIT(16)
0303 #define GMAC_L3DAIM0            BIT(5)
0304 #define GMAC_L3DAM0         BIT(4)
0305 #define GMAC_L3SAIM0            BIT(3)
0306 #define GMAC_L3SAM0         BIT(2)
0307 #define GMAC_L3PEN0         BIT(0)
0308 #define GMAC_L4DP0          GENMASK(31, 16)
0309 #define GMAC_L4DP0_SHIFT        16
0310 #define GMAC_L4SP0          GENMASK(15, 0)
0311 
0312 /* MAC Timestamp Status */
0313 #define GMAC_TIMESTAMP_AUXTSTRIG    BIT(2)
0314 #define GMAC_TIMESTAMP_ATSNS_MASK   GENMASK(29, 25)
0315 #define GMAC_TIMESTAMP_ATSNS_SHIFT  25
0316 
0317 /*  MTL registers */
0318 #define MTL_OPERATION_MODE      0x00000c00
0319 #define MTL_FRPE            BIT(15)
0320 #define MTL_OPERATION_SCHALG_MASK   GENMASK(6, 5)
0321 #define MTL_OPERATION_SCHALG_WRR    (0x0 << 5)
0322 #define MTL_OPERATION_SCHALG_WFQ    (0x1 << 5)
0323 #define MTL_OPERATION_SCHALG_DWRR   (0x2 << 5)
0324 #define MTL_OPERATION_SCHALG_SP     (0x3 << 5)
0325 #define MTL_OPERATION_RAA       BIT(2)
0326 #define MTL_OPERATION_RAA_SP        (0x0 << 2)
0327 #define MTL_OPERATION_RAA_WSP       (0x1 << 2)
0328 
0329 #define MTL_INT_STATUS          0x00000c20
0330 #define MTL_INT_QX(x)           BIT(x)
0331 
0332 #define MTL_RXQ_DMA_MAP0        0x00000c30 /* queue 0 to 3 */
0333 #define MTL_RXQ_DMA_MAP1        0x00000c34 /* queue 4 to 7 */
0334 #define MTL_RXQ_DMA_Q04MDMACH_MASK  GENMASK(3, 0)
0335 #define MTL_RXQ_DMA_Q04MDMACH(x)    ((x) << 0)
0336 #define MTL_RXQ_DMA_QXMDMACH_MASK(x)    GENMASK(11 + (8 * ((x) - 1)), 8 * (x))
0337 #define MTL_RXQ_DMA_QXMDMACH(chan, q)   ((chan) << (8 * (q)))
0338 
0339 #define MTL_CHAN_BASE_ADDR      0x00000d00
0340 #define MTL_CHAN_BASE_OFFSET        0x40
0341 #define MTL_CHANX_BASE_ADDR(x)      (MTL_CHAN_BASE_ADDR + \
0342                     (x * MTL_CHAN_BASE_OFFSET))
0343 
0344 #define MTL_CHAN_TX_OP_MODE(x)      MTL_CHANX_BASE_ADDR(x)
0345 #define MTL_CHAN_TX_DEBUG(x)        (MTL_CHANX_BASE_ADDR(x) + 0x8)
0346 #define MTL_CHAN_INT_CTRL(x)        (MTL_CHANX_BASE_ADDR(x) + 0x2c)
0347 #define MTL_CHAN_RX_OP_MODE(x)      (MTL_CHANX_BASE_ADDR(x) + 0x30)
0348 #define MTL_CHAN_RX_DEBUG(x)        (MTL_CHANX_BASE_ADDR(x) + 0x38)
0349 
0350 #define MTL_OP_MODE_RSF         BIT(5)
0351 #define MTL_OP_MODE_TXQEN_MASK      GENMASK(3, 2)
0352 #define MTL_OP_MODE_TXQEN_AV        BIT(2)
0353 #define MTL_OP_MODE_TXQEN       BIT(3)
0354 #define MTL_OP_MODE_TSF         BIT(1)
0355 
0356 #define MTL_OP_MODE_TQS_MASK        GENMASK(24, 16)
0357 #define MTL_OP_MODE_TQS_SHIFT       16
0358 
0359 #define MTL_OP_MODE_TTC_MASK        0x70
0360 #define MTL_OP_MODE_TTC_SHIFT       4
0361 
0362 #define MTL_OP_MODE_TTC_32      0
0363 #define MTL_OP_MODE_TTC_64      (1 << MTL_OP_MODE_TTC_SHIFT)
0364 #define MTL_OP_MODE_TTC_96      (2 << MTL_OP_MODE_TTC_SHIFT)
0365 #define MTL_OP_MODE_TTC_128     (3 << MTL_OP_MODE_TTC_SHIFT)
0366 #define MTL_OP_MODE_TTC_192     (4 << MTL_OP_MODE_TTC_SHIFT)
0367 #define MTL_OP_MODE_TTC_256     (5 << MTL_OP_MODE_TTC_SHIFT)
0368 #define MTL_OP_MODE_TTC_384     (6 << MTL_OP_MODE_TTC_SHIFT)
0369 #define MTL_OP_MODE_TTC_512     (7 << MTL_OP_MODE_TTC_SHIFT)
0370 
0371 #define MTL_OP_MODE_RQS_MASK        GENMASK(29, 20)
0372 #define MTL_OP_MODE_RQS_SHIFT       20
0373 
0374 #define MTL_OP_MODE_RFD_MASK        GENMASK(19, 14)
0375 #define MTL_OP_MODE_RFD_SHIFT       14
0376 
0377 #define MTL_OP_MODE_RFA_MASK        GENMASK(13, 8)
0378 #define MTL_OP_MODE_RFA_SHIFT       8
0379 
0380 #define MTL_OP_MODE_EHFC        BIT(7)
0381 
0382 #define MTL_OP_MODE_RTC_MASK        0x18
0383 #define MTL_OP_MODE_RTC_SHIFT       3
0384 
0385 #define MTL_OP_MODE_RTC_32      (1 << MTL_OP_MODE_RTC_SHIFT)
0386 #define MTL_OP_MODE_RTC_64      0
0387 #define MTL_OP_MODE_RTC_96      (2 << MTL_OP_MODE_RTC_SHIFT)
0388 #define MTL_OP_MODE_RTC_128     (3 << MTL_OP_MODE_RTC_SHIFT)
0389 
0390 /* MTL ETS Control register */
0391 #define MTL_ETS_CTRL_BASE_ADDR      0x00000d10
0392 #define MTL_ETS_CTRL_BASE_OFFSET    0x40
0393 #define MTL_ETSX_CTRL_BASE_ADDR(x)  (MTL_ETS_CTRL_BASE_ADDR + \
0394                     ((x) * MTL_ETS_CTRL_BASE_OFFSET))
0395 
0396 #define MTL_ETS_CTRL_CC         BIT(3)
0397 #define MTL_ETS_CTRL_AVALG      BIT(2)
0398 
0399 /* MTL Queue Quantum Weight */
0400 #define MTL_TXQ_WEIGHT_BASE_ADDR    0x00000d18
0401 #define MTL_TXQ_WEIGHT_BASE_OFFSET  0x40
0402 #define MTL_TXQX_WEIGHT_BASE_ADDR(x)    (MTL_TXQ_WEIGHT_BASE_ADDR + \
0403                     ((x) * MTL_TXQ_WEIGHT_BASE_OFFSET))
0404 #define MTL_TXQ_WEIGHT_ISCQW_MASK   GENMASK(20, 0)
0405 
0406 /* MTL sendSlopeCredit register */
0407 #define MTL_SEND_SLP_CRED_BASE_ADDR 0x00000d1c
0408 #define MTL_SEND_SLP_CRED_OFFSET    0x40
0409 #define MTL_SEND_SLP_CREDX_BASE_ADDR(x) (MTL_SEND_SLP_CRED_BASE_ADDR + \
0410                     ((x) * MTL_SEND_SLP_CRED_OFFSET))
0411 
0412 #define MTL_SEND_SLP_CRED_SSC_MASK  GENMASK(13, 0)
0413 
0414 /* MTL hiCredit register */
0415 #define MTL_HIGH_CRED_BASE_ADDR     0x00000d20
0416 #define MTL_HIGH_CRED_OFFSET        0x40
0417 #define MTL_HIGH_CREDX_BASE_ADDR(x) (MTL_HIGH_CRED_BASE_ADDR + \
0418                     ((x) * MTL_HIGH_CRED_OFFSET))
0419 
0420 #define MTL_HIGH_CRED_HC_MASK       GENMASK(28, 0)
0421 
0422 /* MTL loCredit register */
0423 #define MTL_LOW_CRED_BASE_ADDR      0x00000d24
0424 #define MTL_LOW_CRED_OFFSET     0x40
0425 #define MTL_LOW_CREDX_BASE_ADDR(x)  (MTL_LOW_CRED_BASE_ADDR + \
0426                     ((x) * MTL_LOW_CRED_OFFSET))
0427 
0428 #define MTL_HIGH_CRED_LC_MASK       GENMASK(28, 0)
0429 
0430 /*  MTL debug */
0431 #define MTL_DEBUG_TXSTSFSTS     BIT(5)
0432 #define MTL_DEBUG_TXFSTS        BIT(4)
0433 #define MTL_DEBUG_TWCSTS        BIT(3)
0434 
0435 /* MTL debug: Tx FIFO Read Controller Status */
0436 #define MTL_DEBUG_TRCSTS_MASK       GENMASK(2, 1)
0437 #define MTL_DEBUG_TRCSTS_SHIFT      1
0438 #define MTL_DEBUG_TRCSTS_IDLE       0
0439 #define MTL_DEBUG_TRCSTS_READ       1
0440 #define MTL_DEBUG_TRCSTS_TXW        2
0441 #define MTL_DEBUG_TRCSTS_WRITE      3
0442 #define MTL_DEBUG_TXPAUSED      BIT(0)
0443 
0444 /* MAC debug: GMII or MII Transmit Protocol Engine Status */
0445 #define MTL_DEBUG_RXFSTS_MASK       GENMASK(5, 4)
0446 #define MTL_DEBUG_RXFSTS_SHIFT      4
0447 #define MTL_DEBUG_RXFSTS_EMPTY      0
0448 #define MTL_DEBUG_RXFSTS_BT     1
0449 #define MTL_DEBUG_RXFSTS_AT     2
0450 #define MTL_DEBUG_RXFSTS_FULL       3
0451 #define MTL_DEBUG_RRCSTS_MASK       GENMASK(2, 1)
0452 #define MTL_DEBUG_RRCSTS_SHIFT      1
0453 #define MTL_DEBUG_RRCSTS_IDLE       0
0454 #define MTL_DEBUG_RRCSTS_RDATA      1
0455 #define MTL_DEBUG_RRCSTS_RSTAT      2
0456 #define MTL_DEBUG_RRCSTS_FLUSH      3
0457 #define MTL_DEBUG_RWCSTS        BIT(0)
0458 
0459 /*  MTL interrupt */
0460 #define MTL_RX_OVERFLOW_INT_EN      BIT(24)
0461 #define MTL_RX_OVERFLOW_INT     BIT(16)
0462 
0463 /* Default operating mode of the MAC */
0464 #define GMAC_CORE_INIT (GMAC_CONFIG_JD | GMAC_CONFIG_PS | \
0465             GMAC_CONFIG_BE | GMAC_CONFIG_DCRS | \
0466             GMAC_CONFIG_JE)
0467 
0468 /* To dump the core regs excluding  the Address Registers */
0469 #define GMAC_REG_NUM    132
0470 
0471 /*  MTL debug */
0472 #define MTL_DEBUG_TXSTSFSTS     BIT(5)
0473 #define MTL_DEBUG_TXFSTS        BIT(4)
0474 #define MTL_DEBUG_TWCSTS        BIT(3)
0475 
0476 /* MTL debug: Tx FIFO Read Controller Status */
0477 #define MTL_DEBUG_TRCSTS_MASK       GENMASK(2, 1)
0478 #define MTL_DEBUG_TRCSTS_SHIFT      1
0479 #define MTL_DEBUG_TRCSTS_IDLE       0
0480 #define MTL_DEBUG_TRCSTS_READ       1
0481 #define MTL_DEBUG_TRCSTS_TXW        2
0482 #define MTL_DEBUG_TRCSTS_WRITE      3
0483 #define MTL_DEBUG_TXPAUSED      BIT(0)
0484 
0485 /* MAC debug: GMII or MII Transmit Protocol Engine Status */
0486 #define MTL_DEBUG_RXFSTS_MASK       GENMASK(5, 4)
0487 #define MTL_DEBUG_RXFSTS_SHIFT      4
0488 #define MTL_DEBUG_RXFSTS_EMPTY      0
0489 #define MTL_DEBUG_RXFSTS_BT     1
0490 #define MTL_DEBUG_RXFSTS_AT     2
0491 #define MTL_DEBUG_RXFSTS_FULL       3
0492 #define MTL_DEBUG_RRCSTS_MASK       GENMASK(2, 1)
0493 #define MTL_DEBUG_RRCSTS_SHIFT      1
0494 #define MTL_DEBUG_RRCSTS_IDLE       0
0495 #define MTL_DEBUG_RRCSTS_RDATA      1
0496 #define MTL_DEBUG_RRCSTS_RSTAT      2
0497 #define MTL_DEBUG_RRCSTS_FLUSH      3
0498 #define MTL_DEBUG_RWCSTS        BIT(0)
0499 
0500 /* SGMII/RGMII status register */
0501 #define GMAC_PHYIF_CTRLSTATUS_TC        BIT(0)
0502 #define GMAC_PHYIF_CTRLSTATUS_LUD       BIT(1)
0503 #define GMAC_PHYIF_CTRLSTATUS_SMIDRXS       BIT(4)
0504 #define GMAC_PHYIF_CTRLSTATUS_LNKMOD        BIT(16)
0505 #define GMAC_PHYIF_CTRLSTATUS_SPEED     GENMASK(18, 17)
0506 #define GMAC_PHYIF_CTRLSTATUS_SPEED_SHIFT   17
0507 #define GMAC_PHYIF_CTRLSTATUS_LNKSTS        BIT(19)
0508 #define GMAC_PHYIF_CTRLSTATUS_JABTO     BIT(20)
0509 #define GMAC_PHYIF_CTRLSTATUS_FALSECARDET   BIT(21)
0510 /* LNKMOD */
0511 #define GMAC_PHYIF_CTRLSTATUS_LNKMOD_MASK   0x1
0512 /* LNKSPEED */
0513 #define GMAC_PHYIF_CTRLSTATUS_SPEED_125     0x2
0514 #define GMAC_PHYIF_CTRLSTATUS_SPEED_25      0x1
0515 #define GMAC_PHYIF_CTRLSTATUS_SPEED_2_5     0x0
0516 
0517 extern const struct stmmac_dma_ops dwmac4_dma_ops;
0518 extern const struct stmmac_dma_ops dwmac410_dma_ops;
0519 #endif /* __DWMAC4_H__ */