xref: /freebsd/sys/dev/aq/aq2_hw.h (revision af3f2dd124f07342c273dc017bc5e73639e446a5)
1dc5c0fc5SNick Price /*-
2dc5c0fc5SNick Price  * Atlantic 2 (AQC113/114/115/116) register definitions for aq(4).
3dc5c0fc5SNick Price  *
4dc5c0fc5SNick Price  * Register layout and field definitions adapted from the OpenBSD/NetBSD
5dc5c0fc5SNick Price  * if_aq driver:
6dc5c0fc5SNick Price  *
7dc5c0fc5SNick Price  * Copyright (c) 2021 Jonathan Matthew <jonathan@d14n.org>
8dc5c0fc5SNick Price  * Copyright (c) 2021 Mike Larkin <mlarkin@openbsd.org>
9dc5c0fc5SNick Price  *
10dc5c0fc5SNick Price  * Permission to use, copy, modify, and distribute this software for any
11dc5c0fc5SNick Price  * purpose with or without fee is hereby granted, provided that the above
12dc5c0fc5SNick Price  * copyright notice and this permission notice appear in all copies.
13dc5c0fc5SNick Price  *
14dc5c0fc5SNick Price  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
15dc5c0fc5SNick Price  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
16dc5c0fc5SNick Price  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
17dc5c0fc5SNick Price  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18dc5c0fc5SNick Price  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
19dc5c0fc5SNick Price  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
20dc5c0fc5SNick Price  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21dc5c0fc5SNick Price  */
22dc5c0fc5SNick Price 
23dc5c0fc5SNick Price #ifndef AQ2_HW_H
24dc5c0fc5SNick Price #define AQ2_HW_H
25dc5c0fc5SNick Price 
26dc5c0fc5SNick Price /* Atlantic 2 PCI device IDs (Aquantia/Marvell). */
27dc5c0fc5SNick Price #define AQ_DEVICE_ID_AQC113	0x04C0
28dc5c0fc5SNick Price #define AQ_DEVICE_ID_AQC113C	0x14C0
29dc5c0fc5SNick Price #define AQ_DEVICE_ID_AQC113CA	0x34C0
30dc5c0fc5SNick Price #define AQ_DEVICE_ID_AQC113CS	0x94C0
31dc5c0fc5SNick Price #define AQ_DEVICE_ID_AQC114CS	0x93C0
32dc5c0fc5SNick Price #define AQ_DEVICE_ID_AQC115C	0x12C0
33dc5c0fc5SNick Price #define AQ_DEVICE_ID_AQC116C	0x11C0
34dc5c0fc5SNick Price 
35dc5c0fc5SNick Price static __inline bool
aq_is_atlantic2(uint16_t device_id)36dc5c0fc5SNick Price aq_is_atlantic2(uint16_t device_id)
37dc5c0fc5SNick Price {
38dc5c0fc5SNick Price 	switch (device_id) {
39dc5c0fc5SNick Price 	case AQ_DEVICE_ID_AQC113:
40dc5c0fc5SNick Price 	case AQ_DEVICE_ID_AQC113C:
41dc5c0fc5SNick Price 	case AQ_DEVICE_ID_AQC113CA:
42dc5c0fc5SNick Price 	case AQ_DEVICE_ID_AQC113CS:
43dc5c0fc5SNick Price 	case AQ_DEVICE_ID_AQC114CS:
44dc5c0fc5SNick Price 	case AQ_DEVICE_ID_AQC115C:
45dc5c0fc5SNick Price 	case AQ_DEVICE_ID_AQC116C:
46dc5c0fc5SNick Price 		return (true);
47dc5c0fc5SNick Price 	default:
48dc5c0fc5SNick Price 		return (false);
49dc5c0fc5SNick Price 	}
50dc5c0fc5SNick Price }
51dc5c0fc5SNick Price 
52dc5c0fc5SNick Price /* Atlantic 2 host packet-buffer sizes (Atlantic 1 uses 160/320). */
53dc5c0fc5SNick Price #define AQ2_HW_TXBUF_MAX	128
54dc5c0fc5SNick Price #define AQ2_HW_RXBUF_MAX	192
55dc5c0fc5SNick Price 
56dc5c0fc5SNick Price /* A2 firmware handshake registers (host <-> MCP). */
57dc5c0fc5SNick Price #define AQ2_MIF_HOST_FINISHED_STATUS_WRITE_REG	0x0e00
58dc5c0fc5SNick Price #define AQ2_MIF_HOST_FINISHED_STATUS_READ_REG	0x0e04
59dc5c0fc5SNick Price #define  AQ2_MIF_HOST_FINISHED_STATUS_ACK	(1 << 0)
60dc5c0fc5SNick Price 
61dc5c0fc5SNick Price #define AQ2_MCP_HOST_REQ_INT_REG		0x0f00
62dc5c0fc5SNick Price #define  AQ2_MCP_HOST_REQ_INT_READY		(1 << 0)
63dc5c0fc5SNick Price #define AQ2_MCP_HOST_REQ_INT_SET_REG		0x0f04
64dc5c0fc5SNick Price #define AQ2_MCP_HOST_REQ_INT_CLR_REG		0x0f08
65dc5c0fc5SNick Price 
66dc5c0fc5SNick Price #define AQ2_MIF_BOOT_REG			0x3040
67dc5c0fc5SNick Price #define  AQ2_MIF_BOOT_HOST_DATA_LOADED		(1 << 16)
68dc5c0fc5SNick Price #define  AQ2_MIF_BOOT_BOOT_STARTED		(1 << 24)
69dc5c0fc5SNick Price #define  AQ2_MIF_BOOT_CRASH_INIT		(1 << 27)
70dc5c0fc5SNick Price #define  AQ2_MIF_BOOT_BOOT_CODE_FAILED		(1 << 28)
71dc5c0fc5SNick Price #define  AQ2_MIF_BOOT_FW_INIT_FAILED		(1 << 29)
72dc5c0fc5SNick Price #define  AQ2_MIF_BOOT_FW_INIT_COMP_SUCCESS	(1U << 31)
73dc5c0fc5SNick Price #define  AQ2_MIF_BOOT_FAILED \
74dc5c0fc5SNick Price 	(AQ2_MIF_BOOT_CRASH_INIT | AQ2_MIF_BOOT_BOOT_CODE_FAILED | \
75dc5c0fc5SNick Price 	    AQ2_MIF_BOOT_FW_INIT_FAILED)
76dc5c0fc5SNick Price #define  AQ2_MIF_BOOT_COMPLETE \
77dc5c0fc5SNick Price 	(AQ2_MIF_BOOT_FAILED | AQ2_MIF_BOOT_FW_INIT_COMP_SUCCESS)
78dc5c0fc5SNick Price 
79dc5c0fc5SNick Price /* The ART semaphore is global CPU semaphore index 3. */
80dc5c0fc5SNick Price #define AQ2_ART_SEM_INDEX			3
81dc5c0fc5SNick Price 
82dc5c0fc5SNick Price /* Action Resolver Table (replaces Atlantic 1's discrete RPF filters). */
83dc5c0fc5SNick Price #define AQ2_ART_ACTION_ACT_SHIFT		8
84dc5c0fc5SNick Price #define AQ2_ART_ACTION_RSS			0x0080
85dc5c0fc5SNick Price #define AQ2_ART_ACTION_INDEX_SHIFT		2
86dc5c0fc5SNick Price #define AQ2_ART_ACTION_ENABLE			0x0001
87dc5c0fc5SNick Price #define AQ2_ART_ACTION(act, rss, idx, en)		\
88dc5c0fc5SNick Price 	(((act) << AQ2_ART_ACTION_ACT_SHIFT) |		\
89dc5c0fc5SNick Price 	((rss) ? AQ2_ART_ACTION_RSS : 0) |		\
90dc5c0fc5SNick Price 	((idx) << AQ2_ART_ACTION_INDEX_SHIFT) |		\
91dc5c0fc5SNick Price 	((en) ? AQ2_ART_ACTION_ENABLE : 0))
92dc5c0fc5SNick Price #define AQ2_ART_ACTION_DROP			AQ2_ART_ACTION(0, 0, 0, 1)
93dc5c0fc5SNick Price #define AQ2_ART_ACTION_DISABLE			AQ2_ART_ACTION(0, 0, 0, 0)
94dc5c0fc5SNick Price #define AQ2_ART_ACTION_ASSIGN_QUEUE(q)		AQ2_ART_ACTION(1, 0, (q), 1)
95dc5c0fc5SNick Price #define AQ2_ART_ACTION_ASSIGN_TC(tc)		AQ2_ART_ACTION(1, 1, (tc), 1)
96dc5c0fc5SNick Price 
97dc5c0fc5SNick Price #define AQ2_RPF_TAG_PCP_MASK			0xe0000000
98dc5c0fc5SNick Price #define AQ2_RPF_TAG_PCP_SHIFT			29
99dc5c0fc5SNick Price #define AQ2_RPF_TAG_FLEX_MASK			0x18000000
100dc5c0fc5SNick Price #define AQ2_RPF_TAG_UNKNOWN_MASK		0x07000000
101dc5c0fc5SNick Price #define AQ2_RPF_TAG_L4_MASK			0x00e00000
102dc5c0fc5SNick Price #define AQ2_RPF_TAG_L3_V6_MASK			0x001c0000
103dc5c0fc5SNick Price #define AQ2_RPF_TAG_L3_V4_MASK			0x00038000
104dc5c0fc5SNick Price #define AQ2_RPF_TAG_UNTAG_MASK			0x00004000
105dc5c0fc5SNick Price #define AQ2_RPF_TAG_VLAN_MASK			0x00003c00
106dc5c0fc5SNick Price #define AQ2_RPF_TAG_ET_MASK			0x00000380
107dc5c0fc5SNick Price #define AQ2_RPF_TAG_ALLMC_MASK			0x00000040
108dc5c0fc5SNick Price #define AQ2_RPF_TAG_UC_MASK			0x0000002f
109dc5c0fc5SNick Price 
110dc5c0fc5SNick Price /* Logical ART row indices (before adding sc_art_filter_base_index). */
111dc5c0fc5SNick Price #define AQ2_RPF_INDEX_L2_PROMISC_OFF		0
112dc5c0fc5SNick Price #define AQ2_RPF_INDEX_VLAN_PROMISC_OFF		1
113dc5c0fc5SNick Price #define AQ2_RPF_INDEX_L3L4_USER			8
114dc5c0fc5SNick Price #define AQ2_RPF_INDEX_ET_PCP_USER		24
115dc5c0fc5SNick Price #define AQ2_RPF_INDEX_VLAN_USER			40
116dc5c0fc5SNick Price #define AQ2_RPF_INDEX_PCP_TO_TC			56
117dc5c0fc5SNick Price 
118dc5c0fc5SNick Price #define AQ2_RPF_L2BC_TAG_REG			0x50f0
119dc5c0fc5SNick Price #define  AQ2_RPF_L2BC_TAG_MASK			0x0000003f
120dc5c0fc5SNick Price 
121dc5c0fc5SNick Price #define AQ2_RPF_NEW_CTRL_REG			0x5104
122dc5c0fc5SNick Price #define  AQ2_RPF_NEW_CTRL_ENABLE		(1 << 11)
123dc5c0fc5SNick Price 
124dc5c0fc5SNick Price #define AQ2_RPF_REDIR2_REG			0x54c8
125dc5c0fc5SNick Price #define  AQ2_RPF_REDIR2_INDEX			(1 << 12)
126dc5c0fc5SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE		0x000001FF
127dc5c0fc5SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_NONE		0
128418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_IP		(1 << 0)
129418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_TCP4		(1 << 1)
130418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_UDP4		(1 << 2)
131418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_IP6		(1 << 3)
132418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_TCP6		(1 << 4)
133418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_UDP6		(1 << 5)
134418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_IP6EX		(1 << 6)
135418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_TCP6EX		(1 << 7)
136418e7fd1SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_UDP6EX		(1 << 8)
137dc5c0fc5SNick Price #define  AQ2_RPF_REDIR2_HASHTYPE_ALL		0x000001FF
138dc5c0fc5SNick Price 
139dc5c0fc5SNick Price #define AQ2_RX_Q_TC_MAP_REG(i)			(0x5900 + (i) * 4)
140dc5c0fc5SNick Price #define AQ2_TX_Q_TC_MAP_REG(i)			(0x799c + (i) * 4)
141dc5c0fc5SNick Price 
142dc5c0fc5SNick Price #define AQ2_RPF_RSS_REDIR_MAX			64
143dc5c0fc5SNick Price #define AQ2_RPF_RSS_REDIR_REG(tc, i)		\
144dc5c0fc5SNick Price 	 (0x6200 + (0x100 * ((tc) >> 2)) + (i) * 4)
145dc5c0fc5SNick Price 
146dc5c0fc5SNick Price #define AQ2_RPF_REC_TAB_ENABLE_REG		0x6ff0
147dc5c0fc5SNick Price #define  AQ2_RPF_REC_TAB_ENABLE_MASK		0x0000ffff
148dc5c0fc5SNick Price 
149dc5c0fc5SNick Price #define AQ2_LAUNCHTIME_CTRL_REG			0x7a1c
150dc5c0fc5SNick Price #define  AQ2_LAUNCHTIME_CTRL_RATIO		0x0000ff00
151dc5c0fc5SNick Price #define  AQ2_LAUNCHTIME_CTRL_RATIO_SPEED_QUARTER 4
152dc5c0fc5SNick Price #define  AQ2_LAUNCHTIME_CTRL_RATIO_SPEED_HALF	2
153dc5c0fc5SNick Price #define  AQ2_LAUNCHTIME_CTRL_RATIO_SPEED_FULL	1
154dc5c0fc5SNick Price 
155dc5c0fc5SNick Price #define AQ2_HW_FPGA_VERSION_REG			0x00f4
156dc5c0fc5SNick Price 
157dc5c0fc5SNick Price #define AQ2_TX_INTR_MODERATION_CTL_REG(i)	(0x7c28 + (i) * 0x40)
158dc5c0fc5SNick Price #define  AQ2_TX_INTR_MODERATION_CTL_EN		(1 << 1)
159dc5c0fc5SNick Price #define  AQ2_TX_INTR_MODERATION_CTL_MIN		0x0000ff00
160dc5c0fc5SNick Price #define  AQ2_TX_INTR_MODERATION_CTL_MAX		0x01ff0000
161dc5c0fc5SNick Price 
162dc5c0fc5SNick Price /* Firmware interface IN window (host -> MCP). */
163dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_IN_MTU_REG		0x12000
164dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_IN_MAC_ADDRESS_REG	0x12008
165dc5c0fc5SNick Price 
166dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_IN_LINK_CONTROL_REG	0x12010
167dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_CONTROL_MODE	0x0000000f
168dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_CONTROL_MODE_INVALID	0
169dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_CONTROL_MODE_ACTIVE	1
170dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_CONTROL_MODE_SLEEP_PROXY 2
171dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_CONTROL_MODE_LOWPOWER	3
172dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_CONTROL_MODE_SHUTDOWN	4
173dc5c0fc5SNick Price 
174dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_IN_LINK_OPTIONS_REG	0x12018
175dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_DOWNSHIFT	(1 << 27)
176dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_PAUSE_TX	(1 << 25)
177dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_PAUSE_RX	(1 << 24)
178dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_EEE_10G	(1 << 20)
179dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_EEE_5G	(1 << 19)
180dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_EEE_2G5	(1 << 18)
181dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_EEE_1G	(1 << 17)
182dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_EEE_100M	(1 << 16)
183dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_10G	(1 << 15)
184dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_N5G	(1 << 14)
185dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_5G	(1 << 13)
186dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_N2G5	(1 << 12)
187dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_2G5	(1 << 11)
188dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_1G	(1 << 10)
189dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_100M	(1 << 9)
190dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_10M	(1 << 8)
191dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_1G_HD	(1 << 7)
192dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_100M_HD	(1 << 6)
193dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_RATE_10M_HD	(1 << 5)
194dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_LINK_RENEGOTIATE (1 << 1)
195dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_LINK_OPTIONS_LINK_UP	(1 << 0)
196dc5c0fc5SNick Price 
197b68f4667SNick Price #define AQ2_FW_INTERFACE_IN_THERMAL_SHUTDOWN_REG	0x12020
198b68f4667SNick Price #define  AQ2_FW_INTERFACE_IN_THERMAL_SHUTDOWN_ENABLE	(1 << 0)
199b68f4667SNick Price #define  AQ2_FW_INTERFACE_IN_THERMAL_SHUTDOWN_TEMP	0x0000ff00	/* whole degC */
200b68f4667SNick Price #define  AQ2_FW_INTERFACE_IN_THERMAL_SHUTDOWN_TEMP_S	8
201b68f4667SNick Price 
202dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_IN_REQUEST_POLICY_REG	0x12a58
203dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_MCAST_QUEUE_OR_TC	0x00800000
204dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_MCAST_RX_QUEUE_TC_INDEX 0x007c0000
205dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_MCAST_ACCEPT	0x00010000
206dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_BCAST_QUEUE_OR_TC	0x00008000
207dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_BCAST_RX_QUEUE_TC_INDEX 0x00007c00
208dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_BCAST_ACCEPT	0x00000100
209dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_PROMISC_QUEUE_OR_TC	0x00000080
210dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_PROMISC_RX_QUEUE_TX_INDEX 0x0000007c
211dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_PROMISC_MCAST	0x00000002
212dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_IN_REQUEST_POLICY_PROMISC_ALL		0x00000001
213dc5c0fc5SNick Price 
214dc5c0fc5SNick Price /* Firmware interface OUT window (MCP -> host). */
215dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_OUT_TRANSACTION_ID_REG	0x13000
216dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_TRANSACTION_ID_B	0xffff0000
217dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_TRANSACTION_ID_B_S 16
218dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_TRANSACTION_ID_A	0x0000ffff
219dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_TRANSACTION_ID_A_S 0
220dc5c0fc5SNick Price 
221dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_OUT_VERSION_BUNDLE_REG	0x13004
222dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_OUT_VERSION_MAC_REG	0x13008
223dc5c0fc5SNick Price 
224dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_OUT_VERSION_PHY_REG	0x1300c
225dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_BUILD	0xffff0000
226dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_BUILD_S	16
227dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_MINOR	0x0000ff00
228dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_MINOR_S	8
229dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_MAJOR	0x000000ff
230dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_MAJOR_S	0
231dc5c0fc5SNick Price 
232dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_OUT_VERSION_IFACE_REG	0x13010
233dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_IFACE_VER	0x0000000f
234dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_IFACE_VER_A0 0
235dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_VERSION_IFACE_VER_B0 1
236dc5c0fc5SNick Price 
2379e067f20SNick Price #define AQ2_FW_INTERFACE_OUT_PHY_HEALTH_MONITOR_REG	0x13620
2389e067f20SNick Price #define  AQ2_FW_INTERFACE_OUT_PHY_HEALTH_MONITOR_READY	0x00000001
239b68f4667SNick Price #define  AQ2_FW_INTERFACE_OUT_PHY_HEALTH_MONITOR_FAULT	0x00000002
240*af3f2dd1SNick Price #define  AQ2_FW_INTERFACE_OUT_PHY_HEALTH_MONITOR_HOT	0x00000004
2419e067f20SNick Price #define  AQ2_FW_INTERFACE_OUT_PHY_TEMPERATURE		0x0000ff00
2429e067f20SNick Price #define  AQ2_FW_INTERFACE_OUT_PHY_TEMPERATURE_S		8
2439e067f20SNick Price 
244b68f4667SNick Price #define AQ2_FW_INTERFACE_OUT_PHY_FAULT_CODE_REG		0x13624
245b68f4667SNick Price #define  AQ2_FW_INTERFACE_OUT_PHY_FAULT_CODE		0x0000ffff
246b68f4667SNick Price 
247dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_OUT_STATS_REG		0x13700
248dc5c0fc5SNick Price 
249dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_OUT_LINK_STATUS_REG	0x13014
250dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_DUPLEX	(1 << 11)
251dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_EEE		(1 << 10)
252dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_PAUSE_RX	(1 << 9)
253dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_PAUSE_TX	(1 << 8)
254dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE		0x000000f0
255dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE_S	4
256dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE_10G	6
257dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE_5G	5
258dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE_2G5	4
259dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE_1G	3
260dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE_100M	2
261dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE_10M	1
262dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_RATE_INVALID	0
263dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_LINK_STATUS_STATE		0x0000000f
264dc5c0fc5SNick Price 
265dc5c0fc5SNick Price #define AQ2_FW_INTERFACE_OUT_FILTER_CAPS_REG	0x13774
266dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_FILTER_CAPS3_RESOLVER_BASE_INDEX 0x00ff0000
267dc5c0fc5SNick Price #define  AQ2_FW_INTERFACE_OUT_FILTER_CAPS3_RESOLVER_BASE_INDEX_SHIFT 16
268dc5c0fc5SNick Price 
269dc5c0fc5SNick Price #define AQ2_RPF_ACT_ART_REQ_TAG_REG(i)		(0x14000 + (i) * 0x10)
270dc5c0fc5SNick Price #define AQ2_RPF_ACT_ART_REQ_MASK_REG(i)		(0x14004 + (i) * 0x10)
271dc5c0fc5SNick Price #define AQ2_RPF_ACT_ART_REQ_ACTION_REG(i)	(0x14008 + (i) * 0x10)
272dc5c0fc5SNick Price 
273b68f4667SNick Price /* Action-resolver table depth: 16 enable sections of 8 rows. */
274b68f4667SNick Price #define AQ2_ART_TABLE_SIZE			128
275b68f4667SNick Price 
276dc5c0fc5SNick Price /*
277dc5c0fc5SNick Price  * L2 unicast filter MSW register (shared with Atlantic 1).  Atlantic 2 sets
278dc5c0fc5SNick Price  * the TAG field so unicast frames are classified into the resolver table.
279dc5c0fc5SNick Price  */
280dc5c0fc5SNick Price #define AQ2_RPF_VLAN_FLR_TAG_REG(i)		(0x5290 + (i) * 4)
281dc5c0fc5SNick Price #define  AQ2_RPF_VLAN_FLR_TAG			0x0000F000
282dc5c0fc5SNick Price #define  AQ2_RPF_VLAN_FLR_TAG_SHIFT		12
283dc5c0fc5SNick Price 
284dc5c0fc5SNick Price #define RPF_L2UC_MSW_REG(i)			(0x5114 + (i) * 8)
285dc5c0fc5SNick Price #define  RPF_L2UC_MSW_TAG			0x03c00000
286dc5c0fc5SNick Price #define  RPF_L2UC_MSW_TAG_SHIFT			22
287dc5c0fc5SNick Price 
288dc5c0fc5SNick Price /*
289dc5c0fc5SNick Price  * Tx packet-scheduler data-TC credit/weight (shared register, but the
290dc5c0fc5SNick Price  * Atlantic 2 fields are wider than Atlantic 1's), and the Tx buffer control
291dc5c0fc5SNick Price  * register whose randomized ring->TC map Atlantic 2 enables.
292dc5c0fc5SNick Price  */
293dc5c0fc5SNick Price #define TPS_DATA_TCT_REG(i)			(0x7110 + (i) * 4)
294dc5c0fc5SNick Price #define  TPS2_DATA_TCT_CREDIT_MAX		0xffff0000
295dc5c0fc5SNick Price #define  TPS2_DATA_TCT_CREDIT_MAX_SHIFT		16
296dc5c0fc5SNick Price #define  TPS2_DATA_TCT_WEIGHT			0x00007fff
297dc5c0fc5SNick Price #define  TPS2_DATA_TCT_WEIGHT_SHIFT		0
298dc5c0fc5SNick Price 
299dc5c0fc5SNick Price #define TPB_TX_BUF_REG				0x7900
300dc5c0fc5SNick Price #define  TPB_TX_BUF_TC_Q_RAND_MAP_EN		(1 << 9)
301dc5c0fc5SNick Price #define  TPB_TX_BUF_TC_Q_RAND_MAP_EN_SHIFT	9
302dc5c0fc5SNick Price 
303dc5c0fc5SNick Price #endif /* AQ2_HW_H */
304