LCOV - code coverage report
Current view: top level - drivers/net/axgbe - axgbe_common.h (source / functions) Hit Total Coverage
Test: Code coverage Lines: 0 2 0.0 %
Date: 2025-02-01 18:54:23 Functions: 0 0 -
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /*   SPDX-License-Identifier: BSD-3-Clause
       2                 :            :  *   Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
       3                 :            :  *   Copyright(c) 2018 Synopsys, Inc. All rights reserved.
       4                 :            :  */
       5                 :            : 
       6                 :            : #ifndef __AXGBE_COMMON_H__
       7                 :            : #define __AXGBE_COMMON_H__
       8                 :            : 
       9                 :            : #include "axgbe_logs.h"
      10                 :            : 
      11                 :            : #include <stdbool.h>
      12                 :            : #include <limits.h>
      13                 :            : #include <sys/queue.h>
      14                 :            : #include <stdio.h>
      15                 :            : #include <stdlib.h>
      16                 :            : #include <string.h>
      17                 :            : #include <errno.h>
      18                 :            : #include <stdint.h>
      19                 :            : #include <stdarg.h>
      20                 :            : #include <unistd.h>
      21                 :            : #include <inttypes.h>
      22                 :            : #include <pthread.h>
      23                 :            : 
      24                 :            : #include <rte_bitops.h>
      25                 :            : #include <rte_byteorder.h>
      26                 :            : #include <rte_memory.h>
      27                 :            : #include <rte_malloc.h>
      28                 :            : #include <rte_hexdump.h>
      29                 :            : #include <rte_log.h>
      30                 :            : #include <rte_debug.h>
      31                 :            : #include <rte_branch_prediction.h>
      32                 :            : #include <rte_eal.h>
      33                 :            : #include <rte_memzone.h>
      34                 :            : #include <rte_ether.h>
      35                 :            : #include <rte_ethdev.h>
      36                 :            : #include <dev_driver.h>
      37                 :            : #include <rte_errno.h>
      38                 :            : #include <ethdev_pci.h>
      39                 :            : #include <rte_common.h>
      40                 :            : #include <rte_cycles.h>
      41                 :            : #include <rte_io.h>
      42                 :            : 
      43                 :            : #define BIT(nr)                        (1 << (nr))
      44                 :            : #ifndef ARRAY_SIZE
      45                 :            : #define ARRAY_SIZE(arr) RTE_DIM(arr)
      46                 :            : #endif
      47                 :            : 
      48                 :            : #define AXGBE_HZ                                250
      49                 :            : #define NSEC_PER_SEC    1000000000L
      50                 :            : 
      51                 :            : /* DMA register offsets */
      52                 :            : #define DMA_MR                          0x3000
      53                 :            : #define DMA_SBMR                        0x3004
      54                 :            : #define DMA_ISR                         0x3008
      55                 :            : #define DMA_AXIARCR                     0x3010
      56                 :            : #define DMA_AXIAWCR                     0x3018
      57                 :            : #define DMA_AXIAWRCR                    0x301c
      58                 :            : #define DMA_DSR0                        0x3020
      59                 :            : #define DMA_DSR1                        0x3024
      60                 :            : #define EDMA_TX_CONTROL                 0x3040
      61                 :            : #define EDMA_RX_CONTROL                 0x3044
      62                 :            : 
      63                 :            : /* DMA register entry bit positions and sizes */
      64                 :            : #define DMA_AXIARCR_DRC_INDEX           0
      65                 :            : #define DMA_AXIARCR_DRC_WIDTH           4
      66                 :            : #define DMA_AXIARCR_DRD_INDEX           4
      67                 :            : #define DMA_AXIARCR_DRD_WIDTH           2
      68                 :            : #define DMA_AXIARCR_TEC_INDEX           8
      69                 :            : #define DMA_AXIARCR_TEC_WIDTH           4
      70                 :            : #define DMA_AXIARCR_TED_INDEX           12
      71                 :            : #define DMA_AXIARCR_TED_WIDTH           2
      72                 :            : #define DMA_AXIARCR_THC_INDEX           16
      73                 :            : #define DMA_AXIARCR_THC_WIDTH           4
      74                 :            : #define DMA_AXIARCR_THD_INDEX           20
      75                 :            : #define DMA_AXIARCR_THD_WIDTH           2
      76                 :            : #define DMA_AXIAWCR_DWC_INDEX           0
      77                 :            : #define DMA_AXIAWCR_DWC_WIDTH           4
      78                 :            : #define DMA_AXIAWCR_DWD_INDEX           4
      79                 :            : #define DMA_AXIAWCR_DWD_WIDTH           2
      80                 :            : #define DMA_AXIAWCR_RPC_INDEX           8
      81                 :            : #define DMA_AXIAWCR_RPC_WIDTH           4
      82                 :            : #define DMA_AXIAWCR_RPD_INDEX           12
      83                 :            : #define DMA_AXIAWCR_RPD_WIDTH           2
      84                 :            : #define DMA_AXIAWCR_RHC_INDEX           16
      85                 :            : #define DMA_AXIAWCR_RHC_WIDTH           4
      86                 :            : #define DMA_AXIAWCR_RHD_INDEX           20
      87                 :            : #define DMA_AXIAWCR_RHD_WIDTH           2
      88                 :            : #define DMA_AXIAWCR_RDC_INDEX           24
      89                 :            : #define DMA_AXIAWCR_RDC_WIDTH           4
      90                 :            : #define DMA_AXIAWCR_RDD_INDEX           28
      91                 :            : #define DMA_AXIAWCR_RDD_WIDTH           2
      92                 :            : #define DMA_AXIAWRCR_TDWC_INDEX         0
      93                 :            : #define DMA_AXIAWRCR_TDWC_WIDTH         4
      94                 :            : #define DMA_AXIAWRCR_TDWD_INDEX         4
      95                 :            : #define DMA_AXIAWRCR_TDWD_WIDTH         4
      96                 :            : #define DMA_AXIAWRCR_RDRC_INDEX         8
      97                 :            : #define DMA_AXIAWRCR_RDRC_WIDTH         4
      98                 :            : #define DMA_ISR_MACIS_INDEX             17
      99                 :            : #define DMA_ISR_MACIS_WIDTH             1
     100                 :            : #define DMA_ISR_MTLIS_INDEX             16
     101                 :            : #define DMA_ISR_MTLIS_WIDTH             1
     102                 :            : #define DMA_MR_INTM_INDEX               12
     103                 :            : #define DMA_MR_INTM_WIDTH               2
     104                 :            : #define DMA_MR_SWR_INDEX                0
     105                 :            : #define DMA_MR_SWR_WIDTH                1
     106                 :            : #define DMA_SBMR_WR_OSR_INDEX           24
     107                 :            : #define DMA_SBMR_WR_OSR_WIDTH           6
     108                 :            : #define DMA_SBMR_RD_OSR_INDEX           16
     109                 :            : #define DMA_SBMR_RD_OSR_WIDTH           6
     110                 :            : #define DMA_SBMR_AAL_INDEX              12
     111                 :            : #define DMA_SBMR_AAL_WIDTH              1
     112                 :            : #define DMA_SBMR_EAME_INDEX             11
     113                 :            : #define DMA_SBMR_EAME_WIDTH             1
     114                 :            : #define DMA_SBMR_BLEN_256_INDEX         7
     115                 :            : #define DMA_SBMR_BLEN_256_WIDTH         1
     116                 :            : #define DMA_SBMR_BLEN_32_INDEX          4
     117                 :            : #define DMA_SBMR_BLEN_32_WIDTH          1
     118                 :            : #define DMA_SBMR_UNDEF_INDEX            0
     119                 :            : #define DMA_SBMR_UNDEF_WIDTH            1
     120                 :            : 
     121                 :            : /* DMA register values */
     122                 :            : #define DMA_DSR_RPS_WIDTH               4
     123                 :            : #define DMA_DSR_TPS_WIDTH               4
     124                 :            : #define DMA_DSR_Q_WIDTH                 (DMA_DSR_RPS_WIDTH + DMA_DSR_TPS_WIDTH)
     125                 :            : #define DMA_DSR0_RPS_START              8
     126                 :            : #define DMA_DSR0_TPS_START              12
     127                 :            : #define DMA_DSRX_FIRST_QUEUE            3
     128                 :            : #define DMA_DSRX_INC                    4
     129                 :            : #define DMA_DSRX_QPR                    4
     130                 :            : #define DMA_DSRX_RPS_START              0
     131                 :            : #define DMA_DSRX_TPS_START              4
     132                 :            : #define DMA_TPS_STOPPED                 0x00
     133                 :            : #define DMA_TPS_SUSPENDED               0x06
     134                 :            : 
     135                 :            : /* DMA channel register offsets
     136                 :            :  *   Multiple channels can be active.  The first channel has registers
     137                 :            :  *   that begin at 0x3100.  Each subsequent channel has registers that
     138                 :            :  *   are accessed using an offset of 0x80 from the previous channel.
     139                 :            :  */
     140                 :            : #define DMA_CH_BASE                     0x3100
     141                 :            : #define DMA_CH_INC                      0x80
     142                 :            : 
     143                 :            : #define DMA_CH_CR                       0x00
     144                 :            : #define DMA_CH_TCR                      0x04
     145                 :            : #define DMA_CH_RCR                      0x08
     146                 :            : #define DMA_CH_TDLR_HI                  0x10
     147                 :            : #define DMA_CH_TDLR_LO                  0x14
     148                 :            : #define DMA_CH_RDLR_HI                  0x18
     149                 :            : #define DMA_CH_RDLR_LO                  0x1c
     150                 :            : #define DMA_CH_TDTR_LO                  0x24
     151                 :            : #define DMA_CH_RDTR_LO                  0x2c
     152                 :            : #define DMA_CH_TDRLR                    0x30
     153                 :            : #define DMA_CH_RDRLR                    0x34
     154                 :            : #define DMA_CH_IER                      0x38
     155                 :            : #define DMA_CH_RIWT                     0x3c
     156                 :            : #define DMA_CH_CATDR_LO                 0x44
     157                 :            : #define DMA_CH_CARDR_LO                 0x4c
     158                 :            : #define DMA_CH_CATBR_HI                 0x50
     159                 :            : #define DMA_CH_CATBR_LO                 0x54
     160                 :            : #define DMA_CH_CARBR_HI                 0x58
     161                 :            : #define DMA_CH_CARBR_LO                 0x5c
     162                 :            : #define DMA_CH_SR                       0x60
     163                 :            : 
     164                 :            : /* Setting MSS register entry bit positions and sizes for TSO */
     165                 :            : #define DMA_CH_CR_MSS_INDEX             0
     166                 :            : #define DMA_CH_CR_MSS_WIDTH             14
     167                 :            : 
     168                 :            : /* DMA channel register entry bit positions and sizes */
     169                 :            : #define DMA_CH_CR_PBLX8_INDEX           16
     170                 :            : #define DMA_CH_CR_PBLX8_WIDTH           1
     171                 :            : #define DMA_CH_CR_SPH_INDEX             24
     172                 :            : #define DMA_CH_CR_SPH_WIDTH             1
     173                 :            : #define DMA_CH_IER_AIE_INDEX            14
     174                 :            : #define DMA_CH_IER_AIE_WIDTH            1
     175                 :            : #define DMA_CH_IER_FBEE_INDEX           12
     176                 :            : #define DMA_CH_IER_FBEE_WIDTH           1
     177                 :            : #define DMA_CH_IER_NIE_INDEX            15
     178                 :            : #define DMA_CH_IER_NIE_WIDTH            1
     179                 :            : #define DMA_CH_IER_RBUE_INDEX           7
     180                 :            : #define DMA_CH_IER_RBUE_WIDTH           1
     181                 :            : #define DMA_CH_IER_RIE_INDEX            6
     182                 :            : #define DMA_CH_IER_RIE_WIDTH            1
     183                 :            : #define DMA_CH_IER_RSE_INDEX            8
     184                 :            : #define DMA_CH_IER_RSE_WIDTH            1
     185                 :            : #define DMA_CH_IER_TBUE_INDEX           2
     186                 :            : #define DMA_CH_IER_TBUE_WIDTH           1
     187                 :            : #define DMA_CH_IER_TIE_INDEX            0
     188                 :            : #define DMA_CH_IER_TIE_WIDTH            1
     189                 :            : #define DMA_CH_IER_TXSE_INDEX           1
     190                 :            : #define DMA_CH_IER_TXSE_WIDTH           1
     191                 :            : #define DMA_CH_RCR_PBL_INDEX            16
     192                 :            : #define DMA_CH_RCR_PBL_WIDTH            6
     193                 :            : #define DMA_CH_RCR_RBSZ_INDEX           1
     194                 :            : #define DMA_CH_RCR_RBSZ_WIDTH           14
     195                 :            : #define DMA_CH_RCR_SR_INDEX             0
     196                 :            : #define DMA_CH_RCR_SR_WIDTH             1
     197                 :            : #define DMA_CH_RIWT_RWT_INDEX           0
     198                 :            : #define DMA_CH_RIWT_RWT_WIDTH           8
     199                 :            : #define DMA_CH_SR_FBE_INDEX             12
     200                 :            : #define DMA_CH_SR_FBE_WIDTH             1
     201                 :            : #define DMA_CH_SR_RBU_INDEX             7
     202                 :            : #define DMA_CH_SR_RBU_WIDTH             1
     203                 :            : #define DMA_CH_SR_RI_INDEX              6
     204                 :            : #define DMA_CH_SR_RI_WIDTH              1
     205                 :            : #define DMA_CH_SR_RPS_INDEX             8
     206                 :            : #define DMA_CH_SR_RPS_WIDTH             1
     207                 :            : #define DMA_CH_SR_TBU_INDEX             2
     208                 :            : #define DMA_CH_SR_TBU_WIDTH             1
     209                 :            : #define DMA_CH_SR_TI_INDEX              0
     210                 :            : #define DMA_CH_SR_TI_WIDTH              1
     211                 :            : #define DMA_CH_SR_TPS_INDEX             1
     212                 :            : #define DMA_CH_SR_TPS_WIDTH             1
     213                 :            : #define DMA_CH_TCR_OSP_INDEX            4
     214                 :            : #define DMA_CH_TCR_OSP_WIDTH            1
     215                 :            : #define DMA_CH_TCR_PBL_INDEX            16
     216                 :            : #define DMA_CH_TCR_PBL_WIDTH            6
     217                 :            : #define DMA_CH_TCR_ST_INDEX             0
     218                 :            : #define DMA_CH_TCR_ST_WIDTH             1
     219                 :            : #define DMA_CH_TCR_TSE_INDEX            12
     220                 :            : #define DMA_CH_TCR_TSE_WIDTH            1
     221                 :            : 
     222                 :            : /* DMA channel register values */
     223                 :            : #define DMA_OSP_DISABLE                 0x00
     224                 :            : #define DMA_OSP_ENABLE                  0x01
     225                 :            : #define DMA_PBL_1                       1
     226                 :            : #define DMA_PBL_2                       2
     227                 :            : #define DMA_PBL_4                       4
     228                 :            : #define DMA_PBL_8                       8
     229                 :            : #define DMA_PBL_16                      16
     230                 :            : #define DMA_PBL_32                      32
     231                 :            : #define DMA_PBL_64                      64      /* 8 x 8 */
     232                 :            : #define DMA_PBL_128                     128     /* 8 x 16 */
     233                 :            : #define DMA_PBL_256                     256     /* 8 x 32 */
     234                 :            : #define DMA_PBL_X8_DISABLE              0x00
     235                 :            : #define DMA_PBL_X8_ENABLE               0x01
     236                 :            : 
     237                 :            : /* MAC register offsets */
     238                 :            : #define MAC_TCR                         0x0000
     239                 :            : #define MAC_RCR                         0x0004
     240                 :            : #define MAC_PFR                         0x0008
     241                 :            : #define MAC_WTR                         0x000c
     242                 :            : #define MAC_HTR0                        0x0010
     243                 :            : #define MAC_VLANTR                      0x0050
     244                 :            : #define MAC_VLANHTR                     0x0058
     245                 :            : #define MAC_VLANIR                      0x0060
     246                 :            : #define MAC_IVLANIR                     0x0064
     247                 :            : #define MAC_RETMR                       0x006c
     248                 :            : #define MAC_Q0TFCR                      0x0070
     249                 :            : #define MAC_RFCR                        0x0090
     250                 :            : #define MAC_RQC0R                       0x00a0
     251                 :            : #define MAC_RQC1R                       0x00a4
     252                 :            : #define MAC_RQC2R                       0x00a8
     253                 :            : #define MAC_RQC3R                       0x00ac
     254                 :            : #define MAC_ISR                         0x00b0
     255                 :            : #define MAC_IER                         0x00b4
     256                 :            : #define MAC_RTSR                        0x00b8
     257                 :            : #define MAC_PMTCSR                      0x00c0
     258                 :            : #define MAC_RWKPFR                      0x00c4
     259                 :            : #define MAC_LPICSR                      0x00d0
     260                 :            : #define MAC_LPITCR                      0x00d4
     261                 :            : #define MAC_VR                          0x0110
     262                 :            : #define MAC_DR                          0x0114
     263                 :            : #define MAC_HWF0R                       0x011c
     264                 :            : #define MAC_HWF1R                       0x0120
     265                 :            : #define MAC_HWF2R                       0x0124
     266                 :            : #define MAC_HWF3R                       0x0128
     267                 :            : #define MAC_MDIOSCAR                    0x0200
     268                 :            : #define MAC_MDIOSCCDR                   0x0204
     269                 :            : #define MAC_MDIOISR                     0x0214
     270                 :            : #define MAC_MDIOIER                     0x0218
     271                 :            : #define MAC_MDIOCL22R                   0x0220
     272                 :            : #define MAC_GPIOCR                      0x0278
     273                 :            : #define MAC_GPIOSR                      0x027c
     274                 :            : #define MAC_MACA0HR                     0x0300
     275                 :            : #define MAC_MACA0LR                     0x0304
     276                 :            : #define MAC_MACA1HR                     0x0308
     277                 :            : #define MAC_MACA1LR                     0x030c
     278                 :            : #define MAC_RSSCR                       0x0c80
     279                 :            : #define MAC_RSSAR                       0x0c88
     280                 :            : #define MAC_RSSDR                       0x0c8c
     281                 :            : #define MAC_TSCR                        0x0d00
     282                 :            : #define MAC_SSIR                        0x0d04
     283                 :            : #define MAC_STSR                        0x0d08
     284                 :            : #define MAC_STNR                        0x0d0c
     285                 :            : #define MAC_STSUR                       0x0d10
     286                 :            : #define MAC_STNUR                       0x0d14
     287                 :            : #define MAC_TSAR                        0x0d18
     288                 :            : #define MAC_TSSR                        0x0d20
     289                 :            : #define MAC_TXSNR                       0x0d30
     290                 :            : #define MAC_TXSSR                       0x0d34
     291                 :            : 
     292                 :            : /*VLAN control bit mask*/
     293                 :            : #define AXGBE_VLNCTRL_MASK              0x0000FFFF
     294                 :            : #define VLAN_PRIO_MASK                  0xe000 /* Priority Code Point */
     295                 :            : #define VLAN_PRIO_SHIFT                 13
     296                 :            : #define VLAN_CFI_MASK                   0x1000 /* Canonical Format Indicator */
     297                 :            : #define VLAN_TAG_PRESENT                VLAN_CFI_MASK
     298                 :            : #define VLAN_VID_MASK                   0x0fff /* VLAN Identifier */
     299                 :            : #define VLAN_N_VID                      4096
     300                 :            : #define VLAN_TABLE_SIZE                 64
     301                 :            : #define VLAN_TABLE_BIT(vlan_id) (1UL << ((vlan_id) & 0x3F))
     302                 :            : #define VLAN_TABLE_IDX(vlan_id) ((vlan_id) >> 6)
     303                 :            : #define RX_CVLAN_TAG_PRESENT                   9
     304                 :            : 
     305                 :            : #define MAC_QTFCR_INC                   4
     306                 :            : #define MAC_MACA_INC                    4
     307                 :            : #define MAC_HTR_INC                     4
     308                 :            : 
     309                 :            : #define MAC_RQC2_INC                    4
     310                 :            : #define MAC_RQC2_Q_PER_REG              4
     311                 :            : 
     312                 :            : #define MAC_MACAHR(i)   (MAC_MACA0HR + ((i) * 8))
     313                 :            : #define MAC_MACALR(i)   (MAC_MACA0LR + ((i) * 8))
     314                 :            : 
     315                 :            : #define MAC_HTR(i)      (MAC_HTR0 + ((i) * MAC_HTR_INC))
     316                 :            : 
     317                 :            : /* MAC register entry bit positions and sizes */
     318                 :            : #define MAC_HWF0R_ADDMACADRSEL_INDEX    18
     319                 :            : #define MAC_HWF0R_ADDMACADRSEL_WIDTH    5
     320                 :            : #define MAC_HWF0R_ARPOFFSEL_INDEX       9
     321                 :            : #define MAC_HWF0R_ARPOFFSEL_WIDTH       1
     322                 :            : #define MAC_HWF0R_EEESEL_INDEX          13
     323                 :            : #define MAC_HWF0R_EEESEL_WIDTH          1
     324                 :            : #define MAC_HWF0R_GMIISEL_INDEX         1
     325                 :            : #define MAC_HWF0R_GMIISEL_WIDTH         1
     326                 :            : #define MAC_HWF0R_MGKSEL_INDEX          7
     327                 :            : #define MAC_HWF0R_MGKSEL_WIDTH          1
     328                 :            : #define MAC_HWF0R_MMCSEL_INDEX          8
     329                 :            : #define MAC_HWF0R_MMCSEL_WIDTH          1
     330                 :            : #define MAC_HWF0R_RWKSEL_INDEX          6
     331                 :            : #define MAC_HWF0R_RWKSEL_WIDTH          1
     332                 :            : #define MAC_HWF0R_RXCOESEL_INDEX        16
     333                 :            : #define MAC_HWF0R_RXCOESEL_WIDTH        1
     334                 :            : #define MAC_HWF0R_SAVLANINS_INDEX       27
     335                 :            : #define MAC_HWF0R_SAVLANINS_WIDTH       1
     336                 :            : #define MAC_HWF0R_SMASEL_INDEX          5
     337                 :            : #define MAC_HWF0R_SMASEL_WIDTH          1
     338                 :            : #define MAC_HWF0R_TSSEL_INDEX           12
     339                 :            : #define MAC_HWF0R_TSSEL_WIDTH           1
     340                 :            : #define MAC_HWF0R_TSSTSSEL_INDEX        25
     341                 :            : #define MAC_HWF0R_TSSTSSEL_WIDTH        2
     342                 :            : #define MAC_HWF0R_TXCOESEL_INDEX        14
     343                 :            : #define MAC_HWF0R_TXCOESEL_WIDTH        1
     344                 :            : #define MAC_HWF0R_VLHASH_INDEX          4
     345                 :            : #define MAC_HWF0R_VLHASH_WIDTH          1
     346                 :            : #define MAC_HWF1R_ADDR64_INDEX          14
     347                 :            : #define MAC_HWF1R_ADDR64_WIDTH          2
     348                 :            : #define MAC_HWF1R_ADVTHWORD_INDEX       13
     349                 :            : #define MAC_HWF1R_ADVTHWORD_WIDTH       1
     350                 :            : #define MAC_HWF1R_DBGMEMA_INDEX         19
     351                 :            : #define MAC_HWF1R_DBGMEMA_WIDTH         1
     352                 :            : #define MAC_HWF1R_DCBEN_INDEX           16
     353                 :            : #define MAC_HWF1R_DCBEN_WIDTH           1
     354                 :            : #define MAC_HWF1R_HASHTBLSZ_INDEX       24
     355                 :            : #define MAC_HWF1R_HASHTBLSZ_WIDTH       3
     356                 :            : #define MAC_HWF1R_L3L4FNUM_INDEX        27
     357                 :            : #define MAC_HWF1R_L3L4FNUM_WIDTH        4
     358                 :            : #define MAC_HWF1R_NUMTC_INDEX           21
     359                 :            : #define MAC_HWF1R_NUMTC_WIDTH           3
     360                 :            : #define MAC_HWF1R_RSSEN_INDEX           20
     361                 :            : #define MAC_HWF1R_RSSEN_WIDTH           1
     362                 :            : #define MAC_HWF1R_RXFIFOSIZE_INDEX      0
     363                 :            : #define MAC_HWF1R_RXFIFOSIZE_WIDTH      5
     364                 :            : #define MAC_HWF1R_SPHEN_INDEX           17
     365                 :            : #define MAC_HWF1R_SPHEN_WIDTH           1
     366                 :            : #define MAC_HWF1R_TSOEN_INDEX           18
     367                 :            : #define MAC_HWF1R_TSOEN_WIDTH           1
     368                 :            : #define MAC_HWF1R_TXFIFOSIZE_INDEX      6
     369                 :            : #define MAC_HWF1R_TXFIFOSIZE_WIDTH      5
     370                 :            : #define MAC_HWF2R_AUXSNAPNUM_INDEX      28
     371                 :            : #define MAC_HWF2R_AUXSNAPNUM_WIDTH      3
     372                 :            : #define MAC_HWF2R_PPSOUTNUM_INDEX       24
     373                 :            : #define MAC_HWF2R_PPSOUTNUM_WIDTH       3
     374                 :            : #define MAC_HWF2R_RXCHCNT_INDEX         12
     375                 :            : #define MAC_HWF2R_RXCHCNT_WIDTH         4
     376                 :            : #define MAC_HWF2R_RXQCNT_INDEX          0
     377                 :            : #define MAC_HWF2R_RXQCNT_WIDTH          4
     378                 :            : #define MAC_HWF2R_TXCHCNT_INDEX         18
     379                 :            : #define MAC_HWF2R_TXCHCNT_WIDTH         4
     380                 :            : #define MAC_HWF2R_TXQCNT_INDEX          6
     381                 :            : #define MAC_HWF2R_TXQCNT_WIDTH          4
     382                 :            : #define MAC_HWF3R_CBTISEL_INDEX         4
     383                 :            : #define MAC_HWF3R_CBTISEL_WIDTH         1
     384                 :            : #define MAC_HWF3R_NRVF_INDEX            0
     385                 :            : #define MAC_HWF3R_NRVF_WIDTH            3
     386                 :            : #define MAC_IER_TSIE_INDEX              12
     387                 :            : #define MAC_IER_TSIE_WIDTH              1
     388                 :            : #define MAC_ISR_MMCRXIS_INDEX           9
     389                 :            : #define MAC_ISR_MMCRXIS_WIDTH           1
     390                 :            : #define MAC_ISR_MMCTXIS_INDEX           10
     391                 :            : #define MAC_ISR_MMCTXIS_WIDTH           1
     392                 :            : #define MAC_ISR_PMTIS_INDEX             4
     393                 :            : #define MAC_ISR_PMTIS_WIDTH             1
     394                 :            : #define MAC_ISR_SMI_INDEX               1
     395                 :            : #define MAC_ISR_SMI_WIDTH               1
     396                 :            : #define MAC_ISR_LSI_INDEX               0
     397                 :            : #define MAC_ISR_LSI_WIDTH               1
     398                 :            : #define MAC_ISR_LS_INDEX                24
     399                 :            : #define MAC_ISR_LS_WIDTH                2
     400                 :            : #define MAC_ISR_TSIS_INDEX              12
     401                 :            : #define MAC_ISR_TSIS_WIDTH              1
     402                 :            : #define MAC_MACA1HR_AE_INDEX            31
     403                 :            : #define MAC_MACA1HR_AE_WIDTH            1
     404                 :            : #define MAC_MDIOIER_SNGLCOMPIE_INDEX    12
     405                 :            : #define MAC_MDIOIER_SNGLCOMPIE_WIDTH    1
     406                 :            : #define MAC_MDIOISR_SNGLCOMPINT_INDEX   12
     407                 :            : #define MAC_MDIOISR_SNGLCOMPINT_WIDTH   1
     408                 :            : #define MAC_MDIOSCAR_DA_INDEX           21
     409                 :            : #define MAC_MDIOSCAR_DA_WIDTH           5
     410                 :            : #define MAC_MDIOSCAR_PA_INDEX           16
     411                 :            : #define MAC_MDIOSCAR_PA_WIDTH           5
     412                 :            : #define MAC_MDIOSCAR_RA_INDEX           0
     413                 :            : #define MAC_MDIOSCAR_RA_WIDTH           16
     414                 :            : #define MAC_MDIOSCCDR_BUSY_INDEX        22
     415                 :            : #define MAC_MDIOSCCDR_BUSY_WIDTH        1
     416                 :            : #define MAC_MDIOSCCDR_CMD_INDEX         16
     417                 :            : #define MAC_MDIOSCCDR_CMD_WIDTH         2
     418                 :            : #define MAC_MDIOSCCDR_CR_INDEX          19
     419                 :            : #define MAC_MDIOSCCDR_CR_WIDTH          3
     420                 :            : #define MAC_MDIOSCCDR_DATA_INDEX        0
     421                 :            : #define MAC_MDIOSCCDR_DATA_WIDTH        16
     422                 :            : #define MAC_MDIOSCCDR_SADDR_INDEX       18
     423                 :            : #define MAC_MDIOSCCDR_SADDR_WIDTH       1
     424                 :            : #define MAC_PFR_HMC_INDEX               2
     425                 :            : #define MAC_PFR_HMC_WIDTH               1
     426                 :            : #define MAC_PFR_HPF_INDEX               10
     427                 :            : #define MAC_PFR_HPF_WIDTH               1
     428                 :            : #define MAC_PFR_HUC_INDEX               1
     429                 :            : #define MAC_PFR_HUC_WIDTH               1
     430                 :            : #define MAC_PFR_PM_INDEX                4
     431                 :            : #define MAC_PFR_PM_WIDTH                1
     432                 :            : #define MAC_PFR_PR_INDEX                0
     433                 :            : #define MAC_PFR_PR_WIDTH                1
     434                 :            : #define MAC_PFR_VTFE_INDEX              16
     435                 :            : #define MAC_PFR_VTFE_WIDTH              1
     436                 :            : #define MAC_PMTCSR_MGKPKTEN_INDEX       1
     437                 :            : #define MAC_PMTCSR_MGKPKTEN_WIDTH       1
     438                 :            : #define MAC_PMTCSR_PWRDWN_INDEX         0
     439                 :            : #define MAC_PMTCSR_PWRDWN_WIDTH         1
     440                 :            : #define MAC_PMTCSR_RWKFILTRST_INDEX     31
     441                 :            : #define MAC_PMTCSR_RWKFILTRST_WIDTH     1
     442                 :            : #define MAC_PMTCSR_RWKPKTEN_INDEX       2
     443                 :            : #define MAC_PMTCSR_RWKPKTEN_WIDTH       1
     444                 :            : #define MAC_Q0TFCR_PT_INDEX             16
     445                 :            : #define MAC_Q0TFCR_PT_WIDTH             16
     446                 :            : #define MAC_Q0TFCR_TFE_INDEX            1
     447                 :            : #define MAC_Q0TFCR_TFE_WIDTH            1
     448                 :            : #define MAC_RCR_ACS_INDEX               1
     449                 :            : #define MAC_RCR_ACS_WIDTH               1
     450                 :            : #define MAC_RCR_CST_INDEX               2
     451                 :            : #define MAC_RCR_CST_WIDTH               1
     452                 :            : #define MAC_RCR_DCRCC_INDEX             3
     453                 :            : #define MAC_RCR_DCRCC_WIDTH             1
     454                 :            : #define MAC_RCR_HDSMS_INDEX             12
     455                 :            : #define MAC_RCR_HDSMS_WIDTH             3
     456                 :            : #define MAC_RCR_IPC_INDEX               9
     457                 :            : #define MAC_RCR_IPC_WIDTH               1
     458                 :            : #define MAC_RCR_JE_INDEX                8
     459                 :            : #define MAC_RCR_JE_WIDTH                1
     460                 :            : #define MAC_RCR_LM_INDEX                10
     461                 :            : #define MAC_RCR_LM_WIDTH                1
     462                 :            : #define MAC_RCR_RE_INDEX                0
     463                 :            : #define MAC_RCR_RE_WIDTH                1
     464                 :            : #define MAC_RFCR_PFCE_INDEX             8
     465                 :            : #define MAC_RFCR_PFCE_WIDTH             1
     466                 :            : #define MAC_RFCR_RFE_INDEX              0
     467                 :            : #define MAC_RFCR_RFE_WIDTH              1
     468                 :            : #define MAC_RFCR_UP_INDEX               1
     469                 :            : #define MAC_RFCR_UP_WIDTH               1
     470                 :            : #define MAC_RQC0R_RXQ0EN_INDEX          0
     471                 :            : #define MAC_RQC0R_RXQ0EN_WIDTH          2
     472                 :            : #define MAC_RSSAR_ADDRT_INDEX           2
     473                 :            : #define MAC_RSSAR_ADDRT_WIDTH           1
     474                 :            : #define MAC_RSSAR_CT_INDEX              1
     475                 :            : #define MAC_RSSAR_CT_WIDTH              1
     476                 :            : #define MAC_RSSAR_OB_INDEX              0
     477                 :            : #define MAC_RSSAR_OB_WIDTH              1
     478                 :            : #define MAC_RSSAR_RSSIA_INDEX           8
     479                 :            : #define MAC_RSSAR_RSSIA_WIDTH           8
     480                 :            : #define MAC_RSSCR_IP2TE_INDEX           1
     481                 :            : #define MAC_RSSCR_IP2TE_WIDTH           1
     482                 :            : #define MAC_RSSCR_RSSE_INDEX            0
     483                 :            : #define MAC_RSSCR_RSSE_WIDTH            1
     484                 :            : #define MAC_RSSCR_TCP4TE_INDEX          2
     485                 :            : #define MAC_RSSCR_TCP4TE_WIDTH          1
     486                 :            : #define MAC_RSSCR_UDP4TE_INDEX          3
     487                 :            : #define MAC_RSSCR_UDP4TE_WIDTH          1
     488                 :            : #define MAC_RSSDR_DMCH_INDEX            0
     489                 :            : #define MAC_RSSDR_DMCH_WIDTH            4
     490                 :            : #define MAC_SSIR_SNSINC_INDEX           8
     491                 :            : #define MAC_SSIR_SNSINC_WIDTH           8
     492                 :            : #define MAC_SSIR_SSINC_INDEX            16
     493                 :            : #define MAC_SSIR_SSINC_WIDTH            8
     494                 :            : #define MAC_TCR_SS_INDEX                29
     495                 :            : #define MAC_TCR_SS_WIDTH                2
     496                 :            : #define MAC_TCR_TE_INDEX                0
     497                 :            : #define MAC_TCR_TE_WIDTH                1
     498                 :            : #define MAC_TSCR_AV8021ASMEN_INDEX      28
     499                 :            : #define MAC_TSCR_AV8021ASMEN_WIDTH      1
     500                 :            : #define MAC_TSCR_SNAPTYPSEL_INDEX       16
     501                 :            : #define MAC_TSCR_SNAPTYPSEL_WIDTH       2
     502                 :            : #define MAC_TSCR_TSADDREG_INDEX         5
     503                 :            : #define MAC_TSCR_TSADDREG_WIDTH         1
     504                 :            : #define MAC_TSCR_TSCFUPDT_INDEX         1
     505                 :            : #define MAC_TSCR_TSCFUPDT_WIDTH         1
     506                 :            : #define MAC_TSCR_TSCTRLSSR_INDEX        9
     507                 :            : #define MAC_TSCR_TSCTRLSSR_WIDTH        1
     508                 :            : #define MAC_TSCR_TSENA_INDEX            0
     509                 :            : #define MAC_TSCR_TSENA_WIDTH            1
     510                 :            : #define MAC_TSCR_TSENALL_INDEX          8
     511                 :            : #define MAC_TSCR_TSENALL_WIDTH          1
     512                 :            : #define MAC_TSCR_TSEVNTENA_INDEX        14
     513                 :            : #define MAC_TSCR_TSEVNTENA_WIDTH        1
     514                 :            : #define MAC_TSCR_TSINIT_INDEX           2
     515                 :            : #define MAC_TSCR_TSINIT_WIDTH           1
     516                 :            : #define MAC_TSCR_TSUPDT_INDEX           3
     517                 :            : #define MAC_TSCR_TSUPDT_WIDTH           1
     518                 :            : #define MAC_TSCR_TSIPENA_INDEX          11
     519                 :            : #define MAC_TSCR_TSIPENA_WIDTH          1
     520                 :            : #define MAC_TSCR_TSIPV4ENA_INDEX        13
     521                 :            : #define MAC_TSCR_TSIPV4ENA_WIDTH        1
     522                 :            : #define MAC_TSCR_TSIPV6ENA_INDEX        12
     523                 :            : #define MAC_TSCR_TSIPV6ENA_WIDTH        1
     524                 :            : #define MAC_TSCR_TSMSTRENA_INDEX        15
     525                 :            : #define MAC_TSCR_TSMSTRENA_WIDTH        1
     526                 :            : #define MAC_TSCR_TSVER2ENA_INDEX        10
     527                 :            : #define MAC_TSCR_TSVER2ENA_WIDTH        1
     528                 :            : #define MAC_TSCR_TXTSSTSM_INDEX         24
     529                 :            : #define MAC_TSCR_TXTSSTSM_WIDTH         1
     530                 :            : #define MAC_TSSR_TXTSC_INDEX            15
     531                 :            : #define MAC_TSSR_TXTSC_WIDTH            1
     532                 :            : #define MAC_STNUR_ADDSUB_INDEX          31
     533                 :            : #define MAC_STNUR_ADDSUB_WIDTH          1
     534                 :            : #define MAC_TXSNR_TXTSSTSMIS_INDEX      31
     535                 :            : #define MAC_TXSNR_TXTSSTSMIS_WIDTH      1
     536                 :            : #define MAC_VLANHTR_VLHT_INDEX          0
     537                 :            : #define MAC_VLANHTR_VLHT_WIDTH          16
     538                 :            : #define MAC_VLANIR_VLTI_INDEX           20
     539                 :            : #define MAC_VLANIR_VLTI_WIDTH           1
     540                 :            : #define MAC_VLANIR_CSVL_INDEX           19
     541                 :            : #define MAC_VLANIR_CSVL_WIDTH           1
     542                 :            : #define MAC_VLANIR_VLC_INDEX            16
     543                 :            : #define MAC_VLANIR_VLC_WIDTH            2
     544                 :            : #define MAC_VLANTR_DOVLTC_INDEX         20
     545                 :            : #define MAC_VLANTR_DOVLTC_WIDTH         1
     546                 :            : #define MAC_VLANTR_ERSVLM_INDEX         19
     547                 :            : #define MAC_VLANTR_ERSVLM_WIDTH         1
     548                 :            : #define MAC_VLANTR_ESVL_INDEX           18
     549                 :            : #define MAC_VLANTR_ESVL_WIDTH           1
     550                 :            : #define MAC_VLANTR_ETV_INDEX            16
     551                 :            : #define MAC_VLANTR_ETV_WIDTH            1
     552                 :            : #define MAC_VLANTR_EVLS_INDEX           21
     553                 :            : #define MAC_VLANTR_EVLS_WIDTH           2
     554                 :            : #define MAC_VLANTR_EIVLS_INDEX          21
     555                 :            : #define MAC_VLANTR_EIVLS_WIDTH          2
     556                 :            : #define MAC_VLANTR_EVLRXS_INDEX         24
     557                 :            : #define MAC_VLANTR_EVLRXS_WIDTH         1
     558                 :            : #define MAC_VLANTR_EIVLRXS_INDEX        31
     559                 :            : #define MAC_VLANTR_EIVLRXS_WIDTH        1
     560                 :            : #define MAC_VLANTR_VL_INDEX             0
     561                 :            : #define MAC_VLANTR_VL_WIDTH             16
     562                 :            : #define MAC_VLANTR_VTHM_INDEX           25
     563                 :            : #define MAC_VLANTR_VTHM_WIDTH           1
     564                 :            : #define MAC_VLANTR_EDVLP_INDEX          26
     565                 :            : #define MAC_VLANTR_EDVLP_WIDTH          1
     566                 :            : #define MAC_VLANTR_VTIM_INDEX           17
     567                 :            : #define MAC_VLANTR_VTIM_WIDTH           1
     568                 :            : #define MAC_VR_DEVID_INDEX              8
     569                 :            : #define MAC_VR_DEVID_WIDTH              8
     570                 :            : #define MAC_VR_SNPSVER_INDEX            0
     571                 :            : #define MAC_VR_SNPSVER_WIDTH            8
     572                 :            : #define MAC_VR_USERVER_INDEX            16
     573                 :            : #define MAC_VR_USERVER_WIDTH            8
     574                 :            : #define MAC_VLANIR_VLT_INDEX            0
     575                 :            : #define MAC_VLANIR_VLT_WIDTH            16
     576                 :            : #define MAC_VLANTR_ERIVLT_INDEX         27
     577                 :            : #define MAC_VLANTR_ERIVLT_WIDTH         1
     578                 :            : 
     579                 :            : 
     580                 :            : /* MMC register offsets */
     581                 :            : #define MMC_CR                          0x0800
     582                 :            : #define MMC_RISR                        0x0804
     583                 :            : #define MMC_TISR                        0x0808
     584                 :            : #define MMC_RIER                        0x080c
     585                 :            : #define MMC_TIER                        0x0810
     586                 :            : #define MMC_TXOCTETCOUNT_GB_LO          0x0814
     587                 :            : #define MMC_TXOCTETCOUNT_GB_HI          0x0818
     588                 :            : #define MMC_TXFRAMECOUNT_GB_LO          0x081c
     589                 :            : #define MMC_TXFRAMECOUNT_GB_HI          0x0820
     590                 :            : #define MMC_TXBROADCASTFRAMES_G_LO      0x0824
     591                 :            : #define MMC_TXBROADCASTFRAMES_G_HI      0x0828
     592                 :            : #define MMC_TXMULTICASTFRAMES_G_LO      0x082c
     593                 :            : #define MMC_TXMULTICASTFRAMES_G_HI      0x0830
     594                 :            : #define MMC_TX64OCTETS_GB_LO            0x0834
     595                 :            : #define MMC_TX64OCTETS_GB_HI            0x0838
     596                 :            : #define MMC_TX65TO127OCTETS_GB_LO       0x083c
     597                 :            : #define MMC_TX65TO127OCTETS_GB_HI       0x0840
     598                 :            : #define MMC_TX128TO255OCTETS_GB_LO      0x0844
     599                 :            : #define MMC_TX128TO255OCTETS_GB_HI      0x0848
     600                 :            : #define MMC_TX256TO511OCTETS_GB_LO      0x084c
     601                 :            : #define MMC_TX256TO511OCTETS_GB_HI      0x0850
     602                 :            : #define MMC_TX512TO1023OCTETS_GB_LO     0x0854
     603                 :            : #define MMC_TX512TO1023OCTETS_GB_HI     0x0858
     604                 :            : #define MMC_TX1024TOMAXOCTETS_GB_LO     0x085c
     605                 :            : #define MMC_TX1024TOMAXOCTETS_GB_HI     0x0860
     606                 :            : #define MMC_TXUNICASTFRAMES_GB_LO       0x0864
     607                 :            : #define MMC_TXUNICASTFRAMES_GB_HI       0x0868
     608                 :            : #define MMC_TXMULTICASTFRAMES_GB_LO     0x086c
     609                 :            : #define MMC_TXMULTICASTFRAMES_GB_HI     0x0870
     610                 :            : #define MMC_TXBROADCASTFRAMES_GB_LO     0x0874
     611                 :            : #define MMC_TXBROADCASTFRAMES_GB_HI     0x0878
     612                 :            : #define MMC_TXUNDERFLOWERROR_LO         0x087c
     613                 :            : #define MMC_TXUNDERFLOWERROR_HI         0x0880
     614                 :            : #define MMC_TXOCTETCOUNT_G_LO           0x0884
     615                 :            : #define MMC_TXOCTETCOUNT_G_HI           0x0888
     616                 :            : #define MMC_TXFRAMECOUNT_G_LO           0x088c
     617                 :            : #define MMC_TXFRAMECOUNT_G_HI           0x0890
     618                 :            : #define MMC_TXPAUSEFRAMES_LO            0x0894
     619                 :            : #define MMC_TXPAUSEFRAMES_HI            0x0898
     620                 :            : #define MMC_TXVLANFRAMES_G_LO           0x089c
     621                 :            : #define MMC_TXVLANFRAMES_G_HI           0x08a0
     622                 :            : #define MMC_RXFRAMECOUNT_GB_LO          0x0900
     623                 :            : #define MMC_RXFRAMECOUNT_GB_HI          0x0904
     624                 :            : #define MMC_RXOCTETCOUNT_GB_LO          0x0908
     625                 :            : #define MMC_RXOCTETCOUNT_GB_HI          0x090c
     626                 :            : #define MMC_RXOCTETCOUNT_G_LO           0x0910
     627                 :            : #define MMC_RXOCTETCOUNT_G_HI           0x0914
     628                 :            : #define MMC_RXBROADCASTFRAMES_G_LO      0x0918
     629                 :            : #define MMC_RXBROADCASTFRAMES_G_HI      0x091c
     630                 :            : #define MMC_RXMULTICASTFRAMES_G_LO      0x0920
     631                 :            : #define MMC_RXMULTICASTFRAMES_G_HI      0x0924
     632                 :            : #define MMC_RXCRCERROR_LO               0x0928
     633                 :            : #define MMC_RXCRCERROR_HI               0x092c
     634                 :            : #define MMC_RXRUNTERROR                 0x0930
     635                 :            : #define MMC_RXJABBERERROR               0x0934
     636                 :            : #define MMC_RXUNDERSIZE_G               0x0938
     637                 :            : #define MMC_RXOVERSIZE_G                0x093c
     638                 :            : #define MMC_RX64OCTETS_GB_LO            0x0940
     639                 :            : #define MMC_RX64OCTETS_GB_HI            0x0944
     640                 :            : #define MMC_RX65TO127OCTETS_GB_LO       0x0948
     641                 :            : #define MMC_RX65TO127OCTETS_GB_HI       0x094c
     642                 :            : #define MMC_RX128TO255OCTETS_GB_LO      0x0950
     643                 :            : #define MMC_RX128TO255OCTETS_GB_HI      0x0954
     644                 :            : #define MMC_RX256TO511OCTETS_GB_LO      0x0958
     645                 :            : #define MMC_RX256TO511OCTETS_GB_HI      0x095c
     646                 :            : #define MMC_RX512TO1023OCTETS_GB_LO     0x0960
     647                 :            : #define MMC_RX512TO1023OCTETS_GB_HI     0x0964
     648                 :            : #define MMC_RX1024TOMAXOCTETS_GB_LO     0x0968
     649                 :            : #define MMC_RX1024TOMAXOCTETS_GB_HI     0x096c
     650                 :            : #define MMC_RXUNICASTFRAMES_G_LO        0x0970
     651                 :            : #define MMC_RXUNICASTFRAMES_G_HI        0x0974
     652                 :            : #define MMC_RXLENGTHERROR_LO            0x0978
     653                 :            : #define MMC_RXLENGTHERROR_HI            0x097c
     654                 :            : #define MMC_RXOUTOFRANGETYPE_LO         0x0980
     655                 :            : #define MMC_RXOUTOFRANGETYPE_HI         0x0984
     656                 :            : #define MMC_RXPAUSEFRAMES_LO            0x0988
     657                 :            : #define MMC_RXPAUSEFRAMES_HI            0x098c
     658                 :            : #define MMC_RXFIFOOVERFLOW_LO           0x0990
     659                 :            : #define MMC_RXFIFOOVERFLOW_HI           0x0994
     660                 :            : #define MMC_RXVLANFRAMES_GB_LO          0x0998
     661                 :            : #define MMC_RXVLANFRAMES_GB_HI          0x099c
     662                 :            : #define MMC_RXWATCHDOGERROR             0x09a0
     663                 :            : 
     664                 :            : /* MMC register entry bit positions and sizes */
     665                 :            : #define MMC_CR_CR_INDEX                         0
     666                 :            : #define MMC_CR_CR_WIDTH                         1
     667                 :            : #define MMC_CR_CSR_INDEX                        1
     668                 :            : #define MMC_CR_CSR_WIDTH                        1
     669                 :            : #define MMC_CR_ROR_INDEX                        2
     670                 :            : #define MMC_CR_ROR_WIDTH                        1
     671                 :            : #define MMC_CR_MCF_INDEX                        3
     672                 :            : #define MMC_CR_MCF_WIDTH                        1
     673                 :            : #define MMC_CR_MCT_INDEX                        4
     674                 :            : #define MMC_CR_MCT_WIDTH                        2
     675                 :            : #define MMC_RIER_ALL_INTERRUPTS_INDEX           0
     676                 :            : #define MMC_RIER_ALL_INTERRUPTS_WIDTH           23
     677                 :            : #define MMC_RISR_RXFRAMECOUNT_GB_INDEX          0
     678                 :            : #define MMC_RISR_RXFRAMECOUNT_GB_WIDTH          1
     679                 :            : #define MMC_RISR_RXOCTETCOUNT_GB_INDEX          1
     680                 :            : #define MMC_RISR_RXOCTETCOUNT_GB_WIDTH          1
     681                 :            : #define MMC_RISR_RXOCTETCOUNT_G_INDEX           2
     682                 :            : #define MMC_RISR_RXOCTETCOUNT_G_WIDTH           1
     683                 :            : #define MMC_RISR_RXBROADCASTFRAMES_G_INDEX      3
     684                 :            : #define MMC_RISR_RXBROADCASTFRAMES_G_WIDTH      1
     685                 :            : #define MMC_RISR_RXMULTICASTFRAMES_G_INDEX      4
     686                 :            : #define MMC_RISR_RXMULTICASTFRAMES_G_WIDTH      1
     687                 :            : #define MMC_RISR_RXCRCERROR_INDEX               5
     688                 :            : #define MMC_RISR_RXCRCERROR_WIDTH               1
     689                 :            : #define MMC_RISR_RXRUNTERROR_INDEX              6
     690                 :            : #define MMC_RISR_RXRUNTERROR_WIDTH              1
     691                 :            : #define MMC_RISR_RXJABBERERROR_INDEX            7
     692                 :            : #define MMC_RISR_RXJABBERERROR_WIDTH            1
     693                 :            : #define MMC_RISR_RXUNDERSIZE_G_INDEX            8
     694                 :            : #define MMC_RISR_RXUNDERSIZE_G_WIDTH            1
     695                 :            : #define MMC_RISR_RXOVERSIZE_G_INDEX             9
     696                 :            : #define MMC_RISR_RXOVERSIZE_G_WIDTH             1
     697                 :            : #define MMC_RISR_RX64OCTETS_GB_INDEX            10
     698                 :            : #define MMC_RISR_RX64OCTETS_GB_WIDTH            1
     699                 :            : #define MMC_RISR_RX65TO127OCTETS_GB_INDEX       11
     700                 :            : #define MMC_RISR_RX65TO127OCTETS_GB_WIDTH       1
     701                 :            : #define MMC_RISR_RX128TO255OCTETS_GB_INDEX      12
     702                 :            : #define MMC_RISR_RX128TO255OCTETS_GB_WIDTH      1
     703                 :            : #define MMC_RISR_RX256TO511OCTETS_GB_INDEX      13
     704                 :            : #define MMC_RISR_RX256TO511OCTETS_GB_WIDTH      1
     705                 :            : #define MMC_RISR_RX512TO1023OCTETS_GB_INDEX     14
     706                 :            : #define MMC_RISR_RX512TO1023OCTETS_GB_WIDTH     1
     707                 :            : #define MMC_RISR_RX1024TOMAXOCTETS_GB_INDEX     15
     708                 :            : #define MMC_RISR_RX1024TOMAXOCTETS_GB_WIDTH     1
     709                 :            : #define MMC_RISR_RXUNICASTFRAMES_G_INDEX        16
     710                 :            : #define MMC_RISR_RXUNICASTFRAMES_G_WIDTH        1
     711                 :            : #define MMC_RISR_RXLENGTHERROR_INDEX            17
     712                 :            : #define MMC_RISR_RXLENGTHERROR_WIDTH            1
     713                 :            : #define MMC_RISR_RXOUTOFRANGETYPE_INDEX         18
     714                 :            : #define MMC_RISR_RXOUTOFRANGETYPE_WIDTH         1
     715                 :            : #define MMC_RISR_RXPAUSEFRAMES_INDEX            19
     716                 :            : #define MMC_RISR_RXPAUSEFRAMES_WIDTH            1
     717                 :            : #define MMC_RISR_RXFIFOOVERFLOW_INDEX           20
     718                 :            : #define MMC_RISR_RXFIFOOVERFLOW_WIDTH           1
     719                 :            : #define MMC_RISR_RXVLANFRAMES_GB_INDEX          21
     720                 :            : #define MMC_RISR_RXVLANFRAMES_GB_WIDTH          1
     721                 :            : #define MMC_RISR_RXWATCHDOGERROR_INDEX          22
     722                 :            : #define MMC_RISR_RXWATCHDOGERROR_WIDTH          1
     723                 :            : #define MMC_TIER_ALL_INTERRUPTS_INDEX           0
     724                 :            : #define MMC_TIER_ALL_INTERRUPTS_WIDTH           18
     725                 :            : #define MMC_TISR_TXOCTETCOUNT_GB_INDEX          0
     726                 :            : #define MMC_TISR_TXOCTETCOUNT_GB_WIDTH          1
     727                 :            : #define MMC_TISR_TXFRAMECOUNT_GB_INDEX          1
     728                 :            : #define MMC_TISR_TXFRAMECOUNT_GB_WIDTH          1
     729                 :            : #define MMC_TISR_TXBROADCASTFRAMES_G_INDEX      2
     730                 :            : #define MMC_TISR_TXBROADCASTFRAMES_G_WIDTH      1
     731                 :            : #define MMC_TISR_TXMULTICASTFRAMES_G_INDEX      3
     732                 :            : #define MMC_TISR_TXMULTICASTFRAMES_G_WIDTH      1
     733                 :            : #define MMC_TISR_TX64OCTETS_GB_INDEX            4
     734                 :            : #define MMC_TISR_TX64OCTETS_GB_WIDTH            1
     735                 :            : #define MMC_TISR_TX65TO127OCTETS_GB_INDEX       5
     736                 :            : #define MMC_TISR_TX65TO127OCTETS_GB_WIDTH       1
     737                 :            : #define MMC_TISR_TX128TO255OCTETS_GB_INDEX      6
     738                 :            : #define MMC_TISR_TX128TO255OCTETS_GB_WIDTH      1
     739                 :            : #define MMC_TISR_TX256TO511OCTETS_GB_INDEX      7
     740                 :            : #define MMC_TISR_TX256TO511OCTETS_GB_WIDTH      1
     741                 :            : #define MMC_TISR_TX512TO1023OCTETS_GB_INDEX     8
     742                 :            : #define MMC_TISR_TX512TO1023OCTETS_GB_WIDTH     1
     743                 :            : #define MMC_TISR_TX1024TOMAXOCTETS_GB_INDEX     9
     744                 :            : #define MMC_TISR_TX1024TOMAXOCTETS_GB_WIDTH     1
     745                 :            : #define MMC_TISR_TXUNICASTFRAMES_GB_INDEX       10
     746                 :            : #define MMC_TISR_TXUNICASTFRAMES_GB_WIDTH       1
     747                 :            : #define MMC_TISR_TXMULTICASTFRAMES_GB_INDEX     11
     748                 :            : #define MMC_TISR_TXMULTICASTFRAMES_GB_WIDTH     1
     749                 :            : #define MMC_TISR_TXBROADCASTFRAMES_GB_INDEX     12
     750                 :            : #define MMC_TISR_TXBROADCASTFRAMES_GB_WIDTH     1
     751                 :            : #define MMC_TISR_TXUNDERFLOWERROR_INDEX         13
     752                 :            : #define MMC_TISR_TXUNDERFLOWERROR_WIDTH         1
     753                 :            : #define MMC_TISR_TXOCTETCOUNT_G_INDEX           14
     754                 :            : #define MMC_TISR_TXOCTETCOUNT_G_WIDTH           1
     755                 :            : #define MMC_TISR_TXFRAMECOUNT_G_INDEX           15
     756                 :            : #define MMC_TISR_TXFRAMECOUNT_G_WIDTH           1
     757                 :            : #define MMC_TISR_TXPAUSEFRAMES_INDEX            16
     758                 :            : #define MMC_TISR_TXPAUSEFRAMES_WIDTH            1
     759                 :            : #define MMC_TISR_TXVLANFRAMES_G_INDEX           17
     760                 :            : #define MMC_TISR_TXVLANFRAMES_G_WIDTH           1
     761                 :            : 
     762                 :            : /* MTL register offsets */
     763                 :            : #define MTL_OMR                         0x1000
     764                 :            : #define MTL_FDCR                        0x1008
     765                 :            : #define MTL_FDSR                        0x100c
     766                 :            : #define MTL_FDDR                        0x1010
     767                 :            : #define MTL_ISR                         0x1020
     768                 :            : #define MTL_RQDCM0R                     0x1030
     769                 :            : #define MTL_TCPM0R                      0x1040
     770                 :            : #define MTL_TCPM1R                      0x1044
     771                 :            : 
     772                 :            : #define MTL_RQDCM_INC                   4
     773                 :            : #define MTL_RQDCM_Q_PER_REG             4
     774                 :            : #define MTL_TCPM_INC                    4
     775                 :            : #define MTL_TCPM_TC_PER_REG             4
     776                 :            : 
     777                 :            : /* MTL register entry bit positions and sizes */
     778                 :            : #define MTL_OMR_ETSALG_INDEX            5
     779                 :            : #define MTL_OMR_ETSALG_WIDTH            2
     780                 :            : #define MTL_OMR_RAA_INDEX               2
     781                 :            : #define MTL_OMR_RAA_WIDTH               1
     782                 :            : 
     783                 :            : /* MTL queue register offsets
     784                 :            :  *   Multiple queues can be active.  The first queue has registers
     785                 :            :  *   that begin at 0x1100.  Each subsequent queue has registers that
     786                 :            :  *   are accessed using an offset of 0x80 from the previous queue.
     787                 :            :  */
     788                 :            : #define MTL_Q_BASE                      0x1100
     789                 :            : #define MTL_Q_INC                       0x80
     790                 :            : 
     791                 :            : #define MTL_Q_TQOMR                     0x00
     792                 :            : #define MTL_Q_TQUR                      0x04
     793                 :            : #define MTL_Q_TQDR                      0x08
     794                 :            : #define MTL_Q_RQOMR                     0x40
     795                 :            : #define MTL_Q_RQMPOCR                   0x44
     796                 :            : #define MTL_Q_RQDR                      0x48
     797                 :            : #define MTL_Q_RQFCR                     0x50
     798                 :            : #define MTL_Q_IER                       0x70
     799                 :            : #define MTL_Q_ISR                       0x74
     800                 :            : 
     801                 :            : /* MTL queue register entry bit positions and sizes */
     802                 :            : #define MTL_Q_RQDR_PRXQ_INDEX           16
     803                 :            : #define MTL_Q_RQDR_PRXQ_WIDTH           14
     804                 :            : #define MTL_Q_RQDR_RXQSTS_INDEX         4
     805                 :            : #define MTL_Q_RQDR_RXQSTS_WIDTH         2
     806                 :            : #define MTL_Q_RQFCR_RFA_INDEX           1
     807                 :            : #define MTL_Q_RQFCR_RFA_WIDTH           6
     808                 :            : #define MTL_Q_RQFCR_RFD_INDEX           17
     809                 :            : #define MTL_Q_RQFCR_RFD_WIDTH           6
     810                 :            : #define MTL_Q_RQOMR_EHFC_INDEX          7
     811                 :            : #define MTL_Q_RQOMR_EHFC_WIDTH          1
     812                 :            : #define MTL_Q_RQOMR_RQS_INDEX           16
     813                 :            : #define MTL_Q_RQOMR_RQS_WIDTH           9
     814                 :            : #define MTL_Q_RQOMR_RSF_INDEX           5
     815                 :            : #define MTL_Q_RQOMR_RSF_WIDTH           1
     816                 :            : #define MTL_Q_RQOMR_RTC_INDEX           0
     817                 :            : #define MTL_Q_RQOMR_RTC_WIDTH           2
     818                 :            : #define MTL_Q_TQDR_TRCSTS_INDEX         1
     819                 :            : #define MTL_Q_TQDR_TRCSTS_WIDTH         2
     820                 :            : #define MTL_Q_TQDR_TXQSTS_INDEX         4
     821                 :            : #define MTL_Q_TQDR_TXQSTS_WIDTH         1
     822                 :            : #define MTL_Q_TQOMR_FTQ_INDEX           0
     823                 :            : #define MTL_Q_TQOMR_FTQ_WIDTH           1
     824                 :            : #define MTL_Q_TQOMR_Q2TCMAP_INDEX       8
     825                 :            : #define MTL_Q_TQOMR_Q2TCMAP_WIDTH       3
     826                 :            : #define MTL_Q_TQOMR_TQS_INDEX           16
     827                 :            : #define MTL_Q_TQOMR_TQS_WIDTH           10
     828                 :            : #define MTL_Q_TQOMR_TSF_INDEX           1
     829                 :            : #define MTL_Q_TQOMR_TSF_WIDTH           1
     830                 :            : #define MTL_Q_TQOMR_TTC_INDEX           4
     831                 :            : #define MTL_Q_TQOMR_TTC_WIDTH           3
     832                 :            : #define MTL_Q_TQOMR_TXQEN_INDEX         2
     833                 :            : #define MTL_Q_TQOMR_TXQEN_WIDTH         2
     834                 :            : 
     835                 :            : /* MTL queue register value */
     836                 :            : #define MTL_RSF_DISABLE                 0x00
     837                 :            : #define MTL_RSF_ENABLE                  0x01
     838                 :            : #define MTL_TSF_DISABLE                 0x00
     839                 :            : #define MTL_TSF_ENABLE                  0x01
     840                 :            : 
     841                 :            : #define MTL_RX_THRESHOLD_64             0x00
     842                 :            : #define MTL_RX_THRESHOLD_96             0x02
     843                 :            : #define MTL_RX_THRESHOLD_128            0x03
     844                 :            : #define MTL_TX_THRESHOLD_32             0x01
     845                 :            : #define MTL_TX_THRESHOLD_64             0x00
     846                 :            : #define MTL_TX_THRESHOLD_96             0x02
     847                 :            : #define MTL_TX_THRESHOLD_128            0x03
     848                 :            : #define MTL_TX_THRESHOLD_192            0x04
     849                 :            : #define MTL_TX_THRESHOLD_256            0x05
     850                 :            : #define MTL_TX_THRESHOLD_384            0x06
     851                 :            : #define MTL_TX_THRESHOLD_512            0x07
     852                 :            : 
     853                 :            : #define MTL_ETSALG_WRR                  0x00
     854                 :            : #define MTL_ETSALG_WFQ                  0x01
     855                 :            : #define MTL_ETSALG_DWRR                 0x02
     856                 :            : #define MTL_RAA_SP                      0x00
     857                 :            : #define MTL_RAA_WSP                     0x01
     858                 :            : 
     859                 :            : #define MTL_Q_DISABLED                  0x00
     860                 :            : #define MTL_Q_ENABLED                   0x02
     861                 :            : 
     862                 :            : /* MTL traffic class register offsets
     863                 :            :  *   Multiple traffic classes can be active.  The first class has registers
     864                 :            :  *   that begin at 0x1100.  Each subsequent queue has registers that
     865                 :            :  *   are accessed using an offset of 0x80 from the previous queue.
     866                 :            :  */
     867                 :            : #define MTL_TC_BASE                     MTL_Q_BASE
     868                 :            : #define MTL_TC_INC                      MTL_Q_INC
     869                 :            : 
     870                 :            : #define MTL_TC_ETSCR                    0x10
     871                 :            : #define MTL_TC_ETSSR                    0x14
     872                 :            : #define MTL_TC_QWR                      0x18
     873                 :            : 
     874                 :            : /* MTL traffic class register entry bit positions and sizes */
     875                 :            : #define MTL_TC_ETSCR_TSA_INDEX          0
     876                 :            : #define MTL_TC_ETSCR_TSA_WIDTH          2
     877                 :            : #define MTL_TC_QWR_QW_INDEX             0
     878                 :            : #define MTL_TC_QWR_QW_WIDTH             21
     879                 :            : #define MTL_TCPM0R_PSTC0_INDEX          0
     880                 :            : #define MTL_TCPM0R_PSTC0_WIDTH          8
     881                 :            : #define MTL_TCPM0R_PSTC1_INDEX          8
     882                 :            : #define MTL_TCPM0R_PSTC1_WIDTH          8
     883                 :            : #define MTL_TCPM0R_PSTC2_INDEX          16
     884                 :            : #define MTL_TCPM0R_PSTC2_WIDTH          8
     885                 :            : #define MTL_TCPM0R_PSTC3_INDEX          24
     886                 :            : #define MTL_TCPM0R_PSTC3_WIDTH          8
     887                 :            : #define MTL_TCPM1R_PSTC4_INDEX          0
     888                 :            : #define MTL_TCPM1R_PSTC4_WIDTH          8
     889                 :            : #define MTL_TCPM1R_PSTC5_INDEX          8
     890                 :            : #define MTL_TCPM1R_PSTC5_WIDTH          8
     891                 :            : #define MTL_TCPM1R_PSTC6_INDEX          16
     892                 :            : #define MTL_TCPM1R_PSTC6_WIDTH          8
     893                 :            : #define MTL_TCPM1R_PSTC7_INDEX          24
     894                 :            : #define MTL_TCPM1R_PSTC7_WIDTH          8
     895                 :            : 
     896                 :            : /* MTL traffic class register value */
     897                 :            : #define MTL_TSA_SP                      0x00
     898                 :            : #define MTL_TSA_ETS                     0x02
     899                 :            : 
     900                 :            : /* PCS register offsets */
     901                 :            : #define PCS_V1_WINDOW_SELECT            0x03fc
     902                 :            : #define PCS_V2_WINDOW_DEF               0x9060
     903                 :            : #define PCS_V2_WINDOW_SELECT            0x9064
     904                 :            : #define PCS_V2_RV_WINDOW_DEF            0x1060
     905                 :            : #define PCS_V2_RV_WINDOW_SELECT         0x1064
     906                 :            : #define PCS_V2_YC_WINDOW_DEF            0x18060
     907                 :            : #define PCS_V2_YC_WINDOW_SELECT         0x18064
     908                 :            : 
     909                 :            : /* PCS register entry bit positions and sizes */
     910                 :            : #define PCS_V2_WINDOW_DEF_OFFSET_INDEX  6
     911                 :            : #define PCS_V2_WINDOW_DEF_OFFSET_WIDTH  14
     912                 :            : #define PCS_V2_WINDOW_DEF_SIZE_INDEX    2
     913                 :            : #define PCS_V2_WINDOW_DEF_SIZE_WIDTH    4
     914                 :            : 
     915                 :            : /* SerDes integration register offsets */
     916                 :            : #define SIR0_KR_RT_1                    0x002c
     917                 :            : #define SIR0_STATUS                     0x0040
     918                 :            : #define SIR1_SPEED                      0x0000
     919                 :            : 
     920                 :            : /* SerDes integration register entry bit positions and sizes */
     921                 :            : #define SIR0_KR_RT_1_RESET_INDEX        11
     922                 :            : #define SIR0_KR_RT_1_RESET_WIDTH        1
     923                 :            : #define SIR0_STATUS_RX_READY_INDEX      0
     924                 :            : #define SIR0_STATUS_RX_READY_WIDTH      1
     925                 :            : #define SIR0_STATUS_TX_READY_INDEX      8
     926                 :            : #define SIR0_STATUS_TX_READY_WIDTH      1
     927                 :            : #define SIR1_SPEED_CDR_RATE_INDEX       12
     928                 :            : #define SIR1_SPEED_CDR_RATE_WIDTH       4
     929                 :            : #define SIR1_SPEED_DATARATE_INDEX       4
     930                 :            : #define SIR1_SPEED_DATARATE_WIDTH       2
     931                 :            : #define SIR1_SPEED_PLLSEL_INDEX         3
     932                 :            : #define SIR1_SPEED_PLLSEL_WIDTH         1
     933                 :            : #define SIR1_SPEED_RATECHANGE_INDEX     6
     934                 :            : #define SIR1_SPEED_RATECHANGE_WIDTH     1
     935                 :            : #define SIR1_SPEED_TXAMP_INDEX          8
     936                 :            : #define SIR1_SPEED_TXAMP_WIDTH          4
     937                 :            : #define SIR1_SPEED_WORDMODE_INDEX       0
     938                 :            : #define SIR1_SPEED_WORDMODE_WIDTH       3
     939                 :            : 
     940                 :            : /* SerDes RxTx register offsets */
     941                 :            : #define RXTX_REG6                       0x0018
     942                 :            : #define RXTX_REG20                      0x0050
     943                 :            : #define RXTX_REG22                      0x0058
     944                 :            : #define RXTX_REG114                     0x01c8
     945                 :            : #define RXTX_REG129                     0x0204
     946                 :            : 
     947                 :            : /* SerDes RxTx register entry bit positions and sizes */
     948                 :            : #define RXTX_REG6_RESETB_RXD_INDEX      8
     949                 :            : #define RXTX_REG6_RESETB_RXD_WIDTH      1
     950                 :            : #define RXTX_REG20_BLWC_ENA_INDEX       2
     951                 :            : #define RXTX_REG20_BLWC_ENA_WIDTH       1
     952                 :            : #define RXTX_REG114_PQ_REG_INDEX        9
     953                 :            : #define RXTX_REG114_PQ_REG_WIDTH        7
     954                 :            : #define RXTX_REG129_RXDFE_CONFIG_INDEX  14
     955                 :            : #define RXTX_REG129_RXDFE_CONFIG_WIDTH  2
     956                 :            : 
     957                 :            : /* MAC Control register offsets */
     958                 :            : #define XP_PROP_0                       0x0000
     959                 :            : #define XP_PROP_1                       0x0004
     960                 :            : #define XP_PROP_2                       0x0008
     961                 :            : #define XP_PROP_3                       0x000c
     962                 :            : #define XP_PROP_4                       0x0010
     963                 :            : #define XP_PROP_5                       0x0014
     964                 :            : #define XP_MAC_ADDR_LO                  0x0020
     965                 :            : #define XP_MAC_ADDR_HI                  0x0024
     966                 :            : #define XP_ECC_ISR                      0x0030
     967                 :            : #define XP_ECC_IER                      0x0034
     968                 :            : #define XP_ECC_CNT0                     0x003c
     969                 :            : #define XP_ECC_CNT1                     0x0040
     970                 :            : #define XP_DRIVER_INT_REQ               0x0060
     971                 :            : #define XP_DRIVER_INT_RO                0x0064
     972                 :            : #define XP_DRIVER_SCRATCH_0             0x0068
     973                 :            : #define XP_DRIVER_SCRATCH_1             0x006c
     974                 :            : #define XP_INT_EN                       0x0078
     975                 :            : #define XP_I2C_MUTEX                    0x0080
     976                 :            : #define XP_MDIO_MUTEX                   0x0084
     977                 :            : 
     978                 :            : /* MAC Control register entry bit positions and sizes */
     979                 :            : #define XP_DRIVER_INT_REQ_REQUEST_INDEX         0
     980                 :            : #define XP_DRIVER_INT_REQ_REQUEST_WIDTH         1
     981                 :            : #define XP_DRIVER_INT_RO_STATUS_INDEX           0
     982                 :            : #define XP_DRIVER_INT_RO_STATUS_WIDTH           1
     983                 :            : #define XP_DRIVER_SCRATCH_0_COMMAND_INDEX       0
     984                 :            : #define XP_DRIVER_SCRATCH_0_COMMAND_WIDTH       8
     985                 :            : #define XP_DRIVER_SCRATCH_0_SUB_COMMAND_INDEX   8
     986                 :            : #define XP_DRIVER_SCRATCH_0_SUB_COMMAND_WIDTH   8
     987                 :            : #define XP_ECC_CNT0_RX_DED_INDEX                24
     988                 :            : #define XP_ECC_CNT0_RX_DED_WIDTH                8
     989                 :            : #define XP_ECC_CNT0_RX_SEC_INDEX                16
     990                 :            : #define XP_ECC_CNT0_RX_SEC_WIDTH                8
     991                 :            : #define XP_ECC_CNT0_TX_DED_INDEX                8
     992                 :            : #define XP_ECC_CNT0_TX_DED_WIDTH                8
     993                 :            : #define XP_ECC_CNT0_TX_SEC_INDEX                0
     994                 :            : #define XP_ECC_CNT0_TX_SEC_WIDTH                8
     995                 :            : #define XP_ECC_CNT1_DESC_DED_INDEX              8
     996                 :            : #define XP_ECC_CNT1_DESC_DED_WIDTH              8
     997                 :            : #define XP_ECC_CNT1_DESC_SEC_INDEX              0
     998                 :            : #define XP_ECC_CNT1_DESC_SEC_WIDTH              8
     999                 :            : #define XP_ECC_IER_DESC_DED_INDEX               0
    1000                 :            : #define XP_ECC_IER_DESC_DED_WIDTH               1
    1001                 :            : #define XP_ECC_IER_DESC_SEC_INDEX               1
    1002                 :            : #define XP_ECC_IER_DESC_SEC_WIDTH               1
    1003                 :            : #define XP_ECC_IER_RX_DED_INDEX                 2
    1004                 :            : #define XP_ECC_IER_RX_DED_WIDTH                 1
    1005                 :            : #define XP_ECC_IER_RX_SEC_INDEX                 3
    1006                 :            : #define XP_ECC_IER_RX_SEC_WIDTH                 1
    1007                 :            : #define XP_ECC_IER_TX_DED_INDEX                 4
    1008                 :            : #define XP_ECC_IER_TX_DED_WIDTH                 1
    1009                 :            : #define XP_ECC_IER_TX_SEC_INDEX                 5
    1010                 :            : #define XP_ECC_IER_TX_SEC_WIDTH                 1
    1011                 :            : #define XP_ECC_ISR_DESC_DED_INDEX               0
    1012                 :            : #define XP_ECC_ISR_DESC_DED_WIDTH               1
    1013                 :            : #define XP_ECC_ISR_DESC_SEC_INDEX               1
    1014                 :            : #define XP_ECC_ISR_DESC_SEC_WIDTH               1
    1015                 :            : #define XP_ECC_ISR_RX_DED_INDEX                 2
    1016                 :            : #define XP_ECC_ISR_RX_DED_WIDTH                 1
    1017                 :            : #define XP_ECC_ISR_RX_SEC_INDEX                 3
    1018                 :            : #define XP_ECC_ISR_RX_SEC_WIDTH                 1
    1019                 :            : #define XP_ECC_ISR_TX_DED_INDEX                 4
    1020                 :            : #define XP_ECC_ISR_TX_DED_WIDTH                 1
    1021                 :            : #define XP_ECC_ISR_TX_SEC_INDEX                 5
    1022                 :            : #define XP_ECC_ISR_TX_SEC_WIDTH                 1
    1023                 :            : #define XP_I2C_MUTEX_BUSY_INDEX                 31
    1024                 :            : #define XP_I2C_MUTEX_BUSY_WIDTH                 1
    1025                 :            : #define XP_I2C_MUTEX_ID_INDEX                   29
    1026                 :            : #define XP_I2C_MUTEX_ID_WIDTH                   2
    1027                 :            : #define XP_I2C_MUTEX_ACTIVE_INDEX               0
    1028                 :            : #define XP_I2C_MUTEX_ACTIVE_WIDTH               1
    1029                 :            : #define XP_MAC_ADDR_HI_VALID_INDEX              31
    1030                 :            : #define XP_MAC_ADDR_HI_VALID_WIDTH              1
    1031                 :            : #define XP_PROP_0_CONN_TYPE_INDEX               28
    1032                 :            : #define XP_PROP_0_CONN_TYPE_WIDTH               3
    1033                 :            : #define XP_PROP_0_MDIO_ADDR_INDEX               16
    1034                 :            : #define XP_PROP_0_MDIO_ADDR_WIDTH               5
    1035                 :            : #define XP_PROP_0_PORT_ID_INDEX                 0
    1036                 :            : #define XP_PROP_0_PORT_ID_WIDTH                 8
    1037                 :            : #define XP_PROP_0_PORT_MODE_INDEX               8
    1038                 :            : #define XP_PROP_0_PORT_MODE_WIDTH               4
    1039                 :            : #define XP_PROP_0_PORT_SPEEDS_INDEX             22
    1040                 :            : #define XP_PROP_0_PORT_SPEEDS_WIDTH             5
    1041                 :            : #define XP_PROP_1_MAX_RX_DMA_INDEX              24
    1042                 :            : #define XP_PROP_1_MAX_RX_DMA_WIDTH              5
    1043                 :            : #define XP_PROP_1_MAX_RX_QUEUES_INDEX           8
    1044                 :            : #define XP_PROP_1_MAX_RX_QUEUES_WIDTH           5
    1045                 :            : #define XP_PROP_1_MAX_TX_DMA_INDEX              16
    1046                 :            : #define XP_PROP_1_MAX_TX_DMA_WIDTH              5
    1047                 :            : #define XP_PROP_1_MAX_TX_QUEUES_INDEX           0
    1048                 :            : #define XP_PROP_1_MAX_TX_QUEUES_WIDTH           5
    1049                 :            : #define XP_PROP_2_RX_FIFO_SIZE_INDEX            16
    1050                 :            : #define XP_PROP_2_RX_FIFO_SIZE_WIDTH            16
    1051                 :            : #define XP_PROP_2_TX_FIFO_SIZE_INDEX            0
    1052                 :            : #define XP_PROP_2_TX_FIFO_SIZE_WIDTH            16
    1053                 :            : #define XP_PROP_3_GPIO_MASK_INDEX               28
    1054                 :            : #define XP_PROP_3_GPIO_MASK_WIDTH               4
    1055                 :            : #define XP_PROP_3_GPIO_MOD_ABS_INDEX            20
    1056                 :            : #define XP_PROP_3_GPIO_MOD_ABS_WIDTH            4
    1057                 :            : #define XP_PROP_3_GPIO_RATE_SELECT_INDEX        16
    1058                 :            : #define XP_PROP_3_GPIO_RATE_SELECT_WIDTH        4
    1059                 :            : #define XP_PROP_3_GPIO_RX_LOS_INDEX             24
    1060                 :            : #define XP_PROP_3_GPIO_RX_LOS_WIDTH             4
    1061                 :            : #define XP_PROP_3_GPIO_TX_FAULT_INDEX           12
    1062                 :            : #define XP_PROP_3_GPIO_TX_FAULT_WIDTH           4
    1063                 :            : #define XP_PROP_3_GPIO_ADDR_INDEX               8
    1064                 :            : #define XP_PROP_3_GPIO_ADDR_WIDTH               3
    1065                 :            : #define XP_PROP_3_MDIO_RESET_INDEX              0
    1066                 :            : #define XP_PROP_3_MDIO_RESET_WIDTH              2
    1067                 :            : #define XP_PROP_3_MDIO_RESET_I2C_ADDR_INDEX     8
    1068                 :            : #define XP_PROP_3_MDIO_RESET_I2C_ADDR_WIDTH     3
    1069                 :            : #define XP_PROP_3_MDIO_RESET_I2C_GPIO_INDEX     12
    1070                 :            : #define XP_PROP_3_MDIO_RESET_I2C_GPIO_WIDTH     4
    1071                 :            : #define XP_PROP_3_MDIO_RESET_INT_GPIO_INDEX     4
    1072                 :            : #define XP_PROP_3_MDIO_RESET_INT_GPIO_WIDTH     2
    1073                 :            : #define XP_PROP_4_MUX_ADDR_HI_INDEX             8
    1074                 :            : #define XP_PROP_4_MUX_ADDR_HI_WIDTH             5
    1075                 :            : #define XP_PROP_4_MUX_ADDR_LO_INDEX             0
    1076                 :            : #define XP_PROP_4_MUX_ADDR_LO_WIDTH             3
    1077                 :            : #define XP_PROP_4_MUX_CHAN_INDEX                4
    1078                 :            : #define XP_PROP_4_MUX_CHAN_WIDTH                3
    1079                 :            : #define XP_PROP_4_REDRV_ADDR_INDEX              16
    1080                 :            : #define XP_PROP_4_REDRV_ADDR_WIDTH              7
    1081                 :            : #define XP_PROP_4_REDRV_IF_INDEX                23
    1082                 :            : #define XP_PROP_4_REDRV_IF_WIDTH                1
    1083                 :            : #define XP_PROP_4_REDRV_LANE_INDEX              24
    1084                 :            : #define XP_PROP_4_REDRV_LANE_WIDTH              3
    1085                 :            : #define XP_PROP_4_REDRV_MODEL_INDEX             28
    1086                 :            : #define XP_PROP_4_REDRV_MODEL_WIDTH             3
    1087                 :            : #define XP_PROP_4_REDRV_PRESENT_INDEX           31
    1088                 :            : #define XP_PROP_4_REDRV_PRESENT_WIDTH           1
    1089                 :            : 
    1090                 :            : /* I2C Control register offsets */
    1091                 :            : #define IC_CON                                  0x0000
    1092                 :            : #define IC_TAR                                  0x0004
    1093                 :            : #define IC_DATA_CMD                             0x0010
    1094                 :            : #define IC_INTR_STAT                            0x002c
    1095                 :            : #define IC_INTR_MASK                            0x0030
    1096                 :            : #define IC_RAW_INTR_STAT                        0x0034
    1097                 :            : #define IC_CLR_INTR                             0x0040
    1098                 :            : #define IC_CLR_TX_ABRT                          0x0054
    1099                 :            : #define IC_CLR_STOP_DET                         0x0060
    1100                 :            : #define IC_ENABLE                               0x006c
    1101                 :            : #define IC_TXFLR                                0x0074
    1102                 :            : #define IC_RXFLR                                0x0078
    1103                 :            : #define IC_TX_ABRT_SOURCE                       0x0080
    1104                 :            : #define IC_ENABLE_STATUS                        0x009c
    1105                 :            : #define IC_COMP_PARAM_1                         0x00f4
    1106                 :            : 
    1107                 :            : /* I2C Control register entry bit positions and sizes */
    1108                 :            : #define IC_COMP_PARAM_1_MAX_SPEED_MODE_INDEX    2
    1109                 :            : #define IC_COMP_PARAM_1_MAX_SPEED_MODE_WIDTH    2
    1110                 :            : #define IC_COMP_PARAM_1_RX_BUFFER_DEPTH_INDEX   8
    1111                 :            : #define IC_COMP_PARAM_1_RX_BUFFER_DEPTH_WIDTH   8
    1112                 :            : #define IC_COMP_PARAM_1_TX_BUFFER_DEPTH_INDEX   16
    1113                 :            : #define IC_COMP_PARAM_1_TX_BUFFER_DEPTH_WIDTH   8
    1114                 :            : #define IC_CON_MASTER_MODE_INDEX                0
    1115                 :            : #define IC_CON_MASTER_MODE_WIDTH                1
    1116                 :            : #define IC_CON_RESTART_EN_INDEX                 5
    1117                 :            : #define IC_CON_RESTART_EN_WIDTH                 1
    1118                 :            : #define IC_CON_RX_FIFO_FULL_HOLD_INDEX          9
    1119                 :            : #define IC_CON_RX_FIFO_FULL_HOLD_WIDTH          1
    1120                 :            : #define IC_CON_SLAVE_DISABLE_INDEX              6
    1121                 :            : #define IC_CON_SLAVE_DISABLE_WIDTH              1
    1122                 :            : #define IC_CON_SPEED_INDEX                      1
    1123                 :            : #define IC_CON_SPEED_WIDTH                      2
    1124                 :            : #define IC_DATA_CMD_CMD_INDEX                   8
    1125                 :            : #define IC_DATA_CMD_CMD_WIDTH                   1
    1126                 :            : #define IC_DATA_CMD_STOP_INDEX                  9
    1127                 :            : #define IC_DATA_CMD_STOP_WIDTH                  1
    1128                 :            : #define IC_ENABLE_ABORT_INDEX                   1
    1129                 :            : #define IC_ENABLE_ABORT_WIDTH                   1
    1130                 :            : #define IC_ENABLE_EN_INDEX                      0
    1131                 :            : #define IC_ENABLE_EN_WIDTH                      1
    1132                 :            : #define IC_ENABLE_STATUS_EN_INDEX               0
    1133                 :            : #define IC_ENABLE_STATUS_EN_WIDTH               1
    1134                 :            : #define IC_INTR_MASK_TX_EMPTY_INDEX             4
    1135                 :            : #define IC_INTR_MASK_TX_EMPTY_WIDTH             1
    1136                 :            : #define IC_RAW_INTR_STAT_RX_FULL_INDEX          2
    1137                 :            : #define IC_RAW_INTR_STAT_RX_FULL_WIDTH          1
    1138                 :            : #define IC_RAW_INTR_STAT_STOP_DET_INDEX         9
    1139                 :            : #define IC_RAW_INTR_STAT_STOP_DET_WIDTH         1
    1140                 :            : #define IC_RAW_INTR_STAT_TX_ABRT_INDEX          6
    1141                 :            : #define IC_RAW_INTR_STAT_TX_ABRT_WIDTH          1
    1142                 :            : #define IC_RAW_INTR_STAT_TX_EMPTY_INDEX         4
    1143                 :            : #define IC_RAW_INTR_STAT_TX_EMPTY_WIDTH         1
    1144                 :            : 
    1145                 :            : /* I2C Control register value */
    1146                 :            : #define IC_TX_ABRT_7B_ADDR_NOACK                0x0001
    1147                 :            : #define IC_TX_ABRT_ARB_LOST                     0x1000
    1148                 :            : 
    1149                 :            : /* Descriptor/Packet entry bit positions and sizes */
    1150                 :            : #define RX_PACKET_ERRORS_CRC_INDEX              2
    1151                 :            : #define RX_PACKET_ERRORS_CRC_WIDTH              1
    1152                 :            : #define RX_PACKET_ERRORS_FRAME_INDEX            3
    1153                 :            : #define RX_PACKET_ERRORS_FRAME_WIDTH            1
    1154                 :            : #define RX_PACKET_ERRORS_LENGTH_INDEX           0
    1155                 :            : #define RX_PACKET_ERRORS_LENGTH_WIDTH           1
    1156                 :            : #define RX_PACKET_ERRORS_OVERRUN_INDEX          1
    1157                 :            : #define RX_PACKET_ERRORS_OVERRUN_WIDTH          1
    1158                 :            : 
    1159                 :            : #define RX_PACKET_ATTRIBUTES_CSUM_DONE_INDEX    0
    1160                 :            : #define RX_PACKET_ATTRIBUTES_CSUM_DONE_WIDTH    1
    1161                 :            : #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_INDEX    1
    1162                 :            : #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_WIDTH    1
    1163                 :            : #define RX_PACKET_ATTRIBUTES_INCOMPLETE_INDEX   2
    1164                 :            : #define RX_PACKET_ATTRIBUTES_INCOMPLETE_WIDTH   1
    1165                 :            : #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_INDEX 3
    1166                 :            : #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_WIDTH 1
    1167                 :            : #define RX_PACKET_ATTRIBUTES_CONTEXT_INDEX      4
    1168                 :            : #define RX_PACKET_ATTRIBUTES_CONTEXT_WIDTH      1
    1169                 :            : #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_INDEX    5
    1170                 :            : #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_WIDTH    1
    1171                 :            : #define RX_PACKET_ATTRIBUTES_RSS_HASH_INDEX     6
    1172                 :            : #define RX_PACKET_ATTRIBUTES_RSS_HASH_WIDTH     1
    1173                 :            : 
    1174                 :            : #define RX_NORMAL_DESC0_OVT_INDEX               0
    1175                 :            : #define RX_NORMAL_DESC0_OVT_WIDTH               16
    1176                 :            : #define RX_NORMAL_DESC2_HL_INDEX                0
    1177                 :            : #define RX_NORMAL_DESC2_HL_WIDTH                10
    1178                 :            : #define RX_NORMAL_DESC3_CDA_INDEX               27
    1179                 :            : #define RX_NORMAL_DESC3_CDA_WIDTH               1
    1180                 :            : #define RX_NORMAL_DESC3_CTXT_INDEX              30
    1181                 :            : #define RX_NORMAL_DESC3_CTXT_WIDTH              1
    1182                 :            : #define RX_NORMAL_DESC3_ES_INDEX                15
    1183                 :            : #define RX_NORMAL_DESC3_ES_WIDTH                1
    1184                 :            : #define RX_NORMAL_DESC3_ETLT_INDEX              16
    1185                 :            : #define RX_NORMAL_DESC3_ETLT_WIDTH              4
    1186                 :            : #define RX_NORMAL_DESC3_FD_INDEX                29
    1187                 :            : #define RX_NORMAL_DESC3_FD_WIDTH                1
    1188                 :            : #define RX_NORMAL_DESC3_INTE_INDEX              30
    1189                 :            : #define RX_NORMAL_DESC3_INTE_WIDTH              1
    1190                 :            : #define RX_NORMAL_DESC3_L34T_INDEX              20
    1191                 :            : #define RX_NORMAL_DESC3_L34T_WIDTH              4
    1192                 :            : #define RX_NORMAL_DESC3_LD_INDEX                28
    1193                 :            : #define RX_NORMAL_DESC3_LD_WIDTH                1
    1194                 :            : #define RX_NORMAL_DESC3_OWN_INDEX               31
    1195                 :            : #define RX_NORMAL_DESC3_OWN_WIDTH               1
    1196                 :            : #define RX_NORMAL_DESC3_PL_INDEX                0
    1197                 :            : #define RX_NORMAL_DESC3_PL_WIDTH                14
    1198                 :            : #define RX_NORMAL_DESC3_RSV_INDEX               26
    1199                 :            : #define RX_NORMAL_DESC3_RSV_WIDTH               1
    1200                 :            : #define RX_NORMAL_DESC3_LD_INDEX                28
    1201                 :            : #define RX_NORMAL_DESC3_LD_WIDTH                1
    1202                 :            : 
    1203                 :            : #define RX_DESC3_L34T_IPV4_TCP                  1
    1204                 :            : #define RX_DESC3_L34T_IPV4_UDP                  2
    1205                 :            : #define RX_DESC3_L34T_IPV4_ICMP                 3
    1206                 :            : #define RX_DESC3_L34T_IPV6_TCP                  9
    1207                 :            : #define RX_DESC3_L34T_IPV6_UDP                  10
    1208                 :            : #define RX_DESC3_L34T_IPV6_ICMP                 11
    1209                 :            : 
    1210                 :            : #define RX_CONTEXT_DESC3_TSA_INDEX              4
    1211                 :            : #define RX_CONTEXT_DESC3_TSA_WIDTH              1
    1212                 :            : #define RX_CONTEXT_DESC3_TSD_INDEX              6
    1213                 :            : #define RX_CONTEXT_DESC3_TSD_WIDTH              1
    1214                 :            : #define RX_CONTEXT_DESC3_PMT_INDEX              0
    1215                 :            : #define RX_CONTEXT_DESC3_PMT_WIDTH              4
    1216                 :            : 
    1217                 :            : #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_INDEX  0
    1218                 :            : #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_WIDTH  1
    1219                 :            : #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_INDEX   1
    1220                 :            : #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_WIDTH   1
    1221                 :            : #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_INDEX    2
    1222                 :            : #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_WIDTH    1
    1223                 :            : #define TX_PACKET_ATTRIBUTES_PTP_INDEX          3
    1224                 :            : #define TX_PACKET_ATTRIBUTES_PTP_WIDTH          1
    1225                 :            : 
    1226                 :            : #define TX_CONTEXT_DESC2_MSS_INDEX              0
    1227                 :            : #define TX_CONTEXT_DESC2_MSS_WIDTH              15
    1228                 :            : #define TX_CONTEXT_DESC3_CTXT_INDEX             30
    1229                 :            : #define TX_CONTEXT_DESC3_CTXT_WIDTH             1
    1230                 :            : #define TX_CONTEXT_DESC3_TCMSSV_INDEX           26
    1231                 :            : #define TX_CONTEXT_DESC3_TCMSSV_WIDTH           1
    1232                 :            : #define TX_CONTEXT_DESC3_VLTV_INDEX             16
    1233                 :            : #define TX_CONTEXT_DESC3_VLTV_WIDTH             1
    1234                 :            : #define TX_CONTEXT_DESC3_VT_INDEX               0
    1235                 :            : #define TX_CONTEXT_DESC3_VT_WIDTH               16
    1236                 :            : 
    1237                 :            : /* TSO related register entry bit positions and sizes*/
    1238                 :            : #define TX_NORMAL_DESC3_TPL_INDEX               0
    1239                 :            : #define TX_NORMAL_DESC3_TPL_WIDTH               18
    1240                 :            : #define TX_NORMAL_DESC3_THL_INDEX               19
    1241                 :            : #define TX_NORMAL_DESC3_THL_WIDTH               4
    1242                 :            : #define TX_CONTEXT_DESC3_OSTC_INDEX             27
    1243                 :            : #define TX_CONTEXT_DESC3_OSTC_WIDTH             1
    1244                 :            : 
    1245                 :            : 
    1246                 :            : #define TX_NORMAL_DESC2_HL_B1L_INDEX            0
    1247                 :            : #define TX_NORMAL_DESC2_HL_B1L_WIDTH            14
    1248                 :            : #define TX_NORMAL_DESC2_IC_INDEX                31
    1249                 :            : #define TX_NORMAL_DESC2_IC_WIDTH                1
    1250                 :            : #define TX_NORMAL_DESC2_TTSE_INDEX              30
    1251                 :            : #define TX_NORMAL_DESC2_TTSE_WIDTH              1
    1252                 :            : #define TX_NORMAL_DESC2_VTIR_INDEX              14
    1253                 :            : #define TX_NORMAL_DESC2_VTIR_WIDTH              2
    1254                 :            : #define TX_NORMAL_DESC3_CIC_INDEX               16
    1255                 :            : #define TX_NORMAL_DESC3_CIC_WIDTH               2
    1256                 :            : #define TX_NORMAL_DESC3_CPC_INDEX               26
    1257                 :            : #define TX_NORMAL_DESC3_CPC_WIDTH               2
    1258                 :            : #define TX_NORMAL_DESC3_CTXT_INDEX              30
    1259                 :            : #define TX_NORMAL_DESC3_CTXT_WIDTH              1
    1260                 :            : #define TX_NORMAL_DESC3_FD_INDEX                29
    1261                 :            : #define TX_NORMAL_DESC3_FD_WIDTH                1
    1262                 :            : #define TX_NORMAL_DESC3_FL_INDEX                0
    1263                 :            : #define TX_NORMAL_DESC3_FL_WIDTH                15
    1264                 :            : #define TX_NORMAL_DESC3_LD_INDEX                28
    1265                 :            : #define TX_NORMAL_DESC3_LD_WIDTH                1
    1266                 :            : #define TX_NORMAL_DESC3_OWN_INDEX               31
    1267                 :            : #define TX_NORMAL_DESC3_OWN_WIDTH               1
    1268                 :            : #define TX_NORMAL_DESC3_TCPHDRLEN_INDEX         19
    1269                 :            : #define TX_NORMAL_DESC3_TCPHDRLEN_WIDTH         4
    1270                 :            : #define TX_NORMAL_DESC3_TCPPL_INDEX             0
    1271                 :            : #define TX_NORMAL_DESC3_TCPPL_WIDTH             18
    1272                 :            : #define TX_NORMAL_DESC3_TSE_INDEX               18
    1273                 :            : #define TX_NORMAL_DESC3_TSE_WIDTH               1
    1274                 :            : 
    1275                 :            : #define TX_NORMAL_DESC2_VLAN_INSERT             0x2
    1276                 :            : 
    1277                 :            : /* MDIO undefined or vendor specific registers */
    1278                 :            : #ifndef MDIO_PMA_10GBR_PMD_CTRL
    1279                 :            : #define MDIO_PMA_10GBR_PMD_CTRL         0x0096
    1280                 :            : #endif
    1281                 :            : 
    1282                 :            : #ifndef MDIO_PMA_10GBR_FECCTRL
    1283                 :            : #define MDIO_PMA_10GBR_FECCTRL          0x00ab
    1284                 :            : #endif
    1285                 :            : 
    1286                 :            : #ifndef MDIO_PMA_RX_CTRL1
    1287                 :            : #define MDIO_PMA_RX_CTRL1               0x8051
    1288                 :            : #endif
    1289                 :            : 
    1290                 :            : #ifndef MDIO_PMA_RX_LSTS
    1291                 :            : #define MDIO_PMA_RX_LSTS                0x018020
    1292                 :            : #endif
    1293                 :            : 
    1294                 :            : #ifndef MDIO_PMA_RX_EQ_CTRL4
    1295                 :            : #define MDIO_PMA_RX_EQ_CTRL4            0x0001805C
    1296                 :            : #endif
    1297                 :            : 
    1298                 :            : #ifndef MDIO_PMA_MP_MISC_STS
    1299                 :            : #define MDIO_PMA_MP_MISC_STS            0x0078
    1300                 :            : #endif
    1301                 :            : 
    1302                 :            : #ifndef MDIO_PMA_PHY_RX_EQ_CEU
    1303                 :            : #define MDIO_PMA_PHY_RX_EQ_CEU          0x1800E
    1304                 :            : #endif
    1305                 :            : 
    1306                 :            : #ifndef MDIO_PCS_DIG_CTRL
    1307                 :            : #define MDIO_PCS_DIG_CTRL               0x8000
    1308                 :            : #endif
    1309                 :            : 
    1310                 :            : #ifndef MDIO_PCS_DIGITAL_STAT
    1311                 :            : #define MDIO_PCS_DIGITAL_STAT           0x8010
    1312                 :            : #endif
    1313                 :            : 
    1314                 :            : #ifndef MDIO_AN_XNP
    1315                 :            : #define MDIO_AN_XNP                     0x0016
    1316                 :            : #endif
    1317                 :            : 
    1318                 :            : #ifndef MDIO_AN_LPX
    1319                 :            : #define MDIO_AN_LPX                     0x0019
    1320                 :            : #endif
    1321                 :            : 
    1322                 :            : #ifndef MDIO_AN_COMP_STAT
    1323                 :            : #define MDIO_AN_COMP_STAT               0x0030
    1324                 :            : #endif
    1325                 :            : 
    1326                 :            : #ifndef MDIO_AN_INTMASK
    1327                 :            : #define MDIO_AN_INTMASK                 0x8001
    1328                 :            : #endif
    1329                 :            : 
    1330                 :            : #ifndef MDIO_AN_INT
    1331                 :            : #define MDIO_AN_INT                     0x8002
    1332                 :            : #endif
    1333                 :            : 
    1334                 :            : #ifndef MDIO_VEND2_AN_ADVERTISE
    1335                 :            : #define MDIO_VEND2_AN_ADVERTISE         0x0004
    1336                 :            : #endif
    1337                 :            : 
    1338                 :            : #ifndef MDIO_VEND2_AN_LP_ABILITY
    1339                 :            : #define MDIO_VEND2_AN_LP_ABILITY        0x0005
    1340                 :            : #endif
    1341                 :            : 
    1342                 :            : #ifndef MDIO_VEND2_AN_CTRL
    1343                 :            : #define MDIO_VEND2_AN_CTRL              0x8001
    1344                 :            : #endif
    1345                 :            : 
    1346                 :            : #ifndef MDIO_VEND2_AN_STAT
    1347                 :            : #define MDIO_VEND2_AN_STAT              0x8002
    1348                 :            : #endif
    1349                 :            : 
    1350                 :            : #ifndef MDIO_VEND2_PMA_CDR_CONTROL
    1351                 :            : #define MDIO_VEND2_PMA_CDR_CONTROL      0x8056
    1352                 :            : #endif
    1353                 :            : 
    1354                 :            : #ifndef MDIO_VEND2_PMA_MISC_CTRL0
    1355                 :            : #define MDIO_VEND2_PMA_MISC_CTRL0       0x8090
    1356                 :            : #endif
    1357                 :            : 
    1358                 :            : 
    1359                 :            : #ifndef MDIO_CTRL1_SPEED1G
    1360                 :            : #define MDIO_CTRL1_SPEED1G              (MDIO_CTRL1_SPEED10G & ~BMCR_SPEED100)
    1361                 :            : #endif
    1362                 :            : 
    1363                 :            : #ifndef MDIO_VEND2_CTRL1_AN_ENABLE
    1364                 :            : #define MDIO_VEND2_CTRL1_AN_ENABLE      BIT(12)
    1365                 :            : #endif
    1366                 :            : 
    1367                 :            : #ifndef MDIO_VEND2_CTRL1_AN_RESTART
    1368                 :            : #define MDIO_VEND2_CTRL1_AN_RESTART     BIT(9)
    1369                 :            : #endif
    1370                 :            : 
    1371                 :            : #ifndef MDIO_VEND2_CTRL1_SS6
    1372                 :            : #define MDIO_VEND2_CTRL1_SS6            BIT(6)
    1373                 :            : #endif
    1374                 :            : 
    1375                 :            : #ifndef MDIO_VEND2_CTRL1_SS13
    1376                 :            : #define MDIO_VEND2_CTRL1_SS13           BIT(13)
    1377                 :            : #endif
    1378                 :            : 
    1379                 :            : /* MDIO mask values */
    1380                 :            : #define AXGBE_AN_CL73_INT_CMPLT         BIT(0)
    1381                 :            : #define AXGBE_AN_CL73_INC_LINK          BIT(1)
    1382                 :            : #define AXGBE_AN_CL73_PG_RCV            BIT(2)
    1383                 :            : #define AXGBE_AN_CL73_INT_MASK          0x07
    1384                 :            : 
    1385                 :            : #define AXGBE_XNP_MCF_NULL_MESSAGE      0x001
    1386                 :            : #define AXGBE_XNP_ACK_PROCESSED         BIT(12)
    1387                 :            : #define AXGBE_XNP_MP_FORMATTED          BIT(13)
    1388                 :            : #define AXGBE_XNP_NP_EXCHANGE           BIT(15)
    1389                 :            : 
    1390                 :            : #define AXGBE_KR_TRAINING_START         BIT(0)
    1391                 :            : #define AXGBE_KR_TRAINING_ENABLE        BIT(1)
    1392                 :            : 
    1393                 :            : #define AXGBE_PCS_CL37_BP               BIT(12)
    1394                 :            : #define XGBE_PCS_PSEQ_STATE_MASK        0x1c
    1395                 :            : #define XGBE_PCS_PSEQ_STATE_POWER_GOOD  0x10
    1396                 :            : 
    1397                 :            : #define AXGBE_AN_CL37_INT_CMPLT         BIT(0)
    1398                 :            : #define AXGBE_AN_CL37_INT_MASK          0x01
    1399                 :            : 
    1400                 :            : #define AXGBE_AN_CL37_HD_MASK           0x40
    1401                 :            : #define AXGBE_AN_CL37_FD_MASK           0x20
    1402                 :            : 
    1403                 :            : #define AXGBE_AN_CL37_PCS_MODE_MASK     0x06
    1404                 :            : #define AXGBE_AN_CL37_PCS_MODE_BASEX    0x00
    1405                 :            : #define AXGBE_AN_CL37_PCS_MODE_SGMII    0x04
    1406                 :            : #define AXGBE_AN_CL37_TX_CONFIG_MASK    0x08
    1407                 :            : #define AXGBE_AN_CL37_MII_CTRL_8BIT     0x0100
    1408                 :            : 
    1409                 :            : #define AXGBE_PMA_CDR_TRACK_EN_MASK     0x01
    1410                 :            : #define AXGBE_PMA_CDR_TRACK_EN_OFF      0x00
    1411                 :            : #define AXGBE_PMA_CDR_TRACK_EN_ON       0x01
    1412                 :            : 
    1413                 :            : /*generic*/
    1414                 :            : #define __iomem
    1415                 :            : 
    1416                 :            : #define rmb()     rte_rmb() /* dpdk rte provided rmb */
    1417                 :            : #define wmb()     rte_wmb() /* dpdk rte provided wmb */
    1418                 :            : 
    1419                 :            : #define __le16 u16
    1420                 :            : #define __le32 u32
    1421                 :            : #define __le64 u64
    1422                 :            : 
    1423                 :            : typedef         unsigned char       u8;
    1424                 :            : typedef         unsigned short      u16;
    1425                 :            : typedef         unsigned int        u32;
    1426                 :            : typedef         unsigned long long  u64;
    1427                 :            : typedef         unsigned long long  dma_addr_t;
    1428                 :            : 
    1429                 :            : static inline uint32_t low32_value(uint64_t addr)
    1430                 :            : {
    1431                 :          0 :         return (addr) & 0x0ffffffff;
    1432                 :            : }
    1433                 :            : 
    1434                 :            : static inline uint32_t high32_value(uint64_t addr)
    1435                 :            : {
    1436                 :          0 :         return (addr >> 32) & 0x0ffffffff;
    1437                 :            : }
    1438                 :            : 
    1439                 :            : #define XGBE_PMA_PLL_CTRL_MASK         BIT(15)
    1440                 :            : #define XGBE_PMA_PLL_CTRL_SET          BIT(15)
    1441                 :            : #define XGBE_PMA_PLL_CTRL_CLEAR                0x0000
    1442                 :            : 
    1443                 :            : #define XGBE_PMA_RX_RST_0_MASK         BIT(4)
    1444                 :            : #define XGBE_PMA_RX_RST_0_RESET_ON     0x10
    1445                 :            : #define XGBE_PMA_RX_RST_0_RESET_OFF    0x00
    1446                 :            : 
    1447                 :            : #define XGBE_PMA_RX_SIG_DET_0_MASK      BIT(4)
    1448                 :            : #define XGBE_PMA_RX_SIG_DET_0_ENABLE    BIT(4)
    1449                 :            : #define XGBE_PMA_RX_SIG_DET_0_DISABLE   0x0000
    1450                 :            : 
    1451                 :            : #define XGBE_PMA_RX_VALID_0_MASK        BIT(12)
    1452                 :            : #define XGBE_PMA_RX_VALID_0_ENABLE      BIT(12)
    1453                 :            : #define XGBE_PMA_RX_VALID_0_DISABLE     0x0000
    1454                 :            : 
    1455                 :            : #define XGBE_PMA_RX_AD_REQ_MASK         BIT(12)
    1456                 :            : #define XGBE_PMA_RX_AD_REQ_ENABLE       BIT(12)
    1457                 :            : #define XGBE_PMA_RX_AD_REQ_DISABLE      0x0000
    1458                 :            : 
    1459                 :            : #define XGBE_PMA_RX_ADPT_ACK_MASK       BIT(12)
    1460                 :            : #define XGBE_PMA_RX_ADPT_ACK            BIT(12)
    1461                 :            : 
    1462                 :            : #define XGBE_PMA_CFF_UPDTM1_VLD         BIT(8)
    1463                 :            : #define XGBE_PMA_CFF_UPDT0_VLD          BIT(9)
    1464                 :            : #define XGBE_PMA_CFF_UPDT1_VLD          BIT(10)
    1465                 :            : #define XGBE_PMA_CFF_UPDT_MASK          (XGBE_PMA_CFF_UPDTM1_VLD |\
    1466                 :            :                                          XGBE_PMA_CFF_UPDT0_VLD | \
    1467                 :            :                                          XGBE_PMA_CFF_UPDT1_VLD)
    1468                 :            : 
    1469                 :            : /*END*/
    1470                 :            : 
    1471                 :            : /* Bit setting and getting macros
    1472                 :            :  *  The get macro will extract the current bit field value from within
    1473                 :            :  *  the variable
    1474                 :            :  *
    1475                 :            :  *  The set macro will clear the current bit field value within the
    1476                 :            :  *  variable and then set the bit field of the variable to the
    1477                 :            :  *  specified value
    1478                 :            :  */
    1479                 :            : #define GET_BITS(_var, _index, _width)                                  \
    1480                 :            :         (((_var) >> (_index)) & ((0x1 << (_width)) - 1))
    1481                 :            : 
    1482                 :            : #define SET_BITS(_var, _index, _width, _val)                            \
    1483                 :            : do {                                                                    \
    1484                 :            :         (_var) &= ~(((0x1 << (_width)) - 1) << (_index));               \
    1485                 :            :         (_var) |= (((_val) & ((0x1 << (_width)) - 1)) << (_index));     \
    1486                 :            : } while (0)
    1487                 :            : 
    1488                 :            : #define GET_BITS_LE(_var, _index, _width)                               \
    1489                 :            :         ((rte_le_to_cpu_32((_var)) >> (_index)) & ((0x1 << (_width)) - 1))
    1490                 :            : 
    1491                 :            : #define SET_BITS_LE(_var, _index, _width, _val)                         \
    1492                 :            : do {                                                                    \
    1493                 :            :         (_var) &= rte_cpu_to_le_32(~(((0x1U << (_width)) - 1) << (_index)));\
    1494                 :            :         (_var) |= rte_cpu_to_le_32((((_val) &                               \
    1495                 :            :                               ((0x1U << (_width)) - 1)) << (_index)));      \
    1496                 :            : } while (0)
    1497                 :            : 
    1498                 :            : /* Bit setting and getting macros based on register fields
    1499                 :            :  *  The get macro uses the bit field definitions formed using the input
    1500                 :            :  *  names to extract the current bit field value from within the
    1501                 :            :  *  variable
    1502                 :            :  *
    1503                 :            :  *  The set macro uses the bit field definitions formed using the input
    1504                 :            :  *  names to set the bit field of the variable to the specified value
    1505                 :            :  */
    1506                 :            : #define AXGMAC_GET_BITS(_var, _prefix, _field)                          \
    1507                 :            :         GET_BITS((_var),                                                \
    1508                 :            :                  _prefix##_##_field##_INDEX,                            \
    1509                 :            :                  _prefix##_##_field##_WIDTH)
    1510                 :            : 
    1511                 :            : #define AXGMAC_SET_BITS(_var, _prefix, _field, _val)                    \
    1512                 :            :         SET_BITS((_var),                                                \
    1513                 :            :                  _prefix##_##_field##_INDEX,                            \
    1514                 :            :                  _prefix##_##_field##_WIDTH, (_val))
    1515                 :            : 
    1516                 :            : #define AXGMAC_GET_BITS_LE(_var, _prefix, _field)                       \
    1517                 :            :         GET_BITS_LE((_var),                                             \
    1518                 :            :                  _prefix##_##_field##_INDEX,                            \
    1519                 :            :                  _prefix##_##_field##_WIDTH)
    1520                 :            : 
    1521                 :            : #define AXGMAC_SET_BITS_LE(_var, _prefix, _field, _val)                 \
    1522                 :            :         SET_BITS_LE((_var),                                             \
    1523                 :            :                  _prefix##_##_field##_INDEX,                            \
    1524                 :            :                  _prefix##_##_field##_WIDTH, (_val))
    1525                 :            : 
    1526                 :            : /* Macros for reading or writing registers
    1527                 :            :  *  The ioread macros will get bit fields or full values using the
    1528                 :            :  *  register definitions formed using the input names
    1529                 :            :  *
    1530                 :            :  *  The iowrite macros will set bit fields or full values using the
    1531                 :            :  *  register definitions formed using the input names
    1532                 :            :  */
    1533                 :            : #define AXGMAC_IOREAD(_pdata, _reg)                                     \
    1534                 :            :         rte_read32((uint8_t *)((_pdata)->xgmac_regs) + (_reg))
    1535                 :            : 
    1536                 :            : #define AXGMAC_IOREAD_BITS(_pdata, _reg, _field)                        \
    1537                 :            :         GET_BITS(AXGMAC_IOREAD((_pdata), _reg),                         \
    1538                 :            :                  _reg##_##_field##_INDEX,                               \
    1539                 :            :                  _reg##_##_field##_WIDTH)
    1540                 :            : 
    1541                 :            : #define AXGMAC_IOWRITE(_pdata, _reg, _val)                              \
    1542                 :            :         rte_write32((_val),                                             \
    1543                 :            :                     (uint8_t *)((_pdata)->xgmac_regs) + (_reg))
    1544                 :            : 
    1545                 :            : #define AXGMAC_IOWRITE_BITS(_pdata, _reg, _field, _val)                 \
    1546                 :            : do {                                                                    \
    1547                 :            :         u32 reg_val = AXGMAC_IOREAD((_pdata), _reg);                    \
    1548                 :            :         SET_BITS(reg_val,                                               \
    1549                 :            :                  _reg##_##_field##_INDEX,                               \
    1550                 :            :                  _reg##_##_field##_WIDTH, (_val));                      \
    1551                 :            :         AXGMAC_IOWRITE((_pdata), _reg, reg_val);                        \
    1552                 :            : } while (0)
    1553                 :            : 
    1554                 :            : /* Macros for reading or writing MTL queue or traffic class registers
    1555                 :            :  *  Similar to the standard read and write macros except that the
    1556                 :            :  *  base register value is calculated by the queue or traffic class number
    1557                 :            :  */
    1558                 :            : #define AXGMAC_MTL_IOREAD(_pdata, _n, _reg)                             \
    1559                 :            :         rte_read32((uint8_t *)((_pdata)->xgmac_regs) +               \
    1560                 :            :                  MTL_Q_BASE + ((_n) * MTL_Q_INC) + (_reg))
    1561                 :            : 
    1562                 :            : #define AXGMAC_MTL_IOREAD_BITS(_pdata, _n, _reg, _field)                \
    1563                 :            :         GET_BITS(AXGMAC_MTL_IOREAD((_pdata), (_n), (_reg)),             \
    1564                 :            :                  _reg##_##_field##_INDEX,                               \
    1565                 :            :                  _reg##_##_field##_WIDTH)
    1566                 :            : 
    1567                 :            : #define AXGMAC_MTL_IOWRITE(_pdata, _n, _reg, _val)                      \
    1568                 :            :         rte_write32((_val), (uint8_t *)((_pdata)->xgmac_regs) +\
    1569                 :            :                   MTL_Q_BASE + ((_n) * MTL_Q_INC) + (_reg))
    1570                 :            : 
    1571                 :            : #define AXGMAC_MTL_IOWRITE_BITS(_pdata, _n, _reg, _field, _val)         \
    1572                 :            : do {                                                                    \
    1573                 :            :         u32 reg_val = AXGMAC_MTL_IOREAD((_pdata), (_n), _reg);          \
    1574                 :            :         SET_BITS(reg_val,                                               \
    1575                 :            :                  _reg##_##_field##_INDEX,                               \
    1576                 :            :                  _reg##_##_field##_WIDTH, (_val));                      \
    1577                 :            :         AXGMAC_MTL_IOWRITE((_pdata), (_n), _reg, reg_val);              \
    1578                 :            : } while (0)
    1579                 :            : 
    1580                 :            : /* Macros for reading or writing DMA channel registers
    1581                 :            :  *  Similar to the standard read and write macros except that the
    1582                 :            :  *  base register value is obtained from the ring
    1583                 :            :  */
    1584                 :            : #define AXGMAC_DMA_IOREAD(_channel, _reg)                               \
    1585                 :            :         rte_read32((uint8_t *)((_channel)->dma_regs) + (_reg))
    1586                 :            : 
    1587                 :            : #define AXGMAC_DMA_IOREAD_BITS(_channel, _reg, _field)                  \
    1588                 :            :         GET_BITS(AXGMAC_DMA_IOREAD((_channel), _reg),                   \
    1589                 :            :                  _reg##_##_field##_INDEX,                               \
    1590                 :            :                  _reg##_##_field##_WIDTH)
    1591                 :            : 
    1592                 :            : #define AXGMAC_DMA_IOWRITE(_channel, _reg, _val)                        \
    1593                 :            :         rte_write32((_val),                                             \
    1594                 :            :                     (uint8_t *)((_channel)->dma_regs) + (_reg))
    1595                 :            : 
    1596                 :            : #define AXGMAC_DMA_IOWRITE_BITS(_channel, _reg, _field, _val)           \
    1597                 :            : do {                                                                    \
    1598                 :            :         u32 reg_val = AXGMAC_DMA_IOREAD((_channel), _reg);              \
    1599                 :            :         SET_BITS(reg_val,                                               \
    1600                 :            :                  _reg##_##_field##_INDEX,                               \
    1601                 :            :                  _reg##_##_field##_WIDTH, (_val));                      \
    1602                 :            :         AXGMAC_DMA_IOWRITE((_channel), _reg, reg_val);                  \
    1603                 :            : } while (0)
    1604                 :            : 
    1605                 :            : /* Macros for building, reading or writing register values or bits
    1606                 :            :  * within the register values of XPCS registers.
    1607                 :            :  */
    1608                 :            : #define XPCS_GET_BITS(_var, _prefix, _field)                            \
    1609                 :            :         GET_BITS((_var),                                                \
    1610                 :            :                  _prefix##_##_field##_INDEX,                            \
    1611                 :            :                  _prefix##_##_field##_WIDTH)
    1612                 :            : 
    1613                 :            : #define XPCS_SET_BITS(_var, _prefix, _field, _val)                      \
    1614                 :            :         SET_BITS((_var),                                                \
    1615                 :            :                  _prefix##_##_field##_INDEX,                            \
    1616                 :            :                  _prefix##_##_field##_WIDTH, (_val))
    1617                 :            : 
    1618                 :            : #define XPCS32_IOWRITE(_pdata, _off, _val)                              \
    1619                 :            :         rte_write32(_val,                                               \
    1620                 :            :                     (uint8_t *)((_pdata)->xpcs_regs) + (_off))
    1621                 :            : 
    1622                 :            : #define XPCS32_IOREAD(_pdata, _off)                                     \
    1623                 :            :         rte_read32((uint8_t *)((_pdata)->xpcs_regs) + (_off))
    1624                 :            : 
    1625                 :            : #define XPCS16_IOWRITE(_pdata, _off, _val)                              \
    1626                 :            :         rte_write16(_val,                                               \
    1627                 :            :                     (uint8_t *)((_pdata)->xpcs_regs) + (_off))
    1628                 :            : 
    1629                 :            : #define XPCS16_IOREAD(_pdata, _off)                                     \
    1630                 :            :         rte_read16((uint8_t *)((_pdata)->xpcs_regs) + (_off))
    1631                 :            : 
    1632                 :            : /* Macros for building, reading or writing register values or bits
    1633                 :            :  * within the register values of SerDes integration registers.
    1634                 :            :  */
    1635                 :            : #define XSIR_GET_BITS(_var, _prefix, _field)                            \
    1636                 :            :         GET_BITS((_var),                                                \
    1637                 :            :                  _prefix##_##_field##_INDEX,                            \
    1638                 :            :                  _prefix##_##_field##_WIDTH)
    1639                 :            : 
    1640                 :            : #define XSIR_SET_BITS(_var, _prefix, _field, _val)                      \
    1641                 :            :         SET_BITS((_var),                                                \
    1642                 :            :                  _prefix##_##_field##_INDEX,                            \
    1643                 :            :                  _prefix##_##_field##_WIDTH, (_val))
    1644                 :            : 
    1645                 :            : #define XSIR0_IOREAD(_pdata, _reg)                                      \
    1646                 :            :         rte_read16((uint8_t *)((_pdata)->sir0_regs) + (_reg))
    1647                 :            : 
    1648                 :            : #define XSIR0_IOREAD_BITS(_pdata, _reg, _field)                         \
    1649                 :            :         GET_BITS(XSIR0_IOREAD((_pdata), _reg),                          \
    1650                 :            :                  _reg##_##_field##_INDEX,                               \
    1651                 :            :                  _reg##_##_field##_WIDTH)
    1652                 :            : 
    1653                 :            : #define XSIR0_IOWRITE(_pdata, _reg, _val)                               \
    1654                 :            :         rte_write16((_val),                                             \
    1655                 :            :                    (uint8_t *)((_pdata)->sir0_regs) + (_reg))
    1656                 :            : 
    1657                 :            : #define XSIR0_IOWRITE_BITS(_pdata, _reg, _field, _val)                  \
    1658                 :            : do {                                                                    \
    1659                 :            :         u16 reg_val = XSIR0_IOREAD((_pdata), _reg);                     \
    1660                 :            :         SET_BITS(reg_val,                                               \
    1661                 :            :                  _reg##_##_field##_INDEX,                               \
    1662                 :            :                  _reg##_##_field##_WIDTH, (_val));                      \
    1663                 :            :         XSIR0_IOWRITE((_pdata), _reg, reg_val);                         \
    1664                 :            : } while (0)
    1665                 :            : 
    1666                 :            : #define XSIR1_IOREAD(_pdata, _reg)                                      \
    1667                 :            :         rte_read16((uint8_t *)((_pdata)->sir1_regs) + _reg)
    1668                 :            : 
    1669                 :            : #define XSIR1_IOREAD_BITS(_pdata, _reg, _field)                         \
    1670                 :            :         GET_BITS(XSIR1_IOREAD((_pdata), _reg),                          \
    1671                 :            :                  _reg##_##_field##_INDEX,                               \
    1672                 :            :                  _reg##_##_field##_WIDTH)
    1673                 :            : 
    1674                 :            : #define XSIR1_IOWRITE(_pdata, _reg, _val)                               \
    1675                 :            :         rte_write16((_val),                                             \
    1676                 :            :                    (uint8_t *)((_pdata)->sir1_regs) + (_reg))
    1677                 :            : 
    1678                 :            : #define XSIR1_IOWRITE_BITS(_pdata, _reg, _field, _val)                  \
    1679                 :            : do {                                                                    \
    1680                 :            :         u16 reg_val = XSIR1_IOREAD((_pdata), _reg);                     \
    1681                 :            :         SET_BITS(reg_val,                                               \
    1682                 :            :                  _reg##_##_field##_INDEX,                               \
    1683                 :            :                  _reg##_##_field##_WIDTH, (_val));                      \
    1684                 :            :         XSIR1_IOWRITE((_pdata), _reg, reg_val);                         \
    1685                 :            : } while (0)
    1686                 :            : 
    1687                 :            : /* Macros for building, reading or writing register values or bits
    1688                 :            :  * within the register values of SerDes RxTx registers.
    1689                 :            :  */
    1690                 :            : #define XRXTX_IOREAD(_pdata, _reg)                                      \
    1691                 :            :         rte_read16((uint8_t *)((_pdata)->rxtx_regs) + (_reg))
    1692                 :            : 
    1693                 :            : #define XRXTX_IOREAD_BITS(_pdata, _reg, _field)                         \
    1694                 :            :         GET_BITS(XRXTX_IOREAD((_pdata), _reg),                          \
    1695                 :            :                  _reg##_##_field##_INDEX,                               \
    1696                 :            :                  _reg##_##_field##_WIDTH)
    1697                 :            : 
    1698                 :            : #define XRXTX_IOWRITE(_pdata, _reg, _val)                               \
    1699                 :            :         rte_write16((_val),                                             \
    1700                 :            :                     (uint8_t *)((_pdata)->rxtx_regs) + (_reg))
    1701                 :            : 
    1702                 :            : #define XRXTX_IOWRITE_BITS(_pdata, _reg, _field, _val)                  \
    1703                 :            : do {                                                                    \
    1704                 :            :         u16 reg_val = XRXTX_IOREAD((_pdata), _reg);                     \
    1705                 :            :         SET_BITS(reg_val,                                               \
    1706                 :            :                  _reg##_##_field##_INDEX,                               \
    1707                 :            :                  _reg##_##_field##_WIDTH, (_val));                      \
    1708                 :            :         XRXTX_IOWRITE((_pdata), _reg, reg_val);                         \
    1709                 :            : } while (0)
    1710                 :            : 
    1711                 :            : /* Macros for building, reading or writing register values or bits
    1712                 :            :  * within the register values of MAC Control registers.
    1713                 :            :  */
    1714                 :            : #define XP_GET_BITS(_var, _prefix, _field)                              \
    1715                 :            :         GET_BITS((_var),                                                \
    1716                 :            :                  _prefix##_##_field##_INDEX,                            \
    1717                 :            :                  _prefix##_##_field##_WIDTH)
    1718                 :            : 
    1719                 :            : #define XP_SET_BITS(_var, _prefix, _field, _val)                        \
    1720                 :            :         SET_BITS((_var),                                                \
    1721                 :            :                  _prefix##_##_field##_INDEX,                            \
    1722                 :            :                  _prefix##_##_field##_WIDTH, (_val))
    1723                 :            : 
    1724                 :            : #define XP_IOREAD(_pdata, _reg)                                         \
    1725                 :            :         rte_read32((uint8_t *)((_pdata)->xprop_regs) + (_reg))
    1726                 :            : 
    1727                 :            : #define XP_IOREAD_BITS(_pdata, _reg, _field)                            \
    1728                 :            :         GET_BITS(XP_IOREAD((_pdata), (_reg)),                           \
    1729                 :            :                  _reg##_##_field##_INDEX,                               \
    1730                 :            :                  _reg##_##_field##_WIDTH)
    1731                 :            : 
    1732                 :            : #define XP_IOWRITE(_pdata, _reg, _val)                                  \
    1733                 :            :         rte_write32((_val),                                             \
    1734                 :            :                     (uint8_t *)((_pdata)->xprop_regs) + (_reg))
    1735                 :            : 
    1736                 :            : #define XP_IOWRITE_BITS(_pdata, _reg, _field, _val)                     \
    1737                 :            : do {                                                                    \
    1738                 :            :         u32 reg_val = XP_IOREAD((_pdata), (_reg));                      \
    1739                 :            :         SET_BITS(reg_val,                                               \
    1740                 :            :                  _reg##_##_field##_INDEX,                               \
    1741                 :            :                  _reg##_##_field##_WIDTH, (_val));                      \
    1742                 :            :         XP_IOWRITE((_pdata), (_reg), reg_val);                          \
    1743                 :            : } while (0)
    1744                 :            : 
    1745                 :            : /* Macros for building, reading or writing register values or bits
    1746                 :            :  * within the register values of I2C Control registers.
    1747                 :            :  */
    1748                 :            : #define XI2C_GET_BITS(_var, _prefix, _field)                            \
    1749                 :            :         GET_BITS((_var),                                                \
    1750                 :            :                  _prefix##_##_field##_INDEX,                            \
    1751                 :            :                  _prefix##_##_field##_WIDTH)
    1752                 :            : 
    1753                 :            : #define XI2C_SET_BITS(_var, _prefix, _field, _val)                      \
    1754                 :            :         SET_BITS((_var),                                                \
    1755                 :            :                  _prefix##_##_field##_INDEX,                            \
    1756                 :            :                  _prefix##_##_field##_WIDTH, (_val))
    1757                 :            : 
    1758                 :            : #define XI2C_IOREAD(_pdata, _reg)                                       \
    1759                 :            :         rte_read32((uint8_t *)((_pdata)->xi2c_regs) + (_reg))
    1760                 :            : 
    1761                 :            : #define XI2C_IOREAD_BITS(_pdata, _reg, _field)                          \
    1762                 :            :         GET_BITS(XI2C_IOREAD((_pdata), (_reg)),                         \
    1763                 :            :                  _reg##_##_field##_INDEX,                               \
    1764                 :            :                  _reg##_##_field##_WIDTH)
    1765                 :            : 
    1766                 :            : #define XI2C_IOWRITE(_pdata, _reg, _val)                                \
    1767                 :            :         rte_write32((_val),                                             \
    1768                 :            :                     (uint8_t *)((_pdata)->xi2c_regs) + (_reg))
    1769                 :            : 
    1770                 :            : #define XI2C_IOWRITE_BITS(_pdata, _reg, _field, _val)                   \
    1771                 :            : do {                                                                    \
    1772                 :            :         u32 reg_val = XI2C_IOREAD((_pdata), (_reg));                    \
    1773                 :            :         SET_BITS(reg_val,                                               \
    1774                 :            :                  _reg##_##_field##_INDEX,                               \
    1775                 :            :                  _reg##_##_field##_WIDTH, (_val));                      \
    1776                 :            :         XI2C_IOWRITE((_pdata), (_reg), reg_val);                        \
    1777                 :            : } while (0)
    1778                 :            : 
    1779                 :            : /* Macros for building, reading or writing register values or bits
    1780                 :            :  * using MDIO.  Different from above because of the use of standardized
    1781                 :            :  * Linux include values.  No shifting is performed with the bit
    1782                 :            :  * operations, everything works on mask values.
    1783                 :            :  */
    1784                 :            : #define XMDIO_READ(_pdata, _mmd, _reg)                                  \
    1785                 :            :         ((_pdata)->hw_if.read_mmd_regs((_pdata), 0,                  \
    1786                 :            :                 AXGBE_ADDR_C45 | ((_mmd) << 16) | ((_reg) & 0xffff)))
    1787                 :            : 
    1788                 :            : #define XMDIO_READ_BITS(_pdata, _mmd, _reg, _mask)                      \
    1789                 :            :         (XMDIO_READ((_pdata), _mmd, _reg) & _mask)
    1790                 :            : 
    1791                 :            : #define XMDIO_WRITE(_pdata, _mmd, _reg, _val)                           \
    1792                 :            :         ((_pdata)->hw_if.write_mmd_regs((_pdata), 0,                 \
    1793                 :            :                 AXGBE_ADDR_C45 | ((_mmd) << 16) | ((_reg) & 0xffff), (_val)))
    1794                 :            : 
    1795                 :            : #define XMDIO_WRITE_BITS(_pdata, _mmd, _reg, _mask, _val)               \
    1796                 :            : do {                                                                    \
    1797                 :            :         u32 mmd_val = XMDIO_READ((_pdata), (_mmd), (_reg));             \
    1798                 :            :         mmd_val &= ~(_mask);                                                \
    1799                 :            :         mmd_val |= (_val);                                              \
    1800                 :            :         XMDIO_WRITE((_pdata), (_mmd), (_reg), (mmd_val));               \
    1801                 :            : } while (0)
    1802                 :            : 
    1803                 :            : /*
    1804                 :            :  * time_after(a,b) returns true if the time a is after time b.
    1805                 :            :  *
    1806                 :            :  * Do this with "<0" and ">=0" to only test the sign of the result. A
    1807                 :            :  * good compiler would generate better code (and a really good compiler
    1808                 :            :  * wouldn't care). Gcc is currently neither.
    1809                 :            :  */
    1810                 :            : #define time_after(a, b)        ((long)((b) - (a)) < 0)
    1811                 :            : #define time_before(a, b)       time_after(b, a)
    1812                 :            : 
    1813                 :            : #define time_after_eq(a, b)     ((long)((a) - (b)) >= 0)
    1814                 :            : #define time_before_eq(a, b)    time_after_eq(b, a)
    1815                 :            : 
    1816                 :            : static inline unsigned long msecs_to_timer_cycles(unsigned int m)
    1817                 :            : {
    1818                 :            :         return rte_get_timer_hz() * (m / 1000);
    1819                 :            : }
    1820                 :            : 
    1821                 :            : #endif /* __AXGBE_COMMON_H__ */

Generated by: LCOV version 1.14