1a23fd118Syl /*
2a23fd118Syl  * CDDL HEADER START
3a23fd118Syl  *
4a23fd118Syl  * The contents of this file are subject to the terms of the
5a23fd118Syl  * Common Development and Distribution License (the "License").
6a23fd118Syl  * You may not use this file except in compliance with the License.
7a23fd118Syl  *
8a23fd118Syl  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9a23fd118Syl  * or http://www.opensolaris.org/os/licensing.
10a23fd118Syl  * See the License for the specific language governing permissions
11a23fd118Syl  * and limitations under the License.
12a23fd118Syl  *
13a23fd118Syl  * When distributing Covered Code, include this CDDL HEADER in each
14a23fd118Syl  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15a23fd118Syl  * If applicable, add the following below this CDDL HEADER, with the
16a23fd118Syl  * fields enclosed by brackets "[]" replaced with your own identifying
17a23fd118Syl  * information: Portions Copyright [yyyy] [name of copyright owner]
18a23fd118Syl  *
19a23fd118Syl  * CDDL HEADER END
20a23fd118Syl  *
218347601bSyl  * Copyright (c) 2002-2006 Neterion, Inc.
22a23fd118Syl  */
23a23fd118Syl 
24da14cebeSEric Cheng /*
25da14cebeSEric Cheng  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
26da14cebeSEric Cheng  * Use is subject to license terms.
27da14cebeSEric Cheng  */
28da14cebeSEric Cheng 
29a23fd118Syl #ifndef XGE_HAL_REGS_H
30a23fd118Syl #define XGE_HAL_REGS_H
31a23fd118Syl 
327eced415Sxw __EXTERN_BEGIN_DECLS
337eced415Sxw 
34a23fd118Syl typedef struct {
35a23fd118Syl 
36a23fd118Syl /* General Control-Status Registers */
37a23fd118Syl 	u64 general_int_status;
38a23fd118Syl #define XGE_HAL_GEN_INTR_TXPIC             BIT(0)
39a23fd118Syl #define XGE_HAL_GEN_INTR_TXDMA             BIT(1)
40a23fd118Syl #define XGE_HAL_GEN_INTR_TXMAC             BIT(2)
41a23fd118Syl #define XGE_HAL_GEN_INTR_TXXGXS            BIT(3)
42a23fd118Syl #define XGE_HAL_GEN_INTR_TXTRAFFIC         BIT(8)
43a23fd118Syl #define XGE_HAL_GEN_INTR_RXPIC             BIT(32)
44a23fd118Syl #define XGE_HAL_GEN_INTR_RXDMA             BIT(33)
45a23fd118Syl #define XGE_HAL_GEN_INTR_RXMAC             BIT(34)
46a23fd118Syl #define XGE_HAL_GEN_INTR_MC                BIT(35)
47a23fd118Syl #define XGE_HAL_GEN_INTR_RXXGXS            BIT(36)
48a23fd118Syl #define XGE_HAL_GEN_INTR_RXTRAFFIC         BIT(40)
49a23fd118Syl #define XGE_HAL_GEN_ERROR_INTR             (XGE_HAL_GEN_INTR_TXPIC  | \
50a23fd118Syl 					 XGE_HAL_GEN_INTR_RXPIC  | \
51a23fd118Syl 					 XGE_HAL_GEN_INTR_TXDMA  | \
52a23fd118Syl 					 XGE_HAL_GEN_INTR_RXDMA  | \
53a23fd118Syl 					 XGE_HAL_GEN_INTR_TXMAC  | \
54a23fd118Syl 					 XGE_HAL_GEN_INTR_RXMAC  | \
55a23fd118Syl 					 XGE_HAL_GEN_INTR_TXXGXS | \
56a23fd118Syl 					 XGE_HAL_GEN_INTR_RXXGXS | \
57a23fd118Syl 					 XGE_HAL_GEN_INTR_MC)
58a23fd118Syl 
59a23fd118Syl 	u64 general_int_mask;
60a23fd118Syl 
61a23fd118Syl 	u8 unused0[0x100 - 0x10];
62a23fd118Syl 
63a23fd118Syl 	u64 sw_reset;
64a23fd118Syl 
65a23fd118Syl /* XGXS must be removed from reset only once. */
66a23fd118Syl #define XGE_HAL_SW_RESET_XENA              vBIT(0xA5,0,8)
67a23fd118Syl #define XGE_HAL_SW_RESET_FLASH             vBIT(0xA5,8,8)
68a23fd118Syl #define XGE_HAL_SW_RESET_EOI               vBIT(0xA5,16,8)
69a23fd118Syl #define XGE_HAL_SW_RESET_XGXS              vBIT(0xA5,24,8)
70a23fd118Syl #define XGE_HAL_SW_RESET_ALL               (XGE_HAL_SW_RESET_XENA  | \
71a23fd118Syl 					    XGE_HAL_SW_RESET_FLASH | \
72a23fd118Syl 					    XGE_HAL_SW_RESET_EOI | \
73a23fd118Syl 					    XGE_HAL_SW_RESET_XGXS)
74a23fd118Syl 
75a23fd118Syl /* The SW_RESET register must read this value after a successful reset. */
76a23fd118Syl #if defined(XGE_OS_HOST_BIG_ENDIAN) && !defined(XGE_OS_PIO_LITTLE_ENDIAN)
77a23fd118Syl #define XGE_HAL_SW_RESET_RAW_VAL_XENA			0xA500000000ULL
78a23fd118Syl #define XGE_HAL_SW_RESET_RAW_VAL_HERC			0xA5A500000000ULL
79a23fd118Syl #else
80a23fd118Syl #define XGE_HAL_SW_RESET_RAW_VAL_XENA			0xA5000000ULL
81a23fd118Syl #define XGE_HAL_SW_RESET_RAW_VAL_HERC			0xA5A50000ULL
82a23fd118Syl #endif
83a23fd118Syl 
84a23fd118Syl 
85a23fd118Syl 	u64 adapter_status;
86a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_TDMA_READY          BIT(0)
87a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_RDMA_READY          BIT(1)
88a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_PFC_READY           BIT(2)
89a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_TMAC_BUF_EMPTY      BIT(3)
90a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_PIC_QUIESCENT       BIT(5)
91a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_RMAC_REMOTE_FAULT   BIT(6)
92a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_RMAC_LOCAL_FAULT    BIT(7)
93a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_RMAC_PCC_IDLE       vBIT(0xFF,8,8)
94a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_RMAC_PCC_4_IDLE     vBIT(0x0F,8,8)
95a23fd118Syl #define XGE_HAL_ADAPTER_PCC_ENABLE_FOUR            vBIT(0x0F,0,8)
96a23fd118Syl 
97a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_RC_PRC_QUIESCENT    vBIT(0xFF,16,8)
98a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_MC_DRAM_READY       BIT(24)
99a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_MC_QUEUES_READY     BIT(25)
100a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_M_PLL_LOCK          BIT(30)
101a23fd118Syl #define XGE_HAL_ADAPTER_STATUS_P_PLL_LOCK          BIT(31)
102a23fd118Syl 
103a23fd118Syl 	u64 adapter_control;
104a23fd118Syl #define XGE_HAL_ADAPTER_CNTL_EN                    BIT(7)
105a23fd118Syl #define XGE_HAL_ADAPTER_EOI_TX_ON                  BIT(15)
106a23fd118Syl #define XGE_HAL_ADAPTER_LED_ON                     BIT(23)
107a23fd118Syl #define XGE_HAL_ADAPTER_UDPI(val)                  vBIT(val,36,4)
108a23fd118Syl #define XGE_HAL_ADAPTER_WAIT_INT                   BIT(48)
109a23fd118Syl #define XGE_HAL_ADAPTER_ECC_EN                     BIT(55)
110a23fd118Syl 
111a23fd118Syl 	u64 serr_source;
112a23fd118Syl #define XGE_HAL_SERR_SOURCE_PIC	                BIT(0)
113a23fd118Syl #define XGE_HAL_SERR_SOURCE_TXDMA               BIT(1)
114a23fd118Syl #define XGE_HAL_SERR_SOURCE_RXDMA               BIT(2)
115a23fd118Syl #define XGE_HAL_SERR_SOURCE_MAC			BIT(3)
116a23fd118Syl #define XGE_HAL_SERR_SOURCE_MC			BIT(4)
117a23fd118Syl #define XGE_HAL_SERR_SOURCE_XGXS			 BIT(5)
118a23fd118Syl #define XGE_HAL_SERR_SOURCE_ANY		(XGE_HAL_SERR_SOURCE_PIC   | \
119a23fd118Syl 					 XGE_HAL_SERR_SOURCE_TXDMA | \
120a23fd118Syl 					 XGE_HAL_SERR_SOURCE_RXDMA | \
121a23fd118Syl 					 XGE_HAL_SERR_SOURCE_MAC   | \
122a23fd118Syl 					 XGE_HAL_SERR_SOURCE_MC    | \
123a23fd118Syl 					 XGE_HAL_SERR_SOURCE_XGXS)
124a23fd118Syl 
125a23fd118Syl 	u64	pci_info;
126a23fd118Syl #define XGE_HAL_PCI_INFO			vBIT(0xF,0,4)
127a23fd118Syl #define XGE_HAL_PCI_32_BIT			BIT(8)
1288347601bSyl 
1298347601bSyl 	u8 unused0_1[0x160 - 0x128];
130*55fea89dSDan Cross 
1318347601bSyl 	u64 ric_status;
1328347601bSyl 
1338347601bSyl 	u8  unused0_2[0x558 - 0x168];
1348347601bSyl 
1358347601bSyl 	u64 mbist_status;
1368347601bSyl 
1378347601bSyl 	u8  unused0_3[0x800 - 0x560];
138a23fd118Syl 
139a23fd118Syl /* PCI-X Controller registers */
140a23fd118Syl 	u64 pic_int_status;
141a23fd118Syl 	u64 pic_int_mask;
142a23fd118Syl #define XGE_HAL_PIC_INT_TX                     BIT(0)
143a23fd118Syl #define XGE_HAL_PIC_INT_FLSH                   BIT(1)
144a23fd118Syl #define XGE_HAL_PIC_INT_MDIO                   BIT(2)
145a23fd118Syl #define XGE_HAL_PIC_INT_IIC                    BIT(3)
146a23fd118Syl #define XGE_HAL_PIC_INT_MISC                   BIT(4)
147a23fd118Syl #define XGE_HAL_PIC_INT_RX                     BIT(32)
148a23fd118Syl 
149a23fd118Syl 	u64 txpic_int_reg;
150a23fd118Syl #define XGE_HAL_TXPIC_INT_SCHED_INTR            BIT(42)
151a23fd118Syl 	u64 txpic_int_mask;
152a23fd118Syl #define XGE_HAL_PCIX_INT_REG_ECC_SG_ERR                BIT(0)
153a23fd118Syl #define XGE_HAL_PCIX_INT_REG_ECC_DB_ERR                BIT(1)
154a23fd118Syl #define XGE_HAL_PCIX_INT_REG_FLASHR_R_FSM_ERR          BIT(8)
155a23fd118Syl #define XGE_HAL_PCIX_INT_REG_FLASHR_W_FSM_ERR          BIT(9)
156a23fd118Syl #define XGE_HAL_PCIX_INT_REG_INI_TX_FSM_SERR           BIT(10)
157a23fd118Syl #define XGE_HAL_PCIX_INT_REG_INI_TXO_FSM_ERR           BIT(11)
158a23fd118Syl #define XGE_HAL_PCIX_INT_REG_TRT_FSM_SERR              BIT(13)
159a23fd118Syl #define XGE_HAL_PCIX_INT_REG_SRT_FSM_SERR              BIT(14)
160a23fd118Syl #define XGE_HAL_PCIX_INT_REG_PIFR_FSM_SERR             BIT(15)
161a23fd118Syl #define XGE_HAL_PCIX_INT_REG_WRC_TX_SEND_FSM_SERR      BIT(21)
162a23fd118Syl #define XGE_HAL_PCIX_INT_REG_RRC_TX_REQ_FSM_SERR       BIT(23)
163a23fd118Syl #define XGE_HAL_PCIX_INT_REG_INI_RX_FSM_SERR           BIT(48)
164a23fd118Syl #define XGE_HAL_PCIX_INT_REG_RA_RX_FSM_SERR            BIT(50)
165a23fd118Syl /*
166a23fd118Syl #define XGE_HAL_PCIX_INT_REG_WRC_RX_SEND_FSM_SERR      BIT(52)
167a23fd118Syl #define XGE_HAL_PCIX_INT_REG_RRC_RX_REQ_FSM_SERR       BIT(54)
168a23fd118Syl #define XGE_HAL_PCIX_INT_REG_RRC_RX_SPLIT_FSM_SERR     BIT(58)
169a23fd118Syl */
170a23fd118Syl 	u64 txpic_alarms;
171a23fd118Syl 	u64 rxpic_int_reg;
172a23fd118Syl #define XGE_HAL_RX_PIC_INT_REG_SPDM_READY               BIT(0)
173a23fd118Syl #define XGE_HAL_RX_PIC_INT_REG_SPDM_OVERWRITE_ERR       BIT(44)
174a23fd118Syl #define XGE_HAL_RX_PIC_INT_REG_SPDM_PERR                BIT(55)
175a23fd118Syl 	u64 rxpic_int_mask;
176a23fd118Syl 	u64 rxpic_alarms;
177a23fd118Syl 
178a23fd118Syl 	u64 flsh_int_reg;
179a23fd118Syl 	u64 flsh_int_mask;
180a23fd118Syl #define XGE_HAL_PIC_FLSH_INT_REG_CYCLE_FSM_ERR          BIT(63)
181a23fd118Syl #define XGE_HAL_PIC_FLSH_INT_REG_ERR                    BIT(62)
182a23fd118Syl 	u64 flash_alarms;
183a23fd118Syl 
184a23fd118Syl 	u64 mdio_int_reg;
185a23fd118Syl 	u64 mdio_int_mask;
186a23fd118Syl #define XGE_HAL_MDIO_INT_REG_MDIO_BUS_ERR              BIT(0)
187a23fd118Syl #define XGE_HAL_MDIO_INT_REG_DTX_BUS_ERR               BIT(8)
188a23fd118Syl #define XGE_HAL_MDIO_INT_REG_LASI                      BIT(39)
189a23fd118Syl 	u64 mdio_alarms;
190a23fd118Syl 
191a23fd118Syl 	u64 iic_int_reg;
192a23fd118Syl 	u64 iic_int_mask;
193a23fd118Syl #define XGE_HAL_IIC_INT_REG_BUS_FSM_ERR                BIT(4)
194a23fd118Syl #define XGE_HAL_IIC_INT_REG_BIT_FSM_ERR                BIT(5)
195a23fd118Syl #define XGE_HAL_IIC_INT_REG_CYCLE_FSM_ERR              BIT(6)
196a23fd118Syl #define XGE_HAL_IIC_INT_REG_REQ_FSM_ERR                BIT(7)
197a23fd118Syl #define XGE_HAL_IIC_INT_REG_ACK_ERR                    BIT(8)
198a23fd118Syl 	u64 iic_alarms;
199a23fd118Syl 
2008347601bSyl 	u64 msi_pending_reg;
201a23fd118Syl 
202a23fd118Syl 	u64 misc_int_reg;
203a23fd118Syl #define XGE_HAL_MISC_INT_REG_DP_ERR_INT			BIT(0)
204a23fd118Syl #define XGE_HAL_MISC_INT_REG_LINK_DOWN_INT		BIT(1)
205a23fd118Syl #define XGE_HAL_MISC_INT_REG_LINK_UP_INT		BIT(2)
206a23fd118Syl 	u64 misc_int_mask;
207a23fd118Syl 	u64 misc_alarms;
208a23fd118Syl 
2098347601bSyl 	u64 msi_triggered_reg;
2108347601bSyl 
2118347601bSyl 	u64 xfp_gpio_int_reg;
2128347601bSyl 	u64 xfp_gpio_int_mask;
2138347601bSyl 	u64 xfp_alarms;
2148347601bSyl 
2158347601bSyl 	u8  unused5[0x8E0 - 0x8C8];
216a23fd118Syl 
217a23fd118Syl 	u64 tx_traffic_int;
218a23fd118Syl #define XGE_HAL_TX_TRAFFIC_INT_n(n)                     BIT(n)
219a23fd118Syl 	u64 tx_traffic_mask;
220a23fd118Syl 
221a23fd118Syl 	u64 rx_traffic_int;
222a23fd118Syl #define XGE_HAL_RX_TRAFFIC_INT_n(n)                     BIT(n)
223a23fd118Syl 	u64 rx_traffic_mask;
224a23fd118Syl 
225a23fd118Syl /* PIC Control registers */
226a23fd118Syl 	u64 pic_control;
227a23fd118Syl #define XGE_HAL_PIC_CNTL_RX_ALARM_MAP_1                BIT(0)
228a23fd118Syl #define XGE_HAL_PIC_CNTL_ONE_SHOT_TINT                 BIT(1)
229a23fd118Syl #define XGE_HAL_PIC_CNTL_SHARED_SPLITS(n)              vBIT(n,11,4)
230a23fd118Syl 
231a23fd118Syl 	u64 swapper_ctrl;
232a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_PIF_R_FE                  BIT(0)
233a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_PIF_R_SE                  BIT(1)
234a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_PIF_W_FE                  BIT(8)
235a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_PIF_W_SE                  BIT(9)
236a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_RTH_FE                    BIT(10)
237a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_RTH_SE                    BIT(11)
238a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_TXP_FE                    BIT(16)
239a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_TXP_SE                    BIT(17)
240a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_TXD_R_FE                  BIT(18)
241a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_TXD_R_SE                  BIT(19)
242a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_TXD_W_FE                  BIT(20)
243a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_TXD_W_SE                  BIT(21)
244a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_TXF_R_FE                  BIT(22)
245a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_TXF_R_SE                  BIT(23)
246a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_RXD_R_FE                  BIT(32)
247a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_RXD_R_SE                  BIT(33)
248a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_RXD_W_FE                  BIT(34)
249a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_RXD_W_SE                  BIT(35)
250a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_RXF_W_FE                  BIT(36)
251a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_RXF_W_SE                  BIT(37)
252a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_XMSI_FE                   BIT(40)
253a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_XMSI_SE                   BIT(41)
254a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_STATS_FE                  BIT(48)
255a23fd118Syl #define XGE_HAL_SWAPPER_CTRL_STATS_SE                  BIT(49)
256a23fd118Syl 
257a23fd118Syl 	u64 pif_rd_swapper_fb;
258a23fd118Syl #define XGE_HAL_IF_RD_SWAPPER_FB   0x0123456789ABCDEFULL
259a23fd118Syl 
260a23fd118Syl 	u64 scheduled_int_ctrl;
261a23fd118Syl #define XGE_HAL_SCHED_INT_CTRL_TIMER_EN                BIT(0)
262a23fd118Syl #define XGE_HAL_SCHED_INT_CTRL_ONE_SHOT                BIT(1)
263a23fd118Syl #define XGE_HAL_SCHED_INT_CTRL_INT2MSI(val)	     vBIT(val,10,6)
264a23fd118Syl #define XGE_HAL_SCHED_INT_PERIOD(val)		     vBIT(val,32,32)
265a23fd118Syl #define XGE_HAL_SCHED_INT_PERIOD_MASK		     0xFFFFFFFF00000000ULL
266a23fd118Syl 
267a23fd118Syl 
268a23fd118Syl 	u64 txreqtimeout;
269a23fd118Syl #define XGE_HAL_TXREQTO_VAL(val)		vBIT(val,0,32)
270a23fd118Syl #define XGE_HAL_TXREQTO_EN			BIT(63)
271a23fd118Syl 
272a23fd118Syl 	u64 statsreqtimeout;
273a23fd118Syl #define XGE_HAL_STATREQTO_VAL(n)                  TBD
274a23fd118Syl #define XGE_HAL_STATREQTO_EN                      BIT(63)
275a23fd118Syl 
276a23fd118Syl 	u64 read_retry_delay;
277a23fd118Syl 	u64 read_retry_acceleration;
278a23fd118Syl 	u64 write_retry_delay;
279a23fd118Syl 	u64 write_retry_acceleration;
280a23fd118Syl 
281a23fd118Syl 	u64 xmsi_control;
282a23fd118Syl #define XGE_HAL_XMSI_EN				BIT(0)
283a23fd118Syl #define XGE_HAL_XMSI_DIS_TINT_SERR		BIT(1)
2848347601bSyl #define XGE_HAL_XMSI_BYTE_COUNT(val)		vBIT(val,13,3)
285a23fd118Syl 
286a23fd118Syl 	u64 xmsi_access;
287a23fd118Syl #define XGE_HAL_XMSI_WR_RDN			BIT(7)
288a23fd118Syl #define XGE_HAL_XMSI_STROBE			BIT(15)
289a23fd118Syl #define XGE_HAL_XMSI_NO(val)			vBIT(val,26,6)
290a23fd118Syl 
291a23fd118Syl 	u64 xmsi_address;
292a23fd118Syl 	u64 xmsi_data;
293a23fd118Syl 
294a23fd118Syl 	u64 rx_mat;
295a23fd118Syl #define XGE_HAL_SET_RX_MAT(ring, msi)	vBIT(msi, (8 * ring), 8)
296a23fd118Syl 
297a23fd118Syl 	u8 unused6[0x8];
298a23fd118Syl 
299a23fd118Syl 	u64 tx_mat[8];
300a23fd118Syl #define XGE_HAL_SET_TX_MAT(fifo, msi)	vBIT(msi, (8 * fifo), 8)
301a23fd118Syl 
302a23fd118Syl 	u64 xmsi_mask_reg;
303a23fd118Syl 
304a23fd118Syl 	/* Automated statistics collection */
305a23fd118Syl 	u64 stat_byte_cnt;
3067eced415Sxw #define	XGE_HAL_STAT_BYTE_CNT(n)	vBIT(n, 4, 12)
307a23fd118Syl 	u64 stat_cfg;
308a23fd118Syl #define XGE_HAL_STAT_CFG_STAT_EN           BIT(0)
309a23fd118Syl #define XGE_HAL_STAT_CFG_ONE_SHOT_EN       BIT(1)
310a23fd118Syl #define XGE_HAL_STAT_CFG_STAT_NS_EN        BIT(8)
311a23fd118Syl #define XGE_HAL_STAT_CFG_STAT_RO           BIT(9)
312a23fd118Syl #define XGE_HAL_XENA_PER_SEC	           0x208d5
313a23fd118Syl #define XGE_HAL_SET_UPDT_PERIOD(n)	   vBIT(n,32,32)
314a23fd118Syl 
315a23fd118Syl 	u64 stat_addr;
316a23fd118Syl 
317a23fd118Syl 	/* General Configuration */
318a23fd118Syl 	u64 mdio_control;
3198347601bSyl #define XGE_HAL_MDIO_CONTROL_MMD_INDX_ADDR(n)	vBIT(n,0,16)
3208347601bSyl #define XGE_HAL_MDIO_CONTROL_MMD_DEV_ADDR(n)	vBIT(n,19,5)
3218347601bSyl #define XGE_HAL_MDIO_CONTROL_MMD_PRT_ADDR(n)	vBIT(n,27,5)
3228347601bSyl #define XGE_HAL_MDIO_CONTROL_MMD_DATA(n)	vBIT(n,32,16)
3238347601bSyl #define XGE_HAL_MDIO_CONTROL_MMD_CTRL(n)	vBIT(n,56,4)
3248347601bSyl #define XGE_HAL_MDIO_CONTROL_MMD_OP(n)		vBIT(n,60,2)
3258347601bSyl #define XGE_HAL_MDIO_CONTROL_MMD_DATA_GET(n)	((n>>16)&0xFFFF)
3268347601bSyl #define XGE_HAL_MDIO_MMD_PMA_DEV_ADDR		0x01
3278347601bSyl #define XGE_HAL_MDIO_DOM_REG_ADDR		0xA100
3288347601bSyl #define XGE_HAL_MDIO_ALARM_FLAGS_ADDR		0xA070
3298347601bSyl #define XGE_HAL_MDIO_WARN_FLAGS_ADDR		0xA074
3308347601bSyl #define XGE_HAL_MDIO_CTRL_START			0xE
3318347601bSyl #define XGE_HAL_MDIO_OP_ADDRESS			0x0
3328347601bSyl #define XGE_HAL_MDIO_OP_WRITE			0x1
3338347601bSyl #define XGE_HAL_MDIO_OP_READ			0x3
3348347601bSyl #define XGE_HAL_MDIO_OP_READ_POST_INCREMENT	0x2
3358347601bSyl #define XGE_HAL_MDIO_ALARM_TEMPHIGH		0x0080
3368347601bSyl #define XGE_HAL_MDIO_ALARM_TEMPLOW		0x0040
3378347601bSyl #define XGE_HAL_MDIO_ALARM_BIASHIGH		0x0008
3388347601bSyl #define XGE_HAL_MDIO_ALARM_BIASLOW		0x0004
3398347601bSyl #define XGE_HAL_MDIO_ALARM_POUTPUTHIGH		0x0002
3408347601bSyl #define XGE_HAL_MDIO_ALARM_POUTPUTLOW		0x0001
3418347601bSyl #define XGE_HAL_MDIO_WARN_TEMPHIGH		0x0080
3428347601bSyl #define XGE_HAL_MDIO_WARN_TEMPLOW		0x0040
3438347601bSyl #define XGE_HAL_MDIO_WARN_BIASHIGH		0x0008
3448347601bSyl #define XGE_HAL_MDIO_WARN_BIASLOW		0x0004
3458347601bSyl #define XGE_HAL_MDIO_WARN_POUTPUTHIGH		0x0002
3468347601bSyl #define XGE_HAL_MDIO_WARN_POUTPUTLOW		0x0001
347a23fd118Syl 
348a23fd118Syl 	u64 dtx_control;
349a23fd118Syl 
350a23fd118Syl 	u64 i2c_control;
351a23fd118Syl #define XGE_HAL_I2C_CONTROL_DEV_ID(id)		vBIT(id,1,3)
352a23fd118Syl #define XGE_HAL_I2C_CONTROL_ADDR(addr)		vBIT(addr,5,11)
353a23fd118Syl #define XGE_HAL_I2C_CONTROL_BYTE_CNT(cnt)	vBIT(cnt,22,2)
354a23fd118Syl #define XGE_HAL_I2C_CONTROL_READ		BIT(24)
355a23fd118Syl #define XGE_HAL_I2C_CONTROL_NACK		BIT(25)
356a23fd118Syl #define XGE_HAL_I2C_CONTROL_CNTL_START		vBIT(0xE,28,4)
357a23fd118Syl #define XGE_HAL_I2C_CONTROL_CNTL_END(val)	(val & vBIT(0x1,28,4))
358a23fd118Syl #define XGE_HAL_I2C_CONTROL_GET_DATA(val)	(u32)(val & 0xFFFFFFFF)
359a23fd118Syl #define XGE_HAL_I2C_CONTROL_SET_DATA(val)	vBIT(val,32,32)
360a23fd118Syl 
361a23fd118Syl 	u64 beacon_control;
362a23fd118Syl 	u64 misc_control;
363a23fd118Syl #define XGE_HAL_MISC_CONTROL_LINK_STABILITY_PERIOD(val)	vBIT(val,29,3)
364a23fd118Syl #define XGE_HAL_MISC_CONTROL_EXT_REQ_EN     BIT(1)
3657eced415Sxw #define XGE_HAL_MISC_CONTROL_LINK_FAULT		BIT(0)
366a23fd118Syl 
367a23fd118Syl 	u64 xfb_control;
368a23fd118Syl 	u64 gpio_control;
3698347601bSyl #define XGE_HAL_GPIO_CTRL_GPIO_0           	BIT(8)
370a23fd118Syl 
371a23fd118Syl 	u64 txfifo_dw_mask;
372a23fd118Syl 	u64 split_table_line_no;
373a23fd118Syl 	u64 sc_timeout;
374a23fd118Syl 	u64 pic_control_2;
3758347601bSyl #define XGE_HAL_TXD_WRITE_BC(n)                 vBIT(n, 13, 3)
376a23fd118Syl 	u64 ini_dperr_ctrl;
377a23fd118Syl 	u64 wreq_split_mask;
378a23fd118Syl 	u64 qw_per_rxd;
379a23fd118Syl 	u8  unused7[0x300 - 0x250];
380a23fd118Syl 
381a23fd118Syl 	u64 pic_status;
382a23fd118Syl 	u64 txp_status;
383a23fd118Syl 	u64 txp_err_context;
384a23fd118Syl 	u64 spdm_bir_offset;
385a23fd118Syl #define XGE_HAL_SPDM_PCI_BAR_NUM(spdm_bir_offset)	\
386a23fd118Syl 				(u8)(spdm_bir_offset >> 61)
387a23fd118Syl #define XGE_HAL_SPDM_PCI_BAR_OFFSET(spdm_bir_offset) \
388a23fd118Syl 				(u32)((spdm_bir_offset >> 32) & 0x1FFFFFFF)
389a23fd118Syl 	u64 spdm_overwrite;
390a23fd118Syl #define XGE_HAL_SPDM_OVERWRITE_ERR_SPDM_ENTRY(spdm_overwrite)  \
391a23fd118Syl 				(u8)((spdm_overwrite >> 48) & 0xff)
392a23fd118Syl #define XGE_HAL_SPDM_OVERWRITE_ERR_SPDM_DW(spdm_overwrite)  \
393a23fd118Syl 				(u8)((spdm_overwrite >> 40) & 0x3)
394a23fd118Syl #define XGE_HAL_SPDM_OVERWRITE_ERR_SPDM_LINE(spdm_overwrite)  \
395a23fd118Syl 				(u8)((spdm_overwrite >> 32) & 0x7)
396a23fd118Syl 	u64 cfg_addr_on_dperr;
397a23fd118Syl 	u64 pif_addr_on_dperr;
398a23fd118Syl 	u64 tags_in_use;
399a23fd118Syl 	u64 rd_req_types;
400a23fd118Syl 	u64 split_table_line;
401a23fd118Syl 	u64 unxp_split_add_ph;
402a23fd118Syl 	u64 unexp_split_attr_ph;
403a23fd118Syl 	u64 split_message;
404a23fd118Syl 	u64 spdm_structure;
405a23fd118Syl #define XGE_HAL_SPDM_MAX_ENTRIES(spdm_structure)  (u16)(spdm_structure >> 48)
406a23fd118Syl #define XGE_HAL_SPDM_INT_QW_PER_ENTRY(spdm_structure)  \
407a23fd118Syl 				(u8)((spdm_structure >> 40) & 0xff)
408a23fd118Syl #define XGE_HAL_SPDM_PCI_QW_PER_ENTRY(spdm_structure)  \
409a23fd118Syl 				(u8)((spdm_structure >> 32) & 0xff)
410a23fd118Syl 
411a23fd118Syl 	u64 txdw_ptr_cnt_0;
412a23fd118Syl 	u64 txdw_ptr_cnt_1;
413a23fd118Syl 	u64 txdw_ptr_cnt_2;
414a23fd118Syl 	u64 txdw_ptr_cnt_3;
415a23fd118Syl 	u64 txdw_ptr_cnt_4;
416a23fd118Syl 	u64 txdw_ptr_cnt_5;
417a23fd118Syl 	u64 txdw_ptr_cnt_6;
418a23fd118Syl 	u64 txdw_ptr_cnt_7;
419a23fd118Syl 	u64 rxdw_cnt_ring_0;
420a23fd118Syl 	u64 rxdw_cnt_ring_1;
421a23fd118Syl 	u64 rxdw_cnt_ring_2;
422a23fd118Syl 	u64 rxdw_cnt_ring_3;
423a23fd118Syl 	u64 rxdw_cnt_ring_4;
424a23fd118Syl 	u64 rxdw_cnt_ring_5;
425a23fd118Syl 	u64 rxdw_cnt_ring_6;
426a23fd118Syl 	u64 rxdw_cnt_ring_7;
427a23fd118Syl 
428a23fd118Syl 	u8  unused8[0x410];
429a23fd118Syl 
430a23fd118Syl /* TxDMA registers */
431a23fd118Syl 	u64 txdma_int_status;
432a23fd118Syl 	u64 txdma_int_mask;
433a23fd118Syl #define XGE_HAL_TXDMA_PFC_INT			BIT(0)
434a23fd118Syl #define XGE_HAL_TXDMA_TDA_INT			BIT(1)
435a23fd118Syl #define XGE_HAL_TXDMA_PCC_INT			BIT(2)
436a23fd118Syl #define XGE_HAL_TXDMA_TTI_INT			BIT(3)
437a23fd118Syl #define XGE_HAL_TXDMA_LSO_INT			BIT(4)
438a23fd118Syl #define XGE_HAL_TXDMA_TPA_INT			BIT(5)
439a23fd118Syl #define XGE_HAL_TXDMA_SM_INT			BIT(6)
440a23fd118Syl 	u64 pfc_err_reg;
4417eced415Sxw #define XGE_HAL_PFC_ECC_SG_ERR			BIT(7)
4427eced415Sxw #define XGE_HAL_PFC_ECC_DB_ERR			BIT(15)
4437eced415Sxw #define XGE_HAL_PFC_SM_ERR_ALARM		BIT(23)
4447eced415Sxw #define XGE_HAL_PFC_MISC_0_ERR			BIT(31)
4457eced415Sxw #define XGE_HAL_PFC_MISC_1_ERR			BIT(32)
4467eced415Sxw #define XGE_HAL_PFC_PCIX_ERR			BIT(39)
447a23fd118Syl 	u64 pfc_err_mask;
448a23fd118Syl 	u64 pfc_err_alarm;
449a23fd118Syl 
450a23fd118Syl 	u64 tda_err_reg;
4517eced415Sxw #define XGE_HAL_TDA_Fn_ECC_SG_ERR		vBIT(0xff,0,8)
4527eced415Sxw #define XGE_HAL_TDA_Fn_ECC_DB_ERR		vBIT(0xff,8,8)
4537eced415Sxw #define XGE_HAL_TDA_SM0_ERR_ALARM		BIT(22)
4547eced415Sxw #define XGE_HAL_TDA_SM1_ERR_ALARM		BIT(23)
4557eced415Sxw #define XGE_HAL_TDA_PCIX_ERR			BIT(39)
456a23fd118Syl 	u64 tda_err_mask;
457a23fd118Syl 	u64 tda_err_alarm;
458a23fd118Syl 
459a23fd118Syl 	u64 pcc_err_reg;
4607eced415Sxw #define XGE_HAL_PCC_FB_ECC_SG_ERR		vBIT(0xFF,0,8)
4617eced415Sxw #define XGE_HAL_PCC_TXB_ECC_SG_ERR		vBIT(0xFF,8,8)
4627eced415Sxw #define XGE_HAL_PCC_FB_ECC_DB_ERR		vBIT(0xFF,16, 8)
4637eced415Sxw #define XGE_HAL_PCC_TXB_ECC_DB_ERR		vBIT(0xff,24,8)
4647eced415Sxw #define XGE_HAL_PCC_SM_ERR_ALARM		vBIT(0xff,32,8)
4657eced415Sxw #define XGE_HAL_PCC_WR_ERR_ALARM		vBIT(0xff,40,8)
4667eced415Sxw #define XGE_HAL_PCC_N_SERR			vBIT(0xff,48,8)
4677eced415Sxw #define XGE_HAL_PCC_ENABLE_FOUR			vBIT(0x0F,0,8)
4687eced415Sxw #define XGE_HAL_PCC_6_COF_OV_ERR		BIT(56)
4697eced415Sxw #define XGE_HAL_PCC_7_COF_OV_ERR		BIT(57)
4707eced415Sxw #define XGE_HAL_PCC_6_LSO_OV_ERR		BIT(58)
4717eced415Sxw #define XGE_HAL_PCC_7_LSO_OV_ERR		BIT(59)
472a23fd118Syl 	u64 pcc_err_mask;
473a23fd118Syl 	u64 pcc_err_alarm;
474a23fd118Syl 
475a23fd118Syl 	u64 tti_err_reg;
4767eced415Sxw #define XGE_HAL_TTI_ECC_SG_ERR			BIT(7)
4777eced415Sxw #define XGE_HAL_TTI_ECC_DB_ERR			BIT(15)
4787eced415Sxw #define XGE_HAL_TTI_SM_ERR_ALARM		BIT(23)
479a23fd118Syl 	u64 tti_err_mask;
480a23fd118Syl 	u64 tti_err_alarm;
481a23fd118Syl 
482a23fd118Syl 	u64 lso_err_reg;
4837eced415Sxw #define XGE_HAL_LSO6_SEND_OFLOW			BIT(12)
4847eced415Sxw #define XGE_HAL_LSO7_SEND_OFLOW			BIT(13)
4857eced415Sxw #define XGE_HAL_LSO6_ABORT			BIT(14)
4867eced415Sxw #define XGE_HAL_LSO7_ABORT			BIT(15)
4877eced415Sxw #define XGE_HAL_LSO6_SM_ERR_ALARM		BIT(22)
4887eced415Sxw #define XGE_HAL_LSO7_SM_ERR_ALARM		BIT(23)
489a23fd118Syl 	u64 lso_err_mask;
490a23fd118Syl 	u64 lso_err_alarm;
491a23fd118Syl 
492a23fd118Syl 	u64 tpa_err_reg;
4937eced415Sxw #define XGE_HAL_TPA_TX_FRM_DROP			BIT(7)
4947eced415Sxw #define XGE_HAL_TPA_SM_ERR_ALARM		BIT(23)
495a23fd118Syl 	u64 tpa_err_mask;
496a23fd118Syl 	u64 tpa_err_alarm;
497a23fd118Syl 
498a23fd118Syl 	u64 sm_err_reg;
4997eced415Sxw #define XGE_HAL_SM_SM_ERR_ALARM			BIT(15)
500a23fd118Syl 	u64 sm_err_mask;
501a23fd118Syl 	u64 sm_err_alarm;
502a23fd118Syl 
503a23fd118Syl 	u8 unused9[0x100 - 0xB8];
504a23fd118Syl 
505a23fd118Syl /* TxDMA arbiter */
506a23fd118Syl 	u64 tx_dma_wrap_stat;
507a23fd118Syl 
508a23fd118Syl /* Tx FIFO controller */
509a23fd118Syl #define XGE_HAL_X_MAX_FIFOS                        8
510a23fd118Syl #define XGE_HAL_X_FIFO_MAX_LEN                     0x1FFF	/*8191 */
511a23fd118Syl 	u64 tx_fifo_partition_0;
512a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_EN               BIT(0)
513a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_0_PRI(val)       vBIT(val,5,3)
514a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_0_LEN(val)       vBIT(val,19,13)
515a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_1_PRI(val)       vBIT(val,37,3)
516a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_1_LEN(val)       vBIT(val,51,13  )
517a23fd118Syl 
518a23fd118Syl 	u64 tx_fifo_partition_1;
519a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_2_PRI(val)       vBIT(val,5,3)
520a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_2_LEN(val)       vBIT(val,19,13)
521a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_3_PRI(val)       vBIT(val,37,3)
522a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_3_LEN(val)       vBIT(val,51,13)
523a23fd118Syl 
524a23fd118Syl 	u64 tx_fifo_partition_2;
525a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_4_PRI(val)       vBIT(val,5,3)
526a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_4_LEN(val)       vBIT(val,19,13)
527a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_5_PRI(val)       vBIT(val,37,3)
528a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_5_LEN(val)       vBIT(val,51,13)
529a23fd118Syl 
530a23fd118Syl 	u64 tx_fifo_partition_3;
531a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_6_PRI(val)       vBIT(val,5,3)
532a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_6_LEN(val)       vBIT(val,19,13)
533a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_7_PRI(val)       vBIT(val,37,3)
534a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_7_LEN(val)       vBIT(val,51,13)
535a23fd118Syl 
536a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_PRI_0            0	/* highest */
537a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_PRI_1            1
538a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_PRI_2            2
539a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_PRI_3            3
540a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_PRI_4            4
541a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_PRI_5            5
542a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_PRI_6            6
543a23fd118Syl #define XGE_HAL_TX_FIFO_PARTITION_PRI_7            7	/* lowest */
544a23fd118Syl 
545a23fd118Syl 	u64 tx_w_round_robin_0;
546a23fd118Syl 	u64 tx_w_round_robin_1;
547a23fd118Syl 	u64 tx_w_round_robin_2;
548a23fd118Syl 	u64 tx_w_round_robin_3;
549a23fd118Syl 	u64 tx_w_round_robin_4;
550a23fd118Syl 
551a23fd118Syl 	u64 tti_command_mem;
552a23fd118Syl #define XGE_HAL_TTI_CMD_MEM_WE                     BIT(7)
553a23fd118Syl #define XGE_HAL_TTI_CMD_MEM_STROBE_NEW_CMD         BIT(15)
554a23fd118Syl #define XGE_HAL_TTI_CMD_MEM_STROBE_BEING_EXECUTED  BIT(15)
555a23fd118Syl #define XGE_HAL_TTI_CMD_MEM_OFFSET(n)              vBIT(n,26,6)
556a23fd118Syl 
557a23fd118Syl 	u64 tti_data1_mem;
558a23fd118Syl #define XGE_HAL_TTI_DATA1_MEM_TX_TIMER_VAL(n)      vBIT(n,6,26)
559a23fd118Syl #define XGE_HAL_TTI_DATA1_MEM_TX_TIMER_AC_CI(n)    vBIT(n,38,2)
560a23fd118Syl #define XGE_HAL_TTI_DATA1_MEM_TX_TIMER_AC_EN       BIT(38)
561a23fd118Syl #define XGE_HAL_TTI_DATA1_MEM_TX_TIMER_CI_EN       BIT(39)
562a23fd118Syl #define XGE_HAL_TTI_DATA1_MEM_TX_URNG_A(n)         vBIT(n,41,7)
563a23fd118Syl #define XGE_HAL_TTI_DATA1_MEM_TX_URNG_B(n)         vBIT(n,49,7)
564a23fd118Syl #define XGE_HAL_TTI_DATA1_MEM_TX_URNG_C(n)         vBIT(n,57,7)
565a23fd118Syl 
566a23fd118Syl 	u64 tti_data2_mem;
567a23fd118Syl #define XGE_HAL_TTI_DATA2_MEM_TX_UFC_A(n)          vBIT(n,0,16)
568a23fd118Syl #define XGE_HAL_TTI_DATA2_MEM_TX_UFC_B(n)          vBIT(n,16,16)
569a23fd118Syl #define XGE_HAL_TTI_DATA2_MEM_TX_UFC_C(n)          vBIT(n,32,16)
570a23fd118Syl #define XGE_HAL_TTI_DATA2_MEM_TX_UFC_D(n)          vBIT(n,48,16)
571a23fd118Syl 
572a23fd118Syl /* Tx Protocol assist */
573a23fd118Syl 	u64 tx_pa_cfg;
574a23fd118Syl #define XGE_HAL_TX_PA_CFG_IGNORE_FRM_ERR           BIT(1)
575a23fd118Syl #define XGE_HAL_TX_PA_CFG_IGNORE_SNAP_OUI          BIT(2)
576a23fd118Syl #define XGE_HAL_TX_PA_CFG_IGNORE_LLC_CTRL          BIT(3)
577a23fd118Syl #define XGE_HAL_TX_PA_CFG_IGNORE_L2_ERR		 BIT(6)
578a23fd118Syl 
579a23fd118Syl /* Recent add, used only debug purposes. */
580a23fd118Syl 	u64 pcc_enable;
581*55fea89dSDan Cross 
5828347601bSyl 	u64 pfc_monitor_0;
5838347601bSyl 	u64 pfc_monitor_1;
5848347601bSyl 	u64 pfc_monitor_2;
5858347601bSyl 	u64 pfc_monitor_3;
5868347601bSyl 	u64 txd_ownership_ctrl;
5878347601bSyl 	u64 pfc_read_cntrl;
5888347601bSyl 	u64 pfc_read_data;
589*55fea89dSDan Cross 
5908347601bSyl 	u8  unused10[0x1700 - 0x11B0];
591*55fea89dSDan Cross 
592a23fd118Syl 	u64 txdma_debug_ctrl;
593a23fd118Syl 
594a23fd118Syl 	u8 unused11[0x1800 - 0x1708];
595a23fd118Syl 
596a23fd118Syl /* RxDMA Registers */
597a23fd118Syl 	u64 rxdma_int_status;
598a23fd118Syl #define XGE_HAL_RXDMA_RC_INT                   BIT(0)
599a23fd118Syl #define XGE_HAL_RXDMA_RPA_INT                  BIT(1)
600a23fd118Syl #define XGE_HAL_RXDMA_RDA_INT                  BIT(2)
601a23fd118Syl #define XGE_HAL_RXDMA_RTI_INT                  BIT(3)
602a23fd118Syl 
603a23fd118Syl 	u64 rxdma_int_mask;
604a23fd118Syl #define XGE_HAL_RXDMA_INT_RC_INT_M             BIT(0)
605a23fd118Syl #define XGE_HAL_RXDMA_INT_RPA_INT_M            BIT(1)
606a23fd118Syl #define XGE_HAL_RXDMA_INT_RDA_INT_M            BIT(2)
607a23fd118Syl #define XGE_HAL_RXDMA_INT_RTI_INT_M            BIT(3)
608a23fd118Syl 
609a23fd118Syl 	u64 rda_err_reg;
6107eced415Sxw #define XGE_HAL_RDA_RXDn_ECC_SG_ERR		vBIT(0xFF,0,8)
6117eced415Sxw #define XGE_HAL_RDA_RXDn_ECC_DB_ERR		vBIT(0xFF,8,8)
6127eced415Sxw #define XGE_HAL_RDA_FRM_ECC_SG_ERR		BIT(23)
6137eced415Sxw #define XGE_HAL_RDA_FRM_ECC_DB_N_AERR		BIT(31)
6147eced415Sxw #define XGE_HAL_RDA_SM1_ERR_ALARM		BIT(38)
6157eced415Sxw #define XGE_HAL_RDA_SM0_ERR_ALARM		BIT(39)
6167eced415Sxw #define XGE_HAL_RDA_MISC_ERR			BIT(47)
6177eced415Sxw #define XGE_HAL_RDA_PCIX_ERR			BIT(55)
6187eced415Sxw #define XGE_HAL_RDA_RXD_ECC_DB_SERR		BIT(63)
619a23fd118Syl 	u64 rda_err_mask;
620a23fd118Syl 	u64 rda_err_alarm;
621a23fd118Syl 
622a23fd118Syl 	u64 rc_err_reg;
6237eced415Sxw #define XGE_HAL_RC_PRCn_ECC_SG_ERR		vBIT(0xFF,0,8)
6247eced415Sxw #define XGE_HAL_RC_PRCn_ECC_DB_ERR		vBIT(0xFF,8,8)
6257eced415Sxw #define XGE_HAL_RC_FTC_ECC_SG_ERR		BIT(23)
6267eced415Sxw #define XGE_HAL_RC_FTC_ECC_DB_ERR		BIT(31)
6277eced415Sxw #define XGE_HAL_RC_PRCn_SM_ERR_ALARM		vBIT(0xFF,32,8)
6287eced415Sxw #define XGE_HAL_RC_FTC_SM_ERR_ALARM		BIT(47)
6297eced415Sxw #define XGE_HAL_RC_RDA_FAIL_WR_Rn		vBIT(0xFF,48,8)
630a23fd118Syl 	u64 rc_err_mask;
631a23fd118Syl 	u64 rc_err_alarm;
632a23fd118Syl 
633a23fd118Syl 	u64 prc_pcix_err_reg;
6347eced415Sxw #define XGE_HAL_PRC_PCI_AB_RD_Rn		vBIT(0xFF,0,8)
6357eced415Sxw #define XGE_HAL_PRC_PCI_DP_RD_Rn		vBIT(0xFF,8,8)
6367eced415Sxw #define XGE_HAL_PRC_PCI_AB_WR_Rn		vBIT(0xFF,16,8)
6377eced415Sxw #define XGE_HAL_PRC_PCI_DP_WR_Rn		vBIT(0xFF,24,8)
6387eced415Sxw #define XGE_HAL_PRC_PCI_AB_F_WR_Rn		vBIT(0xFF,32,8)
6397eced415Sxw #define XGE_HAL_PRC_PCI_DP_F_WR_Rn		vBIT(0xFF,40,8)
640a23fd118Syl 	u64 prc_pcix_err_mask;
641a23fd118Syl 	u64 prc_pcix_err_alarm;
642a23fd118Syl 
643a23fd118Syl 	u64 rpa_err_reg;
6447eced415Sxw #define XGE_HAL_RPA_ECC_SG_ERR			BIT(7)
6457eced415Sxw #define XGE_HAL_RPA_ECC_DB_ERR			BIT(15)
6467eced415Sxw #define XGE_HAL_RPA_FLUSH_REQUEST		BIT(22)
6477eced415Sxw #define XGE_HAL_RPA_SM_ERR_ALARM		BIT(23)
6487eced415Sxw #define XGE_HAL_RPA_CREDIT_ERR			BIT(31)
649a23fd118Syl 	u64 rpa_err_mask;
650a23fd118Syl 	u64 rpa_err_alarm;
651a23fd118Syl 
652a23fd118Syl 	u64 rti_err_reg;
6537eced415Sxw #define XGE_HAL_RTI_ECC_SG_ERR			BIT(7)
6547eced415Sxw #define XGE_HAL_RTI_ECC_DB_ERR			BIT(15)
6557eced415Sxw #define XGE_HAL_RTI_SM_ERR_ALARM		BIT(23)
656a23fd118Syl 	u64 rti_err_mask;
657a23fd118Syl 	u64 rti_err_alarm;
658a23fd118Syl 
659a23fd118Syl 	u8 unused12[0x100 - 0x88];
660a23fd118Syl 
661a23fd118Syl /* DMA arbiter */
662a23fd118Syl 	u64 rx_queue_priority;
663a23fd118Syl #define XGE_HAL_RX_QUEUE_0_PRIORITY(val)       vBIT(val,5,3)
664a23fd118Syl #define XGE_HAL_RX_QUEUE_1_PRIORITY(val)       vBIT(val,13,3)
665a23fd118Syl #define XGE_HAL_RX_QUEUE_2_PRIORITY(val)       vBIT(val,21,3)
666a23fd118Syl #define XGE_HAL_RX_QUEUE_3_PRIORITY(val)       vBIT(val,29,3)
667a23fd118Syl #define XGE_HAL_RX_QUEUE_4_PRIORITY(val)       vBIT(val,37,3)
668a23fd118Syl #define XGE_HAL_RX_QUEUE_5_PRIORITY(val)       vBIT(val,45,3)
669a23fd118Syl #define XGE_HAL_RX_QUEUE_6_PRIORITY(val)       vBIT(val,53,3)
670a23fd118Syl #define XGE_HAL_RX_QUEUE_7_PRIORITY(val)       vBIT(val,61,3)
671a23fd118Syl 
672a23fd118Syl #define XGE_HAL_RX_QUEUE_PRI_0                 0	/* highest */
673a23fd118Syl #define XGE_HAL_RX_QUEUE_PRI_1                 1
674a23fd118Syl #define XGE_HAL_RX_QUEUE_PRI_2                 2
675a23fd118Syl #define XGE_HAL_RX_QUEUE_PRI_3                 3
676a23fd118Syl #define XGE_HAL_RX_QUEUE_PRI_4                 4
677a23fd118Syl #define XGE_HAL_RX_QUEUE_PRI_5                 5
678a23fd118Syl #define XGE_HAL_RX_QUEUE_PRI_6                 6
679a23fd118Syl #define XGE_HAL_RX_QUEUE_PRI_7                 7	/* lowest */
680a23fd118Syl 
681a23fd118Syl 	u64 rx_w_round_robin_0;
682a23fd118Syl 	u64 rx_w_round_robin_1;
683a23fd118Syl 	u64 rx_w_round_robin_2;
684a23fd118Syl 	u64 rx_w_round_robin_3;
685a23fd118Syl 	u64 rx_w_round_robin_4;
686a23fd118Syl 
687a23fd118Syl 	/* Per-ring controller regs */
688a23fd118Syl #define XGE_HAL_RX_MAX_RINGS                8
689a23fd118Syl 	u64 prc_rxd0_n[XGE_HAL_RX_MAX_RINGS];
690a23fd118Syl 	u64 prc_ctrl_n[XGE_HAL_RX_MAX_RINGS];
691a23fd118Syl #define XGE_HAL_PRC_CTRL_RC_ENABLED                    BIT(7)
692a23fd118Syl #define XGE_HAL_PRC_CTRL_RING_MODE                     (BIT(14)|BIT(15))
693a23fd118Syl #define XGE_HAL_PRC_CTRL_RING_MODE_1                   vBIT(0,14,2)
694a23fd118Syl #define XGE_HAL_PRC_CTRL_RING_MODE_3                   vBIT(1,14,2)
695a23fd118Syl #define XGE_HAL_PRC_CTRL_RING_MODE_5                   vBIT(2,14,2)
696a23fd118Syl #define XGE_HAL_PRC_CTRL_RING_MODE_x                   vBIT(3,14,2)
697a23fd118Syl #define XGE_HAL_PRC_CTRL_NO_SNOOP(n)                   vBIT(n,22,2)
6988347601bSyl #define XGE_HAL_PRC_CTRL_RTH_DISABLE                   BIT(31)
6998347601bSyl #define XGE_HAL_PRC_CTRL_BIMODAL_INTERRUPT             BIT(37)
7008347601bSyl #define XGE_HAL_PRC_CTRL_GROUP_READS                   BIT(38)
701a23fd118Syl #define XGE_HAL_PRC_CTRL_RXD_BACKOFF_INTERVAL(val)     vBIT(val,40,24)
702a23fd118Syl 
703a23fd118Syl 	u64 prc_alarm_action;
704a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RR_R0_STOP            BIT(3)
705a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RW_R0_STOP            BIT(7)
706a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RR_R1_STOP            BIT(11)
707a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RW_R1_STOP            BIT(15)
708a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RR_R2_STOP            BIT(19)
709a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RW_R2_STOP            BIT(23)
710a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RR_R3_STOP            BIT(27)
711a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RW_R3_STOP            BIT(31)
712a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RR_R4_STOP            BIT(35)
713a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RW_R4_STOP            BIT(39)
714a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RR_R5_STOP            BIT(43)
715a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RW_R5_STOP            BIT(47)
716a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RR_R6_STOP            BIT(51)
717a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RW_R6_STOP            BIT(55)
718a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RR_R7_STOP            BIT(59)
719a23fd118Syl #define XGE_HAL_PRC_ALARM_ACTION_RW_R7_STOP            BIT(63)
720a23fd118Syl 
721a23fd118Syl /* Receive traffic interrupts */
722a23fd118Syl 	u64 rti_command_mem;
723a23fd118Syl #define XGE_HAL_RTI_CMD_MEM_WE                          BIT(7)
724a23fd118Syl #define XGE_HAL_RTI_CMD_MEM_STROBE                      BIT(15)
725a23fd118Syl #define XGE_HAL_RTI_CMD_MEM_STROBE_NEW_CMD              BIT(15)
726a23fd118Syl #define XGE_HAL_RTI_CMD_MEM_STROBE_CMD_BEING_EXECUTED   BIT(15)
727a23fd118Syl #define XGE_HAL_RTI_CMD_MEM_OFFSET(n)                   vBIT(n,29,3)
728a23fd118Syl 
729a23fd118Syl 	u64 rti_data1_mem;
730a23fd118Syl #define XGE_HAL_RTI_DATA1_MEM_RX_TIMER_VAL(n)      vBIT(n,3,29)
731a23fd118Syl #define XGE_HAL_RTI_DATA1_MEM_RX_TIMER_AC_EN       BIT(38)
732a23fd118Syl #define XGE_HAL_RTI_DATA1_MEM_RX_TIMER_CI_EN       BIT(39)
733a23fd118Syl #define XGE_HAL_RTI_DATA1_MEM_RX_URNG_A(n)         vBIT(n,41,7)
734a23fd118Syl #define XGE_HAL_RTI_DATA1_MEM_RX_URNG_B(n)         vBIT(n,49,7)
735a23fd118Syl #define XGE_HAL_RTI_DATA1_MEM_RX_URNG_C(n)         vBIT(n,57,7)
736a23fd118Syl 
737a23fd118Syl 	u64 rti_data2_mem;
738a23fd118Syl #define XGE_HAL_RTI_DATA2_MEM_RX_UFC_A(n)          vBIT(n,0,16)
739a23fd118Syl #define XGE_HAL_RTI_DATA2_MEM_RX_UFC_B(n)          vBIT(n,16,16)
740a23fd118Syl #define XGE_HAL_RTI_DATA2_MEM_RX_UFC_C(n)          vBIT(n,32,16)
741a23fd118Syl #define XGE_HAL_RTI_DATA2_MEM_RX_UFC_D(n)          vBIT(n,48,16)
742a23fd118Syl 
743a23fd118Syl 	u64 rx_pa_cfg;
744a23fd118Syl #define XGE_HAL_RX_PA_CFG_IGNORE_FRM_ERR           BIT(1)
745a23fd118Syl #define XGE_HAL_RX_PA_CFG_IGNORE_SNAP_OUI          BIT(2)
746a23fd118Syl #define XGE_HAL_RX_PA_CFG_IGNORE_LLC_CTRL          BIT(3)
747a23fd118Syl #define XGE_HAL_RX_PA_CFG_SCATTER_MODE(n)          vBIT(n,6,1)
748a23fd118Syl #define XGE_HAL_RX_PA_CFG_STRIP_VLAN_TAG_MODE(n)   vBIT(n,15,1)
749a23fd118Syl 
750a23fd118Syl 	u8 unused13_0[0x8];
751a23fd118Syl 
752a23fd118Syl 	u64 ring_bump_counter1;
753a23fd118Syl 	u64 ring_bump_counter2;
754a23fd118Syl #define XGE_HAL_RING_BUMP_CNT(i, val) (u16)(val >> (48 - (16 * (i % 4))))
755a23fd118Syl 
756a23fd118Syl 	u8 unused13[0x700 - 0x1f0];
757a23fd118Syl 
758a23fd118Syl 	u64 rxdma_debug_ctrl;
759a23fd118Syl 
760a23fd118Syl 	u8 unused14[0x2000 - 0x1f08];
761a23fd118Syl 
762a23fd118Syl /* Media Access Controller Register */
763a23fd118Syl 	u64 mac_int_status;
764a23fd118Syl 	u64 mac_int_mask;
765a23fd118Syl #define XGE_HAL_MAC_INT_STATUS_TMAC_INT            BIT(0)
766a23fd118Syl #define XGE_HAL_MAC_INT_STATUS_RMAC_INT            BIT(1)
767a23fd118Syl 
768a23fd118Syl 	u64 mac_tmac_err_reg;
769*55fea89dSDan Cross #define XGE_HAL_TMAC_ECC_DB_ERR			BIT(15)
7707eced415Sxw #define XGE_HAL_TMAC_TX_BUF_OVRN		BIT(23)
7717eced415Sxw #define XGE_HAL_TMAC_TX_CRI_ERR		   	BIT(31)
7727eced415Sxw #define XGE_HAL_TMAC_TX_SM_ERR			BIT(39)
773a23fd118Syl 	u64 mac_tmac_err_mask;
774a23fd118Syl 	u64 mac_tmac_err_alarm;
775a23fd118Syl 
776a23fd118Syl 	u64 mac_rmac_err_reg;
7777eced415Sxw #define XGE_HAL_RMAC_RX_BUFF_OVRN		BIT(0)
7787eced415Sxw #define XGE_HAL_RMAC_RTH_SPDM_ECC_SG_ERR	BIT(0)
7797eced415Sxw #define XGE_HAL_RMAC_RTS_ECC_DB_ERR		BIT(0)
7807eced415Sxw #define XGE_HAL_RMAC_ECC_DB_ERR			BIT(0)
7817eced415Sxw #define XGE_HAL_RMAC_RTH_SPDM_ECC_DB_ERR	BIT(0)
7827eced415Sxw #define XGE_HAL_RMAC_LINK_STATE_CHANGE_INT	BIT(0)
7837eced415Sxw #define XGE_HAL_RMAC_RX_SM_ERR			BIT(39)
784a23fd118Syl 	u64 mac_rmac_err_mask;
785a23fd118Syl 	u64 mac_rmac_err_alarm;
786a23fd118Syl 
787a23fd118Syl 	u8 unused15[0x100 - 0x40];
788a23fd118Syl 
789a23fd118Syl 	u64 mac_cfg;
790a23fd118Syl #define XGE_HAL_MAC_CFG_TMAC_ENABLE             BIT(0)
791a23fd118Syl #define XGE_HAL_MAC_CFG_RMAC_ENABLE             BIT(1)
792a23fd118Syl #define XGE_HAL_MAC_CFG_LAN_NOT_WAN             BIT(2)
793a23fd118Syl #define XGE_HAL_MAC_CFG_TMAC_LOOPBACK           BIT(3)
794a23fd118Syl #define XGE_HAL_MAC_CFG_TMAC_APPEND_PAD         BIT(4)
795a23fd118Syl #define XGE_HAL_MAC_CFG_RMAC_STRIP_FCS          BIT(5)
796a23fd118Syl #define XGE_HAL_MAC_CFG_RMAC_STRIP_PAD          BIT(6)
797a23fd118Syl #define XGE_HAL_MAC_CFG_RMAC_PROM_ENABLE        BIT(7)
798a23fd118Syl #define XGE_HAL_MAC_RMAC_DISCARD_PFRM           BIT(8)
799a23fd118Syl #define XGE_HAL_MAC_RMAC_BCAST_ENABLE           BIT(9)
800a23fd118Syl #define XGE_HAL_MAC_RMAC_ALL_ADDR_ENABLE        BIT(10)
801a23fd118Syl #define XGE_HAL_MAC_RMAC_INVLD_IPG_THR(val)     vBIT(val,16,8)
802a23fd118Syl 
803a23fd118Syl 	u64 tmac_avg_ipg;
804a23fd118Syl #define XGE_HAL_TMAC_AVG_IPG(val)           vBIT(val,0,8)
805a23fd118Syl 
806a23fd118Syl 	u64 rmac_max_pyld_len;
807a23fd118Syl #define XGE_HAL_RMAC_MAX_PYLD_LEN(val)      vBIT(val,2,14)
808a23fd118Syl 
809a23fd118Syl 	u64 rmac_err_cfg;
810a23fd118Syl #define XGE_HAL_RMAC_ERR_FCS                    BIT(0)
811a23fd118Syl #define XGE_HAL_RMAC_ERR_FCS_ACCEPT             BIT(1)
812a23fd118Syl #define XGE_HAL_RMAC_ERR_TOO_LONG               BIT(1)
813a23fd118Syl #define XGE_HAL_RMAC_ERR_TOO_LONG_ACCEPT        BIT(1)
814a23fd118Syl #define XGE_HAL_RMAC_ERR_RUNT                   BIT(2)
815a23fd118Syl #define XGE_HAL_RMAC_ERR_RUNT_ACCEPT            BIT(2)
816a23fd118Syl #define XGE_HAL_RMAC_ERR_LEN_MISMATCH           BIT(3)
817a23fd118Syl #define XGE_HAL_RMAC_ERR_LEN_MISMATCH_ACCEPT    BIT(3)
818a23fd118Syl 
819a23fd118Syl 	u64 rmac_cfg_key;
820a23fd118Syl #define XGE_HAL_RMAC_CFG_KEY(val)               vBIT(val,0,16)
821a23fd118Syl 
822da14cebeSEric Cheng #define XGE_HAL_MAX_MAC_ADDRESSES               256
823da14cebeSEric Cheng #define XGE_HAL_MAC_MC_ALL_MC_ADDR_OFFSET       255
8248347601bSyl #define XGE_HAL_MAX_MAC_ADDRESSES_HERC          256
8258347601bSyl #define XGE_HAL_MAC_MC_ALL_MC_ADDR_OFFSET_HERC  255
8268347601bSyl 
827a23fd118Syl 	u64 rmac_addr_cmd_mem;
828a23fd118Syl #define XGE_HAL_RMAC_ADDR_CMD_MEM_WE                    BIT(7)
829a23fd118Syl #define XGE_HAL_RMAC_ADDR_CMD_MEM_RD                    0
830a23fd118Syl #define XGE_HAL_RMAC_ADDR_CMD_MEM_STROBE_NEW_CMD        BIT(15)
831a23fd118Syl #define XGE_HAL_RMAC_ADDR_CMD_MEM_STROBE_CMD_EXECUTING  BIT(15)
832a23fd118Syl #define XGE_HAL_RMAC_ADDR_CMD_MEM_OFFSET(n)             vBIT(n,26,6)
833a23fd118Syl 
834a23fd118Syl 	u64 rmac_addr_data0_mem;
835a23fd118Syl #define XGE_HAL_RMAC_ADDR_DATA0_MEM_ADDR(n)    vBIT(n,0,48)
836a23fd118Syl #define XGE_HAL_RMAC_ADDR_DATA0_MEM_USER       BIT(48)
837a23fd118Syl 
838a23fd118Syl 	u64 rmac_addr_data1_mem;
839a23fd118Syl #define XGE_HAL_RMAC_ADDR_DATA1_MEM_MASK(n)    vBIT(n,0,48)
840a23fd118Syl 
841a23fd118Syl 	u8 unused16[0x8];
842a23fd118Syl 
843a23fd118Syl /*
844a23fd118Syl         u64 rmac_addr_cfg;
845a23fd118Syl #define XGE_HAL_RMAC_ADDR_UCASTn_EN(n)     mBIT(0)_n(n)
846a23fd118Syl #define XGE_HAL_RMAC_ADDR_MCASTn_EN(n)     mBIT(0)_n(n)
847a23fd118Syl #define XGE_HAL_RMAC_ADDR_BCAST_EN         vBIT(0)_48
848a23fd118Syl #define XGE_HAL_RMAC_ADDR_ALL_ADDR_EN      vBIT(0)_49
849a23fd118Syl */
850a23fd118Syl 	u64 tmac_ipg_cfg;
851a23fd118Syl 
852a23fd118Syl 	u64 rmac_pause_cfg;
853a23fd118Syl #define XGE_HAL_RMAC_PAUSE_GEN_EN          BIT(0)
854a23fd118Syl #define XGE_HAL_RMAC_PAUSE_RCV_EN          BIT(1)
855a23fd118Syl #define XGE_HAL_RMAC_PAUSE_HG_PTIME_DEF    vBIT(0xFFFF,16,16)
856a23fd118Syl #define XGE_HAL_RMAC_PAUSE_HG_PTIME(val)    vBIT(val,16,16)
857a23fd118Syl 
858a23fd118Syl 	u64 rmac_red_cfg;
859a23fd118Syl 
860a23fd118Syl 	u64 rmac_red_rate_q0q3;
861a23fd118Syl 	u64 rmac_red_rate_q4q7;
862a23fd118Syl 
863a23fd118Syl 	u64 mac_link_util;
864a23fd118Syl #define XGE_HAL_MAC_TX_LINK_UTIL           vBIT(0xFE,1,7)
865a23fd118Syl #define XGE_HAL_MAC_TX_LINK_UTIL_DISABLE   vBIT(0xF, 8,4)
866a23fd118Syl #define XGE_HAL_MAC_TX_LINK_UTIL_VAL( n )  vBIT(n,8,4)
867a23fd118Syl #define XGE_HAL_MAC_RX_LINK_UTIL           vBIT(0xFE,33,7)
868a23fd118Syl #define XGE_HAL_MAC_RX_LINK_UTIL_DISABLE   vBIT(0xF,40,4)
869a23fd118Syl #define XGE_HAL_MAC_RX_LINK_UTIL_VAL( n )  vBIT(n,40,4)
870a23fd118Syl 
871a23fd118Syl #define XGE_HAL_MAC_LINK_UTIL_DISABLE (XGE_HAL_MAC_TX_LINK_UTIL_DISABLE | \
872a23fd118Syl 				       XGE_HAL_MAC_RX_LINK_UTIL_DISABLE)
873a23fd118Syl 
874a23fd118Syl 	u64 rmac_invalid_ipg;
875a23fd118Syl 
876a23fd118Syl /* rx traffic steering */
877a23fd118Syl #define XGE_HAL_MAC_RTS_FRM_LEN_SET(len)	vBIT(len,2,14)
878a23fd118Syl 	u64 rts_frm_len_n[8];
879a23fd118Syl 
880a23fd118Syl 	u64 rts_qos_steering;
881a23fd118Syl 
882a23fd118Syl #define XGE_HAL_MAX_DIX_MAP                         4
883a23fd118Syl 	u64 rts_dix_map_n[XGE_HAL_MAX_DIX_MAP];
884a23fd118Syl #define XGE_HAL_RTS_DIX_MAP_ETYPE(val)             vBIT(val,0,16)
885a23fd118Syl #define XGE_HAL_RTS_DIX_MAP_SCW(val)               BIT(val,21)
886a23fd118Syl 
887a23fd118Syl 	u64 rts_q_alternates;
888a23fd118Syl 	u64 rts_default_q;
889a23fd118Syl #define XGE_HAL_RTS_DEFAULT_Q(n)		   vBIT(n,5,3)
890a23fd118Syl 
891a23fd118Syl 	u64 rts_ctrl;
892a23fd118Syl #define XGE_HAL_RTS_CTRL_IGNORE_SNAP_OUI           BIT(2)
893a23fd118Syl #define XGE_HAL_RTS_CTRL_IGNORE_LLC_CTRL           BIT(3)
894a23fd118Syl #define XGE_HAL_RTS_CTRL_ENHANCED_MODE		   BIT(7)
895a23fd118Syl 
896a23fd118Syl 	u64 rts_pn_cam_ctrl;
897a23fd118Syl #define XGE_HAL_RTS_PN_CAM_CTRL_WE                 BIT(7)
898a23fd118Syl #define XGE_HAL_RTS_PN_CAM_CTRL_STROBE_NEW_CMD     BIT(15)
899a23fd118Syl #define XGE_HAL_RTS_PN_CAM_CTRL_STROBE_BEING_EXECUTED   BIT(15)
900a23fd118Syl #define XGE_HAL_RTS_PN_CAM_CTRL_OFFSET(n)          vBIT(n,24,8)
901a23fd118Syl 	u64 rts_pn_cam_data;
902a23fd118Syl #define XGE_HAL_RTS_PN_CAM_DATA_TCP_SELECT         BIT(7)
903a23fd118Syl #define XGE_HAL_RTS_PN_CAM_DATA_PORT(val)          vBIT(val,8,16)
904a23fd118Syl #define XGE_HAL_RTS_PN_CAM_DATA_SCW(val)           vBIT(val,24,8)
905a23fd118Syl 
906a23fd118Syl 	u64 rts_ds_mem_ctrl;
907a23fd118Syl #define XGE_HAL_RTS_DS_MEM_CTRL_WE                 BIT(7)
908a23fd118Syl #define XGE_HAL_RTS_DS_MEM_CTRL_STROBE_NEW_CMD     BIT(15)
909a23fd118Syl #define XGE_HAL_RTS_DS_MEM_CTRL_STROBE_CMD_BEING_EXECUTED   BIT(15)
910a23fd118Syl #define XGE_HAL_RTS_DS_MEM_CTRL_OFFSET(n)          vBIT(n,26,6)
911a23fd118Syl 	u64 rts_ds_mem_data;
912a23fd118Syl #define XGE_HAL_RTS_DS_MEM_DATA(n)                 vBIT(n,0,8)
913a23fd118Syl 
9148347601bSyl 	u8  unused16_1[0x308 - 0x220];
915*55fea89dSDan Cross 
9168347601bSyl 	u64 rts_vid_mem_ctrl;
9178347601bSyl 	u64 rts_vid_mem_data;
9188347601bSyl 	u64 rts_p0_p3_map;
9198347601bSyl 	u64 rts_p4_p7_map;
9208347601bSyl 	u64 rts_p8_p11_map;
9218347601bSyl 	u64 rts_p12_p15_map;
922a23fd118Syl 
923a23fd118Syl 	u64 rts_mac_cfg;
924a23fd118Syl #define XGE_HAL_RTS_MAC_SECT0_EN                    BIT(0)
925a23fd118Syl #define XGE_HAL_RTS_MAC_SECT1_EN                    BIT(1)
926a23fd118Syl #define XGE_HAL_RTS_MAC_SECT2_EN                    BIT(2)
927a23fd118Syl #define XGE_HAL_RTS_MAC_SECT3_EN                    BIT(3)
928a23fd118Syl #define XGE_HAL_RTS_MAC_SECT4_EN                    BIT(4)
929a23fd118Syl #define XGE_HAL_RTS_MAC_SECT5_EN                    BIT(5)
930a23fd118Syl #define XGE_HAL_RTS_MAC_SECT6_EN                    BIT(6)
931a23fd118Syl #define XGE_HAL_RTS_MAC_SECT7_EN                    BIT(7)
932a23fd118Syl 
9338347601bSyl 	u8 unused16_2[0x380 - 0x340];
934a23fd118Syl 
935a23fd118Syl 	u64 rts_rth_cfg;
936a23fd118Syl #define XGE_HAL_RTS_RTH_EN                         BIT(3)
937a23fd118Syl #define XGE_HAL_RTS_RTH_BUCKET_SIZE(n)             vBIT(n,4,4)
938a23fd118Syl #define XGE_HAL_RTS_RTH_ALG_SEL_MS                 BIT(11)
939a23fd118Syl #define XGE_HAL_RTS_RTH_TCP_IPV4_EN                BIT(15)
940a23fd118Syl #define XGE_HAL_RTS_RTH_UDP_IPV4_EN                BIT(19)
941a23fd118Syl #define XGE_HAL_RTS_RTH_IPV4_EN                    BIT(23)
942a23fd118Syl #define XGE_HAL_RTS_RTH_TCP_IPV6_EN                BIT(27)
943a23fd118Syl #define XGE_HAL_RTS_RTH_UDP_IPV6_EN                BIT(31)
944a23fd118Syl #define XGE_HAL_RTS_RTH_IPV6_EN                    BIT(35)
945a23fd118Syl #define XGE_HAL_RTS_RTH_TCP_IPV6_EX_EN             BIT(39)
946a23fd118Syl #define XGE_HAL_RTS_RTH_UDP_IPV6_EX_EN             BIT(43)
947a23fd118Syl #define XGE_HAL_RTS_RTH_IPV6_EX_EN                 BIT(47)
948a23fd118Syl 
949a23fd118Syl 	u64 rts_rth_map_mem_ctrl;
950a23fd118Syl #define XGE_HAL_RTS_RTH_MAP_MEM_CTRL_WE            BIT(7)
951a23fd118Syl #define XGE_HAL_RTS_RTH_MAP_MEM_CTRL_STROBE        BIT(15)
952a23fd118Syl #define XGE_HAL_RTS_RTH_MAP_MEM_CTRL_OFFSET(n)     vBIT(n,24,8)
953a23fd118Syl 
954a23fd118Syl 	u64 rts_rth_map_mem_data;
955a23fd118Syl #define XGE_HAL_RTS_RTH_MAP_MEM_DATA_ENTRY_EN      BIT(3)
956a23fd118Syl #define XGE_HAL_RTS_RTH_MAP_MEM_DATA(n)            vBIT(n,5,3)
957a23fd118Syl 
958a23fd118Syl 	u64 rts_rth_spdm_mem_ctrl;
959a23fd118Syl #define XGE_HAL_RTS_RTH_SPDM_MEM_CTRL_STROBE       BIT(15)
960a23fd118Syl #define XGE_HAL_RTS_RTH_SPDM_MEM_CTRL_LINE_SEL(n)  vBIT(n,21,3)
961a23fd118Syl #define XGE_HAL_RTS_RTH_SPDM_MEM_CTRL_OFFSET(n)    vBIT(n,24,8)
962a23fd118Syl 
963a23fd118Syl 	u64 rts_rth_spdm_mem_data;
964a23fd118Syl 
965a23fd118Syl 	u64 rts_rth_jhash_cfg;
966a23fd118Syl #define XGE_HAL_RTS_RTH_JHASH_GOLDEN(n)            vBIT(n,0,32)
967a23fd118Syl #define XGE_HAL_RTS_RTH_JHASH_INIT_VAL(n)          vBIT(n,32,32)
968a23fd118Syl 
969a23fd118Syl 	u64 rts_rth_hash_mask[5]; /* rth mask's 0...4 */
970a23fd118Syl 	u64 rts_rth_hash_mask_5;
971a23fd118Syl #define XGE_HAL_RTH_HASH_MASK_5(n)                 vBIT(n,0,32)
972a23fd118Syl 
973a23fd118Syl 	u64 rts_rth_status;
974a23fd118Syl #define XGE_HAL_RTH_STATUS_SPDM_USE_L4             BIT(3)
975a23fd118Syl 
9768347601bSyl 	u8  unused17[0x400 - 0x3E8];
977*55fea89dSDan Cross 
9788347601bSyl 	u64 rmac_red_fine_q0q3;
979*55fea89dSDan Cross 	u64 rmac_red_fine_q4q7;
9808347601bSyl 	u64 rmac_pthresh_cross;
9818347601bSyl 	u64 rmac_rthresh_cross;
9828347601bSyl 	u64 rmac_pnum_range[32];
9838347601bSyl 
9848347601bSyl 	u64 rmac_mp_crc_0;
9858347601bSyl 	u64 rmac_mp_mask_a_0;
9868347601bSyl 	u64 rmac_mp_mask_b_0;
987*55fea89dSDan Cross 
9888347601bSyl 	u64 rmac_mp_crc_1;
9898347601bSyl 	u64 rmac_mp_mask_a_1;
9908347601bSyl 	u64 rmac_mp_mask_b_1;
991*55fea89dSDan Cross 
9928347601bSyl 	u64 rmac_mp_crc_2;
9938347601bSyl 	u64 rmac_mp_mask_a_2;
9948347601bSyl 	u64 rmac_mp_mask_b_2;
995*55fea89dSDan Cross 
9968347601bSyl 	u64 rmac_mp_crc_3;
9978347601bSyl 	u64 rmac_mp_mask_a_3;
9988347601bSyl 	u64 rmac_mp_mask_b_3;
999*55fea89dSDan Cross 
10008347601bSyl 	u64 rmac_mp_crc_4;
10018347601bSyl 	u64 rmac_mp_mask_a_4;
10028347601bSyl 	u64 rmac_mp_mask_b_4;
1003*55fea89dSDan Cross 
10048347601bSyl 	u64 rmac_mp_crc_5;
10058347601bSyl 	u64 rmac_mp_mask_a_5;
10068347601bSyl 	u64 rmac_mp_mask_b_5;
1007*55fea89dSDan Cross 
10088347601bSyl 	u64 rmac_mp_crc_6;
10098347601bSyl 	u64 rmac_mp_mask_a_6;
10108347601bSyl 	u64 rmac_mp_mask_b_6;
10118347601bSyl 
10128347601bSyl 	u64 rmac_mp_crc_7;
10138347601bSyl 	u64 rmac_mp_mask_a_7;
10148347601bSyl 	u64 rmac_mp_mask_b_7;
10158347601bSyl 
10168347601bSyl 	u64 mac_ctrl;
10178347601bSyl 	u64 activity_control;
1018*55fea89dSDan Cross 
10198347601bSyl 	u8  unused17_2[0x700 - 0x5F0];
1020a23fd118Syl 
1021a23fd118Syl 	u64 mac_debug_ctrl;
1022a23fd118Syl #define XGE_HAL_MAC_DBG_ACTIVITY_VALUE		   0x411040400000000ULL
1023a23fd118Syl 
1024a23fd118Syl 	u8 unused18[0x2800 - 0x2708];
1025a23fd118Syl 
1026a23fd118Syl /* memory controller registers */
1027a23fd118Syl 	u64 mc_int_status;
1028a23fd118Syl #define XGE_HAL_MC_INT_STATUS_MC_INT               BIT(0)
1029a23fd118Syl 	u64 mc_int_mask;
1030a23fd118Syl #define XGE_HAL_MC_INT_MASK_MC_INT                 BIT(0)
1031a23fd118Syl 
1032a23fd118Syl 	u64 mc_err_reg;
1033a23fd118Syl #define XGE_HAL_MC_ERR_REG_ITQ_ECC_SG_ERR_L        BIT(2) /* non-Xena */
1034a23fd118Syl #define XGE_HAL_MC_ERR_REG_ITQ_ECC_SG_ERR_U        BIT(3) /* non-Xena */
1035a23fd118Syl #define XGE_HAL_MC_ERR_REG_RLD_ECC_SG_ERR_L        BIT(4) /* non-Xena */
1036a23fd118Syl #define XGE_HAL_MC_ERR_REG_RLD_ECC_SG_ERR_U        BIT(5) /* non-Xena */
1037a23fd118Syl #define XGE_HAL_MC_ERR_REG_ETQ_ECC_SG_ERR_L        BIT(6)
1038a23fd118Syl #define XGE_HAL_MC_ERR_REG_ETQ_ECC_SG_ERR_U        BIT(7)
1039a23fd118Syl #define XGE_HAL_MC_ERR_REG_ITQ_ECC_DB_ERR_L        BIT(10) /* non-Xena */
1040a23fd118Syl #define XGE_HAL_MC_ERR_REG_ITQ_ECC_DB_ERR_U        BIT(11) /* non-Xena */
1041a23fd118Syl #define XGE_HAL_MC_ERR_REG_RLD_ECC_DB_ERR_L        BIT(12) /* non-Xena */
1042a23fd118Syl #define XGE_HAL_MC_ERR_REG_RLD_ECC_DB_ERR_U        BIT(13) /* non-Xena */
1043a23fd118Syl #define XGE_HAL_MC_ERR_REG_ETQ_ECC_DB_ERR_L        BIT(14)
1044a23fd118Syl #define XGE_HAL_MC_ERR_REG_ETQ_ECC_DB_ERR_U        BIT(15)
1045a23fd118Syl #define XGE_HAL_MC_ERR_REG_MIRI_ECC_SG_ERR_0       BIT(17)
1046a23fd118Syl #define XGE_HAL_MC_ERR_REG_MIRI_ECC_DB_ERR_0       BIT(18) /* Xena: reset */
1047a23fd118Syl #define XGE_HAL_MC_ERR_REG_MIRI_ECC_SG_ERR_1       BIT(19)
1048a23fd118Syl #define XGE_HAL_MC_ERR_REG_MIRI_ECC_DB_ERR_1       BIT(20) /* Xena: reset */
1049a23fd118Syl #define XGE_HAL_MC_ERR_REG_MIRI_CRI_ERR_0          BIT(22)
1050a23fd118Syl #define XGE_HAL_MC_ERR_REG_MIRI_CRI_ERR_1          BIT(23)
1051a23fd118Syl #define XGE_HAL_MC_ERR_REG_SM_ERR                  BIT(31)
1052a23fd118Syl #define XGE_HAL_MC_ERR_REG_PL_LOCK_N               BIT(39)
1053a23fd118Syl 
1054a23fd118Syl 	u64 mc_err_mask;
1055a23fd118Syl 	u64 mc_err_alarm;
1056a23fd118Syl 
1057a23fd118Syl 	u8 unused19[0x100 - 0x28];
1058a23fd118Syl 
1059a23fd118Syl /* MC configuration */
1060a23fd118Syl 	u64 rx_queue_cfg;
1061a23fd118Syl #define XGE_HAL_RX_QUEUE_CFG_Q0_SZ(n)              vBIT(n,0,8)
1062a23fd118Syl #define XGE_HAL_RX_QUEUE_CFG_Q1_SZ(n)              vBIT(n,8,8)
1063a23fd118Syl #define XGE_HAL_RX_QUEUE_CFG_Q2_SZ(n)              vBIT(n,16,8)
1064a23fd118Syl #define XGE_HAL_RX_QUEUE_CFG_Q3_SZ(n)              vBIT(n,24,8)
1065a23fd118Syl #define XGE_HAL_RX_QUEUE_CFG_Q4_SZ(n)              vBIT(n,32,8)
1066a23fd118Syl #define XGE_HAL_RX_QUEUE_CFG_Q5_SZ(n)              vBIT(n,40,8)
1067a23fd118Syl #define XGE_HAL_RX_QUEUE_CFG_Q6_SZ(n)              vBIT(n,48,8)
1068a23fd118Syl #define XGE_HAL_RX_QUEUE_CFG_Q7_SZ(n)              vBIT(n,56,8)
1069a23fd118Syl 
1070a23fd118Syl 	u64 mc_rldram_mrs;
1071a23fd118Syl #define XGE_HAL_MC_RLDRAM_QUEUE_SIZE_ENABLE	BIT(39)
1072a23fd118Syl #define XGE_HAL_MC_RLDRAM_MRS_ENABLE		BIT(47)
1073a23fd118Syl 
1074a23fd118Syl 	u64 mc_rldram_interleave;
1075a23fd118Syl 
1076a23fd118Syl 	u64 mc_pause_thresh_q0q3;
1077a23fd118Syl 	u64 mc_pause_thresh_q4q7;
1078a23fd118Syl 
1079a23fd118Syl 	u64 mc_red_thresh_q[8];
1080a23fd118Syl 
1081a23fd118Syl 	u8 unused20[0x200 - 0x168];
1082a23fd118Syl 	u64 mc_rldram_ref_per;
1083a23fd118Syl 	u8 unused21[0x220 - 0x208];
1084a23fd118Syl 	u64 mc_rldram_test_ctrl;
1085a23fd118Syl #define XGE_HAL_MC_RLDRAM_TEST_MODE		BIT(47)
1086a23fd118Syl #define XGE_HAL_MC_RLDRAM_TEST_WRITE		BIT(7)
1087a23fd118Syl #define XGE_HAL_MC_RLDRAM_TEST_GO		BIT(15)
1088a23fd118Syl #define XGE_HAL_MC_RLDRAM_TEST_DONE		BIT(23)
1089a23fd118Syl #define XGE_HAL_MC_RLDRAM_TEST_PASS		BIT(31)
1090a23fd118Syl 
1091a23fd118Syl 	u8 unused22[0x240 - 0x228];
1092a23fd118Syl 	u64 mc_rldram_test_add;
1093a23fd118Syl 	u8 unused23[0x260 - 0x248];
1094a23fd118Syl 	u64 mc_rldram_test_d0;
1095a23fd118Syl 	u8 unused24[0x280 - 0x268];
1096a23fd118Syl 	u64 mc_rldram_test_d1;
1097a23fd118Syl 	u8 unused25[0x300 - 0x288];
1098a23fd118Syl 	u64 mc_rldram_test_d2;
10998347601bSyl 	u8  unused26_1[0x2C00 - 0x2B08];
11008347601bSyl 	u64 mc_rldram_test_read_d0;
11018347601bSyl 	u8  unused26_2[0x20 - 0x8];
11028347601bSyl 	u64 mc_rldram_test_read_d1;
11038347601bSyl 	u8  unused26_3[0x40 - 0x28];
11048347601bSyl 	u64 mc_rldram_test_read_d2;
11058347601bSyl 	u8  unused26_4[0x60 - 0x48];
11068347601bSyl 	u64 mc_rldram_test_add_bkg;
11078347601bSyl 	u8  unused26_5[0x80 - 0x68];
11088347601bSyl 	u64 mc_rldram_test_d0_bkg;
1109*55fea89dSDan Cross 	u8  unused26_6[0xD00 - 0xC88];
11108347601bSyl 	u64 mc_rldram_test_d1_bkg;
11118347601bSyl 	u8  unused26_7[0x20 - 0x8];
11128347601bSyl 	u64 mc_rldram_test_d2_bkg;
11138347601bSyl 	u8  unused26_8[0x40 - 0x28];
11148347601bSyl 	u64 mc_rldram_test_read_d0_bkg;
11158347601bSyl 	u8  unused26_9[0x60 - 0x48];
11168347601bSyl 	u64 mc_rldram_test_read_d1_bkg;
11178347601bSyl 	u8  unused26_10[0x80 - 0x68];
11188347601bSyl 	u64 mc_rldram_test_read_d2_bkg;
11198347601bSyl 	u8  unused26_11[0xE00 - 0xD88];
11208347601bSyl 	u64 mc_rldram_generation;
11218347601bSyl 	u8  unused26_12[0x20 - 0x8];
11228347601bSyl 	u64 mc_driver;
11238347601bSyl 	u8  unused26_13[0x40 - 0x28];
1124a23fd118Syl 	u64 mc_rldram_ref_per_herc;
1125a23fd118Syl #define XGE_HAL_MC_RLDRAM_SET_REF_PERIOD(n)   vBIT(n, 0, 16)
11268347601bSyl 	u8 unused26_14[0x660 - 0x648];
1127a23fd118Syl 	u64 mc_rldram_mrs_herc;
1128a23fd118Syl #define XGE_HAL_MC_RLDRAM_MRS(n)              vBIT(n, 14, 17)
11298347601bSyl 	u8 unused26_15[0x700 - 0x668];
1130a23fd118Syl 	u64 mc_debug_ctrl;
1131a23fd118Syl 
1132a23fd118Syl 	u8 unused27[0x3000 - 0x2f08];
1133a23fd118Syl 
1134a23fd118Syl /* XGXG */
1135a23fd118Syl 	/* XGXS control registers */
1136a23fd118Syl 
1137a23fd118Syl 	u64 xgxs_int_status;
1138a23fd118Syl #define XGE_HAL_XGXS_INT_STATUS_TXGXS              BIT(0)
1139a23fd118Syl #define XGE_HAL_XGXS_INT_STATUS_RXGXS              BIT(1)
1140a23fd118Syl 	u64 xgxs_int_mask;
1141a23fd118Syl #define XGE_HAL_XGXS_INT_MASK_TXGXS                BIT(0)
1142a23fd118Syl #define XGE_HAL_XGXS_INT_MASK_RXGXS                BIT(1)
1143a23fd118Syl 
1144a23fd118Syl 	u64 xgxs_txgxs_err_reg;
11457eced415Sxw #define XGE_HAL_TXGXS_ECC_SG_ERR			BIT(7)
11467eced415Sxw #define XGE_HAL_TXGXS_ECC_DB_ERR			BIT(15)
11477eced415Sxw #define XGE_HAL_TXGXS_ESTORE_UFLOW			BIT(31)
11487eced415Sxw #define XGE_HAL_TXGXS_TX_SM_ERR				BIT(39)
1149a23fd118Syl 	u64 xgxs_txgxs_err_mask;
1150a23fd118Syl 	u64 xgxs_txgxs_err_alarm;
1151a23fd118Syl 
1152a23fd118Syl 	u64 xgxs_rxgxs_err_reg;
11537eced415Sxw #define XGE_HAL_RXGXS_ESTORE_OFLOW			BIT(7)
11547eced415Sxw #define XGE_HAL_RXGXS_RX_SM_ERR				BIT(39)
1155a23fd118Syl 	u64 xgxs_rxgxs_err_mask;
1156a23fd118Syl 	u64 xgxs_rxgxs_err_alarm;
1157a23fd118Syl 
11588347601bSyl 	u64 spi_err_reg;
11598347601bSyl 	u64 spi_err_mask;
11608347601bSyl 	u64 spi_err_alarm;
1161a23fd118Syl 
11627eced415Sxw 	u8 unused28[0x100 - 0x58];
11637eced415Sxw 
1164a23fd118Syl 	u64 xgxs_cfg;
1165a23fd118Syl 	u64 xgxs_status;
1166a23fd118Syl 
1167a23fd118Syl 	u64 xgxs_cfg_key;
11688347601bSyl 	u64 xgxs_efifo_cfg; /* CHANGED */
11698347601bSyl 	u64 rxgxs_ber_0;    /* CHANGED */
11708347601bSyl 	u64 rxgxs_ber_1;    /* CHANGED */
1171*55fea89dSDan Cross 
11728347601bSyl 	u64 spi_control;
11738347601bSyl 	u64 spi_data;
11748347601bSyl 	u64 spi_write_protect;
1175*55fea89dSDan Cross 
11768347601bSyl 	u8  unused29[0x80 - 0x48];
1177*55fea89dSDan Cross 
11788347601bSyl 	u64 xgxs_cfg_1;
1179a23fd118Syl } xge_hal_pci_bar0_t;
1180a23fd118Syl 
1181a23fd118Syl /* Using this strcture to calculate offsets */
1182a23fd118Syl typedef struct xge_hal_pci_config_le_t {
1183a23fd118Syl     u16     vendor_id;              // 0x00
1184a23fd118Syl     u16     device_id;              // 0x02
1185a23fd118Syl 
1186a23fd118Syl     u16     command;                // 0x04
1187a23fd118Syl     u16     status;                 // 0x06
1188a23fd118Syl 
1189a23fd118Syl     u8      revision;               // 0x08
1190a23fd118Syl     u8      pciClass[3];            // 0x09
1191a23fd118Syl 
1192a23fd118Syl     u8      cache_line_size;        // 0x0c
1193a23fd118Syl     u8      latency_timer;          // 0x0d
1194a23fd118Syl     u8      header_type;            // 0x0e
1195a23fd118Syl     u8      bist;                   // 0x0f
1196a23fd118Syl 
1197a23fd118Syl     u32     base_addr0_lo;          // 0x10
1198a23fd118Syl     u32     base_addr0_hi;          // 0x14
1199a23fd118Syl 
1200a23fd118Syl     u32     base_addr1_lo;          // 0x18
1201a23fd118Syl     u32     base_addr1_hi;          // 0x1C
1202a23fd118Syl 
1203a23fd118Syl     u32     not_Implemented1;       // 0x20
1204a23fd118Syl     u32     not_Implemented2;       // 0x24
1205a23fd118Syl 
1206a23fd118Syl     u32     cardbus_cis_pointer;    // 0x28
1207a23fd118Syl 
1208a23fd118Syl     u16     subsystem_vendor_id;    // 0x2c
1209a23fd118Syl     u16     subsystem_id;           // 0x2e
1210a23fd118Syl 
1211a23fd118Syl     u32     rom_base;               // 0x30
1212a23fd118Syl     u8      capabilities_pointer;   // 0x34
1213a23fd118Syl     u8      rsvd_35[3];             // 0x35
1214a23fd118Syl     u32     rsvd_38;                // 0x38
1215a23fd118Syl 
1216a23fd118Syl     u8      interrupt_line;         // 0x3c
1217a23fd118Syl     u8      interrupt_pin;          // 0x3d
1218a23fd118Syl     u8      min_grant;              // 0x3e
1219a23fd118Syl     u8      max_latency;            // 0x3f
1220a23fd118Syl 
1221a23fd118Syl     u8      msi_cap_id;             // 0x40
1222a23fd118Syl     u8      msi_next_ptr;           // 0x41
1223a23fd118Syl     u16     msi_control;            // 0x42
1224a23fd118Syl     u32     msi_lower_address;      // 0x44
1225a23fd118Syl     u32     msi_higher_address;     // 0x48
1226a23fd118Syl     u16     msi_data;               // 0x4c
1227a23fd118Syl     u16     msi_unused;             // 0x4e
1228a23fd118Syl 
1229a23fd118Syl     u8      vpd_cap_id;             // 0x50
1230a23fd118Syl     u8      vpd_next_cap;           // 0x51
1231a23fd118Syl     u16     vpd_addr;               // 0x52
1232a23fd118Syl     u32     vpd_data;               // 0x54
1233a23fd118Syl 
1234a23fd118Syl     u8      rsvd_b0[8];             // 0x58
1235a23fd118Syl 
1236a23fd118Syl     u8      pcix_cap;               // 0x60
1237a23fd118Syl     u8      pcix_next_cap;          // 0x61
1238a23fd118Syl     u16     pcix_command;           // 0x62
1239a23fd118Syl 
1240a23fd118Syl     u32     pcix_status;            // 0x64
1241a23fd118Syl 
1242a23fd118Syl     u8      rsvd_b1[XGE_HAL_PCI_XFRAME_CONFIG_SPACE_SIZE-0x68];
1243a23fd118Syl } xge_hal_pci_config_le_t;              // 0x100
1244a23fd118Syl 
1245a23fd118Syl typedef struct xge_hal_pci_config_t {
1246a23fd118Syl #ifdef XGE_OS_HOST_BIG_ENDIAN
1247a23fd118Syl     u16     device_id;              // 0x02
1248a23fd118Syl     u16     vendor_id;              // 0x00
1249a23fd118Syl 
1250a23fd118Syl     u16     status;                 // 0x06
1251a23fd118Syl     u16     command;                // 0x04
1252a23fd118Syl 
1253a23fd118Syl     u8      pciClass[3];            // 0x09
1254a23fd118Syl     u8      revision;               // 0x08
1255a23fd118Syl 
1256a23fd118Syl     u8      bist;                   // 0x0f
1257a23fd118Syl     u8      header_type;            // 0x0e
1258a23fd118Syl     u8      latency_timer;          // 0x0d
1259a23fd118Syl     u8      cache_line_size;        // 0x0c
1260a23fd118Syl 
1261a23fd118Syl     u32     base_addr0_lo;           // 0x10
1262a23fd118Syl     u32     base_addr0_hi;           // 0x14
1263a23fd118Syl 
1264a23fd118Syl     u32     base_addr1_lo;          // 0x18
1265a23fd118Syl     u32     base_addr1_hi;          // 0x1C
1266a23fd118Syl 
1267a23fd118Syl     u32     not_Implemented1;       // 0x20
1268a23fd118Syl     u32     not_Implemented2;       // 0x24
1269a23fd118Syl 
1270a23fd118Syl     u32     cardbus_cis_pointer;    // 0x28
1271a23fd118Syl 
1272a23fd118Syl     u16     subsystem_id;           // 0x2e
1273a23fd118Syl     u16     subsystem_vendor_id;    // 0x2c
1274a23fd118Syl 
1275a23fd118Syl     u32     rom_base;               // 0x30
1276a23fd118Syl     u8      rsvd_35[3];             // 0x35
1277a23fd118Syl     u8      capabilities_pointer;   // 0x34
1278a23fd118Syl     u32     rsvd_38;                // 0x38
1279a23fd118Syl 
1280a23fd118Syl     u8      max_latency;            // 0x3f
1281a23fd118Syl     u8      min_grant;              // 0x3e
1282a23fd118Syl     u8      interrupt_pin;          // 0x3d
1283a23fd118Syl     u8      interrupt_line;         // 0x3c
1284a23fd118Syl 
1285a23fd118Syl     u16     msi_control;            // 0x42
1286a23fd118Syl     u8      msi_next_ptr;           // 0x41
1287a23fd118Syl     u8      msi_cap_id;             // 0x40
1288a23fd118Syl     u32     msi_lower_address;      // 0x44
1289a23fd118Syl     u32     msi_higher_address;     // 0x48
1290a23fd118Syl     u16     msi_unused;             // 0x4e
1291a23fd118Syl     u16     msi_data;               // 0x4c
1292a23fd118Syl 
1293a23fd118Syl     u16     vpd_addr;               // 0x52
1294a23fd118Syl     u8      vpd_next_cap;           // 0x51
1295a23fd118Syl     u8      vpd_cap_id;             // 0x50
1296a23fd118Syl     u32     vpd_data;               // 0x54
1297a23fd118Syl 
1298a23fd118Syl     u8      rsvd_b0[8];             // 0x58
1299a23fd118Syl 
1300a23fd118Syl     u16     pcix_command;           // 0x62
1301a23fd118Syl     u8      pcix_next_cap;          // 0x61
1302a23fd118Syl     u8      pcix_cap;               // 0x60
1303a23fd118Syl 
1304a23fd118Syl     u32     pcix_status;            // 0x64
1305a23fd118Syl #else
1306a23fd118Syl     u16     vendor_id;              // 0x00
1307a23fd118Syl     u16     device_id;              // 0x02
1308a23fd118Syl 
1309a23fd118Syl     u16     command;                // 0x04
1310a23fd118Syl     u16     status;                 // 0x06
1311a23fd118Syl 
1312a23fd118Syl     u8      revision;               // 0x08
1313a23fd118Syl     u8      pciClass[3];            // 0x09
1314a23fd118Syl 
1315a23fd118Syl     u8      cache_line_size;        // 0x0c
1316a23fd118Syl     u8      latency_timer;          // 0x0d
1317a23fd118Syl     u8      header_type;            // 0x0e
1318a23fd118Syl     u8      bist;                   // 0x0f
1319a23fd118Syl 
1320a23fd118Syl     u32     base_addr0_lo;          // 0x10
1321a23fd118Syl     u32     base_addr0_hi;          // 0x14
1322a23fd118Syl 
1323a23fd118Syl     u32     base_addr1_lo;          // 0x18
1324a23fd118Syl     u32     base_addr1_hi;          // 0x1C
1325a23fd118Syl 
1326a23fd118Syl     u32     not_Implemented1;       // 0x20
1327a23fd118Syl     u32     not_Implemented2;       // 0x24
1328a23fd118Syl 
1329a23fd118Syl     u32     cardbus_cis_pointer;    // 0x28
1330a23fd118Syl 
1331a23fd118Syl     u16     subsystem_vendor_id;    // 0x2c
1332a23fd118Syl     u16     subsystem_id;           // 0x2e
1333a23fd118Syl 
1334a23fd118Syl     u32     rom_base;               // 0x30
1335a23fd118Syl     u8      capabilities_pointer;   // 0x34
1336a23fd118Syl     u8      rsvd_35[3];             // 0x35
1337a23fd118Syl     u32     rsvd_38;                // 0x38
1338a23fd118Syl 
1339a23fd118Syl     u8      interrupt_line;         // 0x3c
1340a23fd118Syl     u8      interrupt_pin;          // 0x3d
1341a23fd118Syl     u8      min_grant;              // 0x3e
1342a23fd118Syl     u8      max_latency;            // 0x3f
1343a23fd118Syl 
1344a23fd118Syl     u8      msi_cap_id;             // 0x40
1345a23fd118Syl     u8      msi_next_ptr;           // 0x41
1346a23fd118Syl     u16     msi_control;            // 0x42
1347a23fd118Syl     u32     msi_lower_address;      // 0x44
1348a23fd118Syl     u32     msi_higher_address;     // 0x48
1349a23fd118Syl     u16     msi_data;               // 0x4c
1350a23fd118Syl     u16     msi_unused;             // 0x4e
1351a23fd118Syl 
1352a23fd118Syl     u8      vpd_cap_id;             // 0x50
1353a23fd118Syl     u8      vpd_next_cap;           // 0x51
1354a23fd118Syl     u16     vpd_addr;               // 0x52
1355a23fd118Syl     u32     vpd_data;               // 0x54
1356a23fd118Syl 
1357a23fd118Syl     u8      rsvd_b0[8];             // 0x58
1358a23fd118Syl 
1359a23fd118Syl     u8      pcix_cap;               // 0x60
1360a23fd118Syl     u8      pcix_next_cap;          // 0x61
1361a23fd118Syl     u16     pcix_command;           // 0x62
1362a23fd118Syl 
1363a23fd118Syl     u32     pcix_status;            // 0x64
1364a23fd118Syl 
1365a23fd118Syl #endif
1366a23fd118Syl     u8      rsvd_b1[XGE_HAL_PCI_XFRAME_CONFIG_SPACE_SIZE-0x68];
1367a23fd118Syl } xge_hal_pci_config_t;               // 0x100
1368a23fd118Syl 
1369a23fd118Syl #define XGE_HAL_REG_SPACE	sizeof(xge_hal_pci_bar0_t)
1370a23fd118Syl #define XGE_HAL_EEPROM_SIZE	(0x01 << 11)
1371a23fd118Syl 
13727eced415Sxw __EXTERN_END_DECLS
13737eced415Sxw 
1374a23fd118Syl #endif /* XGE_HAL_REGS_H */
1375