Back to home page

OSCL-LXR

 
 

    


0001 /************************************************************************
0002  * regs.h: A Linux PCI-X Ethernet driver for Neterion 10GbE Server NIC
0003  * Copyright(c) 2002-2010 Exar Corp.
0004 
0005  * This software may be used and distributed according to the terms of
0006  * the GNU General Public License (GPL), incorporated herein by reference.
0007  * Drivers based on or derived from this code fall under the GPL and must
0008  * retain the authorship, copyright and license notice.  This file is not
0009  * a complete program and may only be used when the entire operating
0010  * system is licensed under the GPL.
0011  * See the file COPYING in this distribution for more information.
0012  ************************************************************************/
0013 #ifndef _REGS_H
0014 #define _REGS_H
0015 
0016 #define TBD 0
0017 
0018 struct XENA_dev_config {
0019 /* Convention: mHAL_XXX is mask, vHAL_XXX is value */
0020 
0021 /* General Control-Status Registers */
0022     u64 general_int_status;
0023 #define GEN_INTR_TXPIC             s2BIT(0)
0024 #define GEN_INTR_TXDMA             s2BIT(1)
0025 #define GEN_INTR_TXMAC             s2BIT(2)
0026 #define GEN_INTR_TXXGXS            s2BIT(3)
0027 #define GEN_INTR_TXTRAFFIC         s2BIT(8)
0028 #define GEN_INTR_RXPIC             s2BIT(32)
0029 #define GEN_INTR_RXDMA             s2BIT(33)
0030 #define GEN_INTR_RXMAC             s2BIT(34)
0031 #define GEN_INTR_MC                s2BIT(35)
0032 #define GEN_INTR_RXXGXS            s2BIT(36)
0033 #define GEN_INTR_RXTRAFFIC         s2BIT(40)
0034 #define GEN_ERROR_INTR             GEN_INTR_TXPIC | GEN_INTR_RXPIC | \
0035                                    GEN_INTR_TXDMA | GEN_INTR_RXDMA | \
0036                                    GEN_INTR_TXMAC | GEN_INTR_RXMAC | \
0037                                    GEN_INTR_TXXGXS| GEN_INTR_RXXGXS| \
0038                                    GEN_INTR_MC
0039 
0040     u64 general_int_mask;
0041 
0042     u8 unused0[0x100 - 0x10];
0043 
0044     u64 sw_reset;
0045 /* XGXS must be removed from reset only once. */
0046 #define SW_RESET_XENA              vBIT(0xA5,0,8)
0047 #define SW_RESET_FLASH             vBIT(0xA5,8,8)
0048 #define SW_RESET_EOI               vBIT(0xA5,16,8)
0049 #define SW_RESET_ALL               (SW_RESET_XENA     |   \
0050                                     SW_RESET_FLASH    |   \
0051                                     SW_RESET_EOI)
0052 /* The SW_RESET register must read this value after a successful reset. */
0053 #define SW_RESET_RAW_VAL            0xA5000000
0054 
0055 
0056     u64 adapter_status;
0057 #define ADAPTER_STATUS_TDMA_READY          s2BIT(0)
0058 #define ADAPTER_STATUS_RDMA_READY          s2BIT(1)
0059 #define ADAPTER_STATUS_PFC_READY           s2BIT(2)
0060 #define ADAPTER_STATUS_TMAC_BUF_EMPTY      s2BIT(3)
0061 #define ADAPTER_STATUS_PIC_QUIESCENT       s2BIT(5)
0062 #define ADAPTER_STATUS_RMAC_REMOTE_FAULT   s2BIT(6)
0063 #define ADAPTER_STATUS_RMAC_LOCAL_FAULT    s2BIT(7)
0064 #define ADAPTER_STATUS_RMAC_PCC_IDLE       vBIT(0xFF,8,8)
0065 #define ADAPTER_STATUS_RMAC_PCC_FOUR_IDLE  vBIT(0x0F,8,8)
0066 #define ADAPTER_STATUS_RC_PRC_QUIESCENT    vBIT(0xFF,16,8)
0067 #define ADAPTER_STATUS_MC_DRAM_READY       s2BIT(24)
0068 #define ADAPTER_STATUS_MC_QUEUES_READY     s2BIT(25)
0069 #define ADAPTER_STATUS_RIC_RUNNING         s2BIT(26)
0070 #define ADAPTER_STATUS_M_PLL_LOCK          s2BIT(30)
0071 #define ADAPTER_STATUS_P_PLL_LOCK          s2BIT(31)
0072 
0073     u64 adapter_control;
0074 #define ADAPTER_CNTL_EN                    s2BIT(7)
0075 #define ADAPTER_EOI_TX_ON                  s2BIT(15)
0076 #define ADAPTER_LED_ON                     s2BIT(23)
0077 #define ADAPTER_UDPI(val)                  vBIT(val,36,4)
0078 #define ADAPTER_WAIT_INT                   s2BIT(48)
0079 #define ADAPTER_ECC_EN                     s2BIT(55)
0080 
0081     u64 serr_source;
0082 #define SERR_SOURCE_PIC         s2BIT(0)
0083 #define SERR_SOURCE_TXDMA       s2BIT(1)
0084 #define SERR_SOURCE_RXDMA       s2BIT(2)
0085 #define SERR_SOURCE_MAC                 s2BIT(3)
0086 #define SERR_SOURCE_MC                  s2BIT(4)
0087 #define SERR_SOURCE_XGXS                s2BIT(5)
0088 #define SERR_SOURCE_ANY         (SERR_SOURCE_PIC    | \
0089                     SERR_SOURCE_TXDMA   | \
0090                     SERR_SOURCE_RXDMA   | \
0091                     SERR_SOURCE_MAC     | \
0092                     SERR_SOURCE_MC      | \
0093                     SERR_SOURCE_XGXS)
0094 
0095     u64 pci_mode;
0096 #define GET_PCI_MODE(val)       ((val & vBIT(0xF, 0, 4)) >> 60)
0097 #define PCI_MODE_PCI_33         0
0098 #define PCI_MODE_PCI_66         0x1
0099 #define PCI_MODE_PCIX_M1_66     0x2
0100 #define PCI_MODE_PCIX_M1_100        0x3
0101 #define PCI_MODE_PCIX_M1_133        0x4
0102 #define PCI_MODE_PCIX_M2_66     0x5
0103 #define PCI_MODE_PCIX_M2_100        0x6
0104 #define PCI_MODE_PCIX_M2_133        0x7
0105 #define PCI_MODE_UNSUPPORTED        s2BIT(0)
0106 #define PCI_MODE_32_BITS        s2BIT(8)
0107 #define PCI_MODE_UNKNOWN_MODE       s2BIT(9)
0108 
0109     u8 unused_0[0x800 - 0x128];
0110 
0111 /* PCI-X Controller registers */
0112     u64 pic_int_status;
0113     u64 pic_int_mask;
0114 #define PIC_INT_TX                     s2BIT(0)
0115 #define PIC_INT_FLSH                   s2BIT(1)
0116 #define PIC_INT_MDIO                   s2BIT(2)
0117 #define PIC_INT_IIC                    s2BIT(3)
0118 #define PIC_INT_GPIO                   s2BIT(4)
0119 #define PIC_INT_RX                     s2BIT(32)
0120 
0121     u64 txpic_int_reg;
0122     u64 txpic_int_mask;
0123 #define PCIX_INT_REG_ECC_SG_ERR                s2BIT(0)
0124 #define PCIX_INT_REG_ECC_DB_ERR                s2BIT(1)
0125 #define PCIX_INT_REG_FLASHR_R_FSM_ERR          s2BIT(8)
0126 #define PCIX_INT_REG_FLASHR_W_FSM_ERR          s2BIT(9)
0127 #define PCIX_INT_REG_INI_TX_FSM_SERR           s2BIT(10)
0128 #define PCIX_INT_REG_INI_TXO_FSM_ERR           s2BIT(11)
0129 #define PCIX_INT_REG_TRT_FSM_SERR              s2BIT(13)
0130 #define PCIX_INT_REG_SRT_FSM_SERR              s2BIT(14)
0131 #define PCIX_INT_REG_PIFR_FSM_SERR             s2BIT(15)
0132 #define PCIX_INT_REG_WRC_TX_SEND_FSM_SERR      s2BIT(21)
0133 #define PCIX_INT_REG_RRC_TX_REQ_FSM_SERR       s2BIT(23)
0134 #define PCIX_INT_REG_INI_RX_FSM_SERR           s2BIT(48)
0135 #define PCIX_INT_REG_RA_RX_FSM_SERR            s2BIT(50)
0136 /*
0137 #define PCIX_INT_REG_WRC_RX_SEND_FSM_SERR      s2BIT(52)
0138 #define PCIX_INT_REG_RRC_RX_REQ_FSM_SERR       s2BIT(54)
0139 #define PCIX_INT_REG_RRC_RX_SPLIT_FSM_SERR     s2BIT(58)
0140 */
0141     u64 txpic_alarms;
0142     u64 rxpic_int_reg;
0143     u64 rxpic_int_mask;
0144     u64 rxpic_alarms;
0145 
0146     u64 flsh_int_reg;
0147     u64 flsh_int_mask;
0148 #define PIC_FLSH_INT_REG_CYCLE_FSM_ERR         s2BIT(63)
0149 #define PIC_FLSH_INT_REG_ERR                   s2BIT(62)
0150     u64 flash_alarms;
0151 
0152     u64 mdio_int_reg;
0153     u64 mdio_int_mask;
0154 #define MDIO_INT_REG_MDIO_BUS_ERR              s2BIT(0)
0155 #define MDIO_INT_REG_DTX_BUS_ERR               s2BIT(8)
0156 #define MDIO_INT_REG_LASI                      s2BIT(39)
0157     u64 mdio_alarms;
0158 
0159     u64 iic_int_reg;
0160     u64 iic_int_mask;
0161 #define IIC_INT_REG_BUS_FSM_ERR                s2BIT(4)
0162 #define IIC_INT_REG_BIT_FSM_ERR                s2BIT(5)
0163 #define IIC_INT_REG_CYCLE_FSM_ERR              s2BIT(6)
0164 #define IIC_INT_REG_REQ_FSM_ERR                s2BIT(7)
0165 #define IIC_INT_REG_ACK_ERR                    s2BIT(8)
0166     u64 iic_alarms;
0167 
0168     u8 unused4[0x08];
0169 
0170     u64 gpio_int_reg;
0171 #define GPIO_INT_REG_DP_ERR_INT                s2BIT(0)
0172 #define GPIO_INT_REG_LINK_DOWN                 s2BIT(1)
0173 #define GPIO_INT_REG_LINK_UP                   s2BIT(2)
0174     u64 gpio_int_mask;
0175 #define GPIO_INT_MASK_LINK_DOWN                s2BIT(1)
0176 #define GPIO_INT_MASK_LINK_UP                  s2BIT(2)
0177     u64 gpio_alarms;
0178 
0179     u8 unused5[0x38];
0180 
0181     u64 tx_traffic_int;
0182 #define TX_TRAFFIC_INT_n(n)                    s2BIT(n)
0183     u64 tx_traffic_mask;
0184 
0185     u64 rx_traffic_int;
0186 #define RX_TRAFFIC_INT_n(n)                    s2BIT(n)
0187     u64 rx_traffic_mask;
0188 
0189 /* PIC Control registers */
0190     u64 pic_control;
0191 #define PIC_CNTL_RX_ALARM_MAP_1                s2BIT(0)
0192 #define PIC_CNTL_SHARED_SPLITS(n)              vBIT(n,11,5)
0193 
0194     u64 swapper_ctrl;
0195 #define SWAPPER_CTRL_PIF_R_FE                  s2BIT(0)
0196 #define SWAPPER_CTRL_PIF_R_SE                  s2BIT(1)
0197 #define SWAPPER_CTRL_PIF_W_FE                  s2BIT(8)
0198 #define SWAPPER_CTRL_PIF_W_SE                  s2BIT(9)
0199 #define SWAPPER_CTRL_TXP_FE                    s2BIT(16)
0200 #define SWAPPER_CTRL_TXP_SE                    s2BIT(17)
0201 #define SWAPPER_CTRL_TXD_R_FE                  s2BIT(18)
0202 #define SWAPPER_CTRL_TXD_R_SE                  s2BIT(19)
0203 #define SWAPPER_CTRL_TXD_W_FE                  s2BIT(20)
0204 #define SWAPPER_CTRL_TXD_W_SE                  s2BIT(21)
0205 #define SWAPPER_CTRL_TXF_R_FE                  s2BIT(22)
0206 #define SWAPPER_CTRL_TXF_R_SE                  s2BIT(23)
0207 #define SWAPPER_CTRL_RXD_R_FE                  s2BIT(32)
0208 #define SWAPPER_CTRL_RXD_R_SE                  s2BIT(33)
0209 #define SWAPPER_CTRL_RXD_W_FE                  s2BIT(34)
0210 #define SWAPPER_CTRL_RXD_W_SE                  s2BIT(35)
0211 #define SWAPPER_CTRL_RXF_W_FE                  s2BIT(36)
0212 #define SWAPPER_CTRL_RXF_W_SE                  s2BIT(37)
0213 #define SWAPPER_CTRL_XMSI_FE                   s2BIT(40)
0214 #define SWAPPER_CTRL_XMSI_SE                   s2BIT(41)
0215 #define SWAPPER_CTRL_STATS_FE                  s2BIT(48)
0216 #define SWAPPER_CTRL_STATS_SE                  s2BIT(49)
0217 
0218     u64 pif_rd_swapper_fb;
0219 #define IF_RD_SWAPPER_FB                            0x0123456789ABCDEF
0220 
0221     u64 scheduled_int_ctrl;
0222 #define SCHED_INT_CTRL_TIMER_EN                s2BIT(0)
0223 #define SCHED_INT_CTRL_ONE_SHOT                s2BIT(1)
0224 #define SCHED_INT_CTRL_INT2MSI(val)     vBIT(val,10,6)
0225 #define SCHED_INT_PERIOD                       TBD
0226 
0227     u64 txreqtimeout;
0228 #define TXREQTO_VAL(val)                        vBIT(val,0,32)
0229 #define TXREQTO_EN                              s2BIT(63)
0230 
0231     u64 statsreqtimeout;
0232 #define STATREQTO_VAL(n)                       TBD
0233 #define STATREQTO_EN                           s2BIT(63)
0234 
0235     u64 read_retry_delay;
0236     u64 read_retry_acceleration;
0237     u64 write_retry_delay;
0238     u64 write_retry_acceleration;
0239 
0240     u64 xmsi_control;
0241     u64 xmsi_access;
0242     u64 xmsi_address;
0243     u64 xmsi_data;
0244 
0245     u64 rx_mat;
0246 #define RX_MAT_SET(ring, msi)           vBIT(msi, (8 * ring), 8)
0247 
0248     u8 unused6[0x8];
0249 
0250     u64 tx_mat0_n[0x8];
0251 #define TX_MAT_SET(fifo, msi)           vBIT(msi, (8 * fifo), 8)
0252 
0253     u64 xmsi_mask_reg;
0254     u64 stat_byte_cnt;
0255 #define STAT_BC(n)                              vBIT(n,4,12)
0256 
0257     /* Automated statistics collection */
0258     u64 stat_cfg;
0259 #define STAT_CFG_STAT_EN           s2BIT(0)
0260 #define STAT_CFG_ONE_SHOT_EN       s2BIT(1)
0261 #define STAT_CFG_STAT_NS_EN        s2BIT(8)
0262 #define STAT_CFG_STAT_RO           s2BIT(9)
0263 #define STAT_TRSF_PER(n)           TBD
0264 #define PER_SEC                    0x208d5
0265 #define SET_UPDT_PERIOD(n)         vBIT((PER_SEC*n),32,32)
0266 #define SET_UPDT_CLICKS(val)           vBIT(val, 32, 32)
0267 
0268     u64 stat_addr;
0269 
0270     /* General Configuration */
0271     u64 mdio_control;
0272 #define MDIO_MMD_INDX_ADDR(val)     vBIT(val, 0, 16)
0273 #define MDIO_MMD_DEV_ADDR(val)      vBIT(val, 19, 5)
0274 #define MDIO_MMS_PRT_ADDR(val)      vBIT(val, 27, 5)
0275 #define MDIO_CTRL_START_TRANS(val)  vBIT(val, 56, 4)
0276 #define MDIO_OP(val)            vBIT(val, 60, 2)
0277 #define MDIO_OP_ADDR_TRANS      0x0
0278 #define MDIO_OP_WRITE_TRANS     0x1
0279 #define MDIO_OP_READ_POST_INC_TRANS 0x2
0280 #define MDIO_OP_READ_TRANS      0x3
0281 #define MDIO_MDIO_DATA(val)     vBIT(val, 32, 16)
0282 
0283     u64 dtx_control;
0284 
0285     u64 i2c_control;
0286 #define I2C_CONTROL_DEV_ID(id)      vBIT(id,1,3)
0287 #define I2C_CONTROL_ADDR(addr)      vBIT(addr,5,11)
0288 #define I2C_CONTROL_BYTE_CNT(cnt)   vBIT(cnt,22,2)
0289 #define I2C_CONTROL_READ            s2BIT(24)
0290 #define I2C_CONTROL_NACK            s2BIT(25)
0291 #define I2C_CONTROL_CNTL_START      vBIT(0xE,28,4)
0292 #define I2C_CONTROL_CNTL_END(val)   (val & vBIT(0x1,28,4))
0293 #define I2C_CONTROL_GET_DATA(val)   (u32)(val & 0xFFFFFFFF)
0294 #define I2C_CONTROL_SET_DATA(val)   vBIT(val,32,32)
0295 
0296     u64 gpio_control;
0297 #define GPIO_CTRL_GPIO_0        s2BIT(8)
0298     u64 misc_control;
0299 #define FAULT_BEHAVIOUR         s2BIT(0)
0300 #define EXT_REQ_EN          s2BIT(1)
0301 #define MISC_LINK_STABILITY_PRD(val)   vBIT(val,29,3)
0302 
0303     u8 unused7_1[0x230 - 0x208];
0304 
0305     u64 pic_control2;
0306     u64 ini_dperr_ctrl;
0307 
0308     u64 wreq_split_mask;
0309 #define WREQ_SPLIT_MASK_SET_MASK(val)   vBIT(val, 52, 12)
0310 
0311     u8 unused7_2[0x800 - 0x248];
0312 
0313 /* TxDMA registers */
0314     u64 txdma_int_status;
0315     u64 txdma_int_mask;
0316 #define TXDMA_PFC_INT                  s2BIT(0)
0317 #define TXDMA_TDA_INT                  s2BIT(1)
0318 #define TXDMA_PCC_INT                  s2BIT(2)
0319 #define TXDMA_TTI_INT                  s2BIT(3)
0320 #define TXDMA_LSO_INT                  s2BIT(4)
0321 #define TXDMA_TPA_INT                  s2BIT(5)
0322 #define TXDMA_SM_INT                   s2BIT(6)
0323     u64 pfc_err_reg;
0324 #define PFC_ECC_SG_ERR          s2BIT(7)
0325 #define PFC_ECC_DB_ERR          s2BIT(15)
0326 #define PFC_SM_ERR_ALARM        s2BIT(23)
0327 #define PFC_MISC_0_ERR          s2BIT(31)
0328 #define PFC_MISC_1_ERR          s2BIT(32)
0329 #define PFC_PCIX_ERR            s2BIT(39)
0330     u64 pfc_err_mask;
0331     u64 pfc_err_alarm;
0332 
0333     u64 tda_err_reg;
0334 #define TDA_Fn_ECC_SG_ERR       vBIT(0xff,0,8)
0335 #define TDA_Fn_ECC_DB_ERR       vBIT(0xff,8,8)
0336 #define TDA_SM0_ERR_ALARM       s2BIT(22)
0337 #define TDA_SM1_ERR_ALARM       s2BIT(23)
0338 #define TDA_PCIX_ERR            s2BIT(39)
0339     u64 tda_err_mask;
0340     u64 tda_err_alarm;
0341 
0342     u64 pcc_err_reg;
0343 #define PCC_FB_ECC_SG_ERR       vBIT(0xFF,0,8)
0344 #define PCC_TXB_ECC_SG_ERR      vBIT(0xFF,8,8)
0345 #define PCC_FB_ECC_DB_ERR       vBIT(0xFF,16, 8)
0346 #define PCC_TXB_ECC_DB_ERR      vBIT(0xff,24,8)
0347 #define PCC_SM_ERR_ALARM        vBIT(0xff,32,8)
0348 #define PCC_WR_ERR_ALARM        vBIT(0xff,40,8)
0349 #define PCC_N_SERR          vBIT(0xff,48,8)
0350 #define PCC_6_COF_OV_ERR        s2BIT(56)
0351 #define PCC_7_COF_OV_ERR        s2BIT(57)
0352 #define PCC_6_LSO_OV_ERR        s2BIT(58)
0353 #define PCC_7_LSO_OV_ERR        s2BIT(59)
0354 #define PCC_ENABLE_FOUR         vBIT(0x0F,0,8)
0355     u64 pcc_err_mask;
0356     u64 pcc_err_alarm;
0357 
0358     u64 tti_err_reg;
0359 #define TTI_ECC_SG_ERR          s2BIT(7)
0360 #define TTI_ECC_DB_ERR          s2BIT(15)
0361 #define TTI_SM_ERR_ALARM        s2BIT(23)
0362     u64 tti_err_mask;
0363     u64 tti_err_alarm;
0364 
0365     u64 lso_err_reg;
0366 #define LSO6_SEND_OFLOW         s2BIT(12)
0367 #define LSO7_SEND_OFLOW         s2BIT(13)
0368 #define LSO6_ABORT          s2BIT(14)
0369 #define LSO7_ABORT          s2BIT(15)
0370 #define LSO6_SM_ERR_ALARM       s2BIT(22)
0371 #define LSO7_SM_ERR_ALARM       s2BIT(23)
0372     u64 lso_err_mask;
0373     u64 lso_err_alarm;
0374 
0375     u64 tpa_err_reg;
0376 #define TPA_TX_FRM_DROP         s2BIT(7)
0377 #define TPA_SM_ERR_ALARM        s2BIT(23)
0378 
0379     u64 tpa_err_mask;
0380     u64 tpa_err_alarm;
0381 
0382     u64 sm_err_reg;
0383 #define SM_SM_ERR_ALARM         s2BIT(15)
0384     u64 sm_err_mask;
0385     u64 sm_err_alarm;
0386 
0387     u8 unused8[0x100 - 0xB8];
0388 
0389 /* TxDMA arbiter */
0390     u64 tx_dma_wrap_stat;
0391 
0392 /* Tx FIFO controller */
0393 #define X_MAX_FIFOS                        8
0394 #define X_FIFO_MAX_LEN                     0x1FFF   /*8191 */
0395     u64 tx_fifo_partition_0;
0396 #define TX_FIFO_PARTITION_EN               s2BIT(0)
0397 #define TX_FIFO_PARTITION_0_PRI(val)       vBIT(val,5,3)
0398 #define TX_FIFO_PARTITION_0_LEN(val)       vBIT(val,19,13)
0399 #define TX_FIFO_PARTITION_1_PRI(val)       vBIT(val,37,3)
0400 #define TX_FIFO_PARTITION_1_LEN(val)       vBIT(val,51,13  )
0401 
0402     u64 tx_fifo_partition_1;
0403 #define TX_FIFO_PARTITION_2_PRI(val)       vBIT(val,5,3)
0404 #define TX_FIFO_PARTITION_2_LEN(val)       vBIT(val,19,13)
0405 #define TX_FIFO_PARTITION_3_PRI(val)       vBIT(val,37,3)
0406 #define TX_FIFO_PARTITION_3_LEN(val)       vBIT(val,51,13)
0407 
0408     u64 tx_fifo_partition_2;
0409 #define TX_FIFO_PARTITION_4_PRI(val)       vBIT(val,5,3)
0410 #define TX_FIFO_PARTITION_4_LEN(val)       vBIT(val,19,13)
0411 #define TX_FIFO_PARTITION_5_PRI(val)       vBIT(val,37,3)
0412 #define TX_FIFO_PARTITION_5_LEN(val)       vBIT(val,51,13)
0413 
0414     u64 tx_fifo_partition_3;
0415 #define TX_FIFO_PARTITION_6_PRI(val)       vBIT(val,5,3)
0416 #define TX_FIFO_PARTITION_6_LEN(val)       vBIT(val,19,13)
0417 #define TX_FIFO_PARTITION_7_PRI(val)       vBIT(val,37,3)
0418 #define TX_FIFO_PARTITION_7_LEN(val)       vBIT(val,51,13)
0419 
0420 #define TX_FIFO_PARTITION_PRI_0                 0   /* highest */
0421 #define TX_FIFO_PARTITION_PRI_1                 1
0422 #define TX_FIFO_PARTITION_PRI_2                 2
0423 #define TX_FIFO_PARTITION_PRI_3                 3
0424 #define TX_FIFO_PARTITION_PRI_4                 4
0425 #define TX_FIFO_PARTITION_PRI_5                 5
0426 #define TX_FIFO_PARTITION_PRI_6                 6
0427 #define TX_FIFO_PARTITION_PRI_7                 7   /* lowest */
0428 
0429     u64 tx_w_round_robin_0;
0430     u64 tx_w_round_robin_1;
0431     u64 tx_w_round_robin_2;
0432     u64 tx_w_round_robin_3;
0433     u64 tx_w_round_robin_4;
0434 
0435     u64 tti_command_mem;
0436 #define TTI_CMD_MEM_WE                     s2BIT(7)
0437 #define TTI_CMD_MEM_STROBE_NEW_CMD         s2BIT(15)
0438 #define TTI_CMD_MEM_STROBE_BEING_EXECUTED  s2BIT(15)
0439 #define TTI_CMD_MEM_OFFSET(n)              vBIT(n,26,6)
0440 
0441     u64 tti_data1_mem;
0442 #define TTI_DATA1_MEM_TX_TIMER_VAL(n)      vBIT(n,6,26)
0443 #define TTI_DATA1_MEM_TX_TIMER_AC_CI(n)    vBIT(n,38,2)
0444 #define TTI_DATA1_MEM_TX_TIMER_AC_EN       s2BIT(38)
0445 #define TTI_DATA1_MEM_TX_TIMER_CI_EN       s2BIT(39)
0446 #define TTI_DATA1_MEM_TX_URNG_A(n)         vBIT(n,41,7)
0447 #define TTI_DATA1_MEM_TX_URNG_B(n)         vBIT(n,49,7)
0448 #define TTI_DATA1_MEM_TX_URNG_C(n)         vBIT(n,57,7)
0449 
0450     u64 tti_data2_mem;
0451 #define TTI_DATA2_MEM_TX_UFC_A(n)          vBIT(n,0,16)
0452 #define TTI_DATA2_MEM_TX_UFC_B(n)          vBIT(n,16,16)
0453 #define TTI_DATA2_MEM_TX_UFC_C(n)          vBIT(n,32,16)
0454 #define TTI_DATA2_MEM_TX_UFC_D(n)          vBIT(n,48,16)
0455 
0456 /* Tx Protocol assist */
0457     u64 tx_pa_cfg;
0458 #define TX_PA_CFG_IGNORE_FRM_ERR           s2BIT(1)
0459 #define TX_PA_CFG_IGNORE_SNAP_OUI          s2BIT(2)
0460 #define TX_PA_CFG_IGNORE_LLC_CTRL          s2BIT(3)
0461 #define TX_PA_CFG_IGNORE_L2_ERR            s2BIT(6)
0462 #define RX_PA_CFG_STRIP_VLAN_TAG        s2BIT(15)
0463 
0464 /* Recent add, used only debug purposes. */
0465     u64 pcc_enable;
0466 
0467     u8 unused9[0x700 - 0x178];
0468 
0469     u64 txdma_debug_ctrl;
0470 
0471     u8 unused10[0x1800 - 0x1708];
0472 
0473 /* RxDMA Registers */
0474     u64 rxdma_int_status;
0475     u64 rxdma_int_mask;
0476 #define RXDMA_INT_RC_INT_M             s2BIT(0)
0477 #define RXDMA_INT_RPA_INT_M            s2BIT(1)
0478 #define RXDMA_INT_RDA_INT_M            s2BIT(2)
0479 #define RXDMA_INT_RTI_INT_M            s2BIT(3)
0480 
0481     u64 rda_err_reg;
0482 #define RDA_RXDn_ECC_SG_ERR     vBIT(0xFF,0,8)
0483 #define RDA_RXDn_ECC_DB_ERR     vBIT(0xFF,8,8)
0484 #define RDA_FRM_ECC_SG_ERR      s2BIT(23)
0485 #define RDA_FRM_ECC_DB_N_AERR       s2BIT(31)
0486 #define RDA_SM1_ERR_ALARM       s2BIT(38)
0487 #define RDA_SM0_ERR_ALARM       s2BIT(39)
0488 #define RDA_MISC_ERR            s2BIT(47)
0489 #define RDA_PCIX_ERR            s2BIT(55)
0490 #define RDA_RXD_ECC_DB_SERR     s2BIT(63)
0491     u64 rda_err_mask;
0492     u64 rda_err_alarm;
0493 
0494     u64 rc_err_reg;
0495 #define RC_PRCn_ECC_SG_ERR      vBIT(0xFF,0,8)
0496 #define RC_PRCn_ECC_DB_ERR      vBIT(0xFF,8,8)
0497 #define RC_FTC_ECC_SG_ERR       s2BIT(23)
0498 #define RC_FTC_ECC_DB_ERR       s2BIT(31)
0499 #define RC_PRCn_SM_ERR_ALARM        vBIT(0xFF,32,8)
0500 #define RC_FTC_SM_ERR_ALARM     s2BIT(47)
0501 #define RC_RDA_FAIL_WR_Rn       vBIT(0xFF,48,8)
0502     u64 rc_err_mask;
0503     u64 rc_err_alarm;
0504 
0505     u64 prc_pcix_err_reg;
0506 #define PRC_PCI_AB_RD_Rn        vBIT(0xFF,0,8)
0507 #define PRC_PCI_DP_RD_Rn        vBIT(0xFF,8,8)
0508 #define PRC_PCI_AB_WR_Rn        vBIT(0xFF,16,8)
0509 #define PRC_PCI_DP_WR_Rn        vBIT(0xFF,24,8)
0510 #define PRC_PCI_AB_F_WR_Rn      vBIT(0xFF,32,8)
0511 #define PRC_PCI_DP_F_WR_Rn      vBIT(0xFF,40,8)
0512     u64 prc_pcix_err_mask;
0513     u64 prc_pcix_err_alarm;
0514 
0515     u64 rpa_err_reg;
0516 #define RPA_ECC_SG_ERR          s2BIT(7)
0517 #define RPA_ECC_DB_ERR          s2BIT(15)
0518 #define RPA_FLUSH_REQUEST       s2BIT(22)
0519 #define RPA_SM_ERR_ALARM        s2BIT(23)
0520 #define RPA_CREDIT_ERR          s2BIT(31)
0521     u64 rpa_err_mask;
0522     u64 rpa_err_alarm;
0523 
0524     u64 rti_err_reg;
0525 #define RTI_ECC_SG_ERR          s2BIT(7)
0526 #define RTI_ECC_DB_ERR          s2BIT(15)
0527 #define RTI_SM_ERR_ALARM        s2BIT(23)
0528     u64 rti_err_mask;
0529     u64 rti_err_alarm;
0530 
0531     u8 unused11[0x100 - 0x88];
0532 
0533 /* DMA arbiter */
0534     u64 rx_queue_priority;
0535 #define RX_QUEUE_0_PRIORITY(val)       vBIT(val,5,3)
0536 #define RX_QUEUE_1_PRIORITY(val)       vBIT(val,13,3)
0537 #define RX_QUEUE_2_PRIORITY(val)       vBIT(val,21,3)
0538 #define RX_QUEUE_3_PRIORITY(val)       vBIT(val,29,3)
0539 #define RX_QUEUE_4_PRIORITY(val)       vBIT(val,37,3)
0540 #define RX_QUEUE_5_PRIORITY(val)       vBIT(val,45,3)
0541 #define RX_QUEUE_6_PRIORITY(val)       vBIT(val,53,3)
0542 #define RX_QUEUE_7_PRIORITY(val)       vBIT(val,61,3)
0543 
0544 #define RX_QUEUE_PRI_0                 0    /* highest */
0545 #define RX_QUEUE_PRI_1                 1
0546 #define RX_QUEUE_PRI_2                 2
0547 #define RX_QUEUE_PRI_3                 3
0548 #define RX_QUEUE_PRI_4                 4
0549 #define RX_QUEUE_PRI_5                 5
0550 #define RX_QUEUE_PRI_6                 6
0551 #define RX_QUEUE_PRI_7                 7    /* lowest */
0552 
0553     u64 rx_w_round_robin_0;
0554     u64 rx_w_round_robin_1;
0555     u64 rx_w_round_robin_2;
0556     u64 rx_w_round_robin_3;
0557     u64 rx_w_round_robin_4;
0558 
0559     /* Per-ring controller regs */
0560 #define RX_MAX_RINGS                8
0561 #if 0
0562 #define RX_MAX_RINGS_SZ             0xFFFF  /* 65536 */
0563 #define RX_MIN_RINGS_SZ             0x3F    /* 63 */
0564 #endif
0565     u64 prc_rxd0_n[RX_MAX_RINGS];
0566     u64 prc_ctrl_n[RX_MAX_RINGS];
0567 #define PRC_CTRL_RC_ENABLED                    s2BIT(7)
0568 #define PRC_CTRL_RING_MODE                     (s2BIT(14)|s2BIT(15))
0569 #define PRC_CTRL_RING_MODE_1                   vBIT(0,14,2)
0570 #define PRC_CTRL_RING_MODE_3                   vBIT(1,14,2)
0571 #define PRC_CTRL_RING_MODE_5                   vBIT(2,14,2)
0572 #define PRC_CTRL_RING_MODE_x                   vBIT(3,14,2)
0573 #define PRC_CTRL_NO_SNOOP                      (s2BIT(22)|s2BIT(23))
0574 #define PRC_CTRL_NO_SNOOP_DESC                 s2BIT(22)
0575 #define PRC_CTRL_NO_SNOOP_BUFF                 s2BIT(23)
0576 #define PRC_CTRL_BIMODAL_INTERRUPT             s2BIT(37)
0577 #define PRC_CTRL_GROUP_READS                   s2BIT(38)
0578 #define PRC_CTRL_RXD_BACKOFF_INTERVAL(val)     vBIT(val,40,24)
0579 
0580     u64 prc_alarm_action;
0581 #define PRC_ALARM_ACTION_RR_R0_STOP            s2BIT(3)
0582 #define PRC_ALARM_ACTION_RW_R0_STOP            s2BIT(7)
0583 #define PRC_ALARM_ACTION_RR_R1_STOP            s2BIT(11)
0584 #define PRC_ALARM_ACTION_RW_R1_STOP            s2BIT(15)
0585 #define PRC_ALARM_ACTION_RR_R2_STOP            s2BIT(19)
0586 #define PRC_ALARM_ACTION_RW_R2_STOP            s2BIT(23)
0587 #define PRC_ALARM_ACTION_RR_R3_STOP            s2BIT(27)
0588 #define PRC_ALARM_ACTION_RW_R3_STOP            s2BIT(31)
0589 #define PRC_ALARM_ACTION_RR_R4_STOP            s2BIT(35)
0590 #define PRC_ALARM_ACTION_RW_R4_STOP            s2BIT(39)
0591 #define PRC_ALARM_ACTION_RR_R5_STOP            s2BIT(43)
0592 #define PRC_ALARM_ACTION_RW_R5_STOP            s2BIT(47)
0593 #define PRC_ALARM_ACTION_RR_R6_STOP            s2BIT(51)
0594 #define PRC_ALARM_ACTION_RW_R6_STOP            s2BIT(55)
0595 #define PRC_ALARM_ACTION_RR_R7_STOP            s2BIT(59)
0596 #define PRC_ALARM_ACTION_RW_R7_STOP            s2BIT(63)
0597 
0598 /* Receive traffic interrupts */
0599     u64 rti_command_mem;
0600 #define RTI_CMD_MEM_WE                          s2BIT(7)
0601 #define RTI_CMD_MEM_STROBE                      s2BIT(15)
0602 #define RTI_CMD_MEM_STROBE_NEW_CMD              s2BIT(15)
0603 #define RTI_CMD_MEM_STROBE_CMD_BEING_EXECUTED   s2BIT(15)
0604 #define RTI_CMD_MEM_OFFSET(n)                   vBIT(n,29,3)
0605 
0606     u64 rti_data1_mem;
0607 #define RTI_DATA1_MEM_RX_TIMER_VAL(n)      vBIT(n,3,29)
0608 #define RTI_DATA1_MEM_RX_TIMER_AC_EN       s2BIT(38)
0609 #define RTI_DATA1_MEM_RX_TIMER_CI_EN       s2BIT(39)
0610 #define RTI_DATA1_MEM_RX_URNG_A(n)         vBIT(n,41,7)
0611 #define RTI_DATA1_MEM_RX_URNG_B(n)         vBIT(n,49,7)
0612 #define RTI_DATA1_MEM_RX_URNG_C(n)         vBIT(n,57,7)
0613 
0614     u64 rti_data2_mem;
0615 #define RTI_DATA2_MEM_RX_UFC_A(n)          vBIT(n,0,16)
0616 #define RTI_DATA2_MEM_RX_UFC_B(n)          vBIT(n,16,16)
0617 #define RTI_DATA2_MEM_RX_UFC_C(n)          vBIT(n,32,16)
0618 #define RTI_DATA2_MEM_RX_UFC_D(n)          vBIT(n,48,16)
0619 
0620     u64 rx_pa_cfg;
0621 #define RX_PA_CFG_IGNORE_FRM_ERR           s2BIT(1)
0622 #define RX_PA_CFG_IGNORE_SNAP_OUI          s2BIT(2)
0623 #define RX_PA_CFG_IGNORE_LLC_CTRL          s2BIT(3)
0624 #define RX_PA_CFG_IGNORE_L2_ERR            s2BIT(6)
0625 
0626     u64 unused_11_1;
0627 
0628     u64 ring_bump_counter1;
0629     u64 ring_bump_counter2;
0630 
0631     u8 unused12[0x700 - 0x1F0];
0632 
0633     u64 rxdma_debug_ctrl;
0634 
0635     u8 unused13[0x2000 - 0x1f08];
0636 
0637 /* Media Access Controller Register */
0638     u64 mac_int_status;
0639     u64 mac_int_mask;
0640 #define MAC_INT_STATUS_TMAC_INT            s2BIT(0)
0641 #define MAC_INT_STATUS_RMAC_INT            s2BIT(1)
0642 
0643     u64 mac_tmac_err_reg;
0644 #define TMAC_ECC_SG_ERR             s2BIT(7)
0645 #define TMAC_ECC_DB_ERR             s2BIT(15)
0646 #define TMAC_TX_BUF_OVRN            s2BIT(23)
0647 #define TMAC_TX_CRI_ERR             s2BIT(31)
0648 #define TMAC_TX_SM_ERR              s2BIT(39)
0649 #define TMAC_DESC_ECC_SG_ERR            s2BIT(47)
0650 #define TMAC_DESC_ECC_DB_ERR            s2BIT(55)
0651 
0652     u64 mac_tmac_err_mask;
0653     u64 mac_tmac_err_alarm;
0654 
0655     u64 mac_rmac_err_reg;
0656 #define RMAC_RX_BUFF_OVRN           s2BIT(0)
0657 #define RMAC_FRM_RCVD_INT           s2BIT(1)
0658 #define RMAC_UNUSED_INT             s2BIT(2)
0659 #define RMAC_RTS_PNUM_ECC_SG_ERR        s2BIT(5)
0660 #define RMAC_RTS_DS_ECC_SG_ERR          s2BIT(6)
0661 #define RMAC_RD_BUF_ECC_SG_ERR          s2BIT(7)
0662 #define RMAC_RTH_MAP_ECC_SG_ERR         s2BIT(8)
0663 #define RMAC_RTH_SPDM_ECC_SG_ERR        s2BIT(9)
0664 #define RMAC_RTS_VID_ECC_SG_ERR         s2BIT(10)
0665 #define RMAC_DA_SHADOW_ECC_SG_ERR       s2BIT(11)
0666 #define RMAC_RTS_PNUM_ECC_DB_ERR        s2BIT(13)
0667 #define RMAC_RTS_DS_ECC_DB_ERR          s2BIT(14)
0668 #define RMAC_RD_BUF_ECC_DB_ERR          s2BIT(15)
0669 #define RMAC_RTH_MAP_ECC_DB_ERR         s2BIT(16)
0670 #define RMAC_RTH_SPDM_ECC_DB_ERR        s2BIT(17)
0671 #define RMAC_RTS_VID_ECC_DB_ERR         s2BIT(18)
0672 #define RMAC_DA_SHADOW_ECC_DB_ERR       s2BIT(19)
0673 #define RMAC_LINK_STATE_CHANGE_INT      s2BIT(31)
0674 #define RMAC_RX_SM_ERR              s2BIT(39)
0675 #define RMAC_SINGLE_ECC_ERR         (s2BIT(5) | s2BIT(6) | s2BIT(7) |\
0676                         s2BIT(8)  | s2BIT(9) | s2BIT(10)|\
0677                         s2BIT(11))
0678 #define RMAC_DOUBLE_ECC_ERR         (s2BIT(13) | s2BIT(14) | s2BIT(15) |\
0679                         s2BIT(16)  | s2BIT(17) | s2BIT(18)|\
0680                         s2BIT(19))
0681     u64 mac_rmac_err_mask;
0682     u64 mac_rmac_err_alarm;
0683 
0684     u8 unused14[0x100 - 0x40];
0685 
0686     u64 mac_cfg;
0687 #define MAC_CFG_TMAC_ENABLE             s2BIT(0)
0688 #define MAC_CFG_RMAC_ENABLE             s2BIT(1)
0689 #define MAC_CFG_LAN_NOT_WAN             s2BIT(2)
0690 #define MAC_CFG_TMAC_LOOPBACK           s2BIT(3)
0691 #define MAC_CFG_TMAC_APPEND_PAD         s2BIT(4)
0692 #define MAC_CFG_RMAC_STRIP_FCS          s2BIT(5)
0693 #define MAC_CFG_RMAC_STRIP_PAD          s2BIT(6)
0694 #define MAC_CFG_RMAC_PROM_ENABLE        s2BIT(7)
0695 #define MAC_RMAC_DISCARD_PFRM           s2BIT(8)
0696 #define MAC_RMAC_BCAST_ENABLE           s2BIT(9)
0697 #define MAC_RMAC_ALL_ADDR_ENABLE        s2BIT(10)
0698 #define MAC_RMAC_INVLD_IPG_THR(val)     vBIT(val,16,8)
0699 
0700     u64 tmac_avg_ipg;
0701 #define TMAC_AVG_IPG(val)           vBIT(val,0,8)
0702 
0703     u64 rmac_max_pyld_len;
0704 #define RMAC_MAX_PYLD_LEN(val)      vBIT(val,2,14)
0705 #define RMAC_MAX_PYLD_LEN_DEF       vBIT(1500,2,14)
0706 #define RMAC_MAX_PYLD_LEN_JUMBO_DEF vBIT(9600,2,14)
0707 
0708     u64 rmac_err_cfg;
0709 #define RMAC_ERR_FCS                    s2BIT(0)
0710 #define RMAC_ERR_FCS_ACCEPT             s2BIT(1)
0711 #define RMAC_ERR_TOO_LONG               s2BIT(1)
0712 #define RMAC_ERR_TOO_LONG_ACCEPT        s2BIT(1)
0713 #define RMAC_ERR_RUNT                   s2BIT(2)
0714 #define RMAC_ERR_RUNT_ACCEPT            s2BIT(2)
0715 #define RMAC_ERR_LEN_MISMATCH           s2BIT(3)
0716 #define RMAC_ERR_LEN_MISMATCH_ACCEPT    s2BIT(3)
0717 
0718     u64 rmac_cfg_key;
0719 #define RMAC_CFG_KEY(val)               vBIT(val,0,16)
0720 
0721 #define S2IO_MAC_ADDR_START_OFFSET  0
0722 
0723 #define S2IO_XENA_MAX_MC_ADDRESSES  64  /* multicast addresses */
0724 #define S2IO_HERC_MAX_MC_ADDRESSES  256
0725 
0726 #define S2IO_XENA_MAX_MAC_ADDRESSES 16
0727 #define S2IO_HERC_MAX_MAC_ADDRESSES 64
0728 
0729 #define S2IO_XENA_MC_ADDR_START_OFFSET  16
0730 #define S2IO_HERC_MC_ADDR_START_OFFSET  64
0731 
0732     u64 rmac_addr_cmd_mem;
0733 #define RMAC_ADDR_CMD_MEM_WE                    s2BIT(7)
0734 #define RMAC_ADDR_CMD_MEM_RD                    0
0735 #define RMAC_ADDR_CMD_MEM_STROBE_NEW_CMD        s2BIT(15)
0736 #define RMAC_ADDR_CMD_MEM_STROBE_CMD_EXECUTING  s2BIT(15)
0737 #define RMAC_ADDR_CMD_MEM_OFFSET(n)             vBIT(n,26,6)
0738 
0739     u64 rmac_addr_data0_mem;
0740 #define RMAC_ADDR_DATA0_MEM_ADDR(n)    vBIT(n,0,48)
0741 #define RMAC_ADDR_DATA0_MEM_USER       s2BIT(48)
0742 
0743     u64 rmac_addr_data1_mem;
0744 #define RMAC_ADDR_DATA1_MEM_MASK(n)    vBIT(n,0,48)
0745 
0746     u8 unused15[0x8];
0747 
0748 /*
0749         u64 rmac_addr_cfg;
0750 #define RMAC_ADDR_UCASTn_EN(n)     mBIT(0)_n(n)
0751 #define RMAC_ADDR_MCASTn_EN(n)     mBIT(0)_n(n)
0752 #define RMAC_ADDR_BCAST_EN         vBIT(0)_48
0753 #define RMAC_ADDR_ALL_ADDR_EN      vBIT(0)_49
0754 */
0755     u64 tmac_ipg_cfg;
0756 
0757     u64 rmac_pause_cfg;
0758 #define RMAC_PAUSE_GEN             s2BIT(0)
0759 #define RMAC_PAUSE_GEN_ENABLE      s2BIT(0)
0760 #define RMAC_PAUSE_RX              s2BIT(1)
0761 #define RMAC_PAUSE_RX_ENABLE       s2BIT(1)
0762 #define RMAC_PAUSE_HG_PTIME_DEF    vBIT(0xFFFF,16,16)
0763 #define RMAC_PAUSE_HG_PTIME(val)    vBIT(val,16,16)
0764 
0765     u64 rmac_red_cfg;
0766 
0767     u64 rmac_red_rate_q0q3;
0768     u64 rmac_red_rate_q4q7;
0769 
0770     u64 mac_link_util;
0771 #define MAC_TX_LINK_UTIL           vBIT(0xFE,1,7)
0772 #define MAC_TX_LINK_UTIL_DISABLE   vBIT(0xF, 8,4)
0773 #define MAC_TX_LINK_UTIL_VAL( n )  vBIT(n,8,4)
0774 #define MAC_RX_LINK_UTIL           vBIT(0xFE,33,7)
0775 #define MAC_RX_LINK_UTIL_DISABLE   vBIT(0xF,40,4)
0776 #define MAC_RX_LINK_UTIL_VAL( n )  vBIT(n,40,4)
0777 
0778 #define MAC_LINK_UTIL_DISABLE      MAC_TX_LINK_UTIL_DISABLE | \
0779                                    MAC_RX_LINK_UTIL_DISABLE
0780 
0781     u64 rmac_invalid_ipg;
0782 
0783 /* rx traffic steering */
0784 #define MAC_RTS_FRM_LEN_SET(len)    vBIT(len,2,14)
0785     u64 rts_frm_len_n[8];
0786 
0787     u64 rts_qos_steering;
0788 
0789 #define MAX_DIX_MAP                         4
0790     u64 rts_dix_map_n[MAX_DIX_MAP];
0791 #define RTS_DIX_MAP_ETYPE(val)             vBIT(val,0,16)
0792 #define RTS_DIX_MAP_SCW(val)               s2BIT(val,21)
0793 
0794     u64 rts_q_alternates;
0795     u64 rts_default_q;
0796 
0797     u64 rts_ctrl;
0798 #define RTS_CTRL_IGNORE_SNAP_OUI           s2BIT(2)
0799 #define RTS_CTRL_IGNORE_LLC_CTRL           s2BIT(3)
0800 
0801     u64 rts_pn_cam_ctrl;
0802 #define RTS_PN_CAM_CTRL_WE                 s2BIT(7)
0803 #define RTS_PN_CAM_CTRL_STROBE_NEW_CMD     s2BIT(15)
0804 #define RTS_PN_CAM_CTRL_STROBE_BEING_EXECUTED   s2BIT(15)
0805 #define RTS_PN_CAM_CTRL_OFFSET(n)          vBIT(n,24,8)
0806     u64 rts_pn_cam_data;
0807 #define RTS_PN_CAM_DATA_TCP_SELECT         s2BIT(7)
0808 #define RTS_PN_CAM_DATA_PORT(val)          vBIT(val,8,16)
0809 #define RTS_PN_CAM_DATA_SCW(val)           vBIT(val,24,8)
0810 
0811     u64 rts_ds_mem_ctrl;
0812 #define RTS_DS_MEM_CTRL_WE                 s2BIT(7)
0813 #define RTS_DS_MEM_CTRL_STROBE_NEW_CMD     s2BIT(15)
0814 #define RTS_DS_MEM_CTRL_STROBE_CMD_BEING_EXECUTED   s2BIT(15)
0815 #define RTS_DS_MEM_CTRL_OFFSET(n)          vBIT(n,26,6)
0816     u64 rts_ds_mem_data;
0817 #define RTS_DS_MEM_DATA(n)                 vBIT(n,0,8)
0818 
0819     u8 unused16[0x700 - 0x220];
0820 
0821     u64 mac_debug_ctrl;
0822 #define MAC_DBG_ACTIVITY_VALUE         0x411040400000000ULL
0823 
0824     u8 unused17[0x2800 - 0x2708];
0825 
0826 /* memory controller registers */
0827     u64 mc_int_status;
0828 #define MC_INT_STATUS_MC_INT               s2BIT(0)
0829     u64 mc_int_mask;
0830 #define MC_INT_MASK_MC_INT                 s2BIT(0)
0831 
0832     u64 mc_err_reg;
0833 #define MC_ERR_REG_ECC_DB_ERR_L            s2BIT(14)
0834 #define MC_ERR_REG_ECC_DB_ERR_U            s2BIT(15)
0835 #define MC_ERR_REG_MIRI_ECC_DB_ERR_0       s2BIT(18)
0836 #define MC_ERR_REG_MIRI_ECC_DB_ERR_1       s2BIT(20)
0837 #define MC_ERR_REG_MIRI_CRI_ERR_0          s2BIT(22)
0838 #define MC_ERR_REG_MIRI_CRI_ERR_1          s2BIT(23)
0839 #define MC_ERR_REG_SM_ERR                  s2BIT(31)
0840 #define MC_ERR_REG_ECC_ALL_SNG         (s2BIT(2) | s2BIT(3) | s2BIT(4) | s2BIT(5) |\
0841                     s2BIT(17) | s2BIT(19))
0842 #define MC_ERR_REG_ECC_ALL_DBL         (s2BIT(10) | s2BIT(11) | s2BIT(12) |\
0843                     s2BIT(13) | s2BIT(18) | s2BIT(20))
0844 #define PLL_LOCK_N          s2BIT(39)
0845     u64 mc_err_mask;
0846     u64 mc_err_alarm;
0847 
0848     u8 unused18[0x100 - 0x28];
0849 
0850 /* MC configuration */
0851     u64 rx_queue_cfg;
0852 #define RX_QUEUE_CFG_Q0_SZ(n)              vBIT(n,0,8)
0853 #define RX_QUEUE_CFG_Q1_SZ(n)              vBIT(n,8,8)
0854 #define RX_QUEUE_CFG_Q2_SZ(n)              vBIT(n,16,8)
0855 #define RX_QUEUE_CFG_Q3_SZ(n)              vBIT(n,24,8)
0856 #define RX_QUEUE_CFG_Q4_SZ(n)              vBIT(n,32,8)
0857 #define RX_QUEUE_CFG_Q5_SZ(n)              vBIT(n,40,8)
0858 #define RX_QUEUE_CFG_Q6_SZ(n)              vBIT(n,48,8)
0859 #define RX_QUEUE_CFG_Q7_SZ(n)              vBIT(n,56,8)
0860 
0861     u64 mc_rldram_mrs;
0862 #define MC_RLDRAM_QUEUE_SIZE_ENABLE         s2BIT(39)
0863 #define MC_RLDRAM_MRS_ENABLE                s2BIT(47)
0864 
0865     u64 mc_rldram_interleave;
0866 
0867     u64 mc_pause_thresh_q0q3;
0868     u64 mc_pause_thresh_q4q7;
0869 
0870     u64 mc_red_thresh_q[8];
0871 
0872     u8 unused19[0x200 - 0x168];
0873     u64 mc_rldram_ref_per;
0874     u8 unused20[0x220 - 0x208];
0875     u64 mc_rldram_test_ctrl;
0876 #define MC_RLDRAM_TEST_MODE     s2BIT(47)
0877 #define MC_RLDRAM_TEST_WRITE    s2BIT(7)
0878 #define MC_RLDRAM_TEST_GO       s2BIT(15)
0879 #define MC_RLDRAM_TEST_DONE     s2BIT(23)
0880 #define MC_RLDRAM_TEST_PASS     s2BIT(31)
0881 
0882     u8 unused21[0x240 - 0x228];
0883     u64 mc_rldram_test_add;
0884     u8 unused22[0x260 - 0x248];
0885     u64 mc_rldram_test_d0;
0886     u8 unused23[0x280 - 0x268];
0887     u64 mc_rldram_test_d1;
0888     u8 unused24[0x300 - 0x288];
0889     u64 mc_rldram_test_d2;
0890 
0891     u8 unused24_1[0x360 - 0x308];
0892     u64 mc_rldram_ctrl;
0893 #define MC_RLDRAM_ENABLE_ODT        s2BIT(7)
0894 
0895     u8 unused24_2[0x640 - 0x368];
0896     u64 mc_rldram_ref_per_herc;
0897 #define MC_RLDRAM_SET_REF_PERIOD(val)   vBIT(val, 0, 16)
0898 
0899     u8 unused24_3[0x660 - 0x648];
0900     u64 mc_rldram_mrs_herc;
0901 
0902     u8 unused25[0x700 - 0x668];
0903     u64 mc_debug_ctrl;
0904 
0905     u8 unused26[0x3000 - 0x2f08];
0906 
0907 /* XGXG */
0908     /* XGXS control registers */
0909 
0910     u64 xgxs_int_status;
0911 #define XGXS_INT_STATUS_TXGXS              s2BIT(0)
0912 #define XGXS_INT_STATUS_RXGXS              s2BIT(1)
0913     u64 xgxs_int_mask;
0914 #define XGXS_INT_MASK_TXGXS                s2BIT(0)
0915 #define XGXS_INT_MASK_RXGXS                s2BIT(1)
0916 
0917     u64 xgxs_txgxs_err_reg;
0918 #define TXGXS_ECC_SG_ERR        s2BIT(7)
0919 #define TXGXS_ECC_DB_ERR        s2BIT(15)
0920 #define TXGXS_ESTORE_UFLOW      s2BIT(31)
0921 #define TXGXS_TX_SM_ERR         s2BIT(39)
0922 
0923     u64 xgxs_txgxs_err_mask;
0924     u64 xgxs_txgxs_err_alarm;
0925 
0926     u64 xgxs_rxgxs_err_reg;
0927 #define RXGXS_ESTORE_OFLOW      s2BIT(7)
0928 #define RXGXS_RX_SM_ERR         s2BIT(39)
0929     u64 xgxs_rxgxs_err_mask;
0930     u64 xgxs_rxgxs_err_alarm;
0931 
0932     u8 unused27[0x100 - 0x40];
0933 
0934     u64 xgxs_cfg;
0935     u64 xgxs_status;
0936 
0937     u64 xgxs_cfg_key;
0938     u64 xgxs_efifo_cfg; /* CHANGED */
0939     u64 rxgxs_ber_0;    /* CHANGED */
0940     u64 rxgxs_ber_1;    /* CHANGED */
0941 
0942     u64 spi_control;
0943 #define SPI_CONTROL_KEY(key)        vBIT(key,0,4)
0944 #define SPI_CONTROL_BYTECNT(cnt)    vBIT(cnt,29,3)
0945 #define SPI_CONTROL_CMD(cmd)        vBIT(cmd,32,8)
0946 #define SPI_CONTROL_ADDR(addr)      vBIT(addr,40,24)
0947 #define SPI_CONTROL_SEL1        s2BIT(4)
0948 #define SPI_CONTROL_REQ         s2BIT(7)
0949 #define SPI_CONTROL_NACK        s2BIT(5)
0950 #define SPI_CONTROL_DONE        s2BIT(6)
0951     u64 spi_data;
0952 #define SPI_DATA_WRITE(data,len)    vBIT(data,0,len)
0953 };
0954 
0955 #define XENA_REG_SPACE  sizeof(struct XENA_dev_config)
0956 #define XENA_EEPROM_SPACE (0x01 << 11)
0957 
0958 #endif              /* _REGS_H */