1325618Ssbruno/* 2325618Ssbruno * BSD LICENSE 3325618Ssbruno * 4325618Ssbruno * Copyright(c) 2017 Cavium, Inc.. All rights reserved. 5325618Ssbruno * All rights reserved. 6325618Ssbruno * 7325618Ssbruno * Redistribution and use in source and binary forms, with or without 8325618Ssbruno * modification, are permitted provided that the following conditions 9325618Ssbruno * are met: 10325618Ssbruno * 11325618Ssbruno * * Redistributions of source code must retain the above copyright 12325618Ssbruno * notice, this list of conditions and the following disclaimer. 13325618Ssbruno * * Redistributions in binary form must reproduce the above copyright 14325618Ssbruno * notice, this list of conditions and the following disclaimer in 15325618Ssbruno * the documentation and/or other materials provided with the 16325618Ssbruno * distribution. 17325618Ssbruno * * Neither the name of Cavium, Inc. nor the names of its 18325618Ssbruno * contributors may be used to endorse or promote products derived 19325618Ssbruno * from this software without specific prior written permission. 20325618Ssbruno * 21325618Ssbruno * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22325618Ssbruno * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23325618Ssbruno * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24325618Ssbruno * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25325618Ssbruno * OWNER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26325618Ssbruno * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27325618Ssbruno * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28325618Ssbruno * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29325618Ssbruno * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30325618Ssbruno * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31325618Ssbruno * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32325618Ssbruno */ 33325618Ssbruno/*$FreeBSD: stable/11/sys/dev/liquidio/base/cn23xx_pf_regs.h 325618 2017-11-09 19:52:56Z sbruno $*/ 34325618Ssbruno 35325618Ssbruno/* \file cn23xx_pf_regs.h 36325618Ssbruno * \brief Host Driver: Register Address and Register Mask values for 37325618Ssbruno * CN23XX devices. 38325618Ssbruno */ 39325618Ssbruno 40325618Ssbruno#ifndef __CN23XX_PF_REGS_H__ 41325618Ssbruno#define __CN23XX_PF_REGS_H__ 42325618Ssbruno 43325618Ssbruno#define LIO_CN23XX_CFG_PCIE_DEVCTL 0x78 44325618Ssbruno#define LIO_CN23XX_CFG_PCIE_UNCORRECT_ERR_MASK 0x108 45325618Ssbruno#define LIO_CN23XX_CFG_PCIE_CORRECT_ERR_STATUS 0x110 46325618Ssbruno#define LIO_CN23XX_CFG_PCIE_DEVCTL_MASK 0x00040000 47325618Ssbruno 48325618Ssbruno#define LIO_CN23XX_PCIE_SRIOV_FDL 0x188 49325618Ssbruno#define LIO_CN23XX_PCIE_SRIOV_FDL_BIT_POS 0x10 50325618Ssbruno#define LIO_CN23XX_PCIE_SRIOV_FDL_MASK 0xFF 51325618Ssbruno 52325618Ssbruno/* ############## BAR0 Registers ################ */ 53325618Ssbruno 54325618Ssbruno#define LIO_CN23XX_SLI_CTL_PORT_START 0x286E0 55325618Ssbruno#define LIO_CN23XX_PORT_OFFSET 0x10 56325618Ssbruno 57325618Ssbruno#define LIO_CN23XX_SLI_CTL_PORT(p) \ 58325618Ssbruno (LIO_CN23XX_SLI_CTL_PORT_START + \ 59325618Ssbruno ((p) * LIO_CN23XX_PORT_OFFSET)) 60325618Ssbruno 61325618Ssbruno/* 2 scatch registers (64-bit) */ 62325618Ssbruno#define LIO_CN23XX_SLI_WINDOW_CTL 0x282E0 63325618Ssbruno#define LIO_CN23XX_SLI_SCRATCH1 0x283C0 64325618Ssbruno#define LIO_CN23XX_SLI_SCRATCH2 0x283D0 65325618Ssbruno#define LIO_CN23XX_SLI_WINDOW_CTL_DEFAULT 0x200000ULL 66325618Ssbruno 67325618Ssbruno/* 1 registers (64-bit) - SLI_CTL_STATUS */ 68325618Ssbruno#define LIO_CN23XX_SLI_CTL_STATUS 0x28570 69325618Ssbruno 70325618Ssbruno/* 71325618Ssbruno * SLI Packet Input Jabber Register (64 bit register) 72325618Ssbruno * <31:0> for Byte count for limiting sizes of packet sizes 73325618Ssbruno * that are allowed for sli packet inbound packets. 74325618Ssbruno * the default value is 0xFA00(=64000). 75325618Ssbruno */ 76325618Ssbruno#define LIO_CN23XX_SLI_PKT_IN_JABBER 0x29170 77325618Ssbruno 78325618Ssbruno#define LIO_CN23XX_SLI_WIN_WR_ADDR_LO 0x20000 79325618Ssbruno#define LIO_CN23XX_SLI_WIN_WR_ADDR64 LIO_CN23XX_SLI_WIN_WR_ADDR_LO 80325618Ssbruno 81325618Ssbruno#define LIO_CN23XX_SLI_WIN_RD_ADDR_LO 0x20010 82325618Ssbruno#define LIO_CN23XX_SLI_WIN_RD_ADDR_HI 0x20014 83325618Ssbruno#define LIO_CN23XX_SLI_WIN_RD_ADDR64 LIO_CN23XX_SLI_WIN_RD_ADDR_LO 84325618Ssbruno 85325618Ssbruno#define LIO_CN23XX_SLI_WIN_WR_DATA_LO 0x20020 86325618Ssbruno#define LIO_CN23XX_SLI_WIN_WR_DATA_HI 0x20024 87325618Ssbruno#define LIO_CN23XX_SLI_WIN_WR_DATA64 LIO_CN23XX_SLI_WIN_WR_DATA_LO 88325618Ssbruno 89325618Ssbruno#define LIO_CN23XX_SLI_WIN_RD_DATA_LO 0x20040 90325618Ssbruno#define LIO_CN23XX_SLI_WIN_RD_DATA_HI 0x20044 91325618Ssbruno#define LIO_CN23XX_SLI_WIN_RD_DATA64 LIO_CN23XX_SLI_WIN_RD_DATA_LO 92325618Ssbruno 93325618Ssbruno#define LIO_CN23XX_SLI_WIN_WR_MASK_REG 0x20030 94325618Ssbruno#define LIO_CN23XX_SLI_MAC_CREDIT_CNT 0x23D70 95325618Ssbruno 96325618Ssbruno/* 97325618Ssbruno * 4 registers (64-bit) for mapping IOQs to MACs(PEMs)- 98325618Ssbruno * SLI_PKT_MAC(0..3)_PF(0..1)_RINFO 99325618Ssbruno */ 100325618Ssbruno#define LIO_CN23XX_SLI_PKT_MAC_RINFO_START64 0x29030 101325618Ssbruno 102325618Ssbruno/*1 register (64-bit) to determine whether IOQs are in reset. */ 103325618Ssbruno#define LIO_CN23XX_SLI_PKT_IOQ_RING_RST 0x291E0 104325618Ssbruno 105325618Ssbruno/* Each Input Queue register is at a 16-byte Offset in BAR0 */ 106325618Ssbruno#define LIO_CN23XX_IQ_OFFSET 0x20000 107325618Ssbruno 108325618Ssbruno#define LIO_CN23XX_MAC_RINFO_OFFSET 0x20 109325618Ssbruno#define LIO_CN23XX_PF_RINFO_OFFSET 0x10 110325618Ssbruno 111325618Ssbruno#define LIO_CN23XX_SLI_PKT_MAC_RINFO64(mac, pf) \ 112325618Ssbruno (LIO_CN23XX_SLI_PKT_MAC_RINFO_START64 + \ 113325618Ssbruno ((mac) * LIO_CN23XX_MAC_RINFO_OFFSET) + \ 114325618Ssbruno ((pf) * LIO_CN23XX_PF_RINFO_OFFSET)) 115325618Ssbruno 116325618Ssbruno/* mask for total rings, setting TRS to base */ 117325618Ssbruno#define LIO_CN23XX_PKT_MAC_CTL_RINFO_TRS BIT_ULL(16) 118325618Ssbruno 119325618Ssbruno/* Starting bit of the TRS field in LIO_CN23XX_SLI_PKT_MAC_RINFO64 register */ 120325618Ssbruno#define LIO_CN23XX_PKT_MAC_CTL_RINFO_TRS_BIT_POS 16 121325618Ssbruno 122325618Ssbruno/*###################### REQUEST QUEUE #########################*/ 123325618Ssbruno 124325618Ssbruno/* 64 registers for Input Queue Instr Count - SLI_PKT_IN_DONE0_CNTS */ 125325618Ssbruno#define LIO_CN23XX_SLI_PKT_IN_DONE_CNTS_START64 0x10040 126325618Ssbruno 127325618Ssbruno/* 64 registers for Input Queues Start Addr - SLI_PKT0_INSTR_BADDR */ 128325618Ssbruno#define LIO_CN23XX_SLI_PKT_INSTR_BADDR_START64 0x10010 129325618Ssbruno 130325618Ssbruno/* 64 registers for Input Doorbell - SLI_PKT0_INSTR_BAOFF_DBELL */ 131325618Ssbruno#define LIO_CN23XX_SLI_PKT_INSTR_BADDR_DBELL_START 0x10020 132325618Ssbruno 133325618Ssbruno/* 64 registers for Input Queue size - SLI_PKT0_INSTR_FIFO_RSIZE */ 134325618Ssbruno#define LIO_CN23XX_SLI_PKT_INSTR_FIFO_RSIZE_START 0x10030 135325618Ssbruno 136325618Ssbruno/* 137325618Ssbruno * 64 registers (64-bit) - ES, RO, NS, Arbitration for Input Queue Data & 138325618Ssbruno * gather list fetches. SLI_PKT(0..63)_INPUT_CONTROL. 139325618Ssbruno */ 140325618Ssbruno#define LIO_CN23XX_SLI_PKT_INPUT_CONTROL_START64 0x10000 141325618Ssbruno 142325618Ssbruno/*------- Request Queue Macros ---------*/ 143325618Ssbruno#define LIO_CN23XX_SLI_IQ_PKT_CONTROL64(iq) \ 144325618Ssbruno (LIO_CN23XX_SLI_PKT_INPUT_CONTROL_START64 + \ 145325618Ssbruno ((iq) * LIO_CN23XX_IQ_OFFSET)) 146325618Ssbruno 147325618Ssbruno#define LIO_CN23XX_SLI_IQ_BASE_ADDR64(iq) \ 148325618Ssbruno (LIO_CN23XX_SLI_PKT_INSTR_BADDR_START64 + \ 149325618Ssbruno ((iq) * LIO_CN23XX_IQ_OFFSET)) 150325618Ssbruno 151325618Ssbruno#define LIO_CN23XX_SLI_IQ_SIZE(iq) \ 152325618Ssbruno (LIO_CN23XX_SLI_PKT_INSTR_FIFO_RSIZE_START + \ 153325618Ssbruno ((iq) * LIO_CN23XX_IQ_OFFSET)) 154325618Ssbruno 155325618Ssbruno#define LIO_CN23XX_SLI_IQ_DOORBELL(iq) \ 156325618Ssbruno (LIO_CN23XX_SLI_PKT_INSTR_BADDR_DBELL_START + \ 157325618Ssbruno ((iq) * LIO_CN23XX_IQ_OFFSET)) 158325618Ssbruno 159325618Ssbruno#define LIO_CN23XX_SLI_IQ_INSTR_COUNT64(iq) \ 160325618Ssbruno (LIO_CN23XX_SLI_PKT_IN_DONE_CNTS_START64 + \ 161325618Ssbruno ((iq) * LIO_CN23XX_IQ_OFFSET)) 162325618Ssbruno 163325618Ssbruno/*------------------ Masks ----------------*/ 164325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_VF_NUM BIT_ULL(32) 165325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_MAC_NUM BIT(29) 166325618Ssbruno/* 167325618Ssbruno * Number of instructions to be read in one MAC read request. 168325618Ssbruno * setting to Max value(4) 169325618Ssbruno */ 170325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_RDSIZE (3 << 25) 171325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_IS_64B BIT(24) 172325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_RST BIT(23) 173325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_QUIET BIT(28) 174325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_RING_ENB BIT(22) 175325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_DATA_ES_64B_SWAP BIT(6) 176325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_USE_CSR BIT(4) 177325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_GATHER_ES_64B_SWAP (2) 178325618Ssbruno 179325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_PF_NUM_POS (45) 180325618Ssbruno/* These bits[43:32] select the function number within the PF */ 181325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_MAC_NUM_POS (29) 182325618Ssbruno#define LIO_CN23XX_PKT_IN_DONE_WMARK_MASK (0xFFFFULL) 183325618Ssbruno#define LIO_CN23XX_PKT_IN_DONE_WMARK_BIT_POS (32) 184325618Ssbruno#define LIO_CN23XX_PKT_IN_DONE_CNT_MASK 0x00000000FFFFFFFFULL 185325618Ssbruno 186325618Ssbruno#if BYTE_ORDER == LITTLE_ENDIAN 187325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_MASK \ 188325618Ssbruno (LIO_CN23XX_PKT_INPUT_CTL_RDSIZE | \ 189325618Ssbruno LIO_CN23XX_PKT_INPUT_CTL_DATA_ES_64B_SWAP | \ 190325618Ssbruno LIO_CN23XX_PKT_INPUT_CTL_USE_CSR) 191325618Ssbruno#else /* BYTE_ORDER != LITTLE_ENDIAN */ 192325618Ssbruno#define LIO_CN23XX_PKT_INPUT_CTL_MASK \ 193325618Ssbruno (LIO_CN23XX_PKT_INPUT_CTL_RDSIZE | \ 194325618Ssbruno LIO_CN23XX_PKT_INPUT_CTL_DATA_ES_64B_SWAP | \ 195325618Ssbruno LIO_CN23XX_PKT_INPUT_CTL_USE_CSR | \ 196325618Ssbruno LIO_CN23XX_PKT_INPUT_CTL_GATHER_ES_64B_SWAP) 197325618Ssbruno#endif /* BYTE_ORDER == LITTLE_ENDIAN */ 198325618Ssbruno 199325618Ssbruno/*############################ OUTPUT QUEUE #########################*/ 200325618Ssbruno 201325618Ssbruno/* 64 registers for Output queue control - SLI_PKT(0..63)_OUTPUT_CONTROL */ 202325618Ssbruno#define LIO_CN23XX_SLI_PKT_OUTPUT_CONTROL_START 0x10050 203325618Ssbruno 204325618Ssbruno/* 64 registers for Output queue buffer and info size - SLI_PKT0_OUT_SIZE */ 205325618Ssbruno#define LIO_CN23XX_SLI_PKT_OUT_SIZE 0x10060 206325618Ssbruno 207325618Ssbruno/* 64 registers for Output Queue Start Addr - SLI_PKT0_SLIST_BADDR */ 208325618Ssbruno#define LIO_CN23XX_SLI_SLIST_BADDR_START64 0x10070 209325618Ssbruno 210325618Ssbruno/* 64 registers for Output Queue Packet Credits - SLI_PKT0_SLIST_BAOFF_DBELL */ 211325618Ssbruno#define LIO_CN23XX_SLI_PKT_SLIST_BAOFF_DBELL_START 0x10080 212325618Ssbruno 213325618Ssbruno/* 64 registers for Output Queue size - SLI_PKT0_SLIST_FIFO_RSIZE */ 214325618Ssbruno#define LIO_CN23XX_SLI_PKT_SLIST_FIFO_RSIZE_START 0x10090 215325618Ssbruno 216325618Ssbruno/* 64 registers for Output Queue Packet Count - SLI_PKT0_CNTS */ 217325618Ssbruno#define LIO_CN23XX_SLI_PKT_CNTS_START 0x100B0 218325618Ssbruno 219325618Ssbruno/* 64 registers for Output Queue INT Levels - SLI_PKT0_INT_LEVELS */ 220325618Ssbruno#define LIO_CN23XX_SLI_PKT_INT_LEVELS_START64 0x100A0 221325618Ssbruno 222325618Ssbruno/* Each Output Queue register is at a 16-byte Offset in BAR0 */ 223325618Ssbruno#define LIO_CN23XX_OQ_OFFSET 0x20000 224325618Ssbruno 225325618Ssbruno/* 1 (64-bit register) for Output Queue backpressure across all rings. */ 226325618Ssbruno#define LIO_CN23XX_SLI_OQ_WMARK 0x29180 227325618Ssbruno 228325618Ssbruno/* Global pkt control register */ 229325618Ssbruno#define LIO_CN23XX_SLI_GBL_CONTROL 0x29210 230325618Ssbruno 231325618Ssbruno/* Backpressure enable register for PF0 */ 232325618Ssbruno#define LIO_CN23XX_SLI_OUT_BP_EN_W1S 0x29260 233325618Ssbruno 234325618Ssbruno/* Backpressure enable register for PF1 */ 235325618Ssbruno#define LIO_CN23XX_SLI_OUT_BP_EN2_W1S 0x29270 236325618Ssbruno 237325618Ssbruno/*------- Output Queue Macros ---------*/ 238325618Ssbruno 239325618Ssbruno#define LIO_CN23XX_SLI_OQ_PKT_CONTROL(oq) \ 240325618Ssbruno (LIO_CN23XX_SLI_PKT_OUTPUT_CONTROL_START + \ 241325618Ssbruno ((oq) * LIO_CN23XX_OQ_OFFSET)) 242325618Ssbruno 243325618Ssbruno#define LIO_CN23XX_SLI_OQ_BASE_ADDR64(oq) \ 244325618Ssbruno (LIO_CN23XX_SLI_SLIST_BADDR_START64 + \ 245325618Ssbruno ((oq) * LIO_CN23XX_OQ_OFFSET)) 246325618Ssbruno 247325618Ssbruno#define LIO_CN23XX_SLI_OQ_SIZE(oq) \ 248325618Ssbruno (LIO_CN23XX_SLI_PKT_SLIST_FIFO_RSIZE_START + \ 249325618Ssbruno ((oq) * LIO_CN23XX_OQ_OFFSET)) 250325618Ssbruno 251325618Ssbruno#define LIO_CN23XX_SLI_OQ_BUFF_INFO_SIZE(oq) \ 252325618Ssbruno (LIO_CN23XX_SLI_PKT_OUT_SIZE + \ 253325618Ssbruno ((oq) * LIO_CN23XX_OQ_OFFSET)) 254325618Ssbruno 255325618Ssbruno#define LIO_CN23XX_SLI_OQ_PKTS_SENT(oq) \ 256325618Ssbruno (LIO_CN23XX_SLI_PKT_CNTS_START + \ 257325618Ssbruno ((oq) * LIO_CN23XX_OQ_OFFSET)) 258325618Ssbruno 259325618Ssbruno#define LIO_CN23XX_SLI_OQ_PKTS_CREDIT(oq) \ 260325618Ssbruno (LIO_CN23XX_SLI_PKT_SLIST_BAOFF_DBELL_START + \ 261325618Ssbruno ((oq) * LIO_CN23XX_OQ_OFFSET)) 262325618Ssbruno 263325618Ssbruno#define LIO_CN23XX_SLI_OQ_PKT_INT_LEVELS(oq) \ 264325618Ssbruno (LIO_CN23XX_SLI_PKT_INT_LEVELS_START64 + \ 265325618Ssbruno ((oq) * LIO_CN23XX_OQ_OFFSET)) 266325618Ssbruno 267325618Ssbruno/*------------------ Masks ----------------*/ 268325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_TENB BIT(13) 269325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_CENB BIT(12) 270325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_IPTR BIT(11) 271325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_ES BIT(9) 272325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_NSR BIT(8) 273325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_ROR BIT(7) 274325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_DPTR BIT(6) 275325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_BMODE BIT(5) 276325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_ES_P BIT(3) 277325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_NSR_P BIT(2) 278325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_ROR_P BIT(1) 279325618Ssbruno#define LIO_CN23XX_PKT_OUTPUT_CTL_RING_ENB BIT(0) 280325618Ssbruno 281325618Ssbruno/*######################## MSIX TABLE #########################*/ 282325618Ssbruno 283325618Ssbruno#define LIO_CN23XX_MSIX_TABLE_ADDR_START 0x0 284325618Ssbruno#define CN23XX_MSIX_TABLE_DATA_START 0x8 285325618Ssbruno#define CN23XX_MSIX_TABLE_SIZE 0x10 286325618Ssbruno 287325618Ssbruno#define CN23XX_MSIX_TABLE_ADDR(idx) \ 288325618Ssbruno (LIO_CN23XX_MSIX_TABLE_ADDR_START + \ 289325618Ssbruno ((idx) * LIO_CN23XX_MSIX_TABLE_SIZE)) 290325618Ssbruno 291325618Ssbruno#define CN23XX_MSIX_TABLE_DATA(idx) \ 292325618Ssbruno (LIO_CN23XX_MSIX_TABLE_DATA_START + \ 293325618Ssbruno ((idx) * LIO_CN23XX_MSIX_TABLE_SIZE)) 294325618Ssbruno 295325618Ssbruno/*######################## INTERRUPTS #########################*/ 296325618Ssbruno#define LIO_CN23XX_MAC_INT_OFFSET 0x20 297325618Ssbruno#define LIO_CN23XX_PF_INT_OFFSET 0x10 298325618Ssbruno 299325618Ssbruno/* 1 register (64-bit) for Interrupt Summary */ 300325618Ssbruno#define LIO_CN23XX_SLI_INT_SUM64 0x27000 301325618Ssbruno 302325618Ssbruno/* 4 registers (64-bit) for Interrupt Enable for each Port */ 303325618Ssbruno#define LIO_CN23XX_SLI_INT_ENB64 0x27080 304325618Ssbruno 305325618Ssbruno#define LIO_CN23XX_SLI_MAC_PF_INT_SUM64(mac, pf) \ 306325618Ssbruno (LIO_CN23XX_SLI_INT_SUM64 + \ 307325618Ssbruno ((mac) * LIO_CN23XX_MAC_INT_OFFSET) + \ 308325618Ssbruno ((pf) * LIO_CN23XX_PF_INT_OFFSET)) 309325618Ssbruno 310325618Ssbruno#define LIO_CN23XX_SLI_MAC_PF_INT_ENB64(mac, pf) \ 311325618Ssbruno (LIO_CN23XX_SLI_INT_ENB64 + \ 312325618Ssbruno ((mac) * LIO_CN23XX_MAC_INT_OFFSET) + \ 313325618Ssbruno ((pf) * LIO_CN23XX_PF_INT_OFFSET)) 314325618Ssbruno 315325618Ssbruno/* 1 register (64-bit) to indicate which Output Queue reached pkt threshold */ 316325618Ssbruno#define LIO_CN23XX_SLI_PKT_CNT_INT 0x29130 317325618Ssbruno 318325618Ssbruno/* 1 register (64-bit) to indicate which Output Queue reached time threshold */ 319325618Ssbruno#define LIO_CN23XX_SLI_PKT_TIME_INT 0x29140 320325618Ssbruno 321325618Ssbruno/*------------------ Interrupt Masks ----------------*/ 322325618Ssbruno 323325618Ssbruno#define LIO_CN23XX_INTR_PO_INT BIT_ULL(63) 324325618Ssbruno#define LIO_CN23XX_INTR_PI_INT BIT_ULL(62) 325325618Ssbruno#define LIO_CN23XX_INTR_RESEND BIT_ULL(60) 326325618Ssbruno 327325618Ssbruno#define LIO_CN23XX_INTR_CINT_ENB BIT_ULL(48) 328325618Ssbruno 329325618Ssbruno#define LIO_CN23XX_INTR_MIO_INT BIT(1) 330325618Ssbruno#define LIO_CN23XX_INTR_PKT_TIME BIT(5) 331325618Ssbruno#define LIO_CN23XX_INTR_M0UPB0_ERR BIT(8) 332325618Ssbruno#define LIO_CN23XX_INTR_M0UPWI_ERR BIT(9) 333325618Ssbruno#define LIO_CN23XX_INTR_M0UNB0_ERR BIT(10) 334325618Ssbruno#define LIO_CN23XX_INTR_M0UNWI_ERR BIT(11) 335325618Ssbruno 336325618Ssbruno#define LIO_CN23XX_INTR_DMA0_FORCE BIT_ULL(32) 337325618Ssbruno#define LIO_CN23XX_INTR_DMA1_FORCE BIT_ULL(33) 338325618Ssbruno 339325618Ssbruno#define LIO_CN23XX_INTR_DMA0_TIME BIT_ULL(36) 340325618Ssbruno#define LIO_CN23XX_INTR_DMA1_TIME BIT_ULL(37) 341325618Ssbruno 342325618Ssbruno#define LIO_CN23XX_INTR_DMAPF_ERR BIT_ULL(59) 343325618Ssbruno 344325618Ssbruno#define LIO_CN23XX_INTR_PKTPF_ERR BIT_ULL(61) 345325618Ssbruno#define LIO_CN23XX_INTR_PPPF_ERR BIT_ULL(63) 346325618Ssbruno 347325618Ssbruno#define LIO_CN23XX_INTR_DMA0_DATA (LIO_CN23XX_INTR_DMA0_TIME) 348325618Ssbruno#define LIO_CN23XX_INTR_DMA1_DATA (LIO_CN23XX_INTR_DMA1_TIME) 349325618Ssbruno 350325618Ssbruno#define LIO_CN23XX_INTR_DMA_DATA \ 351325618Ssbruno (LIO_CN23XX_INTR_DMA0_DATA | LIO_CN23XX_INTR_DMA1_DATA) 352325618Ssbruno 353325618Ssbruno/* By fault only TIME based */ 354325618Ssbruno#define LIO_CN23XX_INTR_PKT_DATA (LIO_CN23XX_INTR_PKT_TIME) 355325618Ssbruno 356325618Ssbruno/* Sum of interrupts for error events */ 357325618Ssbruno#define LIO_CN23XX_INTR_ERR \ 358325618Ssbruno (LIO_CN23XX_INTR_M0UPB0_ERR | \ 359325618Ssbruno LIO_CN23XX_INTR_M0UPWI_ERR | \ 360325618Ssbruno LIO_CN23XX_INTR_M0UNB0_ERR | \ 361325618Ssbruno LIO_CN23XX_INTR_M0UNWI_ERR | \ 362325618Ssbruno LIO_CN23XX_INTR_DMAPF_ERR | \ 363325618Ssbruno LIO_CN23XX_INTR_PKTPF_ERR | \ 364325618Ssbruno LIO_CN23XX_INTR_PPPF_ERR) 365325618Ssbruno 366325618Ssbruno/* Programmed Mask for Interrupt Sum */ 367325618Ssbruno#define LIO_CN23XX_INTR_MASK \ 368325618Ssbruno (LIO_CN23XX_INTR_DMA_DATA | \ 369325618Ssbruno LIO_CN23XX_INTR_DMA0_FORCE | \ 370325618Ssbruno LIO_CN23XX_INTR_DMA1_FORCE | \ 371325618Ssbruno LIO_CN23XX_INTR_MIO_INT | \ 372325618Ssbruno LIO_CN23XX_INTR_ERR) 373325618Ssbruno 374325618Ssbruno/* 4 Registers (64 - bit) */ 375325618Ssbruno#define LIO_CN23XX_SLI_S2M_PORT_CTL_START 0x23D80 376325618Ssbruno#define LIO_CN23XX_SLI_S2M_PORTX_CTL(port) \ 377325618Ssbruno (LIO_CN23XX_SLI_S2M_PORT_CTL_START + \ 378325618Ssbruno ((port) * 0x10)) 379325618Ssbruno 380325618Ssbruno#define LIO_CN23XX_SLI_MAC_NUMBER 0x20050 381325618Ssbruno 382325618Ssbruno/* 383325618Ssbruno * PEM(0..3)_BAR1_INDEX(0..15)address is defined as 384325618Ssbruno * addr = (0x00011800C0000100 |port <<24 |idx <<3 ) 385325618Ssbruno * Here, port is PEM(0..3) & idx is INDEX(0..15) 386325618Ssbruno */ 387325618Ssbruno#define LIO_CN23XX_PEM_BAR1_INDEX_START 0x00011800C0000100ULL 388325618Ssbruno#define LIO_CN23XX_PEM_OFFSET 24 389325618Ssbruno#define LIO_CN23XX_BAR1_INDEX_OFFSET 3 390325618Ssbruno 391325618Ssbruno#define LIO_CN23XX_PEM_BAR1_INDEX_REG(port, idx) \ 392325618Ssbruno (LIO_CN23XX_PEM_BAR1_INDEX_START + \ 393325618Ssbruno ((port) << LIO_CN23XX_PEM_OFFSET) + \ 394325618Ssbruno ((idx) << LIO_CN23XX_BAR1_INDEX_OFFSET)) 395325618Ssbruno 396325618Ssbruno/*############################ DPI #########################*/ 397325618Ssbruno/* 4 Registers (64-bit) */ 398325618Ssbruno#define LIO_CN23XX_DPI_SLI_PRT_CFG_START 0x0001df0000000900ULL 399325618Ssbruno#define LIO_CN23XX_DPI_SLI_PRTX_CFG(port) \ 400325618Ssbruno ((IO_CN23XX_DPI_SLI_PRT_CFG_START + \ 401325618Ssbruno ((port) * 0x8)) 402325618Ssbruno 403325618Ssbruno/*############################ RST #########################*/ 404325618Ssbruno 405325618Ssbruno#define LIO_CN23XX_RST_BOOT 0x0001180006001600ULL 406325618Ssbruno#define LIO_CN23XX_RST_SOFT_RST 0x0001180006001680ULL 407325618Ssbruno 408325618Ssbruno#define LIO_CN23XX_LMC0_RESET_CTL 0x0001180088000180ULL 409325618Ssbruno#define LIO_CN23XX_LMC0_RESET_CTL_DDR3RST_MASK 0x0000000000000001ULL 410325618Ssbruno 411325618Ssbruno#endif /* __CN23XX_PF_REGS_H__ */ 412