Back to home page

OSCL-LXR

 
 

    


0001 /**********************************************************************
0002  * Author: Cavium, Inc.
0003  *
0004  * Contact: support@cavium.com
0005  *          Please include "LiquidIO" in the subject.
0006  *
0007  * Copyright (c) 2003-2016 Cavium, Inc.
0008  *
0009  * This file is free software; you can redistribute it and/or modify
0010  * it under the terms of the GNU General Public License, Version 2, as
0011  * published by the Free Software Foundation.
0012  *
0013  * This file is distributed in the hope that it will be useful, but
0014  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
0015  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
0016  * NONINFRINGEMENT.  See the GNU General Public License for more details.
0017  ***********************************************************************/
0018 /*! \file cn66xx_regs.h
0019  *  \brief Host Driver: Register Address and Register Mask values for
0020  *  Octeon CN66XX devices.
0021  */
0022 
0023 #ifndef __CN66XX_REGS_H__
0024 #define __CN66XX_REGS_H__
0025 
0026 #define     CN6XXX_XPANSION_BAR             0x30
0027 
0028 #define     CN6XXX_MSI_CAP                  0x50
0029 #define     CN6XXX_MSI_ADDR_LO              0x54
0030 #define     CN6XXX_MSI_ADDR_HI              0x58
0031 #define     CN6XXX_MSI_DATA                 0x5C
0032 
0033 #define     CN6XXX_PCIE_CAP                 0x70
0034 #define     CN6XXX_PCIE_DEVCAP              0x74
0035 #define     CN6XXX_PCIE_DEVCTL              0x78
0036 #define     CN6XXX_PCIE_LINKCAP             0x7C
0037 #define     CN6XXX_PCIE_LINKCTL             0x80
0038 #define     CN6XXX_PCIE_SLOTCAP             0x84
0039 #define     CN6XXX_PCIE_SLOTCTL             0x88
0040 
0041 #define     CN6XXX_PCIE_ENH_CAP             0x100
0042 #define     CN6XXX_PCIE_UNCORR_ERR_STATUS   0x104
0043 #define     CN6XXX_PCIE_UNCORR_ERR_MASK     0x108
0044 #define     CN6XXX_PCIE_UNCORR_ERR          0x10C
0045 #define     CN6XXX_PCIE_CORR_ERR_STATUS     0x110
0046 #define     CN6XXX_PCIE_CORR_ERR_MASK       0x114
0047 #define     CN6XXX_PCIE_ADV_ERR_CAP         0x118
0048 
0049 #define     CN6XXX_PCIE_ACK_REPLAY_TIMER    0x700
0050 #define     CN6XXX_PCIE_OTHER_MSG           0x704
0051 #define     CN6XXX_PCIE_PORT_FORCE_LINK     0x708
0052 #define     CN6XXX_PCIE_ACK_FREQ            0x70C
0053 #define     CN6XXX_PCIE_PORT_LINK_CTL       0x710
0054 #define     CN6XXX_PCIE_LANE_SKEW           0x714
0055 #define     CN6XXX_PCIE_SYM_NUM             0x718
0056 #define     CN6XXX_PCIE_FLTMSK              0x720
0057 
0058 /* ##############  BAR0 Registers ################  */
0059 
0060 #define    CN6XXX_SLI_CTL_PORT0                    0x0050
0061 #define    CN6XXX_SLI_CTL_PORT1                    0x0060
0062 
0063 #define    CN6XXX_SLI_WINDOW_CTL                   0x02E0
0064 #define    CN6XXX_SLI_DBG_DATA                     0x0310
0065 #define    CN6XXX_SLI_SCRATCH1                     0x03C0
0066 #define    CN6XXX_SLI_SCRATCH2                     0x03D0
0067 #define    CN6XXX_SLI_CTL_STATUS                   0x0570
0068 
0069 #define    CN6XXX_WIN_WR_ADDR_LO                   0x0000
0070 #define    CN6XXX_WIN_WR_ADDR_HI                   0x0004
0071 #define    CN6XXX_WIN_WR_ADDR64                    CN6XXX_WIN_WR_ADDR_LO
0072 
0073 #define    CN6XXX_WIN_RD_ADDR_LO                   0x0010
0074 #define    CN6XXX_WIN_RD_ADDR_HI                   0x0014
0075 #define    CN6XXX_WIN_RD_ADDR64                    CN6XXX_WIN_RD_ADDR_LO
0076 
0077 #define    CN6XXX_WIN_WR_DATA_LO                   0x0020
0078 #define    CN6XXX_WIN_WR_DATA_HI                   0x0024
0079 #define    CN6XXX_WIN_WR_DATA64                    CN6XXX_WIN_WR_DATA_LO
0080 
0081 #define    CN6XXX_WIN_RD_DATA_LO                   0x0040
0082 #define    CN6XXX_WIN_RD_DATA_HI                   0x0044
0083 #define    CN6XXX_WIN_RD_DATA64                    CN6XXX_WIN_RD_DATA_LO
0084 
0085 #define    CN6XXX_WIN_WR_MASK_LO                   0x0030
0086 #define    CN6XXX_WIN_WR_MASK_HI                   0x0034
0087 #define    CN6XXX_WIN_WR_MASK_REG                  CN6XXX_WIN_WR_MASK_LO
0088 
0089 /* 1 register (32-bit) to enable Input queues */
0090 #define    CN6XXX_SLI_PKT_INSTR_ENB               0x1000
0091 
0092 /* 1 register (32-bit) to enable Output queues */
0093 #define    CN6XXX_SLI_PKT_OUT_ENB                 0x1010
0094 
0095 /* 1 register (32-bit) to determine whether Output queues are in reset. */
0096 #define    CN6XXX_SLI_PORT_IN_RST_OQ              0x11F0
0097 
0098 /* 1 register (32-bit) to determine whether Input queues are in reset. */
0099 #define    CN6XXX_SLI_PORT_IN_RST_IQ              0x11F4
0100 
0101 /*###################### REQUEST QUEUE #########################*/
0102 
0103 /* 1 register (32-bit) - instr. size of each input queue. */
0104 #define    CN6XXX_SLI_PKT_INSTR_SIZE             0x1020
0105 
0106 /* 32 registers for Input Queue Instr Count - SLI_PKT_IN_DONE0_CNTS */
0107 #define    CN6XXX_SLI_IQ_INSTR_COUNT_START       0x2000
0108 
0109 /* 32 registers for Input Queue Start Addr - SLI_PKT0_INSTR_BADDR */
0110 #define    CN6XXX_SLI_IQ_BASE_ADDR_START64       0x2800
0111 
0112 /* 32 registers for Input Doorbell - SLI_PKT0_INSTR_BAOFF_DBELL */
0113 #define    CN6XXX_SLI_IQ_DOORBELL_START          0x2C00
0114 
0115 /* 32 registers for Input Queue size - SLI_PKT0_INSTR_FIFO_RSIZE */
0116 #define    CN6XXX_SLI_IQ_SIZE_START              0x3000
0117 
0118 /* 32 registers for Instruction Header Options - SLI_PKT0_INSTR_HEADER */
0119 #define    CN6XXX_SLI_IQ_PKT_INSTR_HDR_START64   0x3400
0120 
0121 /* 1 register (64-bit) - Back Pressure for each input queue - SLI_PKT0_IN_BP */
0122 #define    CN66XX_SLI_INPUT_BP_START64           0x3800
0123 
0124 /* Each Input Queue register is at a 16-byte Offset in BAR0 */
0125 #define    CN6XXX_IQ_OFFSET                      0x10
0126 
0127 /* 1 register (32-bit) - ES, RO, NS, Arbitration for Input Queue Data &
0128  * gather list fetches. SLI_PKT_INPUT_CONTROL.
0129  */
0130 #define    CN6XXX_SLI_PKT_INPUT_CONTROL          0x1170
0131 
0132 /* 1 register (64-bit) - Number of instructions to read at one time
0133  * - 2 bits for each input ring. SLI_PKT_INSTR_RD_SIZE.
0134  */
0135 #define    CN6XXX_SLI_PKT_INSTR_RD_SIZE          0x11A0
0136 
0137 /* 1 register (64-bit) - Assign Input ring to MAC port
0138  * - 2 bits for each input ring. SLI_PKT_IN_PCIE_PORT.
0139  */
0140 #define    CN6XXX_SLI_IN_PCIE_PORT               0x11B0
0141 
0142 /*------- Request Queue Macros ---------*/
0143 #define    CN6XXX_SLI_IQ_BASE_ADDR64(iq)          \
0144     (CN6XXX_SLI_IQ_BASE_ADDR_START64 + ((iq) * CN6XXX_IQ_OFFSET))
0145 
0146 #define    CN6XXX_SLI_IQ_SIZE(iq)                 \
0147     (CN6XXX_SLI_IQ_SIZE_START + ((iq) * CN6XXX_IQ_OFFSET))
0148 
0149 #define    CN6XXX_SLI_IQ_PKT_INSTR_HDR64(iq)      \
0150     (CN6XXX_SLI_IQ_PKT_INSTR_HDR_START64 + ((iq) * CN6XXX_IQ_OFFSET))
0151 
0152 #define    CN6XXX_SLI_IQ_DOORBELL(iq)             \
0153     (CN6XXX_SLI_IQ_DOORBELL_START + ((iq) * CN6XXX_IQ_OFFSET))
0154 
0155 #define    CN6XXX_SLI_IQ_INSTR_COUNT(iq)          \
0156     (CN6XXX_SLI_IQ_INSTR_COUNT_START + ((iq) * CN6XXX_IQ_OFFSET))
0157 
0158 #define    CN66XX_SLI_IQ_BP64(iq)                 \
0159     (CN66XX_SLI_INPUT_BP_START64 + ((iq) * CN6XXX_IQ_OFFSET))
0160 
0161 /*------------------ Masks ----------------*/
0162 #define    CN6XXX_INPUT_CTL_ROUND_ROBIN_ARB         BIT(22)
0163 #define    CN6XXX_INPUT_CTL_DATA_NS                 BIT(8)
0164 #define    CN6XXX_INPUT_CTL_DATA_ES_64B_SWAP        BIT(6)
0165 #define    CN6XXX_INPUT_CTL_DATA_RO                 BIT(5)
0166 #define    CN6XXX_INPUT_CTL_USE_CSR                 BIT(4)
0167 #define    CN6XXX_INPUT_CTL_GATHER_NS               BIT(3)
0168 #define    CN6XXX_INPUT_CTL_GATHER_ES_64B_SWAP      BIT(2)
0169 #define    CN6XXX_INPUT_CTL_GATHER_RO               BIT(1)
0170 
0171 #ifdef __BIG_ENDIAN_BITFIELD
0172 #define    CN6XXX_INPUT_CTL_MASK                    \
0173     (CN6XXX_INPUT_CTL_DATA_ES_64B_SWAP      \
0174       | CN6XXX_INPUT_CTL_USE_CSR              \
0175       | CN6XXX_INPUT_CTL_GATHER_ES_64B_SWAP)
0176 #else
0177 #define    CN6XXX_INPUT_CTL_MASK                    \
0178     (CN6XXX_INPUT_CTL_DATA_ES_64B_SWAP     \
0179       | CN6XXX_INPUT_CTL_USE_CSR)
0180 #endif
0181 
0182 /*############################ OUTPUT QUEUE #########################*/
0183 
0184 /* 32 registers for Output queue buffer and info size - SLI_PKT0_OUT_SIZE */
0185 #define    CN6XXX_SLI_OQ0_BUFF_INFO_SIZE         0x0C00
0186 
0187 /* 32 registers for Output Queue Start Addr - SLI_PKT0_SLIST_BADDR */
0188 #define    CN6XXX_SLI_OQ_BASE_ADDR_START64       0x1400
0189 
0190 /* 32 registers for Output Queue Packet Credits - SLI_PKT0_SLIST_BAOFF_DBELL */
0191 #define    CN6XXX_SLI_OQ_PKT_CREDITS_START       0x1800
0192 
0193 /* 32 registers for Output Queue size - SLI_PKT0_SLIST_FIFO_RSIZE */
0194 #define    CN6XXX_SLI_OQ_SIZE_START              0x1C00
0195 
0196 /* 32 registers for Output Queue Packet Count - SLI_PKT0_CNTS */
0197 #define    CN6XXX_SLI_OQ_PKT_SENT_START          0x2400
0198 
0199 /* Each Output Queue register is at a 16-byte Offset in BAR0 */
0200 #define    CN6XXX_OQ_OFFSET                      0x10
0201 
0202 /* 1 register (32-bit) - 1 bit for each output queue
0203  * - Relaxed Ordering setting for reading Output Queues descriptors
0204  * - SLI_PKT_SLIST_ROR
0205  */
0206 #define    CN6XXX_SLI_PKT_SLIST_ROR              0x1030
0207 
0208 /* 1 register (32-bit) - 1 bit for each output queue
0209  * - No Snoop mode for reading Output Queues descriptors
0210  * - SLI_PKT_SLIST_NS
0211  */
0212 #define    CN6XXX_SLI_PKT_SLIST_NS               0x1040
0213 
0214 /* 1 register (64-bit) - 2 bits for each output queue
0215  * - Endian-Swap mode for reading Output Queue descriptors
0216  * - SLI_PKT_SLIST_ES
0217  */
0218 #define    CN6XXX_SLI_PKT_SLIST_ES64             0x1050
0219 
0220 /* 1 register (32-bit) - 1 bit for each output queue
0221  * - InfoPtr mode for Output Queues.
0222  * - SLI_PKT_IPTR
0223  */
0224 #define    CN6XXX_SLI_PKT_IPTR                   0x1070
0225 
0226 /* 1 register (32-bit) - 1 bit for each output queue
0227  * - DPTR format selector for Output queues.
0228  * - SLI_PKT_DPADDR
0229  */
0230 #define    CN6XXX_SLI_PKT_DPADDR                 0x1080
0231 
0232 /* 1 register (32-bit) - 1 bit for each output queue
0233  * - Relaxed Ordering setting for reading Output Queues data
0234  * - SLI_PKT_DATA_OUT_ROR
0235  */
0236 #define    CN6XXX_SLI_PKT_DATA_OUT_ROR           0x1090
0237 
0238 /* 1 register (32-bit) - 1 bit for each output queue
0239  * - No Snoop mode for reading Output Queues data
0240  * - SLI_PKT_DATA_OUT_NS
0241  */
0242 #define    CN6XXX_SLI_PKT_DATA_OUT_NS            0x10A0
0243 
0244 /* 1 register (64-bit)  - 2 bits for each output queue
0245  * - Endian-Swap mode for reading Output Queue data
0246  * - SLI_PKT_DATA_OUT_ES
0247  */
0248 #define    CN6XXX_SLI_PKT_DATA_OUT_ES64          0x10B0
0249 
0250 /* 1 register (32-bit) - 1 bit for each output queue
0251  * - Controls whether SLI_PKTn_CNTS is incremented for bytes or for packets.
0252  * - SLI_PKT_OUT_BMODE
0253  */
0254 #define    CN6XXX_SLI_PKT_OUT_BMODE              0x10D0
0255 
0256 /* 1 register (64-bit) - 2 bits for each output queue
0257  * - Assign PCIE port for Output queues
0258  * - SLI_PKT_PCIE_PORT.
0259  */
0260 #define    CN6XXX_SLI_PKT_PCIE_PORT64            0x10E0
0261 
0262 /* 1 (64-bit) register for Output Queue Packet Count Interrupt Threshold
0263  * & Time Threshold. The same setting applies to all 32 queues.
0264  * The register is defined as a 64-bit registers, but we use the
0265  * 32-bit offsets to define distinct addresses.
0266  */
0267 #define    CN6XXX_SLI_OQ_INT_LEVEL_PKTS          0x1120
0268 #define    CN6XXX_SLI_OQ_INT_LEVEL_TIME          0x1124
0269 
0270 /* 1 (64-bit register) for Output Queue backpressure across all rings. */
0271 #define    CN6XXX_SLI_OQ_WMARK                   0x1180
0272 
0273 /* 1 register to control output queue global backpressure & ring enable. */
0274 #define    CN6XXX_SLI_PKT_CTL                    0x1220
0275 
0276 /*------- Output Queue Macros ---------*/
0277 #define    CN6XXX_SLI_OQ_BASE_ADDR64(oq)          \
0278     (CN6XXX_SLI_OQ_BASE_ADDR_START64 + ((oq) * CN6XXX_OQ_OFFSET))
0279 
0280 #define    CN6XXX_SLI_OQ_SIZE(oq)                 \
0281     (CN6XXX_SLI_OQ_SIZE_START + ((oq) * CN6XXX_OQ_OFFSET))
0282 
0283 #define    CN6XXX_SLI_OQ_BUFF_INFO_SIZE(oq)                 \
0284     (CN6XXX_SLI_OQ0_BUFF_INFO_SIZE + ((oq) * CN6XXX_OQ_OFFSET))
0285 
0286 #define    CN6XXX_SLI_OQ_PKTS_SENT(oq)            \
0287     (CN6XXX_SLI_OQ_PKT_SENT_START + ((oq) * CN6XXX_OQ_OFFSET))
0288 
0289 #define    CN6XXX_SLI_OQ_PKTS_CREDIT(oq)          \
0290     (CN6XXX_SLI_OQ_PKT_CREDITS_START + ((oq) * CN6XXX_OQ_OFFSET))
0291 
0292 /*######################### DMA Counters #########################*/
0293 
0294 /* 2 registers (64-bit) - DMA Count - 1 for each DMA counter 0/1. */
0295 #define    CN6XXX_DMA_CNT_START                   0x0400
0296 
0297 /* 2 registers (64-bit) - DMA Timer 0/1, contains DMA timer values
0298  * SLI_DMA_0_TIM
0299  */
0300 #define    CN6XXX_DMA_TIM_START                   0x0420
0301 
0302 /* 2 registers (64-bit) - DMA count & Time Interrupt threshold -
0303  * SLI_DMA_0_INT_LEVEL
0304  */
0305 #define    CN6XXX_DMA_INT_LEVEL_START             0x03E0
0306 
0307 /* Each DMA register is at a 16-byte Offset in BAR0 */
0308 #define    CN6XXX_DMA_OFFSET                      0x10
0309 
0310 /*---------- DMA Counter Macros ---------*/
0311 #define    CN6XXX_DMA_CNT(dq)                      \
0312     (CN6XXX_DMA_CNT_START + ((dq) * CN6XXX_DMA_OFFSET))
0313 
0314 #define    CN6XXX_DMA_INT_LEVEL(dq)                \
0315     (CN6XXX_DMA_INT_LEVEL_START + ((dq) * CN6XXX_DMA_OFFSET))
0316 
0317 #define    CN6XXX_DMA_PKT_INT_LEVEL(dq)            \
0318     (CN6XXX_DMA_INT_LEVEL_START + ((dq) * CN6XXX_DMA_OFFSET))
0319 
0320 #define    CN6XXX_DMA_TIME_INT_LEVEL(dq)           \
0321     (CN6XXX_DMA_INT_LEVEL_START + 4 + ((dq) * CN6XXX_DMA_OFFSET))
0322 
0323 #define    CN6XXX_DMA_TIM(dq)                      \
0324     (CN6XXX_DMA_TIM_START + ((dq) * CN6XXX_DMA_OFFSET))
0325 
0326 /*######################## INTERRUPTS #########################*/
0327 
0328 /* 1 register (64-bit) for Interrupt Summary */
0329 #define    CN6XXX_SLI_INT_SUM64                  0x0330
0330 
0331 /* 1 register (64-bit) for Interrupt Enable */
0332 #define    CN6XXX_SLI_INT_ENB64_PORT0            0x0340
0333 #define    CN6XXX_SLI_INT_ENB64_PORT1            0x0350
0334 
0335 /* 1 register (32-bit) to enable Output Queue Packet/Byte Count Interrupt */
0336 #define    CN6XXX_SLI_PKT_CNT_INT_ENB            0x1150
0337 
0338 /* 1 register (32-bit) to enable Output Queue Packet Timer Interrupt */
0339 #define    CN6XXX_SLI_PKT_TIME_INT_ENB           0x1160
0340 
0341 /* 1 register (32-bit) to indicate which Output Queue reached pkt threshold */
0342 #define    CN6XXX_SLI_PKT_CNT_INT                0x1130
0343 
0344 /* 1 register (32-bit) to indicate which Output Queue reached time threshold */
0345 #define    CN6XXX_SLI_PKT_TIME_INT               0x1140
0346 
0347 /*------------------ Interrupt Masks ----------------*/
0348 
0349 #define    CN6XXX_INTR_RML_TIMEOUT_ERR           BIT(1)
0350 #define    CN6XXX_INTR_BAR0_RW_TIMEOUT_ERR       BIT(2)
0351 #define    CN6XXX_INTR_IO2BIG_ERR                BIT(3)
0352 #define    CN6XXX_INTR_PKT_COUNT                 BIT(4)
0353 #define    CN6XXX_INTR_PKT_TIME                  BIT(5)
0354 #define    CN6XXX_INTR_M0UPB0_ERR                BIT(8)
0355 #define    CN6XXX_INTR_M0UPWI_ERR                BIT(9)
0356 #define    CN6XXX_INTR_M0UNB0_ERR                BIT(10)
0357 #define    CN6XXX_INTR_M0UNWI_ERR                BIT(11)
0358 #define    CN6XXX_INTR_M1UPB0_ERR                BIT(12)
0359 #define    CN6XXX_INTR_M1UPWI_ERR                BIT(13)
0360 #define    CN6XXX_INTR_M1UNB0_ERR                BIT(14)
0361 #define    CN6XXX_INTR_M1UNWI_ERR                BIT(15)
0362 #define    CN6XXX_INTR_MIO_INT0                  BIT(16)
0363 #define    CN6XXX_INTR_MIO_INT1                  BIT(17)
0364 #define    CN6XXX_INTR_MAC_INT0                  BIT(18)
0365 #define    CN6XXX_INTR_MAC_INT1                  BIT(19)
0366 
0367 #define    CN6XXX_INTR_DMA0_FORCE                BIT_ULL(32)
0368 #define    CN6XXX_INTR_DMA1_FORCE                BIT_ULL(33)
0369 #define    CN6XXX_INTR_DMA0_COUNT                BIT_ULL(34)
0370 #define    CN6XXX_INTR_DMA1_COUNT                BIT_ULL(35)
0371 #define    CN6XXX_INTR_DMA0_TIME                 BIT_ULL(36)
0372 #define    CN6XXX_INTR_DMA1_TIME                 BIT_ULL(37)
0373 #define    CN6XXX_INTR_INSTR_DB_OF_ERR           BIT_ULL(48)
0374 #define    CN6XXX_INTR_SLIST_DB_OF_ERR           BIT_ULL(49)
0375 #define    CN6XXX_INTR_POUT_ERR                  BIT_ULL(50)
0376 #define    CN6XXX_INTR_PIN_BP_ERR                BIT_ULL(51)
0377 #define    CN6XXX_INTR_PGL_ERR                   BIT_ULL(52)
0378 #define    CN6XXX_INTR_PDI_ERR                   BIT_ULL(53)
0379 #define    CN6XXX_INTR_POP_ERR                   BIT_ULL(54)
0380 #define    CN6XXX_INTR_PINS_ERR                  BIT_ULL(55)
0381 #define    CN6XXX_INTR_SPRT0_ERR                 BIT_ULL(56)
0382 #define    CN6XXX_INTR_SPRT1_ERR                 BIT_ULL(57)
0383 #define    CN6XXX_INTR_ILL_PAD_ERR               BIT_ULL(60)
0384 
0385 #define    CN6XXX_INTR_DMA0_DATA                 (CN6XXX_INTR_DMA0_TIME)
0386 
0387 #define    CN6XXX_INTR_DMA1_DATA                 (CN6XXX_INTR_DMA1_TIME)
0388 
0389 #define    CN6XXX_INTR_DMA_DATA                  \
0390     (CN6XXX_INTR_DMA0_DATA | CN6XXX_INTR_DMA1_DATA)
0391 
0392 #define    CN6XXX_INTR_PKT_DATA                  (CN6XXX_INTR_PKT_TIME | \
0393                           CN6XXX_INTR_PKT_COUNT)
0394 
0395 /* Sum of interrupts for all PCI-Express Data Interrupts */
0396 #define    CN6XXX_INTR_PCIE_DATA                 \
0397     (CN6XXX_INTR_DMA_DATA | CN6XXX_INTR_PKT_DATA)
0398 
0399 #define    CN6XXX_INTR_MIO                       \
0400     (CN6XXX_INTR_MIO_INT0 | CN6XXX_INTR_MIO_INT1)
0401 
0402 #define    CN6XXX_INTR_MAC                       \
0403     (CN6XXX_INTR_MAC_INT0 | CN6XXX_INTR_MAC_INT1)
0404 
0405 /* Sum of interrupts for error events */
0406 #define    CN6XXX_INTR_ERR                       \
0407     (CN6XXX_INTR_BAR0_RW_TIMEOUT_ERR    \
0408        | CN6XXX_INTR_IO2BIG_ERR             \
0409        | CN6XXX_INTR_M0UPB0_ERR             \
0410        | CN6XXX_INTR_M0UPWI_ERR             \
0411        | CN6XXX_INTR_M0UNB0_ERR             \
0412        | CN6XXX_INTR_M0UNWI_ERR             \
0413        | CN6XXX_INTR_M1UPB0_ERR             \
0414        | CN6XXX_INTR_M1UPWI_ERR             \
0415        | CN6XXX_INTR_M1UNB0_ERR             \
0416        | CN6XXX_INTR_M1UNWI_ERR             \
0417        | CN6XXX_INTR_INSTR_DB_OF_ERR        \
0418        | CN6XXX_INTR_SLIST_DB_OF_ERR        \
0419        | CN6XXX_INTR_POUT_ERR               \
0420        | CN6XXX_INTR_PIN_BP_ERR             \
0421        | CN6XXX_INTR_PGL_ERR                \
0422        | CN6XXX_INTR_PDI_ERR                \
0423        | CN6XXX_INTR_POP_ERR                \
0424        | CN6XXX_INTR_PINS_ERR               \
0425        | CN6XXX_INTR_SPRT0_ERR              \
0426        | CN6XXX_INTR_SPRT1_ERR              \
0427        | CN6XXX_INTR_ILL_PAD_ERR)
0428 
0429 /* Programmed Mask for Interrupt Sum */
0430 #define    CN6XXX_INTR_MASK                      \
0431     (CN6XXX_INTR_PCIE_DATA              \
0432        | CN6XXX_INTR_DMA0_FORCE             \
0433        | CN6XXX_INTR_DMA1_FORCE             \
0434        | CN6XXX_INTR_MIO                    \
0435        | CN6XXX_INTR_MAC                    \
0436        | CN6XXX_INTR_ERR)
0437 
0438 #define    CN6XXX_SLI_S2M_PORT0_CTL              0x3D80
0439 #define    CN6XXX_SLI_S2M_PORT1_CTL              0x3D90
0440 #define    CN6XXX_SLI_S2M_PORTX_CTL(port)        \
0441     (CN6XXX_SLI_S2M_PORT0_CTL + ((port) * 0x10))
0442 
0443 #define    CN6XXX_SLI_INT_ENB64(port)            \
0444     (CN6XXX_SLI_INT_ENB64_PORT0 + ((port) * 0x10))
0445 
0446 #define    CN6XXX_SLI_MAC_NUMBER                 0x3E00
0447 
0448 /* CN6XXX BAR1 Index registers. */
0449 #define    CN6XXX_PEM_BAR1_INDEX000                0x00011800C00000A8ULL
0450 #define    CN6XXX_PEM_OFFSET                       0x0000000001000000ULL
0451 
0452 #define    CN6XXX_BAR1_INDEX_START                 CN6XXX_PEM_BAR1_INDEX000
0453 #define    CN6XXX_PCI_BAR1_OFFSET                  0x8
0454 
0455 #define    CN6XXX_BAR1_REG(idx, port) \
0456         (CN6XXX_BAR1_INDEX_START + ((port) * CN6XXX_PEM_OFFSET) + \
0457         (CN6XXX_PCI_BAR1_OFFSET * (idx)))
0458 
0459 /*############################ DPI #########################*/
0460 
0461 #define    CN6XXX_DPI_CTL                 0x0001df0000000040ULL
0462 
0463 #define    CN6XXX_DPI_DMA_CONTROL         0x0001df0000000048ULL
0464 
0465 #define    CN6XXX_DPI_REQ_GBL_ENB         0x0001df0000000050ULL
0466 
0467 #define    CN6XXX_DPI_REQ_ERR_RSP         0x0001df0000000058ULL
0468 
0469 #define    CN6XXX_DPI_REQ_ERR_RST         0x0001df0000000060ULL
0470 
0471 #define    CN6XXX_DPI_DMA_ENG0_ENB        0x0001df0000000080ULL
0472 
0473 #define    CN6XXX_DPI_DMA_ENG_ENB(q_no)   \
0474     (CN6XXX_DPI_DMA_ENG0_ENB + ((q_no) * 8))
0475 
0476 #define    CN6XXX_DPI_DMA_ENG0_BUF        0x0001df0000000880ULL
0477 
0478 #define    CN6XXX_DPI_DMA_ENG_BUF(q_no)   \
0479     (CN6XXX_DPI_DMA_ENG0_BUF + ((q_no) * 8))
0480 
0481 #define    CN6XXX_DPI_SLI_PRT0_CFG        0x0001df0000000900ULL
0482 #define    CN6XXX_DPI_SLI_PRT1_CFG        0x0001df0000000908ULL
0483 #define    CN6XXX_DPI_SLI_PRTX_CFG(port)        \
0484     (CN6XXX_DPI_SLI_PRT0_CFG + ((port) * 0x10))
0485 
0486 #define    CN6XXX_DPI_DMA_COMMIT_MODE     BIT_ULL(58)
0487 #define    CN6XXX_DPI_DMA_PKT_HP          BIT_ULL(57)
0488 #define    CN6XXX_DPI_DMA_PKT_EN          BIT_ULL(56)
0489 #define    CN6XXX_DPI_DMA_O_ES            BIT_ULL(15)
0490 #define    CN6XXX_DPI_DMA_O_MODE          BIT_ULL(14)
0491 
0492 #define    CN6XXX_DPI_DMA_CTL_MASK             \
0493     (CN6XXX_DPI_DMA_COMMIT_MODE    |    \
0494      CN6XXX_DPI_DMA_PKT_HP         |    \
0495      CN6XXX_DPI_DMA_PKT_EN         |    \
0496      CN6XXX_DPI_DMA_O_ES           |    \
0497      CN6XXX_DPI_DMA_O_MODE)
0498 
0499 /*############################ CIU #########################*/
0500 
0501 #define    CN6XXX_CIU_SOFT_BIST           0x0001070000000738ULL
0502 #define    CN6XXX_CIU_SOFT_RST            0x0001070000000740ULL
0503 
0504 /*############################ MIO #########################*/
0505 #define    CN6XXX_MIO_PTP_CLOCK_CFG       0x0001070000000f00ULL
0506 #define    CN6XXX_MIO_PTP_CLOCK_LO        0x0001070000000f08ULL
0507 #define    CN6XXX_MIO_PTP_CLOCK_HI        0x0001070000000f10ULL
0508 #define    CN6XXX_MIO_PTP_CLOCK_COMP      0x0001070000000f18ULL
0509 #define    CN6XXX_MIO_PTP_TIMESTAMP       0x0001070000000f20ULL
0510 #define    CN6XXX_MIO_PTP_EVT_CNT         0x0001070000000f28ULL
0511 #define    CN6XXX_MIO_PTP_CKOUT_THRESH_LO 0x0001070000000f30ULL
0512 #define    CN6XXX_MIO_PTP_CKOUT_THRESH_HI 0x0001070000000f38ULL
0513 #define    CN6XXX_MIO_PTP_CKOUT_HI_INCR   0x0001070000000f40ULL
0514 #define    CN6XXX_MIO_PTP_CKOUT_LO_INCR   0x0001070000000f48ULL
0515 #define    CN6XXX_MIO_PTP_PPS_THRESH_LO   0x0001070000000f50ULL
0516 #define    CN6XXX_MIO_PTP_PPS_THRESH_HI   0x0001070000000f58ULL
0517 #define    CN6XXX_MIO_PTP_PPS_HI_INCR     0x0001070000000f60ULL
0518 #define    CN6XXX_MIO_PTP_PPS_LO_INCR     0x0001070000000f68ULL
0519 
0520 #define    CN6XXX_MIO_QLM4_CFG            0x00011800000015B0ULL
0521 #define    CN6XXX_MIO_RST_BOOT            0x0001180000001600ULL
0522 
0523 #define    CN6XXX_MIO_QLM_CFG_MASK        0x7
0524 
0525 /*############################ LMC #########################*/
0526 
0527 #define    CN6XXX_LMC0_RESET_CTL               0x0001180088000180ULL
0528 #define    CN6XXX_LMC0_RESET_CTL_DDR3RST_MASK  0x0000000000000001ULL
0529 
0530 #endif