1233545Sjchandra/*- 2233545Sjchandra * Copyright (c) 2003-2012 Broadcom Corporation 3233545Sjchandra * All Rights Reserved 4233545Sjchandra * 5233545Sjchandra * Redistribution and use in source and binary forms, with or without 6233545Sjchandra * modification, are permitted provided that the following conditions 7233545Sjchandra * are met: 8233545Sjchandra * 9233545Sjchandra * 1. Redistributions of source code must retain the above copyright 10233545Sjchandra * notice, this list of conditions and the following disclaimer. 11233545Sjchandra * 2. Redistributions in binary form must reproduce the above copyright 12233545Sjchandra * notice, this list of conditions and the following disclaimer in 13233545Sjchandra * the documentation and/or other materials provided with the 14233545Sjchandra * distribution. 15279387Sjchandra * 16233545Sjchandra * THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR 17233545Sjchandra * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18233545Sjchandra * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19233545Sjchandra * ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE 20233545Sjchandra * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21233545Sjchandra * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22233545Sjchandra * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23233545Sjchandra * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24233545Sjchandra * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25233545Sjchandra * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26233545Sjchandra * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27233545Sjchandra * 28233545Sjchandra * $FreeBSD$ 29233545Sjchandra */ 30233545Sjchandra 31233545Sjchandra#ifndef __NLM_NAE_H__ 32233545Sjchandra#define __NLM_NAE_H__ 33233545Sjchandra 34233545Sjchandra/** 35233545Sjchandra* @file_name nae.h 36233545Sjchandra* @author Netlogic Microsystems 37233545Sjchandra* @brief Basic definitions of XLP Networt Accelerator Engine 38233545Sjchandra*/ 39233545Sjchandra 40233545Sjchandra/* NAE specific registers */ 41233545Sjchandra#define NAE_REG(blk, intf, reg) (((blk) << 11) | ((intf) << 7) | (reg)) 42233545Sjchandra 43233545Sjchandra/* ingress path registers */ 44233545Sjchandra#define NAE_RX_CONFIG NAE_REG(7, 0, 0x10) 45233545Sjchandra#define NAE_RX_IF_BASE_CONFIG0 NAE_REG(7, 0, 0x12) 46233545Sjchandra#define NAE_RX_IF_BASE_CONFIG1 NAE_REG(7, 0, 0x13) 47233545Sjchandra#define NAE_RX_IF_BASE_CONFIG2 NAE_REG(7, 0, 0x14) 48233545Sjchandra#define NAE_RX_IF_BASE_CONFIG3 NAE_REG(7, 0, 0x15) 49233545Sjchandra#define NAE_RX_IF_BASE_CONFIG4 NAE_REG(7, 0, 0x16) 50233545Sjchandra#define NAE_RX_IF_BASE_CONFIG5 NAE_REG(7, 0, 0x17) 51233545Sjchandra#define NAE_RX_IF_BASE_CONFIG6 NAE_REG(7, 0, 0x18) 52233545Sjchandra#define NAE_RX_IF_BASE_CONFIG7 NAE_REG(7, 0, 0x19) 53233545Sjchandra#define NAE_RX_IF_BASE_CONFIG8 NAE_REG(7, 0, 0x1a) 54233545Sjchandra#define NAE_RX_IF_BASE_CONFIG9 NAE_REG(7, 0, 0x1b) 55233545Sjchandra#define NAE_RX_IF_VEC_VALID NAE_REG(7, 0, 0x1c) 56233545Sjchandra#define NAE_RX_IF_SLOT_CAL NAE_REG(7, 0, 0x1d) 57233545Sjchandra#define NAE_PARSER_CONFIG NAE_REG(7, 0, 0x1e) 58233545Sjchandra#define NAE_PARSER_SEQ_FIFO_CFG NAE_REG(7, 0, 0x1f) 59233545Sjchandra#define NAE_FREE_IN_FIFO_CFG NAE_REG(7, 0, 0x20) 60233545Sjchandra#define NAE_RXBUF_BASE_DPTH_ADDR NAE_REG(7, 0, 0x21) 61233545Sjchandra#define NAE_RXBUF_BASE_DPTH NAE_REG(7, 0, 0x22) 62233545Sjchandra#define NAE_RX_UCORE_CFG NAE_REG(7, 0, 0x23) 63233545Sjchandra#define NAE_RX_UCORE_CAM_MASK0 NAE_REG(7, 0, 0x24) 64233545Sjchandra#define NAE_RX_UCORE_CAM_MASK1 NAE_REG(7, 0, 0x25) 65233545Sjchandra#define NAE_RX_UCORE_CAM_MASK2 NAE_REG(7, 0, 0x26) 66233545Sjchandra#define NAE_RX_UCORE_CAM_MASK3 NAE_REG(7, 0, 0x27) 67233545Sjchandra#define NAE_FREEIN_FIFO_UNIQ_SZ_CFG NAE_REG(7, 0, 0x28) 68233545Sjchandra#define NAE_RX_CRC_POLY0_CFG NAE_REG(7, 0, 0x2a) 69233545Sjchandra#define NAE_RX_CRC_POLY1_CFG NAE_REG(7, 0, 0x2b) 70233545Sjchandra#define NAE_FREE_SPILL0_MEM_CFG NAE_REG(7, 0, 0x2c) 71233545Sjchandra#define NAE_FREE_SPILL1_MEM_CFG NAE_REG(7, 0, 0x2d) 72233545Sjchandra#define NAE_FREEFIFO_THRESH_CFG NAE_REG(7, 0, 0x2e) 73233545Sjchandra#define NAE_FLOW_CRC16_POLY_CFG NAE_REG(7, 0, 0x2f) 74233545Sjchandra#define NAE_EGR_NIOR_CAL_LEN_REG NAE_REG(7, 0, 0x4e) 75233545Sjchandra#define NAE_EGR_NIOR_CRDT_CAL_PROG NAE_REG(7, 0, 0x52) 76233545Sjchandra#define NAE_TEST NAE_REG(7, 0, 0x5f) 77233545Sjchandra#define NAE_BIU_TIMEOUT_CFG NAE_REG(7, 0, 0x60) 78233545Sjchandra#define NAE_BIU_CFG NAE_REG(7, 0, 0x61) 79233545Sjchandra#define NAE_RX_FREE_FIFO_POP NAE_REG(7, 0, 0x62) 80233545Sjchandra#define NAE_RX_DSBL_ECC NAE_REG(7, 0, 0x63) 81233545Sjchandra#define NAE_FLOW_BASEMASK_CFG NAE_REG(7, 0, 0x80) 82233545Sjchandra#define NAE_POE_CLASS_SETUP_CFG NAE_REG(7, 0, 0x81) 83233545Sjchandra#define NAE_UCORE_IFACEMASK_CFG NAE_REG(7, 0, 0x82) 84233545Sjchandra#define NAE_RXBUF_XOFFON_THRESH NAE_REG(7, 0, 0x83) 85233545Sjchandra#define NAE_FLOW_TABLE1_CFG NAE_REG(7, 0, 0x84) 86233545Sjchandra#define NAE_FLOW_TABLE2_CFG NAE_REG(7, 0, 0x85) 87233545Sjchandra#define NAE_FLOW_TABLE3_CFG NAE_REG(7, 0, 0x86) 88233545Sjchandra#define NAE_RX_FREE_FIFO_THRESH NAE_REG(7, 0, 0x87) 89233545Sjchandra#define NAE_RX_PARSER_UNCLA NAE_REG(7, 0, 0x88) 90233545Sjchandra#define NAE_RX_BUF_INTR_THRESH NAE_REG(7, 0, 0x89) 91233545Sjchandra#define NAE_IFACE_FIFO_CFG NAE_REG(7, 0, 0x8a) 92233545Sjchandra#define NAE_PARSER_SEQ_FIFO_THRESH_CFG NAE_REG(7, 0, 0x8b) 93233545Sjchandra#define NAE_RX_ERRINJ_CTRL0 NAE_REG(7, 0, 0x8c) 94233545Sjchandra#define NAE_RX_ERRINJ_CTRL1 NAE_REG(7, 0, 0x8d) 95233545Sjchandra#define NAE_RX_ERR_LATCH0 NAE_REG(7, 0, 0x8e) 96233545Sjchandra#define NAE_RX_ERR_LATCH1 NAE_REG(7, 0, 0x8f) 97233545Sjchandra#define NAE_RX_PERF_CTR_CFG NAE_REG(7, 0, 0xa0) 98233545Sjchandra#define NAE_RX_PERF_CTR_VAL NAE_REG(7, 0, 0xa1) 99233545Sjchandra 100233545Sjchandra/* NAE hardware parser registers */ 101233545Sjchandra#define NAE_L2_TYPE_PORT0 NAE_REG(7, 0, 0x210) 102233545Sjchandra#define NAE_L2_TYPE_PORT1 NAE_REG(7, 0, 0x211) 103233545Sjchandra#define NAE_L2_TYPE_PORT2 NAE_REG(7, 0, 0x212) 104233545Sjchandra#define NAE_L2_TYPE_PORT3 NAE_REG(7, 0, 0x213) 105233545Sjchandra#define NAE_L2_TYPE_PORT4 NAE_REG(7, 0, 0x214) 106233545Sjchandra#define NAE_L2_TYPE_PORT5 NAE_REG(7, 0, 0x215) 107233545Sjchandra#define NAE_L2_TYPE_PORT6 NAE_REG(7, 0, 0x216) 108233545Sjchandra#define NAE_L2_TYPE_PORT7 NAE_REG(7, 0, 0x217) 109233545Sjchandra#define NAE_L2_TYPE_PORT8 NAE_REG(7, 0, 0x218) 110233545Sjchandra#define NAE_L2_TYPE_PORT9 NAE_REG(7, 0, 0x219) 111233545Sjchandra#define NAE_L2_TYPE_PORT10 NAE_REG(7, 0, 0x21a) 112233545Sjchandra#define NAE_L2_TYPE_PORT11 NAE_REG(7, 0, 0x21b) 113233545Sjchandra#define NAE_L2_TYPE_PORT12 NAE_REG(7, 0, 0x21c) 114233545Sjchandra#define NAE_L2_TYPE_PORT13 NAE_REG(7, 0, 0x21d) 115233545Sjchandra#define NAE_L2_TYPE_PORT14 NAE_REG(7, 0, 0x21e) 116233545Sjchandra#define NAE_L2_TYPE_PORT15 NAE_REG(7, 0, 0x21f) 117233545Sjchandra#define NAE_L2_TYPE_PORT16 NAE_REG(7, 0, 0x220) 118233545Sjchandra#define NAE_L2_TYPE_PORT17 NAE_REG(7, 0, 0x221) 119233545Sjchandra#define NAE_L2_TYPE_PORT18 NAE_REG(7, 0, 0x222) 120233545Sjchandra#define NAE_L2_TYPE_PORT19 NAE_REG(7, 0, 0x223) 121233545Sjchandra#define NAE_L3_CTABLE_MASK0 NAE_REG(7, 0, 0x22c) 122233545Sjchandra#define NAE_L3_CTABLE_MASK1 NAE_REG(7, 0, 0x22d) 123233545Sjchandra#define NAE_L3_CTABLE_MASK2 NAE_REG(7, 0, 0x22e) 124233545Sjchandra#define NAE_L3_CTABLE_MASK3 NAE_REG(7, 0, 0x22f) 125233545Sjchandra#define NAE_L3CTABLE0 NAE_REG(7, 0, 0x230) 126233545Sjchandra#define NAE_L3CTABLE1 NAE_REG(7, 0, 0x231) 127233545Sjchandra#define NAE_L3CTABLE2 NAE_REG(7, 0, 0x232) 128233545Sjchandra#define NAE_L3CTABLE3 NAE_REG(7, 0, 0x233) 129233545Sjchandra#define NAE_L3CTABLE4 NAE_REG(7, 0, 0x234) 130233545Sjchandra#define NAE_L3CTABLE5 NAE_REG(7, 0, 0x235) 131233545Sjchandra#define NAE_L3CTABLE6 NAE_REG(7, 0, 0x236) 132233545Sjchandra#define NAE_L3CTABLE7 NAE_REG(7, 0, 0x237) 133233545Sjchandra#define NAE_L3CTABLE8 NAE_REG(7, 0, 0x238) 134233545Sjchandra#define NAE_L3CTABLE9 NAE_REG(7, 0, 0x239) 135233545Sjchandra#define NAE_L3CTABLE10 NAE_REG(7, 0, 0x23a) 136233545Sjchandra#define NAE_L3CTABLE11 NAE_REG(7, 0, 0x23b) 137233545Sjchandra#define NAE_L3CTABLE12 NAE_REG(7, 0, 0x23c) 138233545Sjchandra#define NAE_L3CTABLE13 NAE_REG(7, 0, 0x23d) 139233545Sjchandra#define NAE_L3CTABLE14 NAE_REG(7, 0, 0x23e) 140233545Sjchandra#define NAE_L3CTABLE15 NAE_REG(7, 0, 0x23f) 141233545Sjchandra#define NAE_L4CTABLE0 NAE_REG(7, 0, 0x250) 142233545Sjchandra#define NAE_L4CTABLE1 NAE_REG(7, 0, 0x251) 143233545Sjchandra#define NAE_L4CTABLE2 NAE_REG(7, 0, 0x252) 144233545Sjchandra#define NAE_L4CTABLE3 NAE_REG(7, 0, 0x253) 145233545Sjchandra#define NAE_L4CTABLE4 NAE_REG(7, 0, 0x254) 146233545Sjchandra#define NAE_L4CTABLE5 NAE_REG(7, 0, 0x255) 147233545Sjchandra#define NAE_L4CTABLE6 NAE_REG(7, 0, 0x256) 148233545Sjchandra#define NAE_L4CTABLE7 NAE_REG(7, 0, 0x257) 149233545Sjchandra#define NAE_IPV6_EXT_HEADER0 NAE_REG(7, 0, 0x260) 150233545Sjchandra#define NAE_IPV6_EXT_HEADER1 NAE_REG(7, 0, 0x261) 151233545Sjchandra#define NAE_VLAN_TYPES01 NAE_REG(7, 0, 0x262) 152233545Sjchandra#define NAE_VLAN_TYPES23 NAE_REG(7, 0, 0x263) 153233545Sjchandra 154233545Sjchandra/* NAE Egress path registers */ 155233545Sjchandra#define NAE_TX_CONFIG NAE_REG(7, 0, 0x11) 156233545Sjchandra#define NAE_DMA_TX_CREDIT_TH NAE_REG(7, 0, 0x29) 157233545Sjchandra#define NAE_STG1_STG2CRDT_CMD NAE_REG(7, 0, 0x30) 158233545Sjchandra#define NAE_STG2_EHCRDT_CMD NAE_REG(7, 0, 0x32) 159233545Sjchandra#define NAE_EH_FREECRDT_CMD NAE_REG(7, 0, 0x34) 160233545Sjchandra#define NAE_STG2_STRCRDT_CMD NAE_REG(7, 0, 0x36) 161233545Sjchandra#define NAE_TXFIFO_IFACEMAP_CMD NAE_REG(7, 0, 0x38) 162233545Sjchandra#define NAE_VFBID_DESTMAP_CMD NAE_REG(7, 0, 0x3a) 163233545Sjchandra#define NAE_STG1_PMEM_PROG NAE_REG(7, 0, 0x3c) 164233545Sjchandra#define NAE_STG2_PMEM_PROG NAE_REG(7, 0, 0x3e) 165233545Sjchandra#define NAE_EH_PMEM_PROG NAE_REG(7, 0, 0x40) 166233545Sjchandra#define NAE_FREE_PMEM_PROG NAE_REG(7, 0, 0x42) 167233545Sjchandra#define NAE_TX_DDR_ACTVLIST_CMD NAE_REG(7, 0, 0x44) 168233545Sjchandra#define NAE_TX_IF_BURSTMAX_CMD NAE_REG(7, 0, 0x46) 169233545Sjchandra#define NAE_TX_IF_ENABLE_CMD NAE_REG(7, 0, 0x48) 170233545Sjchandra#define NAE_TX_PKTLEN_PMEM_CMD NAE_REG(7, 0, 0x4a) 171233545Sjchandra#define NAE_TX_SCHED_MAP_CMD0 NAE_REG(7, 0, 0x4c) 172233545Sjchandra#define NAE_TX_SCHED_MAP_CMD1 NAE_REG(7, 0, 0x4d) 173233545Sjchandra#define NAE_TX_PKT_PMEM_CMD0 NAE_REG(7, 0, 0x50) 174233545Sjchandra#define NAE_TX_PKT_PMEM_CMD1 NAE_REG(7, 0, 0x51) 175233545Sjchandra#define NAE_TX_SCHED_CTRL NAE_REG(7, 0, 0x53) 176233545Sjchandra#define NAE_TX_CRC_POLY0 NAE_REG(7, 0, 0x54) 177233545Sjchandra#define NAE_TX_CRC_POLY1 NAE_REG(7, 0, 0x55) 178233545Sjchandra#define NAE_TX_CRC_POLY2 NAE_REG(7, 0, 0x56) 179233545Sjchandra#define NAE_TX_CRC_POLY3 NAE_REG(7, 0, 0x57) 180233545Sjchandra#define NAE_STR_PMEM_CMD NAE_REG(7, 0, 0x58) 181233545Sjchandra#define NAE_TX_IORCRDT_INIT NAE_REG(7, 0, 0x59) 182233545Sjchandra#define NAE_TX_DSBL_ECC NAE_REG(7, 0, 0x5a) 183233545Sjchandra#define NAE_TX_IORCRDT_IGNORE NAE_REG(7, 0, 0x5b) 184233545Sjchandra#define NAE_IF0_1588_TMSTMP_HI NAE_REG(7, 0, 0x300) 185233545Sjchandra#define NAE_IF1_1588_TMSTMP_HI NAE_REG(7, 0, 0x302) 186233545Sjchandra#define NAE_IF2_1588_TMSTMP_HI NAE_REG(7, 0, 0x304) 187233545Sjchandra#define NAE_IF3_1588_TMSTMP_HI NAE_REG(7, 0, 0x306) 188233545Sjchandra#define NAE_IF4_1588_TMSTMP_HI NAE_REG(7, 0, 0x308) 189233545Sjchandra#define NAE_IF5_1588_TMSTMP_HI NAE_REG(7, 0, 0x30a) 190233545Sjchandra#define NAE_IF6_1588_TMSTMP_HI NAE_REG(7, 0, 0x30c) 191233545Sjchandra#define NAE_IF7_1588_TMSTMP_HI NAE_REG(7, 0, 0x30e) 192233545Sjchandra#define NAE_IF8_1588_TMSTMP_HI NAE_REG(7, 0, 0x310) 193233545Sjchandra#define NAE_IF9_1588_TMSTMP_HI NAE_REG(7, 0, 0x312) 194233545Sjchandra#define NAE_IF10_1588_TMSTMP_HI NAE_REG(7, 0, 0x314) 195233545Sjchandra#define NAE_IF11_1588_TMSTMP_HI NAE_REG(7, 0, 0x316) 196233545Sjchandra#define NAE_IF12_1588_TMSTMP_HI NAE_REG(7, 0, 0x318) 197233545Sjchandra#define NAE_IF13_1588_TMSTMP_HI NAE_REG(7, 0, 0x31a) 198233545Sjchandra#define NAE_IF14_1588_TMSTMP_HI NAE_REG(7, 0, 0x31c) 199233545Sjchandra#define NAE_IF15_1588_TMSTMP_HI NAE_REG(7, 0, 0x31e) 200233545Sjchandra#define NAE_IF16_1588_TMSTMP_HI NAE_REG(7, 0, 0x320) 201233545Sjchandra#define NAE_IF17_1588_TMSTMP_HI NAE_REG(7, 0, 0x322) 202233545Sjchandra#define NAE_IF18_1588_TMSTMP_HI NAE_REG(7, 0, 0x324) 203233545Sjchandra#define NAE_IF19_1588_TMSTMP_HI NAE_REG(7, 0, 0x326) 204233545Sjchandra#define NAE_IF0_1588_TMSTMP_LO NAE_REG(7, 0, 0x301) 205233545Sjchandra#define NAE_IF1_1588_TMSTMP_LO NAE_REG(7, 0, 0x303) 206233545Sjchandra#define NAE_IF2_1588_TMSTMP_LO NAE_REG(7, 0, 0x305) 207233545Sjchandra#define NAE_IF3_1588_TMSTMP_LO NAE_REG(7, 0, 0x307) 208233545Sjchandra#define NAE_IF4_1588_TMSTMP_LO NAE_REG(7, 0, 0x309) 209233545Sjchandra#define NAE_IF5_1588_TMSTMP_LO NAE_REG(7, 0, 0x30b) 210233545Sjchandra#define NAE_IF6_1588_TMSTMP_LO NAE_REG(7, 0, 0x30d) 211233545Sjchandra#define NAE_IF7_1588_TMSTMP_LO NAE_REG(7, 0, 0x30f) 212233545Sjchandra#define NAE_IF8_1588_TMSTMP_LO NAE_REG(7, 0, 0x311) 213233545Sjchandra#define NAE_IF9_1588_TMSTMP_LO NAE_REG(7, 0, 0x313) 214233545Sjchandra#define NAE_IF10_1588_TMSTMP_LO NAE_REG(7, 0, 0x315) 215233545Sjchandra#define NAE_IF11_1588_TMSTMP_LO NAE_REG(7, 0, 0x317) 216233545Sjchandra#define NAE_IF12_1588_TMSTMP_LO NAE_REG(7, 0, 0x319) 217233545Sjchandra#define NAE_IF13_1588_TMSTMP_LO NAE_REG(7, 0, 0x31b) 218233545Sjchandra#define NAE_IF14_1588_TMSTMP_LO NAE_REG(7, 0, 0x31d) 219233545Sjchandra#define NAE_IF15_1588_TMSTMP_LO NAE_REG(7, 0, 0x31f) 220233545Sjchandra#define NAE_IF16_1588_TMSTMP_LO NAE_REG(7, 0, 0x321) 221233545Sjchandra#define NAE_IF17_1588_TMSTMP_LO NAE_REG(7, 0, 0x323) 222233545Sjchandra#define NAE_IF18_1588_TMSTMP_LO NAE_REG(7, 0, 0x325) 223233545Sjchandra#define NAE_IF19_1588_TMSTMP_LO NAE_REG(7, 0, 0x327) 224233545Sjchandra#define NAE_TX_EL0 NAE_REG(7, 0, 0x328) 225233545Sjchandra#define NAE_TX_EL1 NAE_REG(7, 0, 0x329) 226233545Sjchandra#define NAE_EIC0 NAE_REG(7, 0, 0x32a) 227233545Sjchandra#define NAE_EIC1 NAE_REG(7, 0, 0x32b) 228233545Sjchandra#define NAE_STG1_STG2CRDT_STATUS NAE_REG(7, 0, 0x32c) 229233545Sjchandra#define NAE_STG2_EHCRDT_STATUS NAE_REG(7, 0, 0x32d) 230233545Sjchandra#define NAE_STG2_FREECRDT_STATUS NAE_REG(7, 0, 0x32e) 231233545Sjchandra#define NAE_STG2_STRCRDT_STATUS NAE_REG(7, 0, 0x32f) 232233545Sjchandra#define NAE_TX_PERF_CNTR_INTR_STATUS NAE_REG(7, 0, 0x330) 233233545Sjchandra#define NAE_TX_PERF_CNTR_ROLL_STATUS NAE_REG(7, 0, 0x331) 234233545Sjchandra#define NAE_TX_PERF_CNTR0 NAE_REG(7, 0, 0x332) 235233545Sjchandra#define NAE_TX_PERF_CNTR1 NAE_REG(7, 0, 0x334) 236233545Sjchandra#define NAE_TX_PERF_CNTR2 NAE_REG(7, 0, 0x336) 237233545Sjchandra#define NAE_TX_PERF_CNTR3 NAE_REG(7, 0, 0x338) 238233545Sjchandra#define NAE_TX_PERF_CNTR4 NAE_REG(7, 0, 0x33a) 239233545Sjchandra#define NAE_TX_PERF_CNTR0_CTL NAE_REG(7, 0, 0x333) 240233545Sjchandra#define NAE_TX_PERF_CNTR1_CTL NAE_REG(7, 0, 0x335) 241233545Sjchandra#define NAE_TX_PERF_CNTR2_CTL NAE_REG(7, 0, 0x337) 242233545Sjchandra#define NAE_TX_PERF_CNTR3_CTL NAE_REG(7, 0, 0x339) 243233545Sjchandra#define NAE_TX_PERF_CNTR4_CTL NAE_REG(7, 0, 0x33b) 244233545Sjchandra#define NAE_VFBID_DESTMAP_STATUS NAE_REG(7, 0, 0x380) 245233545Sjchandra#define NAE_STG2_PMEM_STATUS NAE_REG(7, 0, 0x381) 246233545Sjchandra#define NAE_EH_PMEM_STATUS NAE_REG(7, 0, 0x382) 247233545Sjchandra#define NAE_FREE_PMEM_STATUS NAE_REG(7, 0, 0x383) 248233545Sjchandra#define NAE_TX_DDR_ACTVLIST_STATUS NAE_REG(7, 0, 0x384) 249233545Sjchandra#define NAE_TX_IF_BURSTMAX_STATUS NAE_REG(7, 0, 0x385) 250233545Sjchandra#define NAE_TX_PKTLEN_PMEM_STATUS NAE_REG(7, 0, 0x386) 251233545Sjchandra#define NAE_TX_SCHED_MAP_STATUS0 NAE_REG(7, 0, 0x387) 252233545Sjchandra#define NAE_TX_SCHED_MAP_STATUS1 NAE_REG(7, 0, 0x388) 253233545Sjchandra#define NAE_TX_PKT_PMEM_STATUS NAE_REG(7, 0, 0x389) 254233545Sjchandra#define NAE_STR_PMEM_STATUS NAE_REG(7, 0, 0x38a) 255233545Sjchandra 256233545Sjchandra/* Network interface interrupt registers */ 257233545Sjchandra#define NAE_NET_IF0_INTR_STAT NAE_REG(7, 0, 0x280) 258233545Sjchandra#define NAE_NET_IF1_INTR_STAT NAE_REG(7, 0, 0x282) 259233545Sjchandra#define NAE_NET_IF2_INTR_STAT NAE_REG(7, 0, 0x284) 260233545Sjchandra#define NAE_NET_IF3_INTR_STAT NAE_REG(7, 0, 0x286) 261233545Sjchandra#define NAE_NET_IF4_INTR_STAT NAE_REG(7, 0, 0x288) 262233545Sjchandra#define NAE_NET_IF5_INTR_STAT NAE_REG(7, 0, 0x28a) 263233545Sjchandra#define NAE_NET_IF6_INTR_STAT NAE_REG(7, 0, 0x28c) 264233545Sjchandra#define NAE_NET_IF7_INTR_STAT NAE_REG(7, 0, 0x28e) 265233545Sjchandra#define NAE_NET_IF8_INTR_STAT NAE_REG(7, 0, 0x290) 266233545Sjchandra#define NAE_NET_IF9_INTR_STAT NAE_REG(7, 0, 0x292) 267233545Sjchandra#define NAE_NET_IF10_INTR_STAT NAE_REG(7, 0, 0x294) 268233545Sjchandra#define NAE_NET_IF11_INTR_STAT NAE_REG(7, 0, 0x296) 269233545Sjchandra#define NAE_NET_IF12_INTR_STAT NAE_REG(7, 0, 0x298) 270233545Sjchandra#define NAE_NET_IF13_INTR_STAT NAE_REG(7, 0, 0x29a) 271233545Sjchandra#define NAE_NET_IF14_INTR_STAT NAE_REG(7, 0, 0x29c) 272233545Sjchandra#define NAE_NET_IF15_INTR_STAT NAE_REG(7, 0, 0x29e) 273233545Sjchandra#define NAE_NET_IF16_INTR_STAT NAE_REG(7, 0, 0x2a0) 274233545Sjchandra#define NAE_NET_IF17_INTR_STAT NAE_REG(7, 0, 0x2a2) 275233545Sjchandra#define NAE_NET_IF18_INTR_STAT NAE_REG(7, 0, 0x2a4) 276233545Sjchandra#define NAE_NET_IF19_INTR_STAT NAE_REG(7, 0, 0x2a6) 277233545Sjchandra#define NAE_NET_IF0_INTR_MASK NAE_REG(7, 0, 0x281) 278233545Sjchandra#define NAE_NET_IF1_INTR_MASK NAE_REG(7, 0, 0x283) 279233545Sjchandra#define NAE_NET_IF2_INTR_MASK NAE_REG(7, 0, 0x285) 280233545Sjchandra#define NAE_NET_IF3_INTR_MASK NAE_REG(7, 0, 0x287) 281233545Sjchandra#define NAE_NET_IF4_INTR_MASK NAE_REG(7, 0, 0x289) 282233545Sjchandra#define NAE_NET_IF5_INTR_MASK NAE_REG(7, 0, 0x28b) 283233545Sjchandra#define NAE_NET_IF6_INTR_MASK NAE_REG(7, 0, 0x28d) 284233545Sjchandra#define NAE_NET_IF7_INTR_MASK NAE_REG(7, 0, 0x28f) 285233545Sjchandra#define NAE_NET_IF8_INTR_MASK NAE_REG(7, 0, 0x291) 286233545Sjchandra#define NAE_NET_IF9_INTR_MASK NAE_REG(7, 0, 0x293) 287233545Sjchandra#define NAE_NET_IF10_INTR_MASK NAE_REG(7, 0, 0x295) 288233545Sjchandra#define NAE_NET_IF11_INTR_MASK NAE_REG(7, 0, 0x297) 289233545Sjchandra#define NAE_NET_IF12_INTR_MASK NAE_REG(7, 0, 0x299) 290233545Sjchandra#define NAE_NET_IF13_INTR_MASK NAE_REG(7, 0, 0x29b) 291233545Sjchandra#define NAE_NET_IF14_INTR_MASK NAE_REG(7, 0, 0x29d) 292233545Sjchandra#define NAE_NET_IF15_INTR_MASK NAE_REG(7, 0, 0x29f) 293233545Sjchandra#define NAE_NET_IF16_INTR_MASK NAE_REG(7, 0, 0x2a1) 294233545Sjchandra#define NAE_NET_IF17_INTR_MASK NAE_REG(7, 0, 0x2a3) 295233545Sjchandra#define NAE_NET_IF18_INTR_MASK NAE_REG(7, 0, 0x2a5) 296233545Sjchandra#define NAE_NET_IF19_INTR_MASK NAE_REG(7, 0, 0x2a7) 297233545Sjchandra#define NAE_COMMON0_INTR_STAT NAE_REG(7, 0, 0x2a8) 298233545Sjchandra#define NAE_COMMON0_INTR_MASK NAE_REG(7, 0, 0x2a9) 299233545Sjchandra#define NAE_COMMON1_INTR_STAT NAE_REG(7, 0, 0x2aa) 300233545Sjchandra#define NAE_COMMON1_INTR_MASK NAE_REG(7, 0, 0x2ab) 301233545Sjchandra 302233545Sjchandra/* Network Interface Low-block Registers */ 303233545Sjchandra#define NAE_PHY_LANE0_STATUS(block) NAE_REG(block, 0xe, 0) 304233545Sjchandra#define NAE_PHY_LANE1_STATUS(block) NAE_REG(block, 0xe, 1) 305233545Sjchandra#define NAE_PHY_LANE2_STATUS(block) NAE_REG(block, 0xe, 2) 306233545Sjchandra#define NAE_PHY_LANE3_STATUS(block) NAE_REG(block, 0xe, 3) 307233545Sjchandra#define NAE_PHY_LANE0_CTRL(block) NAE_REG(block, 0xe, 4) 308233545Sjchandra#define NAE_PHY_LANE1_CTRL(block) NAE_REG(block, 0xe, 5) 309233545Sjchandra#define NAE_PHY_LANE2_CTRL(block) NAE_REG(block, 0xe, 6) 310233545Sjchandra#define NAE_PHY_LANE3_CTRL(block) NAE_REG(block, 0xe, 7) 311233545Sjchandra 312233545Sjchandra/* Network interface Top-block registers */ 313233545Sjchandra#define NAE_LANE_CFG_CPLX_0_1 NAE_REG(7, 0, 0x780) 314233545Sjchandra#define NAE_LANE_CFG_CPLX_2_3 NAE_REG(7, 0, 0x781) 315233545Sjchandra#define NAE_LANE_CFG_CPLX_4 NAE_REG(7, 0, 0x782) 316233545Sjchandra#define NAE_LANE_CFG_SOFTRESET NAE_REG(7, 0, 0x783) 317233545Sjchandra#define NAE_1588_PTP_OFFSET_HI NAE_REG(7, 0, 0x784) 318233545Sjchandra#define NAE_1588_PTP_OFFSET_LO NAE_REG(7, 0, 0x785) 319233545Sjchandra#define NAE_1588_PTP_INC_DEN NAE_REG(7, 0, 0x786) 320233545Sjchandra#define NAE_1588_PTP_INC_NUM NAE_REG(7, 0, 0x787) 321233545Sjchandra#define NAE_1588_PTP_INC_INTG NAE_REG(7, 0, 0x788) 322233545Sjchandra#define NAE_1588_PTP_CONTROL NAE_REG(7, 0, 0x789) 323233545Sjchandra#define NAE_1588_PTP_STATUS NAE_REG(7, 0, 0x78a) 324233545Sjchandra#define NAE_1588_PTP_USER_VALUE_HI NAE_REG(7, 0, 0x78b) 325233545Sjchandra#define NAE_1588_PTP_USER_VALUE_LO NAE_REG(7, 0, 0x78c) 326233545Sjchandra#define NAE_1588_PTP_TMR1_HI NAE_REG(7, 0, 0x78d) 327233545Sjchandra#define NAE_1588_PTP_TMR1_LO NAE_REG(7, 0, 0x78e) 328233545Sjchandra#define NAE_1588_PTP_TMR2_HI NAE_REG(7, 0, 0x78f) 329233545Sjchandra#define NAE_1588_PTP_TMR2_LO NAE_REG(7, 0, 0x790) 330233545Sjchandra#define NAE_1588_PTP_TMR3_HI NAE_REG(7, 0, 0x791) 331233545Sjchandra#define NAE_1588_PTP_TMR3_LO NAE_REG(7, 0, 0x792) 332233545Sjchandra#define NAE_TX_FC_CAL_IDX_TBL_CTRL NAE_REG(7, 0, 0x793) 333233545Sjchandra#define NAE_TX_FC_CAL_TBL_CTRL NAE_REG(7, 0, 0x794) 334233545Sjchandra#define NAE_TX_FC_CAL_TBL_DATA0 NAE_REG(7, 0, 0x795) 335233545Sjchandra#define NAE_TX_FC_CAL_TBL_DATA1 NAE_REG(7, 0, 0x796) 336233545Sjchandra#define NAE_TX_FC_CAL_TBL_DATA2 NAE_REG(7, 0, 0x797) 337233545Sjchandra#define NAE_TX_FC_CAL_TBL_DATA3 NAE_REG(7, 0, 0x798) 338233545Sjchandra#define NAE_INT_MDIO_CTRL NAE_REG(7, 0, 0x799) 339233545Sjchandra#define NAE_INT_MDIO_CTRL_DATA NAE_REG(7, 0, 0x79a) 340233545Sjchandra#define NAE_INT_MDIO_RD_STAT NAE_REG(7, 0, 0x79b) 341233545Sjchandra#define NAE_INT_MDIO_LINK_STAT NAE_REG(7, 0, 0x79c) 342233545Sjchandra#define NAE_EXT_G0_MDIO_CTRL NAE_REG(7, 0, 0x79d) 343233545Sjchandra#define NAE_EXT_G1_MDIO_CTRL NAE_REG(7, 0, 0x7a1) 344233545Sjchandra#define NAE_EXT_G0_MDIO_CTRL_DATA NAE_REG(7, 0, 0x79e) 345233545Sjchandra#define NAE_EXT_G1_MDIO_CTRL_DATA NAE_REG(7, 0, 0x7a2) 346233545Sjchandra#define NAE_EXT_G0_MDIO_RD_STAT NAE_REG(7, 0, 0x79f) 347233545Sjchandra#define NAE_EXT_G1_MDIO_RD_STAT NAE_REG(7, 0, 0x7a3) 348233545Sjchandra#define NAE_EXT_G0_MDIO_LINK_STAT NAE_REG(7, 0, 0x7a0) 349233545Sjchandra#define NAE_EXT_G1_MDIO_LINK_STAT NAE_REG(7, 0, 0x7a4) 350233545Sjchandra#define NAE_EXT_XG0_MDIO_CTRL NAE_REG(7, 0, 0x7a5) 351233545Sjchandra#define NAE_EXT_XG1_MDIO_CTRL NAE_REG(7, 0, 0x7a9) 352233545Sjchandra#define NAE_EXT_XG0_MDIO_CTRL_DATA NAE_REG(7, 0, 0x7a6) 353233545Sjchandra#define NAE_EXT_XG1_MDIO_CTRL_DATA NAE_REG(7, 0, 0x7aa) 354233545Sjchandra#define NAE_EXT_XG0_MDIO_RD_STAT NAE_REG(7, 0, 0x7a7) 355233545Sjchandra#define NAE_EXT_XG1_MDIO_RD_STAT NAE_REG(7, 0, 0x7ab) 356233545Sjchandra#define NAE_EXT_XG0_MDIO_LINK_STAT NAE_REG(7, 0, 0x7a8) 357233545Sjchandra#define NAE_EXT_XG1_MDIO_LINK_STAT NAE_REG(7, 0, 0x7ac) 358233545Sjchandra#define NAE_GMAC_FC_SLOT0 NAE_REG(7, 0, 0x7ad) 359233545Sjchandra#define NAE_GMAC_FC_SLOT1 NAE_REG(7, 0, 0x7ae) 360233545Sjchandra#define NAE_GMAC_FC_SLOT2 NAE_REG(7, 0, 0x7af) 361233545Sjchandra#define NAE_GMAC_FC_SLOT3 NAE_REG(7, 0, 0x7b0) 362233545Sjchandra#define NAE_NETIOR_NTB_SLOT NAE_REG(7, 0, 0x7b1) 363233545Sjchandra#define NAE_NETIOR_MISC_CTRL0 NAE_REG(7, 0, 0x7b2) 364233545Sjchandra#define NAE_NETIOR_INT0 NAE_REG(7, 0, 0x7b3) 365233545Sjchandra#define NAE_NETIOR_INT0_MASK NAE_REG(7, 0, 0x7b4) 366233545Sjchandra#define NAE_NETIOR_INT1 NAE_REG(7, 0, 0x7b5) 367233545Sjchandra#define NAE_NETIOR_INT1_MASK NAE_REG(7, 0, 0x7b6) 368233545Sjchandra#define NAE_GMAC_PFC_REPEAT NAE_REG(7, 0, 0x7b7) 369233545Sjchandra#define NAE_XGMAC_PFC_REPEAT NAE_REG(7, 0, 0x7b8) 370233545Sjchandra#define NAE_NETIOR_MISC_CTRL1 NAE_REG(7, 0, 0x7b9) 371233545Sjchandra#define NAE_NETIOR_MISC_CTRL2 NAE_REG(7, 0, 0x7ba) 372233545Sjchandra#define NAE_NETIOR_INT2 NAE_REG(7, 0, 0x7bb) 373233545Sjchandra#define NAE_NETIOR_INT2_MASK NAE_REG(7, 0, 0x7bc) 374233545Sjchandra#define NAE_NETIOR_MISC_CTRL3 NAE_REG(7, 0, 0x7bd) 375233545Sjchandra 376233545Sjchandra/* Network interface lane configuration registers */ 377233545Sjchandra#define NAE_LANE_CFG_MISCREG1 NAE_REG(7, 0xf, 0x39) 378233545Sjchandra#define NAE_LANE_CFG_MISCREG2 NAE_REG(7, 0xf, 0x3A) 379233545Sjchandra 380233545Sjchandra/* Network interface soft reset register */ 381233545Sjchandra#define NAE_SOFT_RESET NAE_REG(7, 0xf, 3) 382233545Sjchandra 383233545Sjchandra/* ucore instruction/shared CAM RAM access */ 384233545Sjchandra#define NAE_UCORE_SHARED_RAM_OFFSET 0x10000 385233545Sjchandra 386233545Sjchandra#define PORTS_PER_CMPLX 4 387233545Sjchandra#define NAE_CACHELINE_SIZE 64 388233545Sjchandra 389233545Sjchandra#define PHY_LANE_0_CTRL 4 390233545Sjchandra#define PHY_LANE_1_CTRL 5 391233545Sjchandra#define PHY_LANE_2_CTRL 6 392233545Sjchandra#define PHY_LANE_3_CTRL 7 393233545Sjchandra 394233545Sjchandra#define PHY_LANE_STAT_SRCS 0x00000001 395233545Sjchandra#define PHY_LANE_STAT_STD 0x00000010 396233545Sjchandra#define PHY_LANE_STAT_SFEA 0x00000020 397233545Sjchandra#define PHY_LANE_STAT_STCS 0x00000040 398233545Sjchandra#define PHY_LANE_STAT_SPC 0x00000200 399233545Sjchandra#define PHY_LANE_STAT_XLF 0x00000400 400233545Sjchandra#define PHY_LANE_STAT_PCR 0x00000800 401233545Sjchandra 402233545Sjchandra#define PHY_LANE_CTRL_DATA_POS 0 403233545Sjchandra#define PHY_LANE_CTRL_ADDR_POS 8 404233545Sjchandra#define PHY_LANE_CTRL_CMD_READ 0x00010000 405233545Sjchandra#define PHY_LANE_CTRL_CMD_WRITE 0x00000000 406233545Sjchandra#define PHY_LANE_CTRL_CMD_START 0x00020000 407233545Sjchandra#define PHY_LANE_CTRL_CMD_PENDING 0x00040000 408233545Sjchandra#define PHY_LANE_CTRL_ALL 0x00200000 409233545Sjchandra#define PHY_LANE_CTRL_FAST_INIT 0x00400000 410233545Sjchandra#define PHY_LANE_CTRL_REXSEL_POS 23 411233545Sjchandra#define PHY_LANE_CTRL_PHYMODE_POS 25 412233545Sjchandra#define PHY_LANE_CTRL_PWRDOWN 0x20000000 413233545Sjchandra#define PHY_LANE_CTRL_RST 0x40000000 414233545Sjchandra#define PHY_LANE_CTRL_RST_XAUI 0xc0000000 415233545Sjchandra#define PHY_LANE_CTRL_BPC_XAUI 0x80000000 416233545Sjchandra 417233545Sjchandra#define LANE_CFG_CPLX_0_1 0x0 418233545Sjchandra#define LANE_CFG_CPLX_2_3 0x1 419233545Sjchandra#define LANE_CFG_CPLX_4 0x2 420233545Sjchandra 421233545Sjchandra#define MAC_CONF1 0x0 422233545Sjchandra#define MAC_CONF2 0x1 423233545Sjchandra#define MAX_FRM 0x4 424233545Sjchandra 425233545Sjchandra#define NETIOR_GMAC_CTRL1 0x7F 426233545Sjchandra#define NETIOR_GMAC_CTRL2 0x7E 427233545Sjchandra#define NETIOR_GMAC_CTRL3 0x7C 428233545Sjchandra 429233545Sjchandra#define SGMII_CAL_SLOTS 3 430233545Sjchandra#define XAUI_CAL_SLOTS 13 431233545Sjchandra#define IL8_CAL_SLOTS 26 432233545Sjchandra#define IL4_CAL_SLOTS 10 433233545Sjchandra 434233545Sjchandra#define NAE_DRR_QUANTA 2048 435233545Sjchandra 436233545Sjchandra#define XLP3XX_STG2_FIFO_SZ 512 437233545Sjchandra#define XLP3XX_EH_FIFO_SZ 512 438233545Sjchandra#define XLP3XX_FROUT_FIFO_SZ 512 439233545Sjchandra#define XLP3XX_MS_FIFO_SZ 512 440233545Sjchandra#define XLP3XX_PKT_FIFO_SZ 8192 441233545Sjchandra#define XLP3XX_PKTLEN_FIFO_SZ 512 442233545Sjchandra 443233545Sjchandra#define XLP3XX_MAX_STG2_OFFSET 0x7F 444233545Sjchandra#define XLP3XX_MAX_EH_OFFSET 0x1f 445233545Sjchandra#define XLP3XX_MAX_FREE_OUT_OFFSET 0x1f 446233545Sjchandra#define XLP3XX_MAX_MS_OFFSET 0xF 447233545Sjchandra#define XLP3XX_MAX_PMEM_OFFSET 0x7FE 448233545Sjchandra 449233545Sjchandra#define XLP3XX_STG1_2_CREDIT XLP3XX_STG2_FIFO_SZ 450233545Sjchandra#define XLP3XX_STG2_EH_CREDIT XLP3XX_EH_FIFO_SZ 451233545Sjchandra#define XLP3XX_STG2_FROUT_CREDIT XLP3XX_FROUT_FIFO_SZ 452233545Sjchandra#define XLP3XX_STG2_MS_CREDIT XLP3XX_MS_FIFO_SZ 453233545Sjchandra 454233545Sjchandra#define XLP8XX_STG2_FIFO_SZ 2048 455233545Sjchandra#define XLP8XX_EH_FIFO_SZ 4096 456233545Sjchandra#define XLP8XX_FROUT_FIFO_SZ 4096 457233545Sjchandra#define XLP8XX_MS_FIFO_SZ 2048 458233545Sjchandra#define XLP8XX_PKT_FIFO_SZ 16384 459233545Sjchandra#define XLP8XX_PKTLEN_FIFO_SZ 2048 460279387Sjchandra 461233545Sjchandra#define XLP8XX_MAX_STG2_OFFSET 0x7F 462233545Sjchandra#define XLP8XX_MAX_EH_OFFSET 0x7F 463233545Sjchandra#define XLP8XX_MAX_FREE_OUT_OFFSET 0x7F 464233545Sjchandra#define XLP8XX_MAX_MS_OFFSET 0x1F 465233545Sjchandra#define XLP8XX_MAX_PMEM_OFFSET 0x7FE 466233545Sjchandra 467233545Sjchandra#define XLP8XX_STG1_2_CREDIT XLP8XX_STG2_FIFO_SZ 468233545Sjchandra#define XLP8XX_STG2_EH_CREDIT XLP8XX_EH_FIFO_SZ 469233545Sjchandra#define XLP8XX_STG2_FROUT_CREDIT XLP8XX_FROUT_FIFO_SZ 470233545Sjchandra#define XLP8XX_STG2_MS_CREDIT XLP8XX_MS_FIFO_SZ 471233545Sjchandra 472233545Sjchandra#define MAX_CAL_SLOTS 64 473233545Sjchandra#define XLP_MAX_PORTS 18 474233545Sjchandra#define XLP_STORM_MAX_PORTS 8 475233545Sjchandra 476255368Sjchandra#define MAX_FREE_FIFO_POOL_8XX 20 477255368Sjchandra#define MAX_FREE_FIFO_POOL_3XX 9 478255368Sjchandra 479233545Sjchandra#if !defined(LOCORE) && !defined(__ASSEMBLY__) 480233545Sjchandra 481233545Sjchandra#define nlm_read_nae_reg(b, r) nlm_read_reg_xkphys(b, r) 482233545Sjchandra#define nlm_write_nae_reg(b, r, v) nlm_write_reg_xkphys(b, r, v) 483233545Sjchandra#define nlm_get_nae_pcibase(node) \ 484233545Sjchandra nlm_pcicfg_base(XLP_IO_NAE_OFFSET(node)) 485233545Sjchandra#define nlm_get_nae_regbase(node) \ 486233545Sjchandra nlm_xkphys_map_pcibar0(nlm_get_nae_pcibase(node)) 487233545Sjchandra 488233545Sjchandra#define MAX_POE_CLASSES 8 489233545Sjchandra#define MAX_POE_CLASS_CTXT_TBL_SZ ((NUM_CONTEXTS / MAX_POE_CLASSES) + 1) 490233545Sjchandra#define TXINITIORCR(x) (((x) & 0x7ffff) << 8) 491233545Sjchandra 492233545Sjchandraenum XLPNAE_TX_TYPE { 493233545Sjchandra P2D_NEOP = 0, 494233545Sjchandra P2P, 495233545Sjchandra P2D_EOP, 496233545Sjchandra MSC 497233545Sjchandra}; 498233545Sjchandra 499233545Sjchandraenum nblock_type { 500255368Sjchandra UNKNOWN = 0, /* DONT MAKE IT NON-ZERO */ 501233545Sjchandra SGMIIC = 1, 502233545Sjchandra XAUIC = 2, 503233545Sjchandra ILC = 3 504233545Sjchandra}; 505233545Sjchandra 506233545Sjchandraenum nae_interface_type { 507233545Sjchandra GMAC_0 = 0, 508233545Sjchandra GMAC_1, 509233545Sjchandra GMAC_2, 510233545Sjchandra GMAC_3, 511233545Sjchandra XGMAC, 512233545Sjchandra INTERLAKEN, 513233545Sjchandra PHY = 0xE, 514233545Sjchandra LANE_CFG = 0xF, 515233545Sjchandra}; 516233545Sjchandra 517233545Sjchandraenum { 518233545Sjchandra LM_UNCONNECTED = 0, 519233545Sjchandra LM_SGMII = 1, 520233545Sjchandra LM_XAUI = 2, 521233545Sjchandra LM_IL = 3, 522233545Sjchandra}; 523233545Sjchandra 524233545Sjchandraenum nae_block { 525233545Sjchandra BLOCK_0 = 0, 526233545Sjchandra BLOCK_1, 527233545Sjchandra BLOCK_2, 528233545Sjchandra BLOCK_3, 529233545Sjchandra BLOCK_4, 530233545Sjchandra BLOCK_5, 531233545Sjchandra BLOCK_6, 532233545Sjchandra BLOCK_7, 533233545Sjchandra}; 534233545Sjchandra 535233545Sjchandraenum { 536233545Sjchandra PHYMODE_NONE = 0, 537233545Sjchandra PHYMODE_HS_SGMII = 1, 538233545Sjchandra PHYMODE_XAUI = 1, 539233545Sjchandra PHYMODE_SGMII = 2, 540233545Sjchandra PHYMODE_IL = 3, 541233545Sjchandra}; 542233545Sjchandra 543233545Sjchandrastatic __inline int 544233545Sjchandranae_num_complex(uint64_t nae_pcibase) 545233545Sjchandra{ 546233545Sjchandra return (nlm_read_reg(nae_pcibase, XLP_PCI_DEVINFO_REG0) & 0xff); 547233545Sjchandra} 548233545Sjchandra 549233545Sjchandrastatic __inline int 550233545Sjchandranae_num_context(uint64_t nae_pcibase) 551233545Sjchandra{ 552233545Sjchandra return (nlm_read_reg(nae_pcibase, XLP_PCI_DEVINFO_REG5)); 553233545Sjchandra} 554233545Sjchandra 555233545Sjchandra/* per port config structure */ 556233545Sjchandrastruct nae_port_config { 557255368Sjchandra int node; /* node id (quickread) */ 558255368Sjchandra int block; /* network block id (quickread) */ 559255368Sjchandra int port; /* port id - among the 18 in XLP */ 560255368Sjchandra int type; /* port type - see xlp_gmac_port_types */ 561255368Sjchandra int mdio_bus; 562255368Sjchandra int phy_addr; 563233545Sjchandra int num_channels; 564233545Sjchandra int num_free_descs; 565233545Sjchandra int free_desc_sizes; 566233545Sjchandra int ucore_mask; 567233545Sjchandra int loopback_mode; /* is complex is in loopback? */ 568233545Sjchandra uint32_t freein_spill_size; /* Freein spill size for each port */ 569233545Sjchandra uint32_t free_fifo_size; /* (512entries x 2desc/entry)1024desc */ 570233545Sjchandra uint32_t iface_fifo_size;/* 256 entries x 64B/entry = 16KB */ 571233545Sjchandra uint32_t pseq_fifo_size; /* 1024 entries - 1 pktlen/entry */ 572233545Sjchandra uint32_t rxbuf_size; /* 4096 entries x 64B = 256KB */ 573233545Sjchandra uint32_t rx_if_base_config; 574233545Sjchandra uint32_t rx_slots_reqd; 575233545Sjchandra uint32_t tx_slots_reqd; 576233545Sjchandra uint32_t stg2_fifo_size; 577233545Sjchandra uint32_t eh_fifo_size; 578233545Sjchandra uint32_t frout_fifo_size; 579233545Sjchandra uint32_t ms_fifo_size; 580233545Sjchandra uint32_t pkt_fifo_size; 581233545Sjchandra uint32_t pktlen_fifo_size; 582233545Sjchandra uint32_t max_stg2_offset; 583233545Sjchandra uint32_t max_eh_offset; 584233545Sjchandra uint32_t max_frout_offset; 585233545Sjchandra uint32_t max_ms_offset; 586233545Sjchandra uint32_t max_pmem_offset; 587233545Sjchandra uint32_t stg1_2_credit; 588233545Sjchandra uint32_t stg2_eh_credit; 589233545Sjchandra uint32_t stg2_frout_credit; 590233545Sjchandra uint32_t stg2_ms_credit; 591233545Sjchandra uint32_t vlan_pri_en; 592233545Sjchandra uint32_t txq; 593233545Sjchandra uint32_t rxfreeq; 594233545Sjchandra uint32_t ieee1588_inc_intg; 595233545Sjchandra uint32_t ieee1588_inc_den; 596233545Sjchandra uint32_t ieee1588_inc_num; 597233545Sjchandra uint64_t ieee1588_userval; 598233545Sjchandra uint64_t ieee1588_ptpoff; 599233545Sjchandra uint64_t ieee1588_tmr1; 600233545Sjchandra uint64_t ieee1588_tmr2; 601233545Sjchandra uint64_t ieee1588_tmr3; 602233545Sjchandra}; 603233545Sjchandra 604233545Sjchandravoid nlm_nae_flush_free_fifo(uint64_t nae_base, int nblocks); 605233545Sjchandravoid nlm_program_nae_parser_seq_fifo(uint64_t, int, struct nae_port_config *); 606233545Sjchandravoid nlm_setup_rx_cal_cfg(uint64_t, int, struct nae_port_config *); 607233545Sjchandravoid nlm_setup_tx_cal_cfg(uint64_t, int, struct nae_port_config *cfg); 608233545Sjchandravoid nlm_deflate_frin_fifo_carving(uint64_t, int); 609233545Sjchandravoid nlm_reset_nae(int); 610233545Sjchandraint nlm_set_nae_frequency(int, int); 611233545Sjchandravoid nlm_setup_poe_class_config(uint64_t nae_base, int max_poe_classes, 612233545Sjchandra int num_contexts, int *poe_cl_tbl); 613233545Sjchandravoid nlm_setup_vfbid_mapping(uint64_t); 614233545Sjchandravoid nlm_setup_flow_crc_poly(uint64_t, uint32_t); 615233545Sjchandravoid nlm_setup_iface_fifo_cfg(uint64_t, int, struct nae_port_config *); 616233545Sjchandravoid nlm_setup_rx_base_config(uint64_t, int, struct nae_port_config *); 617233545Sjchandravoid nlm_setup_rx_buf_config(uint64_t, int, struct nae_port_config *); 618255368Sjchandravoid nlm_setup_freein_fifo_cfg(uint64_t, struct nae_port_config *); 619233545Sjchandraint nlm_get_flow_mask(int); 620233545Sjchandravoid nlm_program_flow_cfg(uint64_t, int, uint32_t, uint32_t); 621233545Sjchandravoid xlp_ax_nae_lane_reset_txpll(uint64_t, int, int, int); 622233545Sjchandravoid xlp_nae_lane_reset_txpll(uint64_t, int, int, int); 623233545Sjchandravoid xlp_nae_config_lane_gmac(uint64_t, int); 624233545Sjchandravoid config_egress_fifo_carvings(uint64_t, int, int, int, int, 625233545Sjchandra struct nae_port_config *); 626233545Sjchandravoid config_egress_fifo_credits(uint64_t, int, int, int, int, 627233545Sjchandra struct nae_port_config *); 628233545Sjchandravoid nlm_config_freein_fifo_uniq_cfg(uint64_t, int, int); 629233545Sjchandravoid nlm_config_ucore_iface_mask_cfg(uint64_t, int, int); 630233545Sjchandraint nlm_nae_init_netior(uint64_t nae_base, int nblocks); 631233545Sjchandravoid nlm_nae_init_ingress(uint64_t, uint32_t); 632233545Sjchandravoid nlm_nae_init_egress(uint64_t); 633233545Sjchandrauint32_t ucore_spray_config(uint32_t, uint32_t, int); 634233545Sjchandravoid nlm_nae_init_ucore(uint64_t nae_base, int if_num, uint32_t ucore_mask); 635233545Sjchandraint nlm_nae_open_if(uint64_t, int, int, int, uint32_t); 636233545Sjchandravoid nlm_mac_enable(uint64_t, int, int, int); 637233545Sjchandravoid nlm_mac_disable(uint64_t, int, int, int); 638233545Sjchandrauint64_t nae_tx_desc(u_int, u_int, u_int, u_int, uint64_t); 639233545Sjchandravoid nlm_setup_l2type(uint64_t, int, uint32_t, uint32_t, uint32_t, 640233545Sjchandra uint32_t, uint32_t, uint32_t); 641233545Sjchandravoid nlm_setup_l3ctable_mask(uint64_t, int, uint32_t, uint32_t); 642233545Sjchandravoid nlm_setup_l3ctable_even(uint64_t, int, uint32_t, uint32_t, uint32_t, 643233545Sjchandra uint32_t, uint32_t); 644233545Sjchandravoid nlm_setup_l3ctable_odd(uint64_t, int, uint32_t, uint32_t, uint32_t, 645233545Sjchandra uint32_t, uint32_t, uint32_t); 646233545Sjchandravoid nlm_setup_l4ctable_even(uint64_t, int, uint32_t, uint32_t, uint32_t, 647233545Sjchandra uint32_t, uint32_t, uint32_t); 648233545Sjchandravoid nlm_setup_l4ctable_odd(uint64_t, int, uint32_t, uint32_t, uint32_t, uint32_t); 649233545Sjchandravoid nlm_enable_hardware_parser(uint64_t); 650233545Sjchandravoid nlm_enable_hardware_parser_per_port(uint64_t, int, int); 651233545Sjchandravoid nlm_prepad_enable(uint64_t, int); 652233545Sjchandravoid nlm_setup_1588_timer(uint64_t, struct nae_port_config *); 653233545Sjchandra 654233545Sjchandra#endif /* !(LOCORE) && !(__ASSEMBLY__) */ 655233545Sjchandra 656233545Sjchandra#endif 657