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