18691632fSRavi Kumar /* SPDX-License-Identifier: BSD-3-Clause 28691632fSRavi Kumar * Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved. 38691632fSRavi Kumar * Copyright(c) 2018 Synopsys, Inc. All rights reserved. 48691632fSRavi Kumar */ 58691632fSRavi Kumar 68691632fSRavi Kumar #ifndef __AXGBE_COMMON_H__ 78691632fSRavi Kumar #define __AXGBE_COMMON_H__ 88691632fSRavi Kumar 98691632fSRavi Kumar #include "axgbe_logs.h" 108691632fSRavi Kumar 118691632fSRavi Kumar #include <stdbool.h> 128691632fSRavi Kumar #include <limits.h> 138691632fSRavi Kumar #include <sys/queue.h> 148691632fSRavi Kumar #include <stdio.h> 158691632fSRavi Kumar #include <stdlib.h> 168691632fSRavi Kumar #include <string.h> 178691632fSRavi Kumar #include <errno.h> 188691632fSRavi Kumar #include <stdint.h> 198691632fSRavi Kumar #include <stdarg.h> 208691632fSRavi Kumar #include <unistd.h> 218691632fSRavi Kumar #include <inttypes.h> 228691632fSRavi Kumar #include <pthread.h> 238691632fSRavi Kumar 244693ae4aSJoyce Kong #include <rte_bitops.h> 258691632fSRavi Kumar #include <rte_byteorder.h> 268691632fSRavi Kumar #include <rte_memory.h> 278691632fSRavi Kumar #include <rte_malloc.h> 288691632fSRavi Kumar #include <rte_hexdump.h> 298691632fSRavi Kumar #include <rte_log.h> 308691632fSRavi Kumar #include <rte_debug.h> 318691632fSRavi Kumar #include <rte_branch_prediction.h> 328691632fSRavi Kumar #include <rte_eal.h> 338691632fSRavi Kumar #include <rte_memzone.h> 348691632fSRavi Kumar #include <rte_ether.h> 358691632fSRavi Kumar #include <rte_ethdev.h> 361acb7f54SDavid Marchand #include <dev_driver.h> 378691632fSRavi Kumar #include <rte_errno.h> 38df96fd0dSBruce Richardson #include <ethdev_pci.h> 398691632fSRavi Kumar #include <rte_common.h> 408691632fSRavi Kumar #include <rte_cycles.h> 418691632fSRavi Kumar #include <rte_io.h> 428691632fSRavi Kumar 438691632fSRavi Kumar #define BIT(nr) (1 << (nr)) 448691632fSRavi Kumar #ifndef ARRAY_SIZE 45a3c9a11aSAndrew Boyer #define ARRAY_SIZE(arr) RTE_DIM(arr) 468691632fSRavi Kumar #endif 478691632fSRavi Kumar 488691632fSRavi Kumar #define AXGBE_HZ 250 49e0444948SSelwin Sebastian #define NSEC_PER_SEC 1000000000L 508691632fSRavi Kumar 5169e209beSRavi Kumar /* DMA register offsets */ 5269e209beSRavi Kumar #define DMA_MR 0x3000 5369e209beSRavi Kumar #define DMA_SBMR 0x3004 5469e209beSRavi Kumar #define DMA_ISR 0x3008 5569e209beSRavi Kumar #define DMA_AXIARCR 0x3010 5669e209beSRavi Kumar #define DMA_AXIAWCR 0x3018 5769e209beSRavi Kumar #define DMA_AXIAWRCR 0x301c 5869e209beSRavi Kumar #define DMA_DSR0 0x3020 5969e209beSRavi Kumar #define DMA_DSR1 0x3024 6069e209beSRavi Kumar #define EDMA_TX_CONTROL 0x3040 6169e209beSRavi Kumar #define EDMA_RX_CONTROL 0x3044 6269e209beSRavi Kumar 6369e209beSRavi Kumar /* DMA register entry bit positions and sizes */ 6469e209beSRavi Kumar #define DMA_AXIARCR_DRC_INDEX 0 6569e209beSRavi Kumar #define DMA_AXIARCR_DRC_WIDTH 4 6669e209beSRavi Kumar #define DMA_AXIARCR_DRD_INDEX 4 6769e209beSRavi Kumar #define DMA_AXIARCR_DRD_WIDTH 2 6869e209beSRavi Kumar #define DMA_AXIARCR_TEC_INDEX 8 6969e209beSRavi Kumar #define DMA_AXIARCR_TEC_WIDTH 4 7069e209beSRavi Kumar #define DMA_AXIARCR_TED_INDEX 12 7169e209beSRavi Kumar #define DMA_AXIARCR_TED_WIDTH 2 7269e209beSRavi Kumar #define DMA_AXIARCR_THC_INDEX 16 7369e209beSRavi Kumar #define DMA_AXIARCR_THC_WIDTH 4 7469e209beSRavi Kumar #define DMA_AXIARCR_THD_INDEX 20 7569e209beSRavi Kumar #define DMA_AXIARCR_THD_WIDTH 2 7669e209beSRavi Kumar #define DMA_AXIAWCR_DWC_INDEX 0 7769e209beSRavi Kumar #define DMA_AXIAWCR_DWC_WIDTH 4 7869e209beSRavi Kumar #define DMA_AXIAWCR_DWD_INDEX 4 7969e209beSRavi Kumar #define DMA_AXIAWCR_DWD_WIDTH 2 8069e209beSRavi Kumar #define DMA_AXIAWCR_RPC_INDEX 8 8169e209beSRavi Kumar #define DMA_AXIAWCR_RPC_WIDTH 4 8269e209beSRavi Kumar #define DMA_AXIAWCR_RPD_INDEX 12 8369e209beSRavi Kumar #define DMA_AXIAWCR_RPD_WIDTH 2 8469e209beSRavi Kumar #define DMA_AXIAWCR_RHC_INDEX 16 8569e209beSRavi Kumar #define DMA_AXIAWCR_RHC_WIDTH 4 8669e209beSRavi Kumar #define DMA_AXIAWCR_RHD_INDEX 20 8769e209beSRavi Kumar #define DMA_AXIAWCR_RHD_WIDTH 2 8869e209beSRavi Kumar #define DMA_AXIAWCR_RDC_INDEX 24 8969e209beSRavi Kumar #define DMA_AXIAWCR_RDC_WIDTH 4 9069e209beSRavi Kumar #define DMA_AXIAWCR_RDD_INDEX 28 9169e209beSRavi Kumar #define DMA_AXIAWCR_RDD_WIDTH 2 9269e209beSRavi Kumar #define DMA_AXIAWRCR_TDWC_INDEX 0 9369e209beSRavi Kumar #define DMA_AXIAWRCR_TDWC_WIDTH 4 9469e209beSRavi Kumar #define DMA_AXIAWRCR_TDWD_INDEX 4 9569e209beSRavi Kumar #define DMA_AXIAWRCR_TDWD_WIDTH 4 9669e209beSRavi Kumar #define DMA_AXIAWRCR_RDRC_INDEX 8 9769e209beSRavi Kumar #define DMA_AXIAWRCR_RDRC_WIDTH 4 9869e209beSRavi Kumar #define DMA_ISR_MACIS_INDEX 17 9969e209beSRavi Kumar #define DMA_ISR_MACIS_WIDTH 1 10069e209beSRavi Kumar #define DMA_ISR_MTLIS_INDEX 16 10169e209beSRavi Kumar #define DMA_ISR_MTLIS_WIDTH 1 10269e209beSRavi Kumar #define DMA_MR_INTM_INDEX 12 10369e209beSRavi Kumar #define DMA_MR_INTM_WIDTH 2 10469e209beSRavi Kumar #define DMA_MR_SWR_INDEX 0 10569e209beSRavi Kumar #define DMA_MR_SWR_WIDTH 1 10669e209beSRavi Kumar #define DMA_SBMR_WR_OSR_INDEX 24 10769e209beSRavi Kumar #define DMA_SBMR_WR_OSR_WIDTH 6 10869e209beSRavi Kumar #define DMA_SBMR_RD_OSR_INDEX 16 10969e209beSRavi Kumar #define DMA_SBMR_RD_OSR_WIDTH 6 11069e209beSRavi Kumar #define DMA_SBMR_AAL_INDEX 12 11169e209beSRavi Kumar #define DMA_SBMR_AAL_WIDTH 1 11269e209beSRavi Kumar #define DMA_SBMR_EAME_INDEX 11 11369e209beSRavi Kumar #define DMA_SBMR_EAME_WIDTH 1 11469e209beSRavi Kumar #define DMA_SBMR_BLEN_256_INDEX 7 11569e209beSRavi Kumar #define DMA_SBMR_BLEN_256_WIDTH 1 11669e209beSRavi Kumar #define DMA_SBMR_BLEN_32_INDEX 4 11769e209beSRavi Kumar #define DMA_SBMR_BLEN_32_WIDTH 1 11869e209beSRavi Kumar #define DMA_SBMR_UNDEF_INDEX 0 11969e209beSRavi Kumar #define DMA_SBMR_UNDEF_WIDTH 1 12069e209beSRavi Kumar 12169e209beSRavi Kumar /* DMA register values */ 12269e209beSRavi Kumar #define DMA_DSR_RPS_WIDTH 4 12369e209beSRavi Kumar #define DMA_DSR_TPS_WIDTH 4 12469e209beSRavi Kumar #define DMA_DSR_Q_WIDTH (DMA_DSR_RPS_WIDTH + DMA_DSR_TPS_WIDTH) 12569e209beSRavi Kumar #define DMA_DSR0_RPS_START 8 12669e209beSRavi Kumar #define DMA_DSR0_TPS_START 12 12769e209beSRavi Kumar #define DMA_DSRX_FIRST_QUEUE 3 12869e209beSRavi Kumar #define DMA_DSRX_INC 4 12969e209beSRavi Kumar #define DMA_DSRX_QPR 4 13069e209beSRavi Kumar #define DMA_DSRX_RPS_START 0 13169e209beSRavi Kumar #define DMA_DSRX_TPS_START 4 13269e209beSRavi Kumar #define DMA_TPS_STOPPED 0x00 13369e209beSRavi Kumar #define DMA_TPS_SUSPENDED 0x06 13469e209beSRavi Kumar 13569e209beSRavi Kumar /* DMA channel register offsets 13669e209beSRavi Kumar * Multiple channels can be active. The first channel has registers 13769e209beSRavi Kumar * that begin at 0x3100. Each subsequent channel has registers that 13869e209beSRavi Kumar * are accessed using an offset of 0x80 from the previous channel. 13969e209beSRavi Kumar */ 14069e209beSRavi Kumar #define DMA_CH_BASE 0x3100 14169e209beSRavi Kumar #define DMA_CH_INC 0x80 14269e209beSRavi Kumar 14369e209beSRavi Kumar #define DMA_CH_CR 0x00 14469e209beSRavi Kumar #define DMA_CH_TCR 0x04 14569e209beSRavi Kumar #define DMA_CH_RCR 0x08 14669e209beSRavi Kumar #define DMA_CH_TDLR_HI 0x10 14769e209beSRavi Kumar #define DMA_CH_TDLR_LO 0x14 14869e209beSRavi Kumar #define DMA_CH_RDLR_HI 0x18 14969e209beSRavi Kumar #define DMA_CH_RDLR_LO 0x1c 15069e209beSRavi Kumar #define DMA_CH_TDTR_LO 0x24 15169e209beSRavi Kumar #define DMA_CH_RDTR_LO 0x2c 15269e209beSRavi Kumar #define DMA_CH_TDRLR 0x30 15369e209beSRavi Kumar #define DMA_CH_RDRLR 0x34 15469e209beSRavi Kumar #define DMA_CH_IER 0x38 15569e209beSRavi Kumar #define DMA_CH_RIWT 0x3c 15669e209beSRavi Kumar #define DMA_CH_CATDR_LO 0x44 15769e209beSRavi Kumar #define DMA_CH_CARDR_LO 0x4c 15869e209beSRavi Kumar #define DMA_CH_CATBR_HI 0x50 15969e209beSRavi Kumar #define DMA_CH_CATBR_LO 0x54 16069e209beSRavi Kumar #define DMA_CH_CARBR_HI 0x58 16169e209beSRavi Kumar #define DMA_CH_CARBR_LO 0x5c 16269e209beSRavi Kumar #define DMA_CH_SR 0x60 16369e209beSRavi Kumar 164*186f8e8cSJesna K E /* Setting MSS register entry bit positions and sizes for TSO */ 165*186f8e8cSJesna K E #define DMA_CH_CR_MSS_INDEX 0 166*186f8e8cSJesna K E #define DMA_CH_CR_MSS_WIDTH 14 167*186f8e8cSJesna K E 16869e209beSRavi Kumar /* DMA channel register entry bit positions and sizes */ 16969e209beSRavi Kumar #define DMA_CH_CR_PBLX8_INDEX 16 17069e209beSRavi Kumar #define DMA_CH_CR_PBLX8_WIDTH 1 17169e209beSRavi Kumar #define DMA_CH_CR_SPH_INDEX 24 17269e209beSRavi Kumar #define DMA_CH_CR_SPH_WIDTH 1 17369e209beSRavi Kumar #define DMA_CH_IER_AIE_INDEX 14 17469e209beSRavi Kumar #define DMA_CH_IER_AIE_WIDTH 1 17569e209beSRavi Kumar #define DMA_CH_IER_FBEE_INDEX 12 17669e209beSRavi Kumar #define DMA_CH_IER_FBEE_WIDTH 1 17769e209beSRavi Kumar #define DMA_CH_IER_NIE_INDEX 15 17869e209beSRavi Kumar #define DMA_CH_IER_NIE_WIDTH 1 17969e209beSRavi Kumar #define DMA_CH_IER_RBUE_INDEX 7 18069e209beSRavi Kumar #define DMA_CH_IER_RBUE_WIDTH 1 18169e209beSRavi Kumar #define DMA_CH_IER_RIE_INDEX 6 18269e209beSRavi Kumar #define DMA_CH_IER_RIE_WIDTH 1 18369e209beSRavi Kumar #define DMA_CH_IER_RSE_INDEX 8 18469e209beSRavi Kumar #define DMA_CH_IER_RSE_WIDTH 1 18569e209beSRavi Kumar #define DMA_CH_IER_TBUE_INDEX 2 18669e209beSRavi Kumar #define DMA_CH_IER_TBUE_WIDTH 1 18769e209beSRavi Kumar #define DMA_CH_IER_TIE_INDEX 0 18869e209beSRavi Kumar #define DMA_CH_IER_TIE_WIDTH 1 18969e209beSRavi Kumar #define DMA_CH_IER_TXSE_INDEX 1 19069e209beSRavi Kumar #define DMA_CH_IER_TXSE_WIDTH 1 19169e209beSRavi Kumar #define DMA_CH_RCR_PBL_INDEX 16 19269e209beSRavi Kumar #define DMA_CH_RCR_PBL_WIDTH 6 19369e209beSRavi Kumar #define DMA_CH_RCR_RBSZ_INDEX 1 19469e209beSRavi Kumar #define DMA_CH_RCR_RBSZ_WIDTH 14 19569e209beSRavi Kumar #define DMA_CH_RCR_SR_INDEX 0 19669e209beSRavi Kumar #define DMA_CH_RCR_SR_WIDTH 1 19769e209beSRavi Kumar #define DMA_CH_RIWT_RWT_INDEX 0 19869e209beSRavi Kumar #define DMA_CH_RIWT_RWT_WIDTH 8 19969e209beSRavi Kumar #define DMA_CH_SR_FBE_INDEX 12 20069e209beSRavi Kumar #define DMA_CH_SR_FBE_WIDTH 1 20169e209beSRavi Kumar #define DMA_CH_SR_RBU_INDEX 7 20269e209beSRavi Kumar #define DMA_CH_SR_RBU_WIDTH 1 20369e209beSRavi Kumar #define DMA_CH_SR_RI_INDEX 6 20469e209beSRavi Kumar #define DMA_CH_SR_RI_WIDTH 1 20569e209beSRavi Kumar #define DMA_CH_SR_RPS_INDEX 8 20669e209beSRavi Kumar #define DMA_CH_SR_RPS_WIDTH 1 20769e209beSRavi Kumar #define DMA_CH_SR_TBU_INDEX 2 20869e209beSRavi Kumar #define DMA_CH_SR_TBU_WIDTH 1 20969e209beSRavi Kumar #define DMA_CH_SR_TI_INDEX 0 21069e209beSRavi Kumar #define DMA_CH_SR_TI_WIDTH 1 21169e209beSRavi Kumar #define DMA_CH_SR_TPS_INDEX 1 21269e209beSRavi Kumar #define DMA_CH_SR_TPS_WIDTH 1 21369e209beSRavi Kumar #define DMA_CH_TCR_OSP_INDEX 4 21469e209beSRavi Kumar #define DMA_CH_TCR_OSP_WIDTH 1 21569e209beSRavi Kumar #define DMA_CH_TCR_PBL_INDEX 16 21669e209beSRavi Kumar #define DMA_CH_TCR_PBL_WIDTH 6 21769e209beSRavi Kumar #define DMA_CH_TCR_ST_INDEX 0 21869e209beSRavi Kumar #define DMA_CH_TCR_ST_WIDTH 1 21969e209beSRavi Kumar #define DMA_CH_TCR_TSE_INDEX 12 22069e209beSRavi Kumar #define DMA_CH_TCR_TSE_WIDTH 1 22169e209beSRavi Kumar 22269e209beSRavi Kumar /* DMA channel register values */ 22369e209beSRavi Kumar #define DMA_OSP_DISABLE 0x00 22469e209beSRavi Kumar #define DMA_OSP_ENABLE 0x01 22569e209beSRavi Kumar #define DMA_PBL_1 1 22669e209beSRavi Kumar #define DMA_PBL_2 2 22769e209beSRavi Kumar #define DMA_PBL_4 4 22869e209beSRavi Kumar #define DMA_PBL_8 8 22969e209beSRavi Kumar #define DMA_PBL_16 16 23069e209beSRavi Kumar #define DMA_PBL_32 32 23169e209beSRavi Kumar #define DMA_PBL_64 64 /* 8 x 8 */ 23269e209beSRavi Kumar #define DMA_PBL_128 128 /* 8 x 16 */ 23369e209beSRavi Kumar #define DMA_PBL_256 256 /* 8 x 32 */ 23469e209beSRavi Kumar #define DMA_PBL_X8_DISABLE 0x00 23569e209beSRavi Kumar #define DMA_PBL_X8_ENABLE 0x01 23669e209beSRavi Kumar 23769e209beSRavi Kumar /* MAC register offsets */ 23869e209beSRavi Kumar #define MAC_TCR 0x0000 23969e209beSRavi Kumar #define MAC_RCR 0x0004 24069e209beSRavi Kumar #define MAC_PFR 0x0008 24169e209beSRavi Kumar #define MAC_WTR 0x000c 24269e209beSRavi Kumar #define MAC_HTR0 0x0010 24369e209beSRavi Kumar #define MAC_VLANTR 0x0050 24469e209beSRavi Kumar #define MAC_VLANHTR 0x0058 24569e209beSRavi Kumar #define MAC_VLANIR 0x0060 24669e209beSRavi Kumar #define MAC_IVLANIR 0x0064 24769e209beSRavi Kumar #define MAC_RETMR 0x006c 24869e209beSRavi Kumar #define MAC_Q0TFCR 0x0070 24969e209beSRavi Kumar #define MAC_RFCR 0x0090 25069e209beSRavi Kumar #define MAC_RQC0R 0x00a0 25169e209beSRavi Kumar #define MAC_RQC1R 0x00a4 25269e209beSRavi Kumar #define MAC_RQC2R 0x00a8 25369e209beSRavi Kumar #define MAC_RQC3R 0x00ac 25469e209beSRavi Kumar #define MAC_ISR 0x00b0 25569e209beSRavi Kumar #define MAC_IER 0x00b4 25669e209beSRavi Kumar #define MAC_RTSR 0x00b8 25769e209beSRavi Kumar #define MAC_PMTCSR 0x00c0 25869e209beSRavi Kumar #define MAC_RWKPFR 0x00c4 25969e209beSRavi Kumar #define MAC_LPICSR 0x00d0 26069e209beSRavi Kumar #define MAC_LPITCR 0x00d4 26169e209beSRavi Kumar #define MAC_VR 0x0110 26269e209beSRavi Kumar #define MAC_DR 0x0114 26369e209beSRavi Kumar #define MAC_HWF0R 0x011c 26469e209beSRavi Kumar #define MAC_HWF1R 0x0120 26569e209beSRavi Kumar #define MAC_HWF2R 0x0124 26686578516SGirish Nandibasappa #define MAC_HWF3R 0x0128 26769e209beSRavi Kumar #define MAC_MDIOSCAR 0x0200 26869e209beSRavi Kumar #define MAC_MDIOSCCDR 0x0204 26969e209beSRavi Kumar #define MAC_MDIOISR 0x0214 27069e209beSRavi Kumar #define MAC_MDIOIER 0x0218 27169e209beSRavi Kumar #define MAC_MDIOCL22R 0x0220 27269e209beSRavi Kumar #define MAC_GPIOCR 0x0278 27369e209beSRavi Kumar #define MAC_GPIOSR 0x027c 27469e209beSRavi Kumar #define MAC_MACA0HR 0x0300 27569e209beSRavi Kumar #define MAC_MACA0LR 0x0304 27669e209beSRavi Kumar #define MAC_MACA1HR 0x0308 27769e209beSRavi Kumar #define MAC_MACA1LR 0x030c 27869e209beSRavi Kumar #define MAC_RSSCR 0x0c80 27969e209beSRavi Kumar #define MAC_RSSAR 0x0c88 28069e209beSRavi Kumar #define MAC_RSSDR 0x0c8c 28169e209beSRavi Kumar #define MAC_TSCR 0x0d00 28269e209beSRavi Kumar #define MAC_SSIR 0x0d04 28369e209beSRavi Kumar #define MAC_STSR 0x0d08 28469e209beSRavi Kumar #define MAC_STNR 0x0d0c 28569e209beSRavi Kumar #define MAC_STSUR 0x0d10 28669e209beSRavi Kumar #define MAC_STNUR 0x0d14 28769e209beSRavi Kumar #define MAC_TSAR 0x0d18 28869e209beSRavi Kumar #define MAC_TSSR 0x0d20 28969e209beSRavi Kumar #define MAC_TXSNR 0x0d30 29069e209beSRavi Kumar #define MAC_TXSSR 0x0d34 29169e209beSRavi Kumar 29286578516SGirish Nandibasappa /*VLAN control bit mask*/ 29386578516SGirish Nandibasappa #define AXGBE_VLNCTRL_MASK 0x0000FFFF 29486578516SGirish Nandibasappa #define VLAN_PRIO_MASK 0xe000 /* Priority Code Point */ 29586578516SGirish Nandibasappa #define VLAN_PRIO_SHIFT 13 29686578516SGirish Nandibasappa #define VLAN_CFI_MASK 0x1000 /* Canonical Format Indicator */ 29786578516SGirish Nandibasappa #define VLAN_TAG_PRESENT VLAN_CFI_MASK 29886578516SGirish Nandibasappa #define VLAN_VID_MASK 0x0fff /* VLAN Identifier */ 29986578516SGirish Nandibasappa #define VLAN_N_VID 4096 30086578516SGirish Nandibasappa #define VLAN_TABLE_SIZE 64 30186578516SGirish Nandibasappa #define VLAN_TABLE_BIT(vlan_id) (1UL << ((vlan_id) & 0x3F)) 30286578516SGirish Nandibasappa #define VLAN_TABLE_IDX(vlan_id) ((vlan_id) >> 6) 30386578516SGirish Nandibasappa #define RX_CVLAN_TAG_PRESENT 9 30486578516SGirish Nandibasappa 30569e209beSRavi Kumar #define MAC_QTFCR_INC 4 30669e209beSRavi Kumar #define MAC_MACA_INC 4 30769e209beSRavi Kumar #define MAC_HTR_INC 4 30869e209beSRavi Kumar 30969e209beSRavi Kumar #define MAC_RQC2_INC 4 31069e209beSRavi Kumar #define MAC_RQC2_Q_PER_REG 4 31169e209beSRavi Kumar 312df4867cdSChandu Babu N #define MAC_MACAHR(i) (MAC_MACA0HR + ((i) * 8)) 313df4867cdSChandu Babu N #define MAC_MACALR(i) (MAC_MACA0LR + ((i) * 8)) 314df4867cdSChandu Babu N 315e01d9b2eSChandu Babu N #define MAC_HTR(i) (MAC_HTR0 + ((i) * MAC_HTR_INC)) 316e01d9b2eSChandu Babu N 31769e209beSRavi Kumar /* MAC register entry bit positions and sizes */ 31869e209beSRavi Kumar #define MAC_HWF0R_ADDMACADRSEL_INDEX 18 31969e209beSRavi Kumar #define MAC_HWF0R_ADDMACADRSEL_WIDTH 5 32069e209beSRavi Kumar #define MAC_HWF0R_ARPOFFSEL_INDEX 9 32169e209beSRavi Kumar #define MAC_HWF0R_ARPOFFSEL_WIDTH 1 32269e209beSRavi Kumar #define MAC_HWF0R_EEESEL_INDEX 13 32369e209beSRavi Kumar #define MAC_HWF0R_EEESEL_WIDTH 1 32469e209beSRavi Kumar #define MAC_HWF0R_GMIISEL_INDEX 1 32569e209beSRavi Kumar #define MAC_HWF0R_GMIISEL_WIDTH 1 32669e209beSRavi Kumar #define MAC_HWF0R_MGKSEL_INDEX 7 32769e209beSRavi Kumar #define MAC_HWF0R_MGKSEL_WIDTH 1 32869e209beSRavi Kumar #define MAC_HWF0R_MMCSEL_INDEX 8 32969e209beSRavi Kumar #define MAC_HWF0R_MMCSEL_WIDTH 1 33069e209beSRavi Kumar #define MAC_HWF0R_RWKSEL_INDEX 6 33169e209beSRavi Kumar #define MAC_HWF0R_RWKSEL_WIDTH 1 33269e209beSRavi Kumar #define MAC_HWF0R_RXCOESEL_INDEX 16 33369e209beSRavi Kumar #define MAC_HWF0R_RXCOESEL_WIDTH 1 33469e209beSRavi Kumar #define MAC_HWF0R_SAVLANINS_INDEX 27 33569e209beSRavi Kumar #define MAC_HWF0R_SAVLANINS_WIDTH 1 33669e209beSRavi Kumar #define MAC_HWF0R_SMASEL_INDEX 5 33769e209beSRavi Kumar #define MAC_HWF0R_SMASEL_WIDTH 1 33869e209beSRavi Kumar #define MAC_HWF0R_TSSEL_INDEX 12 33969e209beSRavi Kumar #define MAC_HWF0R_TSSEL_WIDTH 1 34069e209beSRavi Kumar #define MAC_HWF0R_TSSTSSEL_INDEX 25 34169e209beSRavi Kumar #define MAC_HWF0R_TSSTSSEL_WIDTH 2 34269e209beSRavi Kumar #define MAC_HWF0R_TXCOESEL_INDEX 14 34369e209beSRavi Kumar #define MAC_HWF0R_TXCOESEL_WIDTH 1 34469e209beSRavi Kumar #define MAC_HWF0R_VLHASH_INDEX 4 34569e209beSRavi Kumar #define MAC_HWF0R_VLHASH_WIDTH 1 34669e209beSRavi Kumar #define MAC_HWF1R_ADDR64_INDEX 14 34769e209beSRavi Kumar #define MAC_HWF1R_ADDR64_WIDTH 2 34869e209beSRavi Kumar #define MAC_HWF1R_ADVTHWORD_INDEX 13 34969e209beSRavi Kumar #define MAC_HWF1R_ADVTHWORD_WIDTH 1 35069e209beSRavi Kumar #define MAC_HWF1R_DBGMEMA_INDEX 19 35169e209beSRavi Kumar #define MAC_HWF1R_DBGMEMA_WIDTH 1 35269e209beSRavi Kumar #define MAC_HWF1R_DCBEN_INDEX 16 35369e209beSRavi Kumar #define MAC_HWF1R_DCBEN_WIDTH 1 35469e209beSRavi Kumar #define MAC_HWF1R_HASHTBLSZ_INDEX 24 35569e209beSRavi Kumar #define MAC_HWF1R_HASHTBLSZ_WIDTH 3 35669e209beSRavi Kumar #define MAC_HWF1R_L3L4FNUM_INDEX 27 35769e209beSRavi Kumar #define MAC_HWF1R_L3L4FNUM_WIDTH 4 35869e209beSRavi Kumar #define MAC_HWF1R_NUMTC_INDEX 21 35969e209beSRavi Kumar #define MAC_HWF1R_NUMTC_WIDTH 3 36069e209beSRavi Kumar #define MAC_HWF1R_RSSEN_INDEX 20 36169e209beSRavi Kumar #define MAC_HWF1R_RSSEN_WIDTH 1 36269e209beSRavi Kumar #define MAC_HWF1R_RXFIFOSIZE_INDEX 0 36369e209beSRavi Kumar #define MAC_HWF1R_RXFIFOSIZE_WIDTH 5 36469e209beSRavi Kumar #define MAC_HWF1R_SPHEN_INDEX 17 36569e209beSRavi Kumar #define MAC_HWF1R_SPHEN_WIDTH 1 36669e209beSRavi Kumar #define MAC_HWF1R_TSOEN_INDEX 18 36769e209beSRavi Kumar #define MAC_HWF1R_TSOEN_WIDTH 1 36869e209beSRavi Kumar #define MAC_HWF1R_TXFIFOSIZE_INDEX 6 36969e209beSRavi Kumar #define MAC_HWF1R_TXFIFOSIZE_WIDTH 5 37069e209beSRavi Kumar #define MAC_HWF2R_AUXSNAPNUM_INDEX 28 37169e209beSRavi Kumar #define MAC_HWF2R_AUXSNAPNUM_WIDTH 3 37269e209beSRavi Kumar #define MAC_HWF2R_PPSOUTNUM_INDEX 24 37369e209beSRavi Kumar #define MAC_HWF2R_PPSOUTNUM_WIDTH 3 37469e209beSRavi Kumar #define MAC_HWF2R_RXCHCNT_INDEX 12 37569e209beSRavi Kumar #define MAC_HWF2R_RXCHCNT_WIDTH 4 37669e209beSRavi Kumar #define MAC_HWF2R_RXQCNT_INDEX 0 37769e209beSRavi Kumar #define MAC_HWF2R_RXQCNT_WIDTH 4 37869e209beSRavi Kumar #define MAC_HWF2R_TXCHCNT_INDEX 18 37969e209beSRavi Kumar #define MAC_HWF2R_TXCHCNT_WIDTH 4 38069e209beSRavi Kumar #define MAC_HWF2R_TXQCNT_INDEX 6 38169e209beSRavi Kumar #define MAC_HWF2R_TXQCNT_WIDTH 4 38286578516SGirish Nandibasappa #define MAC_HWF3R_CBTISEL_INDEX 4 38386578516SGirish Nandibasappa #define MAC_HWF3R_CBTISEL_WIDTH 1 38486578516SGirish Nandibasappa #define MAC_HWF3R_NRVF_INDEX 0 38586578516SGirish Nandibasappa #define MAC_HWF3R_NRVF_WIDTH 3 38669e209beSRavi Kumar #define MAC_IER_TSIE_INDEX 12 38769e209beSRavi Kumar #define MAC_IER_TSIE_WIDTH 1 38869e209beSRavi Kumar #define MAC_ISR_MMCRXIS_INDEX 9 38969e209beSRavi Kumar #define MAC_ISR_MMCRXIS_WIDTH 1 39069e209beSRavi Kumar #define MAC_ISR_MMCTXIS_INDEX 10 39169e209beSRavi Kumar #define MAC_ISR_MMCTXIS_WIDTH 1 39269e209beSRavi Kumar #define MAC_ISR_PMTIS_INDEX 4 39369e209beSRavi Kumar #define MAC_ISR_PMTIS_WIDTH 1 39469e209beSRavi Kumar #define MAC_ISR_SMI_INDEX 1 39569e209beSRavi Kumar #define MAC_ISR_SMI_WIDTH 1 39669e209beSRavi Kumar #define MAC_ISR_LSI_INDEX 0 39769e209beSRavi Kumar #define MAC_ISR_LSI_WIDTH 1 39869e209beSRavi Kumar #define MAC_ISR_LS_INDEX 24 39969e209beSRavi Kumar #define MAC_ISR_LS_WIDTH 2 40069e209beSRavi Kumar #define MAC_ISR_TSIS_INDEX 12 40169e209beSRavi Kumar #define MAC_ISR_TSIS_WIDTH 1 40269e209beSRavi Kumar #define MAC_MACA1HR_AE_INDEX 31 40369e209beSRavi Kumar #define MAC_MACA1HR_AE_WIDTH 1 40469e209beSRavi Kumar #define MAC_MDIOIER_SNGLCOMPIE_INDEX 12 40569e209beSRavi Kumar #define MAC_MDIOIER_SNGLCOMPIE_WIDTH 1 40669e209beSRavi Kumar #define MAC_MDIOISR_SNGLCOMPINT_INDEX 12 40769e209beSRavi Kumar #define MAC_MDIOISR_SNGLCOMPINT_WIDTH 1 40869e209beSRavi Kumar #define MAC_MDIOSCAR_DA_INDEX 21 40969e209beSRavi Kumar #define MAC_MDIOSCAR_DA_WIDTH 5 41069e209beSRavi Kumar #define MAC_MDIOSCAR_PA_INDEX 16 41169e209beSRavi Kumar #define MAC_MDIOSCAR_PA_WIDTH 5 41269e209beSRavi Kumar #define MAC_MDIOSCAR_RA_INDEX 0 41369e209beSRavi Kumar #define MAC_MDIOSCAR_RA_WIDTH 16 41469e209beSRavi Kumar #define MAC_MDIOSCCDR_BUSY_INDEX 22 41569e209beSRavi Kumar #define MAC_MDIOSCCDR_BUSY_WIDTH 1 41669e209beSRavi Kumar #define MAC_MDIOSCCDR_CMD_INDEX 16 41769e209beSRavi Kumar #define MAC_MDIOSCCDR_CMD_WIDTH 2 41869e209beSRavi Kumar #define MAC_MDIOSCCDR_CR_INDEX 19 41969e209beSRavi Kumar #define MAC_MDIOSCCDR_CR_WIDTH 3 42069e209beSRavi Kumar #define MAC_MDIOSCCDR_DATA_INDEX 0 42169e209beSRavi Kumar #define MAC_MDIOSCCDR_DATA_WIDTH 16 42269e209beSRavi Kumar #define MAC_MDIOSCCDR_SADDR_INDEX 18 42369e209beSRavi Kumar #define MAC_MDIOSCCDR_SADDR_WIDTH 1 42469e209beSRavi Kumar #define MAC_PFR_HMC_INDEX 2 42569e209beSRavi Kumar #define MAC_PFR_HMC_WIDTH 1 42669e209beSRavi Kumar #define MAC_PFR_HPF_INDEX 10 42769e209beSRavi Kumar #define MAC_PFR_HPF_WIDTH 1 42869e209beSRavi Kumar #define MAC_PFR_HUC_INDEX 1 42969e209beSRavi Kumar #define MAC_PFR_HUC_WIDTH 1 43069e209beSRavi Kumar #define MAC_PFR_PM_INDEX 4 43169e209beSRavi Kumar #define MAC_PFR_PM_WIDTH 1 43269e209beSRavi Kumar #define MAC_PFR_PR_INDEX 0 43369e209beSRavi Kumar #define MAC_PFR_PR_WIDTH 1 43469e209beSRavi Kumar #define MAC_PFR_VTFE_INDEX 16 43569e209beSRavi Kumar #define MAC_PFR_VTFE_WIDTH 1 43669e209beSRavi Kumar #define MAC_PMTCSR_MGKPKTEN_INDEX 1 43769e209beSRavi Kumar #define MAC_PMTCSR_MGKPKTEN_WIDTH 1 43869e209beSRavi Kumar #define MAC_PMTCSR_PWRDWN_INDEX 0 43969e209beSRavi Kumar #define MAC_PMTCSR_PWRDWN_WIDTH 1 44069e209beSRavi Kumar #define MAC_PMTCSR_RWKFILTRST_INDEX 31 44169e209beSRavi Kumar #define MAC_PMTCSR_RWKFILTRST_WIDTH 1 44269e209beSRavi Kumar #define MAC_PMTCSR_RWKPKTEN_INDEX 2 44369e209beSRavi Kumar #define MAC_PMTCSR_RWKPKTEN_WIDTH 1 44469e209beSRavi Kumar #define MAC_Q0TFCR_PT_INDEX 16 44569e209beSRavi Kumar #define MAC_Q0TFCR_PT_WIDTH 16 44669e209beSRavi Kumar #define MAC_Q0TFCR_TFE_INDEX 1 44769e209beSRavi Kumar #define MAC_Q0TFCR_TFE_WIDTH 1 44869e209beSRavi Kumar #define MAC_RCR_ACS_INDEX 1 44969e209beSRavi Kumar #define MAC_RCR_ACS_WIDTH 1 45069e209beSRavi Kumar #define MAC_RCR_CST_INDEX 2 45169e209beSRavi Kumar #define MAC_RCR_CST_WIDTH 1 45269e209beSRavi Kumar #define MAC_RCR_DCRCC_INDEX 3 45369e209beSRavi Kumar #define MAC_RCR_DCRCC_WIDTH 1 45469e209beSRavi Kumar #define MAC_RCR_HDSMS_INDEX 12 45569e209beSRavi Kumar #define MAC_RCR_HDSMS_WIDTH 3 45669e209beSRavi Kumar #define MAC_RCR_IPC_INDEX 9 45769e209beSRavi Kumar #define MAC_RCR_IPC_WIDTH 1 45869e209beSRavi Kumar #define MAC_RCR_JE_INDEX 8 45969e209beSRavi Kumar #define MAC_RCR_JE_WIDTH 1 46069e209beSRavi Kumar #define MAC_RCR_LM_INDEX 10 46169e209beSRavi Kumar #define MAC_RCR_LM_WIDTH 1 46269e209beSRavi Kumar #define MAC_RCR_RE_INDEX 0 46369e209beSRavi Kumar #define MAC_RCR_RE_WIDTH 1 46469e209beSRavi Kumar #define MAC_RFCR_PFCE_INDEX 8 46569e209beSRavi Kumar #define MAC_RFCR_PFCE_WIDTH 1 46669e209beSRavi Kumar #define MAC_RFCR_RFE_INDEX 0 46769e209beSRavi Kumar #define MAC_RFCR_RFE_WIDTH 1 46869e209beSRavi Kumar #define MAC_RFCR_UP_INDEX 1 46969e209beSRavi Kumar #define MAC_RFCR_UP_WIDTH 1 47069e209beSRavi Kumar #define MAC_RQC0R_RXQ0EN_INDEX 0 47169e209beSRavi Kumar #define MAC_RQC0R_RXQ0EN_WIDTH 2 47269e209beSRavi Kumar #define MAC_RSSAR_ADDRT_INDEX 2 47369e209beSRavi Kumar #define MAC_RSSAR_ADDRT_WIDTH 1 47469e209beSRavi Kumar #define MAC_RSSAR_CT_INDEX 1 47569e209beSRavi Kumar #define MAC_RSSAR_CT_WIDTH 1 47669e209beSRavi Kumar #define MAC_RSSAR_OB_INDEX 0 47769e209beSRavi Kumar #define MAC_RSSAR_OB_WIDTH 1 47869e209beSRavi Kumar #define MAC_RSSAR_RSSIA_INDEX 8 47969e209beSRavi Kumar #define MAC_RSSAR_RSSIA_WIDTH 8 48069e209beSRavi Kumar #define MAC_RSSCR_IP2TE_INDEX 1 48169e209beSRavi Kumar #define MAC_RSSCR_IP2TE_WIDTH 1 48269e209beSRavi Kumar #define MAC_RSSCR_RSSE_INDEX 0 48369e209beSRavi Kumar #define MAC_RSSCR_RSSE_WIDTH 1 48469e209beSRavi Kumar #define MAC_RSSCR_TCP4TE_INDEX 2 48569e209beSRavi Kumar #define MAC_RSSCR_TCP4TE_WIDTH 1 48669e209beSRavi Kumar #define MAC_RSSCR_UDP4TE_INDEX 3 48769e209beSRavi Kumar #define MAC_RSSCR_UDP4TE_WIDTH 1 48869e209beSRavi Kumar #define MAC_RSSDR_DMCH_INDEX 0 48969e209beSRavi Kumar #define MAC_RSSDR_DMCH_WIDTH 4 49069e209beSRavi Kumar #define MAC_SSIR_SNSINC_INDEX 8 49169e209beSRavi Kumar #define MAC_SSIR_SNSINC_WIDTH 8 49269e209beSRavi Kumar #define MAC_SSIR_SSINC_INDEX 16 49369e209beSRavi Kumar #define MAC_SSIR_SSINC_WIDTH 8 49469e209beSRavi Kumar #define MAC_TCR_SS_INDEX 29 49569e209beSRavi Kumar #define MAC_TCR_SS_WIDTH 2 49669e209beSRavi Kumar #define MAC_TCR_TE_INDEX 0 49769e209beSRavi Kumar #define MAC_TCR_TE_WIDTH 1 49869e209beSRavi Kumar #define MAC_TSCR_AV8021ASMEN_INDEX 28 49969e209beSRavi Kumar #define MAC_TSCR_AV8021ASMEN_WIDTH 1 50069e209beSRavi Kumar #define MAC_TSCR_SNAPTYPSEL_INDEX 16 50169e209beSRavi Kumar #define MAC_TSCR_SNAPTYPSEL_WIDTH 2 50269e209beSRavi Kumar #define MAC_TSCR_TSADDREG_INDEX 5 50369e209beSRavi Kumar #define MAC_TSCR_TSADDREG_WIDTH 1 50469e209beSRavi Kumar #define MAC_TSCR_TSCFUPDT_INDEX 1 50569e209beSRavi Kumar #define MAC_TSCR_TSCFUPDT_WIDTH 1 50669e209beSRavi Kumar #define MAC_TSCR_TSCTRLSSR_INDEX 9 50769e209beSRavi Kumar #define MAC_TSCR_TSCTRLSSR_WIDTH 1 50869e209beSRavi Kumar #define MAC_TSCR_TSENA_INDEX 0 50969e209beSRavi Kumar #define MAC_TSCR_TSENA_WIDTH 1 51069e209beSRavi Kumar #define MAC_TSCR_TSENALL_INDEX 8 51169e209beSRavi Kumar #define MAC_TSCR_TSENALL_WIDTH 1 51269e209beSRavi Kumar #define MAC_TSCR_TSEVNTENA_INDEX 14 51369e209beSRavi Kumar #define MAC_TSCR_TSEVNTENA_WIDTH 1 51469e209beSRavi Kumar #define MAC_TSCR_TSINIT_INDEX 2 51569e209beSRavi Kumar #define MAC_TSCR_TSINIT_WIDTH 1 516e0444948SSelwin Sebastian #define MAC_TSCR_TSUPDT_INDEX 3 517e0444948SSelwin Sebastian #define MAC_TSCR_TSUPDT_WIDTH 1 51869e209beSRavi Kumar #define MAC_TSCR_TSIPENA_INDEX 11 51969e209beSRavi Kumar #define MAC_TSCR_TSIPENA_WIDTH 1 52069e209beSRavi Kumar #define MAC_TSCR_TSIPV4ENA_INDEX 13 52169e209beSRavi Kumar #define MAC_TSCR_TSIPV4ENA_WIDTH 1 52269e209beSRavi Kumar #define MAC_TSCR_TSIPV6ENA_INDEX 12 52369e209beSRavi Kumar #define MAC_TSCR_TSIPV6ENA_WIDTH 1 52469e209beSRavi Kumar #define MAC_TSCR_TSMSTRENA_INDEX 15 52569e209beSRavi Kumar #define MAC_TSCR_TSMSTRENA_WIDTH 1 52669e209beSRavi Kumar #define MAC_TSCR_TSVER2ENA_INDEX 10 52769e209beSRavi Kumar #define MAC_TSCR_TSVER2ENA_WIDTH 1 52869e209beSRavi Kumar #define MAC_TSCR_TXTSSTSM_INDEX 24 52969e209beSRavi Kumar #define MAC_TSCR_TXTSSTSM_WIDTH 1 53069e209beSRavi Kumar #define MAC_TSSR_TXTSC_INDEX 15 53169e209beSRavi Kumar #define MAC_TSSR_TXTSC_WIDTH 1 532e0444948SSelwin Sebastian #define MAC_STNUR_ADDSUB_INDEX 31 533e0444948SSelwin Sebastian #define MAC_STNUR_ADDSUB_WIDTH 1 53469e209beSRavi Kumar #define MAC_TXSNR_TXTSSTSMIS_INDEX 31 53569e209beSRavi Kumar #define MAC_TXSNR_TXTSSTSMIS_WIDTH 1 53669e209beSRavi Kumar #define MAC_VLANHTR_VLHT_INDEX 0 53769e209beSRavi Kumar #define MAC_VLANHTR_VLHT_WIDTH 16 53869e209beSRavi Kumar #define MAC_VLANIR_VLTI_INDEX 20 53969e209beSRavi Kumar #define MAC_VLANIR_VLTI_WIDTH 1 54069e209beSRavi Kumar #define MAC_VLANIR_CSVL_INDEX 19 54169e209beSRavi Kumar #define MAC_VLANIR_CSVL_WIDTH 1 54286578516SGirish Nandibasappa #define MAC_VLANIR_VLC_INDEX 16 54386578516SGirish Nandibasappa #define MAC_VLANIR_VLC_WIDTH 2 54469e209beSRavi Kumar #define MAC_VLANTR_DOVLTC_INDEX 20 54569e209beSRavi Kumar #define MAC_VLANTR_DOVLTC_WIDTH 1 54669e209beSRavi Kumar #define MAC_VLANTR_ERSVLM_INDEX 19 54769e209beSRavi Kumar #define MAC_VLANTR_ERSVLM_WIDTH 1 54869e209beSRavi Kumar #define MAC_VLANTR_ESVL_INDEX 18 54969e209beSRavi Kumar #define MAC_VLANTR_ESVL_WIDTH 1 55069e209beSRavi Kumar #define MAC_VLANTR_ETV_INDEX 16 55169e209beSRavi Kumar #define MAC_VLANTR_ETV_WIDTH 1 55269e209beSRavi Kumar #define MAC_VLANTR_EVLS_INDEX 21 55369e209beSRavi Kumar #define MAC_VLANTR_EVLS_WIDTH 2 55486578516SGirish Nandibasappa #define MAC_VLANTR_EIVLS_INDEX 21 55586578516SGirish Nandibasappa #define MAC_VLANTR_EIVLS_WIDTH 2 55669e209beSRavi Kumar #define MAC_VLANTR_EVLRXS_INDEX 24 55769e209beSRavi Kumar #define MAC_VLANTR_EVLRXS_WIDTH 1 55886578516SGirish Nandibasappa #define MAC_VLANTR_EIVLRXS_INDEX 31 55986578516SGirish Nandibasappa #define MAC_VLANTR_EIVLRXS_WIDTH 1 56069e209beSRavi Kumar #define MAC_VLANTR_VL_INDEX 0 56169e209beSRavi Kumar #define MAC_VLANTR_VL_WIDTH 16 56269e209beSRavi Kumar #define MAC_VLANTR_VTHM_INDEX 25 56369e209beSRavi Kumar #define MAC_VLANTR_VTHM_WIDTH 1 56486578516SGirish Nandibasappa #define MAC_VLANTR_EDVLP_INDEX 26 56586578516SGirish Nandibasappa #define MAC_VLANTR_EDVLP_WIDTH 1 56669e209beSRavi Kumar #define MAC_VLANTR_VTIM_INDEX 17 56769e209beSRavi Kumar #define MAC_VLANTR_VTIM_WIDTH 1 56869e209beSRavi Kumar #define MAC_VR_DEVID_INDEX 8 56969e209beSRavi Kumar #define MAC_VR_DEVID_WIDTH 8 57069e209beSRavi Kumar #define MAC_VR_SNPSVER_INDEX 0 57169e209beSRavi Kumar #define MAC_VR_SNPSVER_WIDTH 8 57269e209beSRavi Kumar #define MAC_VR_USERVER_INDEX 16 57369e209beSRavi Kumar #define MAC_VR_USERVER_WIDTH 8 57486578516SGirish Nandibasappa #define MAC_VLANIR_VLT_INDEX 0 57586578516SGirish Nandibasappa #define MAC_VLANIR_VLT_WIDTH 16 57686578516SGirish Nandibasappa #define MAC_VLANTR_ERIVLT_INDEX 27 57786578516SGirish Nandibasappa #define MAC_VLANTR_ERIVLT_WIDTH 1 57869e209beSRavi Kumar 579e0444948SSelwin Sebastian 58069e209beSRavi Kumar /* MMC register offsets */ 58169e209beSRavi Kumar #define MMC_CR 0x0800 58269e209beSRavi Kumar #define MMC_RISR 0x0804 58369e209beSRavi Kumar #define MMC_TISR 0x0808 58469e209beSRavi Kumar #define MMC_RIER 0x080c 58569e209beSRavi Kumar #define MMC_TIER 0x0810 58669e209beSRavi Kumar #define MMC_TXOCTETCOUNT_GB_LO 0x0814 58769e209beSRavi Kumar #define MMC_TXOCTETCOUNT_GB_HI 0x0818 58869e209beSRavi Kumar #define MMC_TXFRAMECOUNT_GB_LO 0x081c 58969e209beSRavi Kumar #define MMC_TXFRAMECOUNT_GB_HI 0x0820 59069e209beSRavi Kumar #define MMC_TXBROADCASTFRAMES_G_LO 0x0824 59169e209beSRavi Kumar #define MMC_TXBROADCASTFRAMES_G_HI 0x0828 59269e209beSRavi Kumar #define MMC_TXMULTICASTFRAMES_G_LO 0x082c 59369e209beSRavi Kumar #define MMC_TXMULTICASTFRAMES_G_HI 0x0830 59469e209beSRavi Kumar #define MMC_TX64OCTETS_GB_LO 0x0834 59569e209beSRavi Kumar #define MMC_TX64OCTETS_GB_HI 0x0838 59669e209beSRavi Kumar #define MMC_TX65TO127OCTETS_GB_LO 0x083c 59769e209beSRavi Kumar #define MMC_TX65TO127OCTETS_GB_HI 0x0840 59869e209beSRavi Kumar #define MMC_TX128TO255OCTETS_GB_LO 0x0844 59969e209beSRavi Kumar #define MMC_TX128TO255OCTETS_GB_HI 0x0848 60069e209beSRavi Kumar #define MMC_TX256TO511OCTETS_GB_LO 0x084c 60169e209beSRavi Kumar #define MMC_TX256TO511OCTETS_GB_HI 0x0850 60269e209beSRavi Kumar #define MMC_TX512TO1023OCTETS_GB_LO 0x0854 60369e209beSRavi Kumar #define MMC_TX512TO1023OCTETS_GB_HI 0x0858 60469e209beSRavi Kumar #define MMC_TX1024TOMAXOCTETS_GB_LO 0x085c 60569e209beSRavi Kumar #define MMC_TX1024TOMAXOCTETS_GB_HI 0x0860 60669e209beSRavi Kumar #define MMC_TXUNICASTFRAMES_GB_LO 0x0864 60769e209beSRavi Kumar #define MMC_TXUNICASTFRAMES_GB_HI 0x0868 60869e209beSRavi Kumar #define MMC_TXMULTICASTFRAMES_GB_LO 0x086c 60969e209beSRavi Kumar #define MMC_TXMULTICASTFRAMES_GB_HI 0x0870 61069e209beSRavi Kumar #define MMC_TXBROADCASTFRAMES_GB_LO 0x0874 61169e209beSRavi Kumar #define MMC_TXBROADCASTFRAMES_GB_HI 0x0878 61269e209beSRavi Kumar #define MMC_TXUNDERFLOWERROR_LO 0x087c 61369e209beSRavi Kumar #define MMC_TXUNDERFLOWERROR_HI 0x0880 61469e209beSRavi Kumar #define MMC_TXOCTETCOUNT_G_LO 0x0884 61569e209beSRavi Kumar #define MMC_TXOCTETCOUNT_G_HI 0x0888 61669e209beSRavi Kumar #define MMC_TXFRAMECOUNT_G_LO 0x088c 61769e209beSRavi Kumar #define MMC_TXFRAMECOUNT_G_HI 0x0890 61869e209beSRavi Kumar #define MMC_TXPAUSEFRAMES_LO 0x0894 61969e209beSRavi Kumar #define MMC_TXPAUSEFRAMES_HI 0x0898 62069e209beSRavi Kumar #define MMC_TXVLANFRAMES_G_LO 0x089c 62169e209beSRavi Kumar #define MMC_TXVLANFRAMES_G_HI 0x08a0 62269e209beSRavi Kumar #define MMC_RXFRAMECOUNT_GB_LO 0x0900 62369e209beSRavi Kumar #define MMC_RXFRAMECOUNT_GB_HI 0x0904 62469e209beSRavi Kumar #define MMC_RXOCTETCOUNT_GB_LO 0x0908 62569e209beSRavi Kumar #define MMC_RXOCTETCOUNT_GB_HI 0x090c 62669e209beSRavi Kumar #define MMC_RXOCTETCOUNT_G_LO 0x0910 62769e209beSRavi Kumar #define MMC_RXOCTETCOUNT_G_HI 0x0914 62869e209beSRavi Kumar #define MMC_RXBROADCASTFRAMES_G_LO 0x0918 62969e209beSRavi Kumar #define MMC_RXBROADCASTFRAMES_G_HI 0x091c 63069e209beSRavi Kumar #define MMC_RXMULTICASTFRAMES_G_LO 0x0920 63169e209beSRavi Kumar #define MMC_RXMULTICASTFRAMES_G_HI 0x0924 63269e209beSRavi Kumar #define MMC_RXCRCERROR_LO 0x0928 63369e209beSRavi Kumar #define MMC_RXCRCERROR_HI 0x092c 63469e209beSRavi Kumar #define MMC_RXRUNTERROR 0x0930 63569e209beSRavi Kumar #define MMC_RXJABBERERROR 0x0934 63669e209beSRavi Kumar #define MMC_RXUNDERSIZE_G 0x0938 63769e209beSRavi Kumar #define MMC_RXOVERSIZE_G 0x093c 63869e209beSRavi Kumar #define MMC_RX64OCTETS_GB_LO 0x0940 63969e209beSRavi Kumar #define MMC_RX64OCTETS_GB_HI 0x0944 64069e209beSRavi Kumar #define MMC_RX65TO127OCTETS_GB_LO 0x0948 64169e209beSRavi Kumar #define MMC_RX65TO127OCTETS_GB_HI 0x094c 64269e209beSRavi Kumar #define MMC_RX128TO255OCTETS_GB_LO 0x0950 64369e209beSRavi Kumar #define MMC_RX128TO255OCTETS_GB_HI 0x0954 64469e209beSRavi Kumar #define MMC_RX256TO511OCTETS_GB_LO 0x0958 64569e209beSRavi Kumar #define MMC_RX256TO511OCTETS_GB_HI 0x095c 64669e209beSRavi Kumar #define MMC_RX512TO1023OCTETS_GB_LO 0x0960 64769e209beSRavi Kumar #define MMC_RX512TO1023OCTETS_GB_HI 0x0964 64869e209beSRavi Kumar #define MMC_RX1024TOMAXOCTETS_GB_LO 0x0968 64969e209beSRavi Kumar #define MMC_RX1024TOMAXOCTETS_GB_HI 0x096c 65069e209beSRavi Kumar #define MMC_RXUNICASTFRAMES_G_LO 0x0970 65169e209beSRavi Kumar #define MMC_RXUNICASTFRAMES_G_HI 0x0974 65269e209beSRavi Kumar #define MMC_RXLENGTHERROR_LO 0x0978 65369e209beSRavi Kumar #define MMC_RXLENGTHERROR_HI 0x097c 65469e209beSRavi Kumar #define MMC_RXOUTOFRANGETYPE_LO 0x0980 65569e209beSRavi Kumar #define MMC_RXOUTOFRANGETYPE_HI 0x0984 65669e209beSRavi Kumar #define MMC_RXPAUSEFRAMES_LO 0x0988 65769e209beSRavi Kumar #define MMC_RXPAUSEFRAMES_HI 0x098c 65869e209beSRavi Kumar #define MMC_RXFIFOOVERFLOW_LO 0x0990 65969e209beSRavi Kumar #define MMC_RXFIFOOVERFLOW_HI 0x0994 66069e209beSRavi Kumar #define MMC_RXVLANFRAMES_GB_LO 0x0998 66169e209beSRavi Kumar #define MMC_RXVLANFRAMES_GB_HI 0x099c 66269e209beSRavi Kumar #define MMC_RXWATCHDOGERROR 0x09a0 66369e209beSRavi Kumar 66469e209beSRavi Kumar /* MMC register entry bit positions and sizes */ 66569e209beSRavi Kumar #define MMC_CR_CR_INDEX 0 66669e209beSRavi Kumar #define MMC_CR_CR_WIDTH 1 66769e209beSRavi Kumar #define MMC_CR_CSR_INDEX 1 66869e209beSRavi Kumar #define MMC_CR_CSR_WIDTH 1 66969e209beSRavi Kumar #define MMC_CR_ROR_INDEX 2 67069e209beSRavi Kumar #define MMC_CR_ROR_WIDTH 1 67169e209beSRavi Kumar #define MMC_CR_MCF_INDEX 3 67269e209beSRavi Kumar #define MMC_CR_MCF_WIDTH 1 67369e209beSRavi Kumar #define MMC_CR_MCT_INDEX 4 67469e209beSRavi Kumar #define MMC_CR_MCT_WIDTH 2 67569e209beSRavi Kumar #define MMC_RIER_ALL_INTERRUPTS_INDEX 0 67669e209beSRavi Kumar #define MMC_RIER_ALL_INTERRUPTS_WIDTH 23 67769e209beSRavi Kumar #define MMC_RISR_RXFRAMECOUNT_GB_INDEX 0 67869e209beSRavi Kumar #define MMC_RISR_RXFRAMECOUNT_GB_WIDTH 1 67969e209beSRavi Kumar #define MMC_RISR_RXOCTETCOUNT_GB_INDEX 1 68069e209beSRavi Kumar #define MMC_RISR_RXOCTETCOUNT_GB_WIDTH 1 68169e209beSRavi Kumar #define MMC_RISR_RXOCTETCOUNT_G_INDEX 2 68269e209beSRavi Kumar #define MMC_RISR_RXOCTETCOUNT_G_WIDTH 1 68369e209beSRavi Kumar #define MMC_RISR_RXBROADCASTFRAMES_G_INDEX 3 68469e209beSRavi Kumar #define MMC_RISR_RXBROADCASTFRAMES_G_WIDTH 1 68569e209beSRavi Kumar #define MMC_RISR_RXMULTICASTFRAMES_G_INDEX 4 68669e209beSRavi Kumar #define MMC_RISR_RXMULTICASTFRAMES_G_WIDTH 1 68769e209beSRavi Kumar #define MMC_RISR_RXCRCERROR_INDEX 5 68869e209beSRavi Kumar #define MMC_RISR_RXCRCERROR_WIDTH 1 68969e209beSRavi Kumar #define MMC_RISR_RXRUNTERROR_INDEX 6 69069e209beSRavi Kumar #define MMC_RISR_RXRUNTERROR_WIDTH 1 69169e209beSRavi Kumar #define MMC_RISR_RXJABBERERROR_INDEX 7 69269e209beSRavi Kumar #define MMC_RISR_RXJABBERERROR_WIDTH 1 69369e209beSRavi Kumar #define MMC_RISR_RXUNDERSIZE_G_INDEX 8 69469e209beSRavi Kumar #define MMC_RISR_RXUNDERSIZE_G_WIDTH 1 69569e209beSRavi Kumar #define MMC_RISR_RXOVERSIZE_G_INDEX 9 69669e209beSRavi Kumar #define MMC_RISR_RXOVERSIZE_G_WIDTH 1 69769e209beSRavi Kumar #define MMC_RISR_RX64OCTETS_GB_INDEX 10 69869e209beSRavi Kumar #define MMC_RISR_RX64OCTETS_GB_WIDTH 1 69969e209beSRavi Kumar #define MMC_RISR_RX65TO127OCTETS_GB_INDEX 11 70069e209beSRavi Kumar #define MMC_RISR_RX65TO127OCTETS_GB_WIDTH 1 70169e209beSRavi Kumar #define MMC_RISR_RX128TO255OCTETS_GB_INDEX 12 70269e209beSRavi Kumar #define MMC_RISR_RX128TO255OCTETS_GB_WIDTH 1 70369e209beSRavi Kumar #define MMC_RISR_RX256TO511OCTETS_GB_INDEX 13 70469e209beSRavi Kumar #define MMC_RISR_RX256TO511OCTETS_GB_WIDTH 1 70569e209beSRavi Kumar #define MMC_RISR_RX512TO1023OCTETS_GB_INDEX 14 70669e209beSRavi Kumar #define MMC_RISR_RX512TO1023OCTETS_GB_WIDTH 1 70769e209beSRavi Kumar #define MMC_RISR_RX1024TOMAXOCTETS_GB_INDEX 15 70869e209beSRavi Kumar #define MMC_RISR_RX1024TOMAXOCTETS_GB_WIDTH 1 70969e209beSRavi Kumar #define MMC_RISR_RXUNICASTFRAMES_G_INDEX 16 71069e209beSRavi Kumar #define MMC_RISR_RXUNICASTFRAMES_G_WIDTH 1 71169e209beSRavi Kumar #define MMC_RISR_RXLENGTHERROR_INDEX 17 71269e209beSRavi Kumar #define MMC_RISR_RXLENGTHERROR_WIDTH 1 71369e209beSRavi Kumar #define MMC_RISR_RXOUTOFRANGETYPE_INDEX 18 71469e209beSRavi Kumar #define MMC_RISR_RXOUTOFRANGETYPE_WIDTH 1 71569e209beSRavi Kumar #define MMC_RISR_RXPAUSEFRAMES_INDEX 19 71669e209beSRavi Kumar #define MMC_RISR_RXPAUSEFRAMES_WIDTH 1 71769e209beSRavi Kumar #define MMC_RISR_RXFIFOOVERFLOW_INDEX 20 71869e209beSRavi Kumar #define MMC_RISR_RXFIFOOVERFLOW_WIDTH 1 71969e209beSRavi Kumar #define MMC_RISR_RXVLANFRAMES_GB_INDEX 21 72069e209beSRavi Kumar #define MMC_RISR_RXVLANFRAMES_GB_WIDTH 1 72169e209beSRavi Kumar #define MMC_RISR_RXWATCHDOGERROR_INDEX 22 72269e209beSRavi Kumar #define MMC_RISR_RXWATCHDOGERROR_WIDTH 1 72369e209beSRavi Kumar #define MMC_TIER_ALL_INTERRUPTS_INDEX 0 72469e209beSRavi Kumar #define MMC_TIER_ALL_INTERRUPTS_WIDTH 18 72569e209beSRavi Kumar #define MMC_TISR_TXOCTETCOUNT_GB_INDEX 0 72669e209beSRavi Kumar #define MMC_TISR_TXOCTETCOUNT_GB_WIDTH 1 72769e209beSRavi Kumar #define MMC_TISR_TXFRAMECOUNT_GB_INDEX 1 72869e209beSRavi Kumar #define MMC_TISR_TXFRAMECOUNT_GB_WIDTH 1 72969e209beSRavi Kumar #define MMC_TISR_TXBROADCASTFRAMES_G_INDEX 2 73069e209beSRavi Kumar #define MMC_TISR_TXBROADCASTFRAMES_G_WIDTH 1 73169e209beSRavi Kumar #define MMC_TISR_TXMULTICASTFRAMES_G_INDEX 3 73269e209beSRavi Kumar #define MMC_TISR_TXMULTICASTFRAMES_G_WIDTH 1 73369e209beSRavi Kumar #define MMC_TISR_TX64OCTETS_GB_INDEX 4 73469e209beSRavi Kumar #define MMC_TISR_TX64OCTETS_GB_WIDTH 1 73569e209beSRavi Kumar #define MMC_TISR_TX65TO127OCTETS_GB_INDEX 5 73669e209beSRavi Kumar #define MMC_TISR_TX65TO127OCTETS_GB_WIDTH 1 73769e209beSRavi Kumar #define MMC_TISR_TX128TO255OCTETS_GB_INDEX 6 73869e209beSRavi Kumar #define MMC_TISR_TX128TO255OCTETS_GB_WIDTH 1 73969e209beSRavi Kumar #define MMC_TISR_TX256TO511OCTETS_GB_INDEX 7 74069e209beSRavi Kumar #define MMC_TISR_TX256TO511OCTETS_GB_WIDTH 1 74169e209beSRavi Kumar #define MMC_TISR_TX512TO1023OCTETS_GB_INDEX 8 74269e209beSRavi Kumar #define MMC_TISR_TX512TO1023OCTETS_GB_WIDTH 1 74369e209beSRavi Kumar #define MMC_TISR_TX1024TOMAXOCTETS_GB_INDEX 9 74469e209beSRavi Kumar #define MMC_TISR_TX1024TOMAXOCTETS_GB_WIDTH 1 74569e209beSRavi Kumar #define MMC_TISR_TXUNICASTFRAMES_GB_INDEX 10 74669e209beSRavi Kumar #define MMC_TISR_TXUNICASTFRAMES_GB_WIDTH 1 74769e209beSRavi Kumar #define MMC_TISR_TXMULTICASTFRAMES_GB_INDEX 11 74869e209beSRavi Kumar #define MMC_TISR_TXMULTICASTFRAMES_GB_WIDTH 1 74969e209beSRavi Kumar #define MMC_TISR_TXBROADCASTFRAMES_GB_INDEX 12 75069e209beSRavi Kumar #define MMC_TISR_TXBROADCASTFRAMES_GB_WIDTH 1 75169e209beSRavi Kumar #define MMC_TISR_TXUNDERFLOWERROR_INDEX 13 75269e209beSRavi Kumar #define MMC_TISR_TXUNDERFLOWERROR_WIDTH 1 75369e209beSRavi Kumar #define MMC_TISR_TXOCTETCOUNT_G_INDEX 14 75469e209beSRavi Kumar #define MMC_TISR_TXOCTETCOUNT_G_WIDTH 1 75569e209beSRavi Kumar #define MMC_TISR_TXFRAMECOUNT_G_INDEX 15 75669e209beSRavi Kumar #define MMC_TISR_TXFRAMECOUNT_G_WIDTH 1 75769e209beSRavi Kumar #define MMC_TISR_TXPAUSEFRAMES_INDEX 16 75869e209beSRavi Kumar #define MMC_TISR_TXPAUSEFRAMES_WIDTH 1 75969e209beSRavi Kumar #define MMC_TISR_TXVLANFRAMES_G_INDEX 17 76069e209beSRavi Kumar #define MMC_TISR_TXVLANFRAMES_G_WIDTH 1 76169e209beSRavi Kumar 76269e209beSRavi Kumar /* MTL register offsets */ 76369e209beSRavi Kumar #define MTL_OMR 0x1000 76469e209beSRavi Kumar #define MTL_FDCR 0x1008 76569e209beSRavi Kumar #define MTL_FDSR 0x100c 76669e209beSRavi Kumar #define MTL_FDDR 0x1010 76769e209beSRavi Kumar #define MTL_ISR 0x1020 76869e209beSRavi Kumar #define MTL_RQDCM0R 0x1030 76969e209beSRavi Kumar #define MTL_TCPM0R 0x1040 77069e209beSRavi Kumar #define MTL_TCPM1R 0x1044 77169e209beSRavi Kumar 77269e209beSRavi Kumar #define MTL_RQDCM_INC 4 77369e209beSRavi Kumar #define MTL_RQDCM_Q_PER_REG 4 77469e209beSRavi Kumar #define MTL_TCPM_INC 4 77569e209beSRavi Kumar #define MTL_TCPM_TC_PER_REG 4 77669e209beSRavi Kumar 77769e209beSRavi Kumar /* MTL register entry bit positions and sizes */ 77869e209beSRavi Kumar #define MTL_OMR_ETSALG_INDEX 5 77969e209beSRavi Kumar #define MTL_OMR_ETSALG_WIDTH 2 78069e209beSRavi Kumar #define MTL_OMR_RAA_INDEX 2 78169e209beSRavi Kumar #define MTL_OMR_RAA_WIDTH 1 78269e209beSRavi Kumar 78369e209beSRavi Kumar /* MTL queue register offsets 78469e209beSRavi Kumar * Multiple queues can be active. The first queue has registers 78569e209beSRavi Kumar * that begin at 0x1100. Each subsequent queue has registers that 78669e209beSRavi Kumar * are accessed using an offset of 0x80 from the previous queue. 78769e209beSRavi Kumar */ 78869e209beSRavi Kumar #define MTL_Q_BASE 0x1100 78969e209beSRavi Kumar #define MTL_Q_INC 0x80 79069e209beSRavi Kumar 79169e209beSRavi Kumar #define MTL_Q_TQOMR 0x00 79269e209beSRavi Kumar #define MTL_Q_TQUR 0x04 79369e209beSRavi Kumar #define MTL_Q_TQDR 0x08 79469e209beSRavi Kumar #define MTL_Q_RQOMR 0x40 79569e209beSRavi Kumar #define MTL_Q_RQMPOCR 0x44 79669e209beSRavi Kumar #define MTL_Q_RQDR 0x48 79769e209beSRavi Kumar #define MTL_Q_RQFCR 0x50 79869e209beSRavi Kumar #define MTL_Q_IER 0x70 79969e209beSRavi Kumar #define MTL_Q_ISR 0x74 80069e209beSRavi Kumar 80169e209beSRavi Kumar /* MTL queue register entry bit positions and sizes */ 80269e209beSRavi Kumar #define MTL_Q_RQDR_PRXQ_INDEX 16 80369e209beSRavi Kumar #define MTL_Q_RQDR_PRXQ_WIDTH 14 80469e209beSRavi Kumar #define MTL_Q_RQDR_RXQSTS_INDEX 4 80569e209beSRavi Kumar #define MTL_Q_RQDR_RXQSTS_WIDTH 2 80669e209beSRavi Kumar #define MTL_Q_RQFCR_RFA_INDEX 1 80769e209beSRavi Kumar #define MTL_Q_RQFCR_RFA_WIDTH 6 80869e209beSRavi Kumar #define MTL_Q_RQFCR_RFD_INDEX 17 80969e209beSRavi Kumar #define MTL_Q_RQFCR_RFD_WIDTH 6 81069e209beSRavi Kumar #define MTL_Q_RQOMR_EHFC_INDEX 7 81169e209beSRavi Kumar #define MTL_Q_RQOMR_EHFC_WIDTH 1 81269e209beSRavi Kumar #define MTL_Q_RQOMR_RQS_INDEX 16 81369e209beSRavi Kumar #define MTL_Q_RQOMR_RQS_WIDTH 9 81469e209beSRavi Kumar #define MTL_Q_RQOMR_RSF_INDEX 5 81569e209beSRavi Kumar #define MTL_Q_RQOMR_RSF_WIDTH 1 81669e209beSRavi Kumar #define MTL_Q_RQOMR_RTC_INDEX 0 81769e209beSRavi Kumar #define MTL_Q_RQOMR_RTC_WIDTH 2 81869e209beSRavi Kumar #define MTL_Q_TQDR_TRCSTS_INDEX 1 81969e209beSRavi Kumar #define MTL_Q_TQDR_TRCSTS_WIDTH 2 82069e209beSRavi Kumar #define MTL_Q_TQDR_TXQSTS_INDEX 4 82169e209beSRavi Kumar #define MTL_Q_TQDR_TXQSTS_WIDTH 1 82269e209beSRavi Kumar #define MTL_Q_TQOMR_FTQ_INDEX 0 82369e209beSRavi Kumar #define MTL_Q_TQOMR_FTQ_WIDTH 1 82469e209beSRavi Kumar #define MTL_Q_TQOMR_Q2TCMAP_INDEX 8 82569e209beSRavi Kumar #define MTL_Q_TQOMR_Q2TCMAP_WIDTH 3 82669e209beSRavi Kumar #define MTL_Q_TQOMR_TQS_INDEX 16 82769e209beSRavi Kumar #define MTL_Q_TQOMR_TQS_WIDTH 10 82869e209beSRavi Kumar #define MTL_Q_TQOMR_TSF_INDEX 1 82969e209beSRavi Kumar #define MTL_Q_TQOMR_TSF_WIDTH 1 83069e209beSRavi Kumar #define MTL_Q_TQOMR_TTC_INDEX 4 83169e209beSRavi Kumar #define MTL_Q_TQOMR_TTC_WIDTH 3 83269e209beSRavi Kumar #define MTL_Q_TQOMR_TXQEN_INDEX 2 83369e209beSRavi Kumar #define MTL_Q_TQOMR_TXQEN_WIDTH 2 83469e209beSRavi Kumar 83569e209beSRavi Kumar /* MTL queue register value */ 83669e209beSRavi Kumar #define MTL_RSF_DISABLE 0x00 83769e209beSRavi Kumar #define MTL_RSF_ENABLE 0x01 83869e209beSRavi Kumar #define MTL_TSF_DISABLE 0x00 83969e209beSRavi Kumar #define MTL_TSF_ENABLE 0x01 84069e209beSRavi Kumar 84169e209beSRavi Kumar #define MTL_RX_THRESHOLD_64 0x00 84269e209beSRavi Kumar #define MTL_RX_THRESHOLD_96 0x02 84369e209beSRavi Kumar #define MTL_RX_THRESHOLD_128 0x03 84469e209beSRavi Kumar #define MTL_TX_THRESHOLD_32 0x01 84569e209beSRavi Kumar #define MTL_TX_THRESHOLD_64 0x00 84669e209beSRavi Kumar #define MTL_TX_THRESHOLD_96 0x02 84769e209beSRavi Kumar #define MTL_TX_THRESHOLD_128 0x03 84869e209beSRavi Kumar #define MTL_TX_THRESHOLD_192 0x04 84969e209beSRavi Kumar #define MTL_TX_THRESHOLD_256 0x05 85069e209beSRavi Kumar #define MTL_TX_THRESHOLD_384 0x06 85169e209beSRavi Kumar #define MTL_TX_THRESHOLD_512 0x07 85269e209beSRavi Kumar 85369e209beSRavi Kumar #define MTL_ETSALG_WRR 0x00 85469e209beSRavi Kumar #define MTL_ETSALG_WFQ 0x01 85569e209beSRavi Kumar #define MTL_ETSALG_DWRR 0x02 85669e209beSRavi Kumar #define MTL_RAA_SP 0x00 85769e209beSRavi Kumar #define MTL_RAA_WSP 0x01 85869e209beSRavi Kumar 85969e209beSRavi Kumar #define MTL_Q_DISABLED 0x00 86069e209beSRavi Kumar #define MTL_Q_ENABLED 0x02 86169e209beSRavi Kumar 86269e209beSRavi Kumar /* MTL traffic class register offsets 86369e209beSRavi Kumar * Multiple traffic classes can be active. The first class has registers 86469e209beSRavi Kumar * that begin at 0x1100. Each subsequent queue has registers that 86569e209beSRavi Kumar * are accessed using an offset of 0x80 from the previous queue. 86669e209beSRavi Kumar */ 86769e209beSRavi Kumar #define MTL_TC_BASE MTL_Q_BASE 86869e209beSRavi Kumar #define MTL_TC_INC MTL_Q_INC 86969e209beSRavi Kumar 87069e209beSRavi Kumar #define MTL_TC_ETSCR 0x10 87169e209beSRavi Kumar #define MTL_TC_ETSSR 0x14 87269e209beSRavi Kumar #define MTL_TC_QWR 0x18 87369e209beSRavi Kumar 87469e209beSRavi Kumar /* MTL traffic class register entry bit positions and sizes */ 87569e209beSRavi Kumar #define MTL_TC_ETSCR_TSA_INDEX 0 87669e209beSRavi Kumar #define MTL_TC_ETSCR_TSA_WIDTH 2 87769e209beSRavi Kumar #define MTL_TC_QWR_QW_INDEX 0 87869e209beSRavi Kumar #define MTL_TC_QWR_QW_WIDTH 21 879e0543d4eSAmaranath Somalapuram #define MTL_TCPM0R_PSTC0_INDEX 0 880e0543d4eSAmaranath Somalapuram #define MTL_TCPM0R_PSTC0_WIDTH 8 881e0543d4eSAmaranath Somalapuram #define MTL_TCPM0R_PSTC1_INDEX 8 882e0543d4eSAmaranath Somalapuram #define MTL_TCPM0R_PSTC1_WIDTH 8 883e0543d4eSAmaranath Somalapuram #define MTL_TCPM0R_PSTC2_INDEX 16 884e0543d4eSAmaranath Somalapuram #define MTL_TCPM0R_PSTC2_WIDTH 8 885e0543d4eSAmaranath Somalapuram #define MTL_TCPM0R_PSTC3_INDEX 24 886e0543d4eSAmaranath Somalapuram #define MTL_TCPM0R_PSTC3_WIDTH 8 887e0543d4eSAmaranath Somalapuram #define MTL_TCPM1R_PSTC4_INDEX 0 888e0543d4eSAmaranath Somalapuram #define MTL_TCPM1R_PSTC4_WIDTH 8 889e0543d4eSAmaranath Somalapuram #define MTL_TCPM1R_PSTC5_INDEX 8 890e0543d4eSAmaranath Somalapuram #define MTL_TCPM1R_PSTC5_WIDTH 8 891e0543d4eSAmaranath Somalapuram #define MTL_TCPM1R_PSTC6_INDEX 16 892e0543d4eSAmaranath Somalapuram #define MTL_TCPM1R_PSTC6_WIDTH 8 893e0543d4eSAmaranath Somalapuram #define MTL_TCPM1R_PSTC7_INDEX 24 894e0543d4eSAmaranath Somalapuram #define MTL_TCPM1R_PSTC7_WIDTH 8 89569e209beSRavi Kumar 89669e209beSRavi Kumar /* MTL traffic class register value */ 89769e209beSRavi Kumar #define MTL_TSA_SP 0x00 89869e209beSRavi Kumar #define MTL_TSA_ETS 0x02 89969e209beSRavi Kumar 90069e209beSRavi Kumar /* PCS register offsets */ 90169e209beSRavi Kumar #define PCS_V1_WINDOW_SELECT 0x03fc 90269e209beSRavi Kumar #define PCS_V2_WINDOW_DEF 0x9060 90369e209beSRavi Kumar #define PCS_V2_WINDOW_SELECT 0x9064 904991e0b1dSSelwin Sebastian #define PCS_V2_RV_WINDOW_DEF 0x1060 905991e0b1dSSelwin Sebastian #define PCS_V2_RV_WINDOW_SELECT 0x1064 906f7706f88SSelwin Sebastian #define PCS_V2_YC_WINDOW_DEF 0x18060 907f7706f88SSelwin Sebastian #define PCS_V2_YC_WINDOW_SELECT 0x18064 90869e209beSRavi Kumar 90969e209beSRavi Kumar /* PCS register entry bit positions and sizes */ 91069e209beSRavi Kumar #define PCS_V2_WINDOW_DEF_OFFSET_INDEX 6 91169e209beSRavi Kumar #define PCS_V2_WINDOW_DEF_OFFSET_WIDTH 14 91269e209beSRavi Kumar #define PCS_V2_WINDOW_DEF_SIZE_INDEX 2 91369e209beSRavi Kumar #define PCS_V2_WINDOW_DEF_SIZE_WIDTH 4 91469e209beSRavi Kumar 91569e209beSRavi Kumar /* SerDes integration register offsets */ 91669e209beSRavi Kumar #define SIR0_KR_RT_1 0x002c 91769e209beSRavi Kumar #define SIR0_STATUS 0x0040 91869e209beSRavi Kumar #define SIR1_SPEED 0x0000 91969e209beSRavi Kumar 92069e209beSRavi Kumar /* SerDes integration register entry bit positions and sizes */ 92169e209beSRavi Kumar #define SIR0_KR_RT_1_RESET_INDEX 11 92269e209beSRavi Kumar #define SIR0_KR_RT_1_RESET_WIDTH 1 92369e209beSRavi Kumar #define SIR0_STATUS_RX_READY_INDEX 0 92469e209beSRavi Kumar #define SIR0_STATUS_RX_READY_WIDTH 1 92569e209beSRavi Kumar #define SIR0_STATUS_TX_READY_INDEX 8 92669e209beSRavi Kumar #define SIR0_STATUS_TX_READY_WIDTH 1 92769e209beSRavi Kumar #define SIR1_SPEED_CDR_RATE_INDEX 12 92869e209beSRavi Kumar #define SIR1_SPEED_CDR_RATE_WIDTH 4 92969e209beSRavi Kumar #define SIR1_SPEED_DATARATE_INDEX 4 93069e209beSRavi Kumar #define SIR1_SPEED_DATARATE_WIDTH 2 93169e209beSRavi Kumar #define SIR1_SPEED_PLLSEL_INDEX 3 93269e209beSRavi Kumar #define SIR1_SPEED_PLLSEL_WIDTH 1 93369e209beSRavi Kumar #define SIR1_SPEED_RATECHANGE_INDEX 6 93469e209beSRavi Kumar #define SIR1_SPEED_RATECHANGE_WIDTH 1 93569e209beSRavi Kumar #define SIR1_SPEED_TXAMP_INDEX 8 93669e209beSRavi Kumar #define SIR1_SPEED_TXAMP_WIDTH 4 93769e209beSRavi Kumar #define SIR1_SPEED_WORDMODE_INDEX 0 93869e209beSRavi Kumar #define SIR1_SPEED_WORDMODE_WIDTH 3 93969e209beSRavi Kumar 94069e209beSRavi Kumar /* SerDes RxTx register offsets */ 94169e209beSRavi Kumar #define RXTX_REG6 0x0018 94269e209beSRavi Kumar #define RXTX_REG20 0x0050 94369e209beSRavi Kumar #define RXTX_REG22 0x0058 94469e209beSRavi Kumar #define RXTX_REG114 0x01c8 94569e209beSRavi Kumar #define RXTX_REG129 0x0204 94669e209beSRavi Kumar 94769e209beSRavi Kumar /* SerDes RxTx register entry bit positions and sizes */ 94869e209beSRavi Kumar #define RXTX_REG6_RESETB_RXD_INDEX 8 94969e209beSRavi Kumar #define RXTX_REG6_RESETB_RXD_WIDTH 1 95069e209beSRavi Kumar #define RXTX_REG20_BLWC_ENA_INDEX 2 95169e209beSRavi Kumar #define RXTX_REG20_BLWC_ENA_WIDTH 1 95269e209beSRavi Kumar #define RXTX_REG114_PQ_REG_INDEX 9 95369e209beSRavi Kumar #define RXTX_REG114_PQ_REG_WIDTH 7 95469e209beSRavi Kumar #define RXTX_REG129_RXDFE_CONFIG_INDEX 14 95569e209beSRavi Kumar #define RXTX_REG129_RXDFE_CONFIG_WIDTH 2 95669e209beSRavi Kumar 95769e209beSRavi Kumar /* MAC Control register offsets */ 95869e209beSRavi Kumar #define XP_PROP_0 0x0000 95969e209beSRavi Kumar #define XP_PROP_1 0x0004 96069e209beSRavi Kumar #define XP_PROP_2 0x0008 96169e209beSRavi Kumar #define XP_PROP_3 0x000c 96269e209beSRavi Kumar #define XP_PROP_4 0x0010 96369e209beSRavi Kumar #define XP_PROP_5 0x0014 96469e209beSRavi Kumar #define XP_MAC_ADDR_LO 0x0020 96569e209beSRavi Kumar #define XP_MAC_ADDR_HI 0x0024 96669e209beSRavi Kumar #define XP_ECC_ISR 0x0030 96769e209beSRavi Kumar #define XP_ECC_IER 0x0034 96869e209beSRavi Kumar #define XP_ECC_CNT0 0x003c 96969e209beSRavi Kumar #define XP_ECC_CNT1 0x0040 97069e209beSRavi Kumar #define XP_DRIVER_INT_REQ 0x0060 97169e209beSRavi Kumar #define XP_DRIVER_INT_RO 0x0064 97269e209beSRavi Kumar #define XP_DRIVER_SCRATCH_0 0x0068 97369e209beSRavi Kumar #define XP_DRIVER_SCRATCH_1 0x006c 97469e209beSRavi Kumar #define XP_INT_EN 0x0078 97569e209beSRavi Kumar #define XP_I2C_MUTEX 0x0080 97669e209beSRavi Kumar #define XP_MDIO_MUTEX 0x0084 97769e209beSRavi Kumar 97869e209beSRavi Kumar /* MAC Control register entry bit positions and sizes */ 97969e209beSRavi Kumar #define XP_DRIVER_INT_REQ_REQUEST_INDEX 0 98069e209beSRavi Kumar #define XP_DRIVER_INT_REQ_REQUEST_WIDTH 1 98169e209beSRavi Kumar #define XP_DRIVER_INT_RO_STATUS_INDEX 0 98269e209beSRavi Kumar #define XP_DRIVER_INT_RO_STATUS_WIDTH 1 98369e209beSRavi Kumar #define XP_DRIVER_SCRATCH_0_COMMAND_INDEX 0 98469e209beSRavi Kumar #define XP_DRIVER_SCRATCH_0_COMMAND_WIDTH 8 98569e209beSRavi Kumar #define XP_DRIVER_SCRATCH_0_SUB_COMMAND_INDEX 8 98669e209beSRavi Kumar #define XP_DRIVER_SCRATCH_0_SUB_COMMAND_WIDTH 8 98769e209beSRavi Kumar #define XP_ECC_CNT0_RX_DED_INDEX 24 98869e209beSRavi Kumar #define XP_ECC_CNT0_RX_DED_WIDTH 8 98969e209beSRavi Kumar #define XP_ECC_CNT0_RX_SEC_INDEX 16 99069e209beSRavi Kumar #define XP_ECC_CNT0_RX_SEC_WIDTH 8 99169e209beSRavi Kumar #define XP_ECC_CNT0_TX_DED_INDEX 8 99269e209beSRavi Kumar #define XP_ECC_CNT0_TX_DED_WIDTH 8 99369e209beSRavi Kumar #define XP_ECC_CNT0_TX_SEC_INDEX 0 99469e209beSRavi Kumar #define XP_ECC_CNT0_TX_SEC_WIDTH 8 99569e209beSRavi Kumar #define XP_ECC_CNT1_DESC_DED_INDEX 8 99669e209beSRavi Kumar #define XP_ECC_CNT1_DESC_DED_WIDTH 8 99769e209beSRavi Kumar #define XP_ECC_CNT1_DESC_SEC_INDEX 0 99869e209beSRavi Kumar #define XP_ECC_CNT1_DESC_SEC_WIDTH 8 99969e209beSRavi Kumar #define XP_ECC_IER_DESC_DED_INDEX 0 100069e209beSRavi Kumar #define XP_ECC_IER_DESC_DED_WIDTH 1 100169e209beSRavi Kumar #define XP_ECC_IER_DESC_SEC_INDEX 1 100269e209beSRavi Kumar #define XP_ECC_IER_DESC_SEC_WIDTH 1 100369e209beSRavi Kumar #define XP_ECC_IER_RX_DED_INDEX 2 100469e209beSRavi Kumar #define XP_ECC_IER_RX_DED_WIDTH 1 100569e209beSRavi Kumar #define XP_ECC_IER_RX_SEC_INDEX 3 100669e209beSRavi Kumar #define XP_ECC_IER_RX_SEC_WIDTH 1 100769e209beSRavi Kumar #define XP_ECC_IER_TX_DED_INDEX 4 100869e209beSRavi Kumar #define XP_ECC_IER_TX_DED_WIDTH 1 100969e209beSRavi Kumar #define XP_ECC_IER_TX_SEC_INDEX 5 101069e209beSRavi Kumar #define XP_ECC_IER_TX_SEC_WIDTH 1 101169e209beSRavi Kumar #define XP_ECC_ISR_DESC_DED_INDEX 0 101269e209beSRavi Kumar #define XP_ECC_ISR_DESC_DED_WIDTH 1 101369e209beSRavi Kumar #define XP_ECC_ISR_DESC_SEC_INDEX 1 101469e209beSRavi Kumar #define XP_ECC_ISR_DESC_SEC_WIDTH 1 101569e209beSRavi Kumar #define XP_ECC_ISR_RX_DED_INDEX 2 101669e209beSRavi Kumar #define XP_ECC_ISR_RX_DED_WIDTH 1 101769e209beSRavi Kumar #define XP_ECC_ISR_RX_SEC_INDEX 3 101869e209beSRavi Kumar #define XP_ECC_ISR_RX_SEC_WIDTH 1 101969e209beSRavi Kumar #define XP_ECC_ISR_TX_DED_INDEX 4 102069e209beSRavi Kumar #define XP_ECC_ISR_TX_DED_WIDTH 1 102169e209beSRavi Kumar #define XP_ECC_ISR_TX_SEC_INDEX 5 102269e209beSRavi Kumar #define XP_ECC_ISR_TX_SEC_WIDTH 1 102369e209beSRavi Kumar #define XP_I2C_MUTEX_BUSY_INDEX 31 102469e209beSRavi Kumar #define XP_I2C_MUTEX_BUSY_WIDTH 1 102569e209beSRavi Kumar #define XP_I2C_MUTEX_ID_INDEX 29 102669e209beSRavi Kumar #define XP_I2C_MUTEX_ID_WIDTH 2 102769e209beSRavi Kumar #define XP_I2C_MUTEX_ACTIVE_INDEX 0 102869e209beSRavi Kumar #define XP_I2C_MUTEX_ACTIVE_WIDTH 1 102969e209beSRavi Kumar #define XP_MAC_ADDR_HI_VALID_INDEX 31 103069e209beSRavi Kumar #define XP_MAC_ADDR_HI_VALID_WIDTH 1 103169e209beSRavi Kumar #define XP_PROP_0_CONN_TYPE_INDEX 28 103269e209beSRavi Kumar #define XP_PROP_0_CONN_TYPE_WIDTH 3 103369e209beSRavi Kumar #define XP_PROP_0_MDIO_ADDR_INDEX 16 103469e209beSRavi Kumar #define XP_PROP_0_MDIO_ADDR_WIDTH 5 103569e209beSRavi Kumar #define XP_PROP_0_PORT_ID_INDEX 0 103669e209beSRavi Kumar #define XP_PROP_0_PORT_ID_WIDTH 8 103769e209beSRavi Kumar #define XP_PROP_0_PORT_MODE_INDEX 8 103869e209beSRavi Kumar #define XP_PROP_0_PORT_MODE_WIDTH 4 1039a935a4c3SSelwin Sebastian #define XP_PROP_0_PORT_SPEEDS_INDEX 22 1040a935a4c3SSelwin Sebastian #define XP_PROP_0_PORT_SPEEDS_WIDTH 5 104169e209beSRavi Kumar #define XP_PROP_1_MAX_RX_DMA_INDEX 24 104269e209beSRavi Kumar #define XP_PROP_1_MAX_RX_DMA_WIDTH 5 104369e209beSRavi Kumar #define XP_PROP_1_MAX_RX_QUEUES_INDEX 8 104469e209beSRavi Kumar #define XP_PROP_1_MAX_RX_QUEUES_WIDTH 5 104569e209beSRavi Kumar #define XP_PROP_1_MAX_TX_DMA_INDEX 16 104669e209beSRavi Kumar #define XP_PROP_1_MAX_TX_DMA_WIDTH 5 104769e209beSRavi Kumar #define XP_PROP_1_MAX_TX_QUEUES_INDEX 0 104869e209beSRavi Kumar #define XP_PROP_1_MAX_TX_QUEUES_WIDTH 5 104969e209beSRavi Kumar #define XP_PROP_2_RX_FIFO_SIZE_INDEX 16 105069e209beSRavi Kumar #define XP_PROP_2_RX_FIFO_SIZE_WIDTH 16 105169e209beSRavi Kumar #define XP_PROP_2_TX_FIFO_SIZE_INDEX 0 105269e209beSRavi Kumar #define XP_PROP_2_TX_FIFO_SIZE_WIDTH 16 105369e209beSRavi Kumar #define XP_PROP_3_GPIO_MASK_INDEX 28 105469e209beSRavi Kumar #define XP_PROP_3_GPIO_MASK_WIDTH 4 105569e209beSRavi Kumar #define XP_PROP_3_GPIO_MOD_ABS_INDEX 20 105669e209beSRavi Kumar #define XP_PROP_3_GPIO_MOD_ABS_WIDTH 4 105769e209beSRavi Kumar #define XP_PROP_3_GPIO_RATE_SELECT_INDEX 16 105869e209beSRavi Kumar #define XP_PROP_3_GPIO_RATE_SELECT_WIDTH 4 105969e209beSRavi Kumar #define XP_PROP_3_GPIO_RX_LOS_INDEX 24 106069e209beSRavi Kumar #define XP_PROP_3_GPIO_RX_LOS_WIDTH 4 106169e209beSRavi Kumar #define XP_PROP_3_GPIO_TX_FAULT_INDEX 12 106269e209beSRavi Kumar #define XP_PROP_3_GPIO_TX_FAULT_WIDTH 4 106369e209beSRavi Kumar #define XP_PROP_3_GPIO_ADDR_INDEX 8 106469e209beSRavi Kumar #define XP_PROP_3_GPIO_ADDR_WIDTH 3 106569e209beSRavi Kumar #define XP_PROP_3_MDIO_RESET_INDEX 0 106669e209beSRavi Kumar #define XP_PROP_3_MDIO_RESET_WIDTH 2 106769e209beSRavi Kumar #define XP_PROP_3_MDIO_RESET_I2C_ADDR_INDEX 8 106869e209beSRavi Kumar #define XP_PROP_3_MDIO_RESET_I2C_ADDR_WIDTH 3 106969e209beSRavi Kumar #define XP_PROP_3_MDIO_RESET_I2C_GPIO_INDEX 12 107069e209beSRavi Kumar #define XP_PROP_3_MDIO_RESET_I2C_GPIO_WIDTH 4 107169e209beSRavi Kumar #define XP_PROP_3_MDIO_RESET_INT_GPIO_INDEX 4 107269e209beSRavi Kumar #define XP_PROP_3_MDIO_RESET_INT_GPIO_WIDTH 2 107369e209beSRavi Kumar #define XP_PROP_4_MUX_ADDR_HI_INDEX 8 107469e209beSRavi Kumar #define XP_PROP_4_MUX_ADDR_HI_WIDTH 5 107569e209beSRavi Kumar #define XP_PROP_4_MUX_ADDR_LO_INDEX 0 107669e209beSRavi Kumar #define XP_PROP_4_MUX_ADDR_LO_WIDTH 3 107769e209beSRavi Kumar #define XP_PROP_4_MUX_CHAN_INDEX 4 107869e209beSRavi Kumar #define XP_PROP_4_MUX_CHAN_WIDTH 3 107969e209beSRavi Kumar #define XP_PROP_4_REDRV_ADDR_INDEX 16 108069e209beSRavi Kumar #define XP_PROP_4_REDRV_ADDR_WIDTH 7 108169e209beSRavi Kumar #define XP_PROP_4_REDRV_IF_INDEX 23 108269e209beSRavi Kumar #define XP_PROP_4_REDRV_IF_WIDTH 1 108369e209beSRavi Kumar #define XP_PROP_4_REDRV_LANE_INDEX 24 108469e209beSRavi Kumar #define XP_PROP_4_REDRV_LANE_WIDTH 3 108569e209beSRavi Kumar #define XP_PROP_4_REDRV_MODEL_INDEX 28 108669e209beSRavi Kumar #define XP_PROP_4_REDRV_MODEL_WIDTH 3 108769e209beSRavi Kumar #define XP_PROP_4_REDRV_PRESENT_INDEX 31 108869e209beSRavi Kumar #define XP_PROP_4_REDRV_PRESENT_WIDTH 1 108969e209beSRavi Kumar 109069e209beSRavi Kumar /* I2C Control register offsets */ 109169e209beSRavi Kumar #define IC_CON 0x0000 109269e209beSRavi Kumar #define IC_TAR 0x0004 109369e209beSRavi Kumar #define IC_DATA_CMD 0x0010 109469e209beSRavi Kumar #define IC_INTR_STAT 0x002c 109569e209beSRavi Kumar #define IC_INTR_MASK 0x0030 109669e209beSRavi Kumar #define IC_RAW_INTR_STAT 0x0034 109769e209beSRavi Kumar #define IC_CLR_INTR 0x0040 109869e209beSRavi Kumar #define IC_CLR_TX_ABRT 0x0054 109969e209beSRavi Kumar #define IC_CLR_STOP_DET 0x0060 110069e209beSRavi Kumar #define IC_ENABLE 0x006c 110169e209beSRavi Kumar #define IC_TXFLR 0x0074 110269e209beSRavi Kumar #define IC_RXFLR 0x0078 110369e209beSRavi Kumar #define IC_TX_ABRT_SOURCE 0x0080 110469e209beSRavi Kumar #define IC_ENABLE_STATUS 0x009c 110569e209beSRavi Kumar #define IC_COMP_PARAM_1 0x00f4 110669e209beSRavi Kumar 110769e209beSRavi Kumar /* I2C Control register entry bit positions and sizes */ 110869e209beSRavi Kumar #define IC_COMP_PARAM_1_MAX_SPEED_MODE_INDEX 2 110969e209beSRavi Kumar #define IC_COMP_PARAM_1_MAX_SPEED_MODE_WIDTH 2 111069e209beSRavi Kumar #define IC_COMP_PARAM_1_RX_BUFFER_DEPTH_INDEX 8 111169e209beSRavi Kumar #define IC_COMP_PARAM_1_RX_BUFFER_DEPTH_WIDTH 8 111269e209beSRavi Kumar #define IC_COMP_PARAM_1_TX_BUFFER_DEPTH_INDEX 16 111369e209beSRavi Kumar #define IC_COMP_PARAM_1_TX_BUFFER_DEPTH_WIDTH 8 111469e209beSRavi Kumar #define IC_CON_MASTER_MODE_INDEX 0 111569e209beSRavi Kumar #define IC_CON_MASTER_MODE_WIDTH 1 111669e209beSRavi Kumar #define IC_CON_RESTART_EN_INDEX 5 111769e209beSRavi Kumar #define IC_CON_RESTART_EN_WIDTH 1 111869e209beSRavi Kumar #define IC_CON_RX_FIFO_FULL_HOLD_INDEX 9 111969e209beSRavi Kumar #define IC_CON_RX_FIFO_FULL_HOLD_WIDTH 1 112069e209beSRavi Kumar #define IC_CON_SLAVE_DISABLE_INDEX 6 112169e209beSRavi Kumar #define IC_CON_SLAVE_DISABLE_WIDTH 1 112269e209beSRavi Kumar #define IC_CON_SPEED_INDEX 1 112369e209beSRavi Kumar #define IC_CON_SPEED_WIDTH 2 112469e209beSRavi Kumar #define IC_DATA_CMD_CMD_INDEX 8 112569e209beSRavi Kumar #define IC_DATA_CMD_CMD_WIDTH 1 112669e209beSRavi Kumar #define IC_DATA_CMD_STOP_INDEX 9 112769e209beSRavi Kumar #define IC_DATA_CMD_STOP_WIDTH 1 112869e209beSRavi Kumar #define IC_ENABLE_ABORT_INDEX 1 112969e209beSRavi Kumar #define IC_ENABLE_ABORT_WIDTH 1 113069e209beSRavi Kumar #define IC_ENABLE_EN_INDEX 0 113169e209beSRavi Kumar #define IC_ENABLE_EN_WIDTH 1 113269e209beSRavi Kumar #define IC_ENABLE_STATUS_EN_INDEX 0 113369e209beSRavi Kumar #define IC_ENABLE_STATUS_EN_WIDTH 1 113469e209beSRavi Kumar #define IC_INTR_MASK_TX_EMPTY_INDEX 4 113569e209beSRavi Kumar #define IC_INTR_MASK_TX_EMPTY_WIDTH 1 113669e209beSRavi Kumar #define IC_RAW_INTR_STAT_RX_FULL_INDEX 2 113769e209beSRavi Kumar #define IC_RAW_INTR_STAT_RX_FULL_WIDTH 1 113869e209beSRavi Kumar #define IC_RAW_INTR_STAT_STOP_DET_INDEX 9 113969e209beSRavi Kumar #define IC_RAW_INTR_STAT_STOP_DET_WIDTH 1 114069e209beSRavi Kumar #define IC_RAW_INTR_STAT_TX_ABRT_INDEX 6 114169e209beSRavi Kumar #define IC_RAW_INTR_STAT_TX_ABRT_WIDTH 1 114269e209beSRavi Kumar #define IC_RAW_INTR_STAT_TX_EMPTY_INDEX 4 114369e209beSRavi Kumar #define IC_RAW_INTR_STAT_TX_EMPTY_WIDTH 1 114469e209beSRavi Kumar 114569e209beSRavi Kumar /* I2C Control register value */ 114669e209beSRavi Kumar #define IC_TX_ABRT_7B_ADDR_NOACK 0x0001 114769e209beSRavi Kumar #define IC_TX_ABRT_ARB_LOST 0x1000 114869e209beSRavi Kumar 114969e209beSRavi Kumar /* Descriptor/Packet entry bit positions and sizes */ 115069e209beSRavi Kumar #define RX_PACKET_ERRORS_CRC_INDEX 2 115169e209beSRavi Kumar #define RX_PACKET_ERRORS_CRC_WIDTH 1 115269e209beSRavi Kumar #define RX_PACKET_ERRORS_FRAME_INDEX 3 115369e209beSRavi Kumar #define RX_PACKET_ERRORS_FRAME_WIDTH 1 115469e209beSRavi Kumar #define RX_PACKET_ERRORS_LENGTH_INDEX 0 115569e209beSRavi Kumar #define RX_PACKET_ERRORS_LENGTH_WIDTH 1 115669e209beSRavi Kumar #define RX_PACKET_ERRORS_OVERRUN_INDEX 1 115769e209beSRavi Kumar #define RX_PACKET_ERRORS_OVERRUN_WIDTH 1 115869e209beSRavi Kumar 115969e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_CSUM_DONE_INDEX 0 116069e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_CSUM_DONE_WIDTH 1 116169e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_INDEX 1 116269e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_WIDTH 1 116369e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_INCOMPLETE_INDEX 2 116469e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_INCOMPLETE_WIDTH 1 116569e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_INDEX 3 116669e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_WIDTH 1 116769e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_CONTEXT_INDEX 4 116869e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_CONTEXT_WIDTH 1 116969e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_INDEX 5 117069e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_WIDTH 1 117169e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_RSS_HASH_INDEX 6 117269e209beSRavi Kumar #define RX_PACKET_ATTRIBUTES_RSS_HASH_WIDTH 1 117369e209beSRavi Kumar 117469e209beSRavi Kumar #define RX_NORMAL_DESC0_OVT_INDEX 0 117569e209beSRavi Kumar #define RX_NORMAL_DESC0_OVT_WIDTH 16 117669e209beSRavi Kumar #define RX_NORMAL_DESC2_HL_INDEX 0 117769e209beSRavi Kumar #define RX_NORMAL_DESC2_HL_WIDTH 10 117869e209beSRavi Kumar #define RX_NORMAL_DESC3_CDA_INDEX 27 117969e209beSRavi Kumar #define RX_NORMAL_DESC3_CDA_WIDTH 1 118069e209beSRavi Kumar #define RX_NORMAL_DESC3_CTXT_INDEX 30 118169e209beSRavi Kumar #define RX_NORMAL_DESC3_CTXT_WIDTH 1 118269e209beSRavi Kumar #define RX_NORMAL_DESC3_ES_INDEX 15 118369e209beSRavi Kumar #define RX_NORMAL_DESC3_ES_WIDTH 1 118469e209beSRavi Kumar #define RX_NORMAL_DESC3_ETLT_INDEX 16 118569e209beSRavi Kumar #define RX_NORMAL_DESC3_ETLT_WIDTH 4 118669e209beSRavi Kumar #define RX_NORMAL_DESC3_FD_INDEX 29 118769e209beSRavi Kumar #define RX_NORMAL_DESC3_FD_WIDTH 1 118869e209beSRavi Kumar #define RX_NORMAL_DESC3_INTE_INDEX 30 118969e209beSRavi Kumar #define RX_NORMAL_DESC3_INTE_WIDTH 1 119069e209beSRavi Kumar #define RX_NORMAL_DESC3_L34T_INDEX 20 119169e209beSRavi Kumar #define RX_NORMAL_DESC3_L34T_WIDTH 4 119269e209beSRavi Kumar #define RX_NORMAL_DESC3_LD_INDEX 28 119369e209beSRavi Kumar #define RX_NORMAL_DESC3_LD_WIDTH 1 119469e209beSRavi Kumar #define RX_NORMAL_DESC3_OWN_INDEX 31 119569e209beSRavi Kumar #define RX_NORMAL_DESC3_OWN_WIDTH 1 119669e209beSRavi Kumar #define RX_NORMAL_DESC3_PL_INDEX 0 119769e209beSRavi Kumar #define RX_NORMAL_DESC3_PL_WIDTH 14 119869e209beSRavi Kumar #define RX_NORMAL_DESC3_RSV_INDEX 26 119969e209beSRavi Kumar #define RX_NORMAL_DESC3_RSV_WIDTH 1 1200965b3127SSelwin Sebastian #define RX_NORMAL_DESC3_LD_INDEX 28 1201965b3127SSelwin Sebastian #define RX_NORMAL_DESC3_LD_WIDTH 1 120269e209beSRavi Kumar 120369e209beSRavi Kumar #define RX_DESC3_L34T_IPV4_TCP 1 120469e209beSRavi Kumar #define RX_DESC3_L34T_IPV4_UDP 2 120569e209beSRavi Kumar #define RX_DESC3_L34T_IPV4_ICMP 3 120669e209beSRavi Kumar #define RX_DESC3_L34T_IPV6_TCP 9 120769e209beSRavi Kumar #define RX_DESC3_L34T_IPV6_UDP 10 120869e209beSRavi Kumar #define RX_DESC3_L34T_IPV6_ICMP 11 120969e209beSRavi Kumar 121069e209beSRavi Kumar #define RX_CONTEXT_DESC3_TSA_INDEX 4 121169e209beSRavi Kumar #define RX_CONTEXT_DESC3_TSA_WIDTH 1 121269e209beSRavi Kumar #define RX_CONTEXT_DESC3_TSD_INDEX 6 121369e209beSRavi Kumar #define RX_CONTEXT_DESC3_TSD_WIDTH 1 1214e0444948SSelwin Sebastian #define RX_CONTEXT_DESC3_PMT_INDEX 0 1215e0444948SSelwin Sebastian #define RX_CONTEXT_DESC3_PMT_WIDTH 4 121669e209beSRavi Kumar 121769e209beSRavi Kumar #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_INDEX 0 121869e209beSRavi Kumar #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_WIDTH 1 121969e209beSRavi Kumar #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_INDEX 1 122069e209beSRavi Kumar #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_WIDTH 1 122169e209beSRavi Kumar #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_INDEX 2 122269e209beSRavi Kumar #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_WIDTH 1 122369e209beSRavi Kumar #define TX_PACKET_ATTRIBUTES_PTP_INDEX 3 122469e209beSRavi Kumar #define TX_PACKET_ATTRIBUTES_PTP_WIDTH 1 122569e209beSRavi Kumar 122669e209beSRavi Kumar #define TX_CONTEXT_DESC2_MSS_INDEX 0 122769e209beSRavi Kumar #define TX_CONTEXT_DESC2_MSS_WIDTH 15 122869e209beSRavi Kumar #define TX_CONTEXT_DESC3_CTXT_INDEX 30 122969e209beSRavi Kumar #define TX_CONTEXT_DESC3_CTXT_WIDTH 1 123069e209beSRavi Kumar #define TX_CONTEXT_DESC3_TCMSSV_INDEX 26 123169e209beSRavi Kumar #define TX_CONTEXT_DESC3_TCMSSV_WIDTH 1 123269e209beSRavi Kumar #define TX_CONTEXT_DESC3_VLTV_INDEX 16 123369e209beSRavi Kumar #define TX_CONTEXT_DESC3_VLTV_WIDTH 1 123469e209beSRavi Kumar #define TX_CONTEXT_DESC3_VT_INDEX 0 123569e209beSRavi Kumar #define TX_CONTEXT_DESC3_VT_WIDTH 16 123669e209beSRavi Kumar 1237*186f8e8cSJesna K E /* TSO related register entry bit positions and sizes*/ 1238*186f8e8cSJesna K E #define TX_NORMAL_DESC3_TPL_INDEX 0 1239*186f8e8cSJesna K E #define TX_NORMAL_DESC3_TPL_WIDTH 18 1240*186f8e8cSJesna K E #define TX_NORMAL_DESC3_THL_INDEX 19 1241*186f8e8cSJesna K E #define TX_NORMAL_DESC3_THL_WIDTH 4 1242*186f8e8cSJesna K E #define TX_CONTEXT_DESC3_OSTC_INDEX 27 1243*186f8e8cSJesna K E #define TX_CONTEXT_DESC3_OSTC_WIDTH 1 1244*186f8e8cSJesna K E 1245*186f8e8cSJesna K E 124669e209beSRavi Kumar #define TX_NORMAL_DESC2_HL_B1L_INDEX 0 124769e209beSRavi Kumar #define TX_NORMAL_DESC2_HL_B1L_WIDTH 14 124869e209beSRavi Kumar #define TX_NORMAL_DESC2_IC_INDEX 31 124969e209beSRavi Kumar #define TX_NORMAL_DESC2_IC_WIDTH 1 125069e209beSRavi Kumar #define TX_NORMAL_DESC2_TTSE_INDEX 30 125169e209beSRavi Kumar #define TX_NORMAL_DESC2_TTSE_WIDTH 1 125269e209beSRavi Kumar #define TX_NORMAL_DESC2_VTIR_INDEX 14 125369e209beSRavi Kumar #define TX_NORMAL_DESC2_VTIR_WIDTH 2 125469e209beSRavi Kumar #define TX_NORMAL_DESC3_CIC_INDEX 16 125569e209beSRavi Kumar #define TX_NORMAL_DESC3_CIC_WIDTH 2 125669e209beSRavi Kumar #define TX_NORMAL_DESC3_CPC_INDEX 26 125769e209beSRavi Kumar #define TX_NORMAL_DESC3_CPC_WIDTH 2 125869e209beSRavi Kumar #define TX_NORMAL_DESC3_CTXT_INDEX 30 125969e209beSRavi Kumar #define TX_NORMAL_DESC3_CTXT_WIDTH 1 126069e209beSRavi Kumar #define TX_NORMAL_DESC3_FD_INDEX 29 126169e209beSRavi Kumar #define TX_NORMAL_DESC3_FD_WIDTH 1 126269e209beSRavi Kumar #define TX_NORMAL_DESC3_FL_INDEX 0 126369e209beSRavi Kumar #define TX_NORMAL_DESC3_FL_WIDTH 15 126469e209beSRavi Kumar #define TX_NORMAL_DESC3_LD_INDEX 28 126569e209beSRavi Kumar #define TX_NORMAL_DESC3_LD_WIDTH 1 126669e209beSRavi Kumar #define TX_NORMAL_DESC3_OWN_INDEX 31 126769e209beSRavi Kumar #define TX_NORMAL_DESC3_OWN_WIDTH 1 126869e209beSRavi Kumar #define TX_NORMAL_DESC3_TCPHDRLEN_INDEX 19 126969e209beSRavi Kumar #define TX_NORMAL_DESC3_TCPHDRLEN_WIDTH 4 127069e209beSRavi Kumar #define TX_NORMAL_DESC3_TCPPL_INDEX 0 127169e209beSRavi Kumar #define TX_NORMAL_DESC3_TCPPL_WIDTH 18 127269e209beSRavi Kumar #define TX_NORMAL_DESC3_TSE_INDEX 18 127369e209beSRavi Kumar #define TX_NORMAL_DESC3_TSE_WIDTH 1 127469e209beSRavi Kumar 127569e209beSRavi Kumar #define TX_NORMAL_DESC2_VLAN_INSERT 0x2 127669e209beSRavi Kumar 127769e209beSRavi Kumar /* MDIO undefined or vendor specific registers */ 127869e209beSRavi Kumar #ifndef MDIO_PMA_10GBR_PMD_CTRL 127969e209beSRavi Kumar #define MDIO_PMA_10GBR_PMD_CTRL 0x0096 128069e209beSRavi Kumar #endif 128169e209beSRavi Kumar 128269e209beSRavi Kumar #ifndef MDIO_PMA_10GBR_FECCTRL 128369e209beSRavi Kumar #define MDIO_PMA_10GBR_FECCTRL 0x00ab 128469e209beSRavi Kumar #endif 128569e209beSRavi Kumar 1286cd48955bSSelwin Sebastian #ifndef MDIO_PMA_RX_CTRL1 1287cd48955bSSelwin Sebastian #define MDIO_PMA_RX_CTRL1 0x8051 1288cd48955bSSelwin Sebastian #endif 1289cd48955bSSelwin Sebastian 12906c04898fSVenkat Kumar Ande #ifndef MDIO_PMA_RX_LSTS 12916c04898fSVenkat Kumar Ande #define MDIO_PMA_RX_LSTS 0x018020 12926c04898fSVenkat Kumar Ande #endif 12936c04898fSVenkat Kumar Ande 12946c04898fSVenkat Kumar Ande #ifndef MDIO_PMA_RX_EQ_CTRL4 12956c04898fSVenkat Kumar Ande #define MDIO_PMA_RX_EQ_CTRL4 0x0001805C 12966c04898fSVenkat Kumar Ande #endif 12976c04898fSVenkat Kumar Ande 12986c04898fSVenkat Kumar Ande #ifndef MDIO_PMA_MP_MISC_STS 12996c04898fSVenkat Kumar Ande #define MDIO_PMA_MP_MISC_STS 0x0078 13006c04898fSVenkat Kumar Ande #endif 13016c04898fSVenkat Kumar Ande 13026c04898fSVenkat Kumar Ande #ifndef MDIO_PMA_PHY_RX_EQ_CEU 13036c04898fSVenkat Kumar Ande #define MDIO_PMA_PHY_RX_EQ_CEU 0x1800E 13046c04898fSVenkat Kumar Ande #endif 13056c04898fSVenkat Kumar Ande 130669e209beSRavi Kumar #ifndef MDIO_PCS_DIG_CTRL 130769e209beSRavi Kumar #define MDIO_PCS_DIG_CTRL 0x8000 130869e209beSRavi Kumar #endif 130969e209beSRavi Kumar 1310cd48955bSSelwin Sebastian #ifndef MDIO_PCS_DIGITAL_STAT 1311cd48955bSSelwin Sebastian #define MDIO_PCS_DIGITAL_STAT 0x8010 1312cd48955bSSelwin Sebastian #endif 1313cd48955bSSelwin Sebastian 131469e209beSRavi Kumar #ifndef MDIO_AN_XNP 131569e209beSRavi Kumar #define MDIO_AN_XNP 0x0016 131669e209beSRavi Kumar #endif 131769e209beSRavi Kumar 131869e209beSRavi Kumar #ifndef MDIO_AN_LPX 131969e209beSRavi Kumar #define MDIO_AN_LPX 0x0019 132069e209beSRavi Kumar #endif 132169e209beSRavi Kumar 132269e209beSRavi Kumar #ifndef MDIO_AN_COMP_STAT 132369e209beSRavi Kumar #define MDIO_AN_COMP_STAT 0x0030 132469e209beSRavi Kumar #endif 132569e209beSRavi Kumar 132669e209beSRavi Kumar #ifndef MDIO_AN_INTMASK 132769e209beSRavi Kumar #define MDIO_AN_INTMASK 0x8001 132869e209beSRavi Kumar #endif 132969e209beSRavi Kumar 133069e209beSRavi Kumar #ifndef MDIO_AN_INT 133169e209beSRavi Kumar #define MDIO_AN_INT 0x8002 133269e209beSRavi Kumar #endif 133369e209beSRavi Kumar 133469e209beSRavi Kumar #ifndef MDIO_VEND2_AN_ADVERTISE 133569e209beSRavi Kumar #define MDIO_VEND2_AN_ADVERTISE 0x0004 133669e209beSRavi Kumar #endif 133769e209beSRavi Kumar 133869e209beSRavi Kumar #ifndef MDIO_VEND2_AN_LP_ABILITY 133969e209beSRavi Kumar #define MDIO_VEND2_AN_LP_ABILITY 0x0005 134069e209beSRavi Kumar #endif 134169e209beSRavi Kumar 134269e209beSRavi Kumar #ifndef MDIO_VEND2_AN_CTRL 134369e209beSRavi Kumar #define MDIO_VEND2_AN_CTRL 0x8001 134469e209beSRavi Kumar #endif 134569e209beSRavi Kumar 134669e209beSRavi Kumar #ifndef MDIO_VEND2_AN_STAT 134769e209beSRavi Kumar #define MDIO_VEND2_AN_STAT 0x8002 134869e209beSRavi Kumar #endif 134969e209beSRavi Kumar 135000072056SRavi Kumar #ifndef MDIO_VEND2_PMA_CDR_CONTROL 135100072056SRavi Kumar #define MDIO_VEND2_PMA_CDR_CONTROL 0x8056 135200072056SRavi Kumar #endif 135300072056SRavi Kumar 135409b0a36cSSelwin Sebastian #ifndef MDIO_VEND2_PMA_MISC_CTRL0 135509b0a36cSSelwin Sebastian #define MDIO_VEND2_PMA_MISC_CTRL0 0x8090 135609b0a36cSSelwin Sebastian #endif 135709b0a36cSSelwin Sebastian 135809b0a36cSSelwin Sebastian 135969e209beSRavi Kumar #ifndef MDIO_CTRL1_SPEED1G 136069e209beSRavi Kumar #define MDIO_CTRL1_SPEED1G (MDIO_CTRL1_SPEED10G & ~BMCR_SPEED100) 136169e209beSRavi Kumar #endif 136269e209beSRavi Kumar 136369e209beSRavi Kumar #ifndef MDIO_VEND2_CTRL1_AN_ENABLE 136469e209beSRavi Kumar #define MDIO_VEND2_CTRL1_AN_ENABLE BIT(12) 136569e209beSRavi Kumar #endif 136669e209beSRavi Kumar 136769e209beSRavi Kumar #ifndef MDIO_VEND2_CTRL1_AN_RESTART 136869e209beSRavi Kumar #define MDIO_VEND2_CTRL1_AN_RESTART BIT(9) 136969e209beSRavi Kumar #endif 137069e209beSRavi Kumar 137169e209beSRavi Kumar #ifndef MDIO_VEND2_CTRL1_SS6 137269e209beSRavi Kumar #define MDIO_VEND2_CTRL1_SS6 BIT(6) 137369e209beSRavi Kumar #endif 137469e209beSRavi Kumar 137569e209beSRavi Kumar #ifndef MDIO_VEND2_CTRL1_SS13 137669e209beSRavi Kumar #define MDIO_VEND2_CTRL1_SS13 BIT(13) 137769e209beSRavi Kumar #endif 137869e209beSRavi Kumar 137969e209beSRavi Kumar /* MDIO mask values */ 138069e209beSRavi Kumar #define AXGBE_AN_CL73_INT_CMPLT BIT(0) 138169e209beSRavi Kumar #define AXGBE_AN_CL73_INC_LINK BIT(1) 138269e209beSRavi Kumar #define AXGBE_AN_CL73_PG_RCV BIT(2) 138369e209beSRavi Kumar #define AXGBE_AN_CL73_INT_MASK 0x07 138469e209beSRavi Kumar 138569e209beSRavi Kumar #define AXGBE_XNP_MCF_NULL_MESSAGE 0x001 138669e209beSRavi Kumar #define AXGBE_XNP_ACK_PROCESSED BIT(12) 138769e209beSRavi Kumar #define AXGBE_XNP_MP_FORMATTED BIT(13) 138869e209beSRavi Kumar #define AXGBE_XNP_NP_EXCHANGE BIT(15) 138969e209beSRavi Kumar 139069e209beSRavi Kumar #define AXGBE_KR_TRAINING_START BIT(0) 139169e209beSRavi Kumar #define AXGBE_KR_TRAINING_ENABLE BIT(1) 139269e209beSRavi Kumar 139369e209beSRavi Kumar #define AXGBE_PCS_CL37_BP BIT(12) 1394cd48955bSSelwin Sebastian #define XGBE_PCS_PSEQ_STATE_MASK 0x1c 1395cd48955bSSelwin Sebastian #define XGBE_PCS_PSEQ_STATE_POWER_GOOD 0x10 139669e209beSRavi Kumar 139769e209beSRavi Kumar #define AXGBE_AN_CL37_INT_CMPLT BIT(0) 139869e209beSRavi Kumar #define AXGBE_AN_CL37_INT_MASK 0x01 139969e209beSRavi Kumar 140069e209beSRavi Kumar #define AXGBE_AN_CL37_HD_MASK 0x40 140169e209beSRavi Kumar #define AXGBE_AN_CL37_FD_MASK 0x20 140269e209beSRavi Kumar 140369e209beSRavi Kumar #define AXGBE_AN_CL37_PCS_MODE_MASK 0x06 140469e209beSRavi Kumar #define AXGBE_AN_CL37_PCS_MODE_BASEX 0x00 140569e209beSRavi Kumar #define AXGBE_AN_CL37_PCS_MODE_SGMII 0x04 140669e209beSRavi Kumar #define AXGBE_AN_CL37_TX_CONFIG_MASK 0x08 1407102b6ec3SGirish Nandibasappa #define AXGBE_AN_CL37_MII_CTRL_8BIT 0x0100 140869e209beSRavi Kumar 140900072056SRavi Kumar #define AXGBE_PMA_CDR_TRACK_EN_MASK 0x01 141000072056SRavi Kumar #define AXGBE_PMA_CDR_TRACK_EN_OFF 0x00 141100072056SRavi Kumar #define AXGBE_PMA_CDR_TRACK_EN_ON 0x01 141200072056SRavi Kumar 141369e209beSRavi Kumar /*generic*/ 141469e209beSRavi Kumar #define __iomem 141569e209beSRavi Kumar 141669e209beSRavi Kumar #define rmb() rte_rmb() /* dpdk rte provided rmb */ 141769e209beSRavi Kumar #define wmb() rte_wmb() /* dpdk rte provided wmb */ 141869e209beSRavi Kumar 141969e209beSRavi Kumar #define __le16 u16 142069e209beSRavi Kumar #define __le32 u32 142169e209beSRavi Kumar #define __le64 u64 142269e209beSRavi Kumar 142369e209beSRavi Kumar typedef unsigned char u8; 142469e209beSRavi Kumar typedef unsigned short u16; 142569e209beSRavi Kumar typedef unsigned int u32; 142669e209beSRavi Kumar typedef unsigned long long u64; 142769e209beSRavi Kumar typedef unsigned long long dma_addr_t; 142869e209beSRavi Kumar 142969e209beSRavi Kumar static inline uint32_t low32_value(uint64_t addr) 143069e209beSRavi Kumar { 143169e209beSRavi Kumar return (addr) & 0x0ffffffff; 143269e209beSRavi Kumar } 143369e209beSRavi Kumar 143469e209beSRavi Kumar static inline uint32_t high32_value(uint64_t addr) 143569e209beSRavi Kumar { 143669e209beSRavi Kumar return (addr >> 32) & 0x0ffffffff; 143769e209beSRavi Kumar } 143869e209beSRavi Kumar 143909b0a36cSSelwin Sebastian #define XGBE_PMA_PLL_CTRL_MASK BIT(15) 144009b0a36cSSelwin Sebastian #define XGBE_PMA_PLL_CTRL_SET BIT(15) 144109b0a36cSSelwin Sebastian #define XGBE_PMA_PLL_CTRL_CLEAR 0x0000 144209b0a36cSSelwin Sebastian 1443cd48955bSSelwin Sebastian #define XGBE_PMA_RX_RST_0_MASK BIT(4) 1444cd48955bSSelwin Sebastian #define XGBE_PMA_RX_RST_0_RESET_ON 0x10 1445cd48955bSSelwin Sebastian #define XGBE_PMA_RX_RST_0_RESET_OFF 0x00 1446cd48955bSSelwin Sebastian 14476c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_SIG_DET_0_MASK BIT(4) 14486c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_SIG_DET_0_ENABLE BIT(4) 14496c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_SIG_DET_0_DISABLE 0x0000 14506c04898fSVenkat Kumar Ande 14516c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_VALID_0_MASK BIT(12) 14526c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_VALID_0_ENABLE BIT(12) 14536c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_VALID_0_DISABLE 0x0000 14546c04898fSVenkat Kumar Ande 14556c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_AD_REQ_MASK BIT(12) 14566c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_AD_REQ_ENABLE BIT(12) 14576c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_AD_REQ_DISABLE 0x0000 14586c04898fSVenkat Kumar Ande 14596c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_ADPT_ACK_MASK BIT(12) 14606c04898fSVenkat Kumar Ande #define XGBE_PMA_RX_ADPT_ACK BIT(12) 14616c04898fSVenkat Kumar Ande 14626c04898fSVenkat Kumar Ande #define XGBE_PMA_CFF_UPDTM1_VLD BIT(8) 14636c04898fSVenkat Kumar Ande #define XGBE_PMA_CFF_UPDT0_VLD BIT(9) 14646c04898fSVenkat Kumar Ande #define XGBE_PMA_CFF_UPDT1_VLD BIT(10) 14656c04898fSVenkat Kumar Ande #define XGBE_PMA_CFF_UPDT_MASK (XGBE_PMA_CFF_UPDTM1_VLD |\ 14666c04898fSVenkat Kumar Ande XGBE_PMA_CFF_UPDT0_VLD | \ 14676c04898fSVenkat Kumar Ande XGBE_PMA_CFF_UPDT1_VLD) 14686c04898fSVenkat Kumar Ande 146969e209beSRavi Kumar /*END*/ 147069e209beSRavi Kumar 147169e209beSRavi Kumar /* Bit setting and getting macros 147269e209beSRavi Kumar * The get macro will extract the current bit field value from within 147369e209beSRavi Kumar * the variable 147469e209beSRavi Kumar * 147569e209beSRavi Kumar * The set macro will clear the current bit field value within the 147669e209beSRavi Kumar * variable and then set the bit field of the variable to the 147769e209beSRavi Kumar * specified value 147869e209beSRavi Kumar */ 147969e209beSRavi Kumar #define GET_BITS(_var, _index, _width) \ 148069e209beSRavi Kumar (((_var) >> (_index)) & ((0x1 << (_width)) - 1)) 148169e209beSRavi Kumar 148269e209beSRavi Kumar #define SET_BITS(_var, _index, _width, _val) \ 148369e209beSRavi Kumar do { \ 148469e209beSRavi Kumar (_var) &= ~(((0x1 << (_width)) - 1) << (_index)); \ 148569e209beSRavi Kumar (_var) |= (((_val) & ((0x1 << (_width)) - 1)) << (_index)); \ 148669e209beSRavi Kumar } while (0) 148769e209beSRavi Kumar 148869e209beSRavi Kumar #define GET_BITS_LE(_var, _index, _width) \ 148969e209beSRavi Kumar ((rte_le_to_cpu_32((_var)) >> (_index)) & ((0x1 << (_width)) - 1)) 149069e209beSRavi Kumar 149169e209beSRavi Kumar #define SET_BITS_LE(_var, _index, _width, _val) \ 149269e209beSRavi Kumar do { \ 1493902f389fSAndrius Sirvys (_var) &= rte_cpu_to_le_32(~(((0x1U << (_width)) - 1) << (_index)));\ 149469e209beSRavi Kumar (_var) |= rte_cpu_to_le_32((((_val) & \ 1495902f389fSAndrius Sirvys ((0x1U << (_width)) - 1)) << (_index))); \ 149669e209beSRavi Kumar } while (0) 149769e209beSRavi Kumar 149869e209beSRavi Kumar /* Bit setting and getting macros based on register fields 149969e209beSRavi Kumar * The get macro uses the bit field definitions formed using the input 150069e209beSRavi Kumar * names to extract the current bit field value from within the 150169e209beSRavi Kumar * variable 150269e209beSRavi Kumar * 150369e209beSRavi Kumar * The set macro uses the bit field definitions formed using the input 150469e209beSRavi Kumar * names to set the bit field of the variable to the specified value 150569e209beSRavi Kumar */ 150669e209beSRavi Kumar #define AXGMAC_GET_BITS(_var, _prefix, _field) \ 150769e209beSRavi Kumar GET_BITS((_var), \ 150869e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 150969e209beSRavi Kumar _prefix##_##_field##_WIDTH) 151069e209beSRavi Kumar 151169e209beSRavi Kumar #define AXGMAC_SET_BITS(_var, _prefix, _field, _val) \ 151269e209beSRavi Kumar SET_BITS((_var), \ 151369e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 151469e209beSRavi Kumar _prefix##_##_field##_WIDTH, (_val)) 151569e209beSRavi Kumar 151669e209beSRavi Kumar #define AXGMAC_GET_BITS_LE(_var, _prefix, _field) \ 151769e209beSRavi Kumar GET_BITS_LE((_var), \ 151869e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 151969e209beSRavi Kumar _prefix##_##_field##_WIDTH) 152069e209beSRavi Kumar 152169e209beSRavi Kumar #define AXGMAC_SET_BITS_LE(_var, _prefix, _field, _val) \ 152269e209beSRavi Kumar SET_BITS_LE((_var), \ 152369e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 152469e209beSRavi Kumar _prefix##_##_field##_WIDTH, (_val)) 152569e209beSRavi Kumar 152669e209beSRavi Kumar /* Macros for reading or writing registers 152769e209beSRavi Kumar * The ioread macros will get bit fields or full values using the 152869e209beSRavi Kumar * register definitions formed using the input names 152969e209beSRavi Kumar * 153069e209beSRavi Kumar * The iowrite macros will set bit fields or full values using the 153169e209beSRavi Kumar * register definitions formed using the input names 153269e209beSRavi Kumar */ 153369e209beSRavi Kumar #define AXGMAC_IOREAD(_pdata, _reg) \ 15347784d0d3SRavi Kumar rte_read32((uint8_t *)((_pdata)->xgmac_regs) + (_reg)) 153569e209beSRavi Kumar 153669e209beSRavi Kumar #define AXGMAC_IOREAD_BITS(_pdata, _reg, _field) \ 153769e209beSRavi Kumar GET_BITS(AXGMAC_IOREAD((_pdata), _reg), \ 153869e209beSRavi Kumar _reg##_##_field##_INDEX, \ 153969e209beSRavi Kumar _reg##_##_field##_WIDTH) 154069e209beSRavi Kumar 154169e209beSRavi Kumar #define AXGMAC_IOWRITE(_pdata, _reg, _val) \ 15427784d0d3SRavi Kumar rte_write32((_val), \ 15437784d0d3SRavi Kumar (uint8_t *)((_pdata)->xgmac_regs) + (_reg)) 154469e209beSRavi Kumar 154569e209beSRavi Kumar #define AXGMAC_IOWRITE_BITS(_pdata, _reg, _field, _val) \ 154669e209beSRavi Kumar do { \ 154769e209beSRavi Kumar u32 reg_val = AXGMAC_IOREAD((_pdata), _reg); \ 154869e209beSRavi Kumar SET_BITS(reg_val, \ 154969e209beSRavi Kumar _reg##_##_field##_INDEX, \ 155069e209beSRavi Kumar _reg##_##_field##_WIDTH, (_val)); \ 155169e209beSRavi Kumar AXGMAC_IOWRITE((_pdata), _reg, reg_val); \ 155269e209beSRavi Kumar } while (0) 155369e209beSRavi Kumar 155469e209beSRavi Kumar /* Macros for reading or writing MTL queue or traffic class registers 155569e209beSRavi Kumar * Similar to the standard read and write macros except that the 155669e209beSRavi Kumar * base register value is calculated by the queue or traffic class number 155769e209beSRavi Kumar */ 155869e209beSRavi Kumar #define AXGMAC_MTL_IOREAD(_pdata, _n, _reg) \ 15597784d0d3SRavi Kumar rte_read32((uint8_t *)((_pdata)->xgmac_regs) + \ 15607784d0d3SRavi Kumar MTL_Q_BASE + ((_n) * MTL_Q_INC) + (_reg)) 156169e209beSRavi Kumar 156269e209beSRavi Kumar #define AXGMAC_MTL_IOREAD_BITS(_pdata, _n, _reg, _field) \ 156369e209beSRavi Kumar GET_BITS(AXGMAC_MTL_IOREAD((_pdata), (_n), (_reg)), \ 156469e209beSRavi Kumar _reg##_##_field##_INDEX, \ 156569e209beSRavi Kumar _reg##_##_field##_WIDTH) 156669e209beSRavi Kumar 156769e209beSRavi Kumar #define AXGMAC_MTL_IOWRITE(_pdata, _n, _reg, _val) \ 15687784d0d3SRavi Kumar rte_write32((_val), (uint8_t *)((_pdata)->xgmac_regs) +\ 15697784d0d3SRavi Kumar MTL_Q_BASE + ((_n) * MTL_Q_INC) + (_reg)) 157069e209beSRavi Kumar 157169e209beSRavi Kumar #define AXGMAC_MTL_IOWRITE_BITS(_pdata, _n, _reg, _field, _val) \ 157269e209beSRavi Kumar do { \ 157369e209beSRavi Kumar u32 reg_val = AXGMAC_MTL_IOREAD((_pdata), (_n), _reg); \ 157469e209beSRavi Kumar SET_BITS(reg_val, \ 157569e209beSRavi Kumar _reg##_##_field##_INDEX, \ 157669e209beSRavi Kumar _reg##_##_field##_WIDTH, (_val)); \ 157769e209beSRavi Kumar AXGMAC_MTL_IOWRITE((_pdata), (_n), _reg, reg_val); \ 157869e209beSRavi Kumar } while (0) 157969e209beSRavi Kumar 158069e209beSRavi Kumar /* Macros for reading or writing DMA channel registers 158169e209beSRavi Kumar * Similar to the standard read and write macros except that the 158269e209beSRavi Kumar * base register value is obtained from the ring 158369e209beSRavi Kumar */ 158469e209beSRavi Kumar #define AXGMAC_DMA_IOREAD(_channel, _reg) \ 15857784d0d3SRavi Kumar rte_read32((uint8_t *)((_channel)->dma_regs) + (_reg)) 158669e209beSRavi Kumar 158769e209beSRavi Kumar #define AXGMAC_DMA_IOREAD_BITS(_channel, _reg, _field) \ 158869e209beSRavi Kumar GET_BITS(AXGMAC_DMA_IOREAD((_channel), _reg), \ 158969e209beSRavi Kumar _reg##_##_field##_INDEX, \ 159069e209beSRavi Kumar _reg##_##_field##_WIDTH) 159169e209beSRavi Kumar 159269e209beSRavi Kumar #define AXGMAC_DMA_IOWRITE(_channel, _reg, _val) \ 15937784d0d3SRavi Kumar rte_write32((_val), \ 15947784d0d3SRavi Kumar (uint8_t *)((_channel)->dma_regs) + (_reg)) 159569e209beSRavi Kumar 159669e209beSRavi Kumar #define AXGMAC_DMA_IOWRITE_BITS(_channel, _reg, _field, _val) \ 159769e209beSRavi Kumar do { \ 159869e209beSRavi Kumar u32 reg_val = AXGMAC_DMA_IOREAD((_channel), _reg); \ 159969e209beSRavi Kumar SET_BITS(reg_val, \ 160069e209beSRavi Kumar _reg##_##_field##_INDEX, \ 160169e209beSRavi Kumar _reg##_##_field##_WIDTH, (_val)); \ 160269e209beSRavi Kumar AXGMAC_DMA_IOWRITE((_channel), _reg, reg_val); \ 160369e209beSRavi Kumar } while (0) 160469e209beSRavi Kumar 160569e209beSRavi Kumar /* Macros for building, reading or writing register values or bits 160669e209beSRavi Kumar * within the register values of XPCS registers. 160769e209beSRavi Kumar */ 160869e209beSRavi Kumar #define XPCS_GET_BITS(_var, _prefix, _field) \ 160969e209beSRavi Kumar GET_BITS((_var), \ 161069e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 161169e209beSRavi Kumar _prefix##_##_field##_WIDTH) 161269e209beSRavi Kumar 161369e209beSRavi Kumar #define XPCS_SET_BITS(_var, _prefix, _field, _val) \ 161469e209beSRavi Kumar SET_BITS((_var), \ 161569e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 161669e209beSRavi Kumar _prefix##_##_field##_WIDTH, (_val)) 161769e209beSRavi Kumar 161869e209beSRavi Kumar #define XPCS32_IOWRITE(_pdata, _off, _val) \ 16197784d0d3SRavi Kumar rte_write32(_val, \ 16207784d0d3SRavi Kumar (uint8_t *)((_pdata)->xpcs_regs) + (_off)) 162169e209beSRavi Kumar 162269e209beSRavi Kumar #define XPCS32_IOREAD(_pdata, _off) \ 16237784d0d3SRavi Kumar rte_read32((uint8_t *)((_pdata)->xpcs_regs) + (_off)) 162469e209beSRavi Kumar 162569e209beSRavi Kumar #define XPCS16_IOWRITE(_pdata, _off, _val) \ 16267784d0d3SRavi Kumar rte_write16(_val, \ 16277784d0d3SRavi Kumar (uint8_t *)((_pdata)->xpcs_regs) + (_off)) 162869e209beSRavi Kumar 162969e209beSRavi Kumar #define XPCS16_IOREAD(_pdata, _off) \ 16307784d0d3SRavi Kumar rte_read16((uint8_t *)((_pdata)->xpcs_regs) + (_off)) 163169e209beSRavi Kumar 163269e209beSRavi Kumar /* Macros for building, reading or writing register values or bits 163369e209beSRavi Kumar * within the register values of SerDes integration registers. 163469e209beSRavi Kumar */ 163569e209beSRavi Kumar #define XSIR_GET_BITS(_var, _prefix, _field) \ 163669e209beSRavi Kumar GET_BITS((_var), \ 163769e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 163869e209beSRavi Kumar _prefix##_##_field##_WIDTH) 163969e209beSRavi Kumar 164069e209beSRavi Kumar #define XSIR_SET_BITS(_var, _prefix, _field, _val) \ 164169e209beSRavi Kumar SET_BITS((_var), \ 164269e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 164369e209beSRavi Kumar _prefix##_##_field##_WIDTH, (_val)) 164469e209beSRavi Kumar 164569e209beSRavi Kumar #define XSIR0_IOREAD(_pdata, _reg) \ 16467784d0d3SRavi Kumar rte_read16((uint8_t *)((_pdata)->sir0_regs) + (_reg)) 164769e209beSRavi Kumar 164869e209beSRavi Kumar #define XSIR0_IOREAD_BITS(_pdata, _reg, _field) \ 164969e209beSRavi Kumar GET_BITS(XSIR0_IOREAD((_pdata), _reg), \ 165069e209beSRavi Kumar _reg##_##_field##_INDEX, \ 165169e209beSRavi Kumar _reg##_##_field##_WIDTH) 165269e209beSRavi Kumar 165369e209beSRavi Kumar #define XSIR0_IOWRITE(_pdata, _reg, _val) \ 16547784d0d3SRavi Kumar rte_write16((_val), \ 16557784d0d3SRavi Kumar (uint8_t *)((_pdata)->sir0_regs) + (_reg)) 165669e209beSRavi Kumar 165769e209beSRavi Kumar #define XSIR0_IOWRITE_BITS(_pdata, _reg, _field, _val) \ 165869e209beSRavi Kumar do { \ 165969e209beSRavi Kumar u16 reg_val = XSIR0_IOREAD((_pdata), _reg); \ 166069e209beSRavi Kumar SET_BITS(reg_val, \ 166169e209beSRavi Kumar _reg##_##_field##_INDEX, \ 166269e209beSRavi Kumar _reg##_##_field##_WIDTH, (_val)); \ 166369e209beSRavi Kumar XSIR0_IOWRITE((_pdata), _reg, reg_val); \ 166469e209beSRavi Kumar } while (0) 166569e209beSRavi Kumar 166669e209beSRavi Kumar #define XSIR1_IOREAD(_pdata, _reg) \ 16677784d0d3SRavi Kumar rte_read16((uint8_t *)((_pdata)->sir1_regs) + _reg) 166869e209beSRavi Kumar 166969e209beSRavi Kumar #define XSIR1_IOREAD_BITS(_pdata, _reg, _field) \ 167069e209beSRavi Kumar GET_BITS(XSIR1_IOREAD((_pdata), _reg), \ 167169e209beSRavi Kumar _reg##_##_field##_INDEX, \ 167269e209beSRavi Kumar _reg##_##_field##_WIDTH) 167369e209beSRavi Kumar 167469e209beSRavi Kumar #define XSIR1_IOWRITE(_pdata, _reg, _val) \ 16757784d0d3SRavi Kumar rte_write16((_val), \ 16767784d0d3SRavi Kumar (uint8_t *)((_pdata)->sir1_regs) + (_reg)) 167769e209beSRavi Kumar 167869e209beSRavi Kumar #define XSIR1_IOWRITE_BITS(_pdata, _reg, _field, _val) \ 167969e209beSRavi Kumar do { \ 168069e209beSRavi Kumar u16 reg_val = XSIR1_IOREAD((_pdata), _reg); \ 168169e209beSRavi Kumar SET_BITS(reg_val, \ 168269e209beSRavi Kumar _reg##_##_field##_INDEX, \ 168369e209beSRavi Kumar _reg##_##_field##_WIDTH, (_val)); \ 168469e209beSRavi Kumar XSIR1_IOWRITE((_pdata), _reg, reg_val); \ 168569e209beSRavi Kumar } while (0) 168669e209beSRavi Kumar 168769e209beSRavi Kumar /* Macros for building, reading or writing register values or bits 168869e209beSRavi Kumar * within the register values of SerDes RxTx registers. 168969e209beSRavi Kumar */ 169069e209beSRavi Kumar #define XRXTX_IOREAD(_pdata, _reg) \ 16917784d0d3SRavi Kumar rte_read16((uint8_t *)((_pdata)->rxtx_regs) + (_reg)) 169269e209beSRavi Kumar 169369e209beSRavi Kumar #define XRXTX_IOREAD_BITS(_pdata, _reg, _field) \ 169469e209beSRavi Kumar GET_BITS(XRXTX_IOREAD((_pdata), _reg), \ 169569e209beSRavi Kumar _reg##_##_field##_INDEX, \ 169669e209beSRavi Kumar _reg##_##_field##_WIDTH) 169769e209beSRavi Kumar 169869e209beSRavi Kumar #define XRXTX_IOWRITE(_pdata, _reg, _val) \ 16997784d0d3SRavi Kumar rte_write16((_val), \ 17007784d0d3SRavi Kumar (uint8_t *)((_pdata)->rxtx_regs) + (_reg)) 170169e209beSRavi Kumar 170269e209beSRavi Kumar #define XRXTX_IOWRITE_BITS(_pdata, _reg, _field, _val) \ 170369e209beSRavi Kumar do { \ 170469e209beSRavi Kumar u16 reg_val = XRXTX_IOREAD((_pdata), _reg); \ 170569e209beSRavi Kumar SET_BITS(reg_val, \ 170669e209beSRavi Kumar _reg##_##_field##_INDEX, \ 170769e209beSRavi Kumar _reg##_##_field##_WIDTH, (_val)); \ 170869e209beSRavi Kumar XRXTX_IOWRITE((_pdata), _reg, reg_val); \ 170969e209beSRavi Kumar } while (0) 171069e209beSRavi Kumar 171169e209beSRavi Kumar /* Macros for building, reading or writing register values or bits 171269e209beSRavi Kumar * within the register values of MAC Control registers. 171369e209beSRavi Kumar */ 171469e209beSRavi Kumar #define XP_GET_BITS(_var, _prefix, _field) \ 171569e209beSRavi Kumar GET_BITS((_var), \ 171669e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 171769e209beSRavi Kumar _prefix##_##_field##_WIDTH) 171869e209beSRavi Kumar 171969e209beSRavi Kumar #define XP_SET_BITS(_var, _prefix, _field, _val) \ 172069e209beSRavi Kumar SET_BITS((_var), \ 172169e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 172269e209beSRavi Kumar _prefix##_##_field##_WIDTH, (_val)) 172369e209beSRavi Kumar 172469e209beSRavi Kumar #define XP_IOREAD(_pdata, _reg) \ 17257784d0d3SRavi Kumar rte_read32((uint8_t *)((_pdata)->xprop_regs) + (_reg)) 172669e209beSRavi Kumar 172769e209beSRavi Kumar #define XP_IOREAD_BITS(_pdata, _reg, _field) \ 172869e209beSRavi Kumar GET_BITS(XP_IOREAD((_pdata), (_reg)), \ 172969e209beSRavi Kumar _reg##_##_field##_INDEX, \ 173069e209beSRavi Kumar _reg##_##_field##_WIDTH) 173169e209beSRavi Kumar 173269e209beSRavi Kumar #define XP_IOWRITE(_pdata, _reg, _val) \ 17337784d0d3SRavi Kumar rte_write32((_val), \ 17347784d0d3SRavi Kumar (uint8_t *)((_pdata)->xprop_regs) + (_reg)) 173569e209beSRavi Kumar 173669e209beSRavi Kumar #define XP_IOWRITE_BITS(_pdata, _reg, _field, _val) \ 173769e209beSRavi Kumar do { \ 173869e209beSRavi Kumar u32 reg_val = XP_IOREAD((_pdata), (_reg)); \ 173969e209beSRavi Kumar SET_BITS(reg_val, \ 174069e209beSRavi Kumar _reg##_##_field##_INDEX, \ 174169e209beSRavi Kumar _reg##_##_field##_WIDTH, (_val)); \ 174269e209beSRavi Kumar XP_IOWRITE((_pdata), (_reg), reg_val); \ 174369e209beSRavi Kumar } while (0) 174469e209beSRavi Kumar 174569e209beSRavi Kumar /* Macros for building, reading or writing register values or bits 174669e209beSRavi Kumar * within the register values of I2C Control registers. 174769e209beSRavi Kumar */ 174869e209beSRavi Kumar #define XI2C_GET_BITS(_var, _prefix, _field) \ 174969e209beSRavi Kumar GET_BITS((_var), \ 175069e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 175169e209beSRavi Kumar _prefix##_##_field##_WIDTH) 175269e209beSRavi Kumar 175369e209beSRavi Kumar #define XI2C_SET_BITS(_var, _prefix, _field, _val) \ 175469e209beSRavi Kumar SET_BITS((_var), \ 175569e209beSRavi Kumar _prefix##_##_field##_INDEX, \ 175669e209beSRavi Kumar _prefix##_##_field##_WIDTH, (_val)) 175769e209beSRavi Kumar 175869e209beSRavi Kumar #define XI2C_IOREAD(_pdata, _reg) \ 17597784d0d3SRavi Kumar rte_read32((uint8_t *)((_pdata)->xi2c_regs) + (_reg)) 176069e209beSRavi Kumar 176169e209beSRavi Kumar #define XI2C_IOREAD_BITS(_pdata, _reg, _field) \ 176269e209beSRavi Kumar GET_BITS(XI2C_IOREAD((_pdata), (_reg)), \ 176369e209beSRavi Kumar _reg##_##_field##_INDEX, \ 176469e209beSRavi Kumar _reg##_##_field##_WIDTH) 176569e209beSRavi Kumar 176669e209beSRavi Kumar #define XI2C_IOWRITE(_pdata, _reg, _val) \ 17677784d0d3SRavi Kumar rte_write32((_val), \ 17687784d0d3SRavi Kumar (uint8_t *)((_pdata)->xi2c_regs) + (_reg)) 176969e209beSRavi Kumar 177069e209beSRavi Kumar #define XI2C_IOWRITE_BITS(_pdata, _reg, _field, _val) \ 177169e209beSRavi Kumar do { \ 177269e209beSRavi Kumar u32 reg_val = XI2C_IOREAD((_pdata), (_reg)); \ 177369e209beSRavi Kumar SET_BITS(reg_val, \ 177469e209beSRavi Kumar _reg##_##_field##_INDEX, \ 177569e209beSRavi Kumar _reg##_##_field##_WIDTH, (_val)); \ 177669e209beSRavi Kumar XI2C_IOWRITE((_pdata), (_reg), reg_val); \ 177769e209beSRavi Kumar } while (0) 177869e209beSRavi Kumar 177969e209beSRavi Kumar /* Macros for building, reading or writing register values or bits 178069e209beSRavi Kumar * using MDIO. Different from above because of the use of standardized 178169e209beSRavi Kumar * Linux include values. No shifting is performed with the bit 178269e209beSRavi Kumar * operations, everything works on mask values. 178369e209beSRavi Kumar */ 178469e209beSRavi Kumar #define XMDIO_READ(_pdata, _mmd, _reg) \ 178569e209beSRavi Kumar ((_pdata)->hw_if.read_mmd_regs((_pdata), 0, \ 178647cf4ac1SVenkat Kumar Ande AXGBE_ADDR_C45 | ((_mmd) << 16) | ((_reg) & 0xffff))) 178769e209beSRavi Kumar 178869e209beSRavi Kumar #define XMDIO_READ_BITS(_pdata, _mmd, _reg, _mask) \ 178969e209beSRavi Kumar (XMDIO_READ((_pdata), _mmd, _reg) & _mask) 179069e209beSRavi Kumar 179169e209beSRavi Kumar #define XMDIO_WRITE(_pdata, _mmd, _reg, _val) \ 179269e209beSRavi Kumar ((_pdata)->hw_if.write_mmd_regs((_pdata), 0, \ 179347cf4ac1SVenkat Kumar Ande AXGBE_ADDR_C45 | ((_mmd) << 16) | ((_reg) & 0xffff), (_val))) 179469e209beSRavi Kumar 179569e209beSRavi Kumar #define XMDIO_WRITE_BITS(_pdata, _mmd, _reg, _mask, _val) \ 179669e209beSRavi Kumar do { \ 179769e209beSRavi Kumar u32 mmd_val = XMDIO_READ((_pdata), (_mmd), (_reg)); \ 179869e209beSRavi Kumar mmd_val &= ~(_mask); \ 179969e209beSRavi Kumar mmd_val |= (_val); \ 180069e209beSRavi Kumar XMDIO_WRITE((_pdata), (_mmd), (_reg), (mmd_val)); \ 180169e209beSRavi Kumar } while (0) 180269e209beSRavi Kumar 180369e209beSRavi Kumar /* 180469e209beSRavi Kumar * time_after(a,b) returns true if the time a is after time b. 180569e209beSRavi Kumar * 180669e209beSRavi Kumar * Do this with "<0" and ">=0" to only test the sign of the result. A 180769e209beSRavi Kumar * good compiler would generate better code (and a really good compiler 180869e209beSRavi Kumar * wouldn't care). Gcc is currently neither. 180969e209beSRavi Kumar */ 181069e209beSRavi Kumar #define time_after(a, b) ((long)((b) - (a)) < 0) 181169e209beSRavi Kumar #define time_before(a, b) time_after(b, a) 181269e209beSRavi Kumar 181369e209beSRavi Kumar #define time_after_eq(a, b) ((long)((a) - (b)) >= 0) 181469e209beSRavi Kumar #define time_before_eq(a, b) time_after_eq(b, a) 181569e209beSRavi Kumar 181669e209beSRavi Kumar static inline unsigned long msecs_to_timer_cycles(unsigned int m) 181769e209beSRavi Kumar { 181869e209beSRavi Kumar return rte_get_timer_hz() * (m / 1000); 181969e209beSRavi Kumar } 182069e209beSRavi Kumar 18218691632fSRavi Kumar #endif /* __AXGBE_COMMON_H__ */ 1822