120a2d16dSMuhammad Usama Anjum /* SPDX-License-Identifier: GPL-2.0 */
2422d97b8SChris Packham #define CONFIG_CAVIUM_OCTEON_CVMSEG_SIZE	512
3422d97b8SChris Packham 
4422d97b8SChris Packham #ifndef XKPHYS_TO_PHYS
5422d97b8SChris Packham # define XKPHYS_TO_PHYS(p)			(p)
6422d97b8SChris Packham #endif
7422d97b8SChris Packham 
8422d97b8SChris Packham #define OCTEON_IRQ_WORKQ0 0
9422d97b8SChris Packham #define OCTEON_IRQ_RML 0
10422d97b8SChris Packham #define OCTEON_IRQ_TIMER1 0
11422d97b8SChris Packham #define OCTEON_IS_MODEL(x) 0
12422d97b8SChris Packham #define octeon_has_feature(x)	0
13422d97b8SChris Packham #define octeon_get_clock_rate()	0
14422d97b8SChris Packham 
15422d97b8SChris Packham #define CVMX_SYNCIOBDMA		do { } while (0)
16422d97b8SChris Packham 
17422d97b8SChris Packham #define CVMX_HELPER_INPUT_TAG_TYPE	0
18422d97b8SChris Packham #define CVMX_HELPER_FIRST_MBUFF_SKIP	7
19422d97b8SChris Packham #define CVMX_FAU_REG_END		(2048)
20422d97b8SChris Packham #define CVMX_FPA_OUTPUT_BUFFER_POOL	    (2)
21422d97b8SChris Packham #define CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE    16
22422d97b8SChris Packham #define CVMX_FPA_PACKET_POOL		    (0)
23422d97b8SChris Packham #define CVMX_FPA_PACKET_POOL_SIZE	    16
24422d97b8SChris Packham #define CVMX_FPA_WQE_POOL		    (1)
25422d97b8SChris Packham #define CVMX_FPA_WQE_POOL_SIZE		    16
26422d97b8SChris Packham #define CVMX_GMXX_RXX_ADR_CAM_EN(a, b)	((a) + (b))
27422d97b8SChris Packham #define CVMX_GMXX_RXX_ADR_CTL(a, b)	((a) + (b))
28422d97b8SChris Packham #define CVMX_GMXX_PRTX_CFG(a, b)	((a) + (b))
29422d97b8SChris Packham #define CVMX_GMXX_RXX_FRM_MAX(a, b)	((a) + (b))
30422d97b8SChris Packham #define CVMX_GMXX_RXX_JABBER(a, b)	((a) + (b))
31422d97b8SChris Packham #define CVMX_IPD_CTL_STATUS		0
32422d97b8SChris Packham #define CVMX_PIP_FRM_LEN_CHKX(a)	(a)
33422d97b8SChris Packham #define CVMX_PIP_NUM_INPUT_PORTS	1
34422d97b8SChris Packham #define CVMX_SCR_SCRATCH		0
35422d97b8SChris Packham #define CVMX_PKO_QUEUES_PER_PORT_INTERFACE0	2
36422d97b8SChris Packham #define CVMX_PKO_QUEUES_PER_PORT_INTERFACE1	2
37422d97b8SChris Packham #define CVMX_IPD_SUB_PORT_FCS		0
38422d97b8SChris Packham #define CVMX_SSO_WQ_IQ_DIS		0
39422d97b8SChris Packham #define CVMX_SSO_WQ_INT			0
40422d97b8SChris Packham #define CVMX_POW_WQ_INT			0
41422d97b8SChris Packham #define CVMX_SSO_WQ_INT_PC		0
42422d97b8SChris Packham #define CVMX_NPI_RSL_INT_BLOCKS		0
43422d97b8SChris Packham #define CVMX_POW_WQ_INT_PC		0
44422d97b8SChris Packham 
45422d97b8SChris Packham union cvmx_pip_wqe_word2 {
46422d97b8SChris Packham 	uint64_t u64;
47422d97b8SChris Packham 	struct {
48422d97b8SChris Packham 		uint64_t bufs:8;
49422d97b8SChris Packham 		uint64_t ip_offset:8;
50422d97b8SChris Packham 		uint64_t vlan_valid:1;
51422d97b8SChris Packham 		uint64_t vlan_stacked:1;
52422d97b8SChris Packham 		uint64_t unassigned:1;
53422d97b8SChris Packham 		uint64_t vlan_cfi:1;
54422d97b8SChris Packham 		uint64_t vlan_id:12;
55422d97b8SChris Packham 		uint64_t pr:4;
56422d97b8SChris Packham 		uint64_t unassigned2:8;
57422d97b8SChris Packham 		uint64_t dec_ipcomp:1;
58422d97b8SChris Packham 		uint64_t tcp_or_udp:1;
59422d97b8SChris Packham 		uint64_t dec_ipsec:1;
60422d97b8SChris Packham 		uint64_t is_v6:1;
61422d97b8SChris Packham 		uint64_t software:1;
62422d97b8SChris Packham 		uint64_t L4_error:1;
63422d97b8SChris Packham 		uint64_t is_frag:1;
64422d97b8SChris Packham 		uint64_t IP_exc:1;
65422d97b8SChris Packham 		uint64_t is_bcast:1;
66422d97b8SChris Packham 		uint64_t is_mcast:1;
67422d97b8SChris Packham 		uint64_t not_IP:1;
68422d97b8SChris Packham 		uint64_t rcv_error:1;
69422d97b8SChris Packham 		uint64_t err_code:8;
70422d97b8SChris Packham 	} s;
71422d97b8SChris Packham 	struct {
72422d97b8SChris Packham 		uint64_t bufs:8;
73422d97b8SChris Packham 		uint64_t ip_offset:8;
74422d97b8SChris Packham 		uint64_t vlan_valid:1;
75422d97b8SChris Packham 		uint64_t vlan_stacked:1;
76422d97b8SChris Packham 		uint64_t unassigned:1;
77422d97b8SChris Packham 		uint64_t vlan_cfi:1;
78422d97b8SChris Packham 		uint64_t vlan_id:12;
79422d97b8SChris Packham 		uint64_t port:12;
80422d97b8SChris Packham 		uint64_t dec_ipcomp:1;
81422d97b8SChris Packham 		uint64_t tcp_or_udp:1;
82422d97b8SChris Packham 		uint64_t dec_ipsec:1;
83422d97b8SChris Packham 		uint64_t is_v6:1;
84422d97b8SChris Packham 		uint64_t software:1;
85422d97b8SChris Packham 		uint64_t L4_error:1;
86422d97b8SChris Packham 		uint64_t is_frag:1;
87422d97b8SChris Packham 		uint64_t IP_exc:1;
88422d97b8SChris Packham 		uint64_t is_bcast:1;
89422d97b8SChris Packham 		uint64_t is_mcast:1;
90422d97b8SChris Packham 		uint64_t not_IP:1;
91422d97b8SChris Packham 		uint64_t rcv_error:1;
92422d97b8SChris Packham 		uint64_t err_code:8;
93422d97b8SChris Packham 	} s_cn68xx;
94422d97b8SChris Packham 
95422d97b8SChris Packham 	struct {
96422d97b8SChris Packham 		uint64_t unused1:16;
97422d97b8SChris Packham 		uint64_t vlan:16;
98422d97b8SChris Packham 		uint64_t unused2:32;
99422d97b8SChris Packham 	} svlan;
100422d97b8SChris Packham 	struct {
101422d97b8SChris Packham 		uint64_t bufs:8;
102422d97b8SChris Packham 		uint64_t unused:8;
103422d97b8SChris Packham 		uint64_t vlan_valid:1;
104422d97b8SChris Packham 		uint64_t vlan_stacked:1;
105422d97b8SChris Packham 		uint64_t unassigned:1;
106422d97b8SChris Packham 		uint64_t vlan_cfi:1;
107422d97b8SChris Packham 		uint64_t vlan_id:12;
108422d97b8SChris Packham 		uint64_t pr:4;
109422d97b8SChris Packham 		uint64_t unassigned2:12;
110422d97b8SChris Packham 		uint64_t software:1;
111422d97b8SChris Packham 		uint64_t unassigned3:1;
112422d97b8SChris Packham 		uint64_t is_rarp:1;
113422d97b8SChris Packham 		uint64_t is_arp:1;
114422d97b8SChris Packham 		uint64_t is_bcast:1;
115422d97b8SChris Packham 		uint64_t is_mcast:1;
116422d97b8SChris Packham 		uint64_t not_IP:1;
117422d97b8SChris Packham 		uint64_t rcv_error:1;
118422d97b8SChris Packham 		uint64_t err_code:8;
119422d97b8SChris Packham 	} snoip;
120422d97b8SChris Packham 
121422d97b8SChris Packham };
122422d97b8SChris Packham 
123422d97b8SChris Packham union cvmx_pip_wqe_word0 {
124422d97b8SChris Packham 	struct {
125422d97b8SChris Packham 		uint64_t next_ptr:40;
126422d97b8SChris Packham 		uint8_t unused;
127422d97b8SChris Packham 		__wsum hw_chksum;
128422d97b8SChris Packham 	} cn38xx;
129422d97b8SChris Packham 	struct {
130422d97b8SChris Packham 		uint64_t pknd:6;        /* 0..5 */
131422d97b8SChris Packham 		uint64_t unused2:2;     /* 6..7 */
132422d97b8SChris Packham 		uint64_t bpid:6;        /* 8..13 */
133422d97b8SChris Packham 		uint64_t unused1:18;    /* 14..31 */
134422d97b8SChris Packham 		uint64_t l2ptr:8;       /* 32..39 */
135422d97b8SChris Packham 		uint64_t l3ptr:8;       /* 40..47 */
136422d97b8SChris Packham 		uint64_t unused0:8;     /* 48..55 */
137422d97b8SChris Packham 		uint64_t l4ptr:8;       /* 56..63 */
138422d97b8SChris Packham 	} cn68xx;
139422d97b8SChris Packham };
140422d97b8SChris Packham 
141422d97b8SChris Packham union cvmx_wqe_word0 {
142422d97b8SChris Packham 	uint64_t u64;
143422d97b8SChris Packham 	union cvmx_pip_wqe_word0 pip;
144422d97b8SChris Packham };
145422d97b8SChris Packham 
146422d97b8SChris Packham union cvmx_wqe_word1 {
147422d97b8SChris Packham 	uint64_t u64;
148422d97b8SChris Packham 	struct {
149422d97b8SChris Packham 		uint64_t tag:32;
150422d97b8SChris Packham 		uint64_t tag_type:2;
151422d97b8SChris Packham 		uint64_t varies:14;
152422d97b8SChris Packham 		uint64_t len:16;
153422d97b8SChris Packham 	};
154422d97b8SChris Packham 	struct {
155422d97b8SChris Packham 		uint64_t tag:32;
156422d97b8SChris Packham 		uint64_t tag_type:2;
157422d97b8SChris Packham 		uint64_t zero_2:3;
158422d97b8SChris Packham 		uint64_t grp:6;
159422d97b8SChris Packham 		uint64_t zero_1:1;
160422d97b8SChris Packham 		uint64_t qos:3;
161422d97b8SChris Packham 		uint64_t zero_0:1;
162422d97b8SChris Packham 		uint64_t len:16;
163422d97b8SChris Packham 	} cn68xx;
164422d97b8SChris Packham 	struct {
165422d97b8SChris Packham 		uint64_t tag:32;
166422d97b8SChris Packham 		uint64_t tag_type:2;
167422d97b8SChris Packham 		uint64_t zero_2:1;
168422d97b8SChris Packham 		uint64_t grp:4;
169422d97b8SChris Packham 		uint64_t qos:3;
170422d97b8SChris Packham 		uint64_t ipprt:6;
171422d97b8SChris Packham 		uint64_t len:16;
172422d97b8SChris Packham 	} cn38xx;
173422d97b8SChris Packham };
174422d97b8SChris Packham 
175422d97b8SChris Packham union cvmx_buf_ptr {
176422d97b8SChris Packham 	void *ptr;
177422d97b8SChris Packham 	uint64_t u64;
178422d97b8SChris Packham 	struct {
179422d97b8SChris Packham 		uint64_t i:1;
180422d97b8SChris Packham 		uint64_t back:4;
181422d97b8SChris Packham 		uint64_t pool:3;
182422d97b8SChris Packham 		uint64_t size:16;
183422d97b8SChris Packham 		uint64_t addr:40;
184422d97b8SChris Packham 	} s;
185422d97b8SChris Packham };
186422d97b8SChris Packham 
187422d97b8SChris Packham struct cvmx_wqe {
188422d97b8SChris Packham 	union cvmx_wqe_word0 word0;
189422d97b8SChris Packham 	union cvmx_wqe_word1 word1;
190422d97b8SChris Packham 	union cvmx_pip_wqe_word2 word2;
191422d97b8SChris Packham 	union cvmx_buf_ptr packet_ptr;
192422d97b8SChris Packham 	uint8_t packet_data[96];
193422d97b8SChris Packham };
194422d97b8SChris Packham 
195422d97b8SChris Packham union cvmx_helper_link_info {
196422d97b8SChris Packham 	uint64_t u64;
197422d97b8SChris Packham 	struct {
198422d97b8SChris Packham 		uint64_t reserved_20_63:44;
199422d97b8SChris Packham 		uint64_t link_up:1;	    /**< Is the physical link up? */
200422d97b8SChris Packham 		uint64_t full_duplex:1;	    /**< 1 if the link is full duplex */
201422d97b8SChris Packham 		uint64_t speed:18;	    /**< Speed of the link in Mbps */
202422d97b8SChris Packham 	} s;
203422d97b8SChris Packham };
204422d97b8SChris Packham 
205422d97b8SChris Packham enum cvmx_fau_reg_32 {
206422d97b8SChris Packham 	CVMX_FAU_REG_32_START	= 0,
207422d97b8SChris Packham };
208422d97b8SChris Packham 
209422d97b8SChris Packham enum cvmx_fau_op_size {
210422d97b8SChris Packham 	CVMX_FAU_OP_SIZE_8 = 0,
211422d97b8SChris Packham 	CVMX_FAU_OP_SIZE_16 = 1,
212422d97b8SChris Packham 	CVMX_FAU_OP_SIZE_32 = 2,
213422d97b8SChris Packham 	CVMX_FAU_OP_SIZE_64 = 3
214422d97b8SChris Packham };
215422d97b8SChris Packham 
216422d97b8SChris Packham typedef enum {
217422d97b8SChris Packham 	CVMX_SPI_MODE_UNKNOWN = 0,
218422d97b8SChris Packham 	CVMX_SPI_MODE_TX_HALFPLEX = 1,
219422d97b8SChris Packham 	CVMX_SPI_MODE_RX_HALFPLEX = 2,
220422d97b8SChris Packham 	CVMX_SPI_MODE_DUPLEX = 3
221422d97b8SChris Packham } cvmx_spi_mode_t;
222422d97b8SChris Packham 
223422d97b8SChris Packham typedef enum {
224422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_DISABLED,
225422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_RGMII,
226422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_GMII,
227422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_SPI,
228422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_PCIE,
229422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_XAUI,
230422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_SGMII,
231422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_PICMG,
232422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_NPI,
233422d97b8SChris Packham 	CVMX_HELPER_INTERFACE_MODE_LOOP,
234422d97b8SChris Packham } cvmx_helper_interface_mode_t;
235422d97b8SChris Packham 
236422d97b8SChris Packham typedef enum {
237422d97b8SChris Packham 	CVMX_POW_WAIT = 1,
238422d97b8SChris Packham 	CVMX_POW_NO_WAIT = 0,
239422d97b8SChris Packham } cvmx_pow_wait_t;
240422d97b8SChris Packham 
241422d97b8SChris Packham typedef enum {
242422d97b8SChris Packham 	CVMX_PKO_LOCK_NONE = 0,
243422d97b8SChris Packham 	CVMX_PKO_LOCK_ATOMIC_TAG = 1,
244422d97b8SChris Packham 	CVMX_PKO_LOCK_CMD_QUEUE = 2,
245422d97b8SChris Packham } cvmx_pko_lock_t;
246422d97b8SChris Packham 
247422d97b8SChris Packham typedef enum {
248422d97b8SChris Packham 	CVMX_PKO_SUCCESS,
249422d97b8SChris Packham 	CVMX_PKO_INVALID_PORT,
250422d97b8SChris Packham 	CVMX_PKO_INVALID_QUEUE,
251422d97b8SChris Packham 	CVMX_PKO_INVALID_PRIORITY,
252422d97b8SChris Packham 	CVMX_PKO_NO_MEMORY,
253422d97b8SChris Packham 	CVMX_PKO_PORT_ALREADY_SETUP,
254422d97b8SChris Packham 	CVMX_PKO_CMD_QUEUE_INIT_ERROR
255422d97b8SChris Packham } cvmx_pko_status_t;
256422d97b8SChris Packham 
257422d97b8SChris Packham enum cvmx_pow_tag_type {
258422d97b8SChris Packham 	CVMX_POW_TAG_TYPE_ORDERED   = 0L,
259422d97b8SChris Packham 	CVMX_POW_TAG_TYPE_ATOMIC    = 1L,
260422d97b8SChris Packham 	CVMX_POW_TAG_TYPE_NULL	    = 2L,
261422d97b8SChris Packham 	CVMX_POW_TAG_TYPE_NULL_NULL = 3L
262422d97b8SChris Packham };
263422d97b8SChris Packham 
264422d97b8SChris Packham union cvmx_ipd_ctl_status {
265422d97b8SChris Packham 	uint64_t u64;
266422d97b8SChris Packham 	struct cvmx_ipd_ctl_status_s {
267422d97b8SChris Packham 		uint64_t reserved_18_63:46;
268422d97b8SChris Packham 		uint64_t use_sop:1;
269422d97b8SChris Packham 		uint64_t rst_done:1;
270422d97b8SChris Packham 		uint64_t clken:1;
271422d97b8SChris Packham 		uint64_t no_wptr:1;
272422d97b8SChris Packham 		uint64_t pq_apkt:1;
273422d97b8SChris Packham 		uint64_t pq_nabuf:1;
274422d97b8SChris Packham 		uint64_t ipd_full:1;
275422d97b8SChris Packham 		uint64_t pkt_off:1;
276422d97b8SChris Packham 		uint64_t len_m8:1;
277422d97b8SChris Packham 		uint64_t reset:1;
278422d97b8SChris Packham 		uint64_t addpkt:1;
279422d97b8SChris Packham 		uint64_t naddbuf:1;
280422d97b8SChris Packham 		uint64_t pkt_lend:1;
281422d97b8SChris Packham 		uint64_t wqe_lend:1;
282422d97b8SChris Packham 		uint64_t pbp_en:1;
283422d97b8SChris Packham 		uint64_t opc_mode:2;
284422d97b8SChris Packham 		uint64_t ipd_en:1;
285422d97b8SChris Packham 	} s;
286422d97b8SChris Packham 	struct cvmx_ipd_ctl_status_cn30xx {
287422d97b8SChris Packham 		uint64_t reserved_10_63:54;
288422d97b8SChris Packham 		uint64_t len_m8:1;
289422d97b8SChris Packham 		uint64_t reset:1;
290422d97b8SChris Packham 		uint64_t addpkt:1;
291422d97b8SChris Packham 		uint64_t naddbuf:1;
292422d97b8SChris Packham 		uint64_t pkt_lend:1;
293422d97b8SChris Packham 		uint64_t wqe_lend:1;
294422d97b8SChris Packham 		uint64_t pbp_en:1;
295422d97b8SChris Packham 		uint64_t opc_mode:2;
296422d97b8SChris Packham 		uint64_t ipd_en:1;
297422d97b8SChris Packham 	} cn30xx;
298422d97b8SChris Packham 	struct cvmx_ipd_ctl_status_cn38xxp2 {
299422d97b8SChris Packham 		uint64_t reserved_9_63:55;
300422d97b8SChris Packham 		uint64_t reset:1;
301422d97b8SChris Packham 		uint64_t addpkt:1;
302422d97b8SChris Packham 		uint64_t naddbuf:1;
303422d97b8SChris Packham 		uint64_t pkt_lend:1;
304422d97b8SChris Packham 		uint64_t wqe_lend:1;
305422d97b8SChris Packham 		uint64_t pbp_en:1;
306422d97b8SChris Packham 		uint64_t opc_mode:2;
307422d97b8SChris Packham 		uint64_t ipd_en:1;
308422d97b8SChris Packham 	} cn38xxp2;
309422d97b8SChris Packham 	struct cvmx_ipd_ctl_status_cn50xx {
310422d97b8SChris Packham 		uint64_t reserved_15_63:49;
311422d97b8SChris Packham 		uint64_t no_wptr:1;
312422d97b8SChris Packham 		uint64_t pq_apkt:1;
313422d97b8SChris Packham 		uint64_t pq_nabuf:1;
314422d97b8SChris Packham 		uint64_t ipd_full:1;
315422d97b8SChris Packham 		uint64_t pkt_off:1;
316422d97b8SChris Packham 		uint64_t len_m8:1;
317422d97b8SChris Packham 		uint64_t reset:1;
318422d97b8SChris Packham 		uint64_t addpkt:1;
319422d97b8SChris Packham 		uint64_t naddbuf:1;
320422d97b8SChris Packham 		uint64_t pkt_lend:1;
321422d97b8SChris Packham 		uint64_t wqe_lend:1;
322422d97b8SChris Packham 		uint64_t pbp_en:1;
323422d97b8SChris Packham 		uint64_t opc_mode:2;
324422d97b8SChris Packham 		uint64_t ipd_en:1;
325422d97b8SChris Packham 	} cn50xx;
326422d97b8SChris Packham 	struct cvmx_ipd_ctl_status_cn58xx {
327422d97b8SChris Packham 		uint64_t reserved_12_63:52;
328422d97b8SChris Packham 		uint64_t ipd_full:1;
329422d97b8SChris Packham 		uint64_t pkt_off:1;
330422d97b8SChris Packham 		uint64_t len_m8:1;
331422d97b8SChris Packham 		uint64_t reset:1;
332422d97b8SChris Packham 		uint64_t addpkt:1;
333422d97b8SChris Packham 		uint64_t naddbuf:1;
334422d97b8SChris Packham 		uint64_t pkt_lend:1;
335422d97b8SChris Packham 		uint64_t wqe_lend:1;
336422d97b8SChris Packham 		uint64_t pbp_en:1;
337422d97b8SChris Packham 		uint64_t opc_mode:2;
338422d97b8SChris Packham 		uint64_t ipd_en:1;
339422d97b8SChris Packham 	} cn58xx;
340422d97b8SChris Packham 	struct cvmx_ipd_ctl_status_cn63xxp1 {
341422d97b8SChris Packham 		uint64_t reserved_16_63:48;
342422d97b8SChris Packham 		uint64_t clken:1;
343422d97b8SChris Packham 		uint64_t no_wptr:1;
344422d97b8SChris Packham 		uint64_t pq_apkt:1;
345422d97b8SChris Packham 		uint64_t pq_nabuf:1;
346422d97b8SChris Packham 		uint64_t ipd_full:1;
347422d97b8SChris Packham 		uint64_t pkt_off:1;
348422d97b8SChris Packham 		uint64_t len_m8:1;
349422d97b8SChris Packham 		uint64_t reset:1;
350422d97b8SChris Packham 		uint64_t addpkt:1;
351422d97b8SChris Packham 		uint64_t naddbuf:1;
352422d97b8SChris Packham 		uint64_t pkt_lend:1;
353422d97b8SChris Packham 		uint64_t wqe_lend:1;
354422d97b8SChris Packham 		uint64_t pbp_en:1;
355422d97b8SChris Packham 		uint64_t opc_mode:2;
356422d97b8SChris Packham 		uint64_t ipd_en:1;
357422d97b8SChris Packham 	} cn63xxp1;
358422d97b8SChris Packham };
359422d97b8SChris Packham 
360422d97b8SChris Packham union cvmx_ipd_sub_port_fcs {
361422d97b8SChris Packham 	uint64_t u64;
362422d97b8SChris Packham 	struct cvmx_ipd_sub_port_fcs_s {
363422d97b8SChris Packham 		uint64_t port_bit:32;
364422d97b8SChris Packham 		uint64_t reserved_32_35:4;
365422d97b8SChris Packham 		uint64_t port_bit2:4;
366422d97b8SChris Packham 		uint64_t reserved_40_63:24;
367422d97b8SChris Packham 	} s;
368422d97b8SChris Packham 	struct cvmx_ipd_sub_port_fcs_cn30xx {
369422d97b8SChris Packham 		uint64_t port_bit:3;
370422d97b8SChris Packham 		uint64_t reserved_3_63:61;
371422d97b8SChris Packham 	} cn30xx;
372422d97b8SChris Packham 	struct cvmx_ipd_sub_port_fcs_cn38xx {
373422d97b8SChris Packham 		uint64_t port_bit:32;
374422d97b8SChris Packham 		uint64_t reserved_32_63:32;
375422d97b8SChris Packham 	} cn38xx;
376422d97b8SChris Packham };
377422d97b8SChris Packham 
378422d97b8SChris Packham union cvmx_ipd_sub_port_qos_cnt {
379422d97b8SChris Packham 	uint64_t u64;
380422d97b8SChris Packham 	struct cvmx_ipd_sub_port_qos_cnt_s {
381422d97b8SChris Packham 		uint64_t cnt:32;
382422d97b8SChris Packham 		uint64_t port_qos:9;
383422d97b8SChris Packham 		uint64_t reserved_41_63:23;
384422d97b8SChris Packham 	} s;
385422d97b8SChris Packham };
38657dd9986SKaaira Gupta 
387422d97b8SChris Packham typedef struct {
388422d97b8SChris Packham 	uint32_t dropped_octets;
389422d97b8SChris Packham 	uint32_t dropped_packets;
390422d97b8SChris Packham 	uint32_t pci_raw_packets;
391422d97b8SChris Packham 	uint32_t octets;
392422d97b8SChris Packham 	uint32_t packets;
393422d97b8SChris Packham 	uint32_t multicast_packets;
394422d97b8SChris Packham 	uint32_t broadcast_packets;
395422d97b8SChris Packham 	uint32_t len_64_packets;
396422d97b8SChris Packham 	uint32_t len_65_127_packets;
397422d97b8SChris Packham 	uint32_t len_128_255_packets;
398422d97b8SChris Packham 	uint32_t len_256_511_packets;
399422d97b8SChris Packham 	uint32_t len_512_1023_packets;
400422d97b8SChris Packham 	uint32_t len_1024_1518_packets;
401422d97b8SChris Packham 	uint32_t len_1519_max_packets;
402422d97b8SChris Packham 	uint32_t fcs_align_err_packets;
403422d97b8SChris Packham 	uint32_t runt_packets;
404422d97b8SChris Packham 	uint32_t runt_crc_packets;
405422d97b8SChris Packham 	uint32_t oversize_packets;
406422d97b8SChris Packham 	uint32_t oversize_crc_packets;
407422d97b8SChris Packham 	uint32_t inb_packets;
408422d97b8SChris Packham 	uint64_t inb_octets;
409422d97b8SChris Packham 	uint16_t inb_errors;
410422d97b8SChris Packham } cvmx_pip_port_status_t;
411422d97b8SChris Packham 
412422d97b8SChris Packham typedef struct {
413422d97b8SChris Packham 	uint32_t packets;
414422d97b8SChris Packham 	uint64_t octets;
415422d97b8SChris Packham 	uint64_t doorbell;
416422d97b8SChris Packham } cvmx_pko_port_status_t;
417422d97b8SChris Packham 
418422d97b8SChris Packham union cvmx_pip_frm_len_chkx {
419422d97b8SChris Packham 	uint64_t u64;
420422d97b8SChris Packham 	struct cvmx_pip_frm_len_chkx_s {
421422d97b8SChris Packham 		uint64_t reserved_32_63:32;
422422d97b8SChris Packham 		uint64_t maxlen:16;
423422d97b8SChris Packham 		uint64_t minlen:16;
424422d97b8SChris Packham 	} s;
425422d97b8SChris Packham };
426422d97b8SChris Packham 
427422d97b8SChris Packham union cvmx_gmxx_rxx_frm_ctl {
428422d97b8SChris Packham 	uint64_t u64;
429422d97b8SChris Packham 	struct cvmx_gmxx_rxx_frm_ctl_s {
430422d97b8SChris Packham 		uint64_t pre_chk:1;
431422d97b8SChris Packham 		uint64_t pre_strp:1;
432422d97b8SChris Packham 		uint64_t ctl_drp:1;
433422d97b8SChris Packham 		uint64_t ctl_bck:1;
434422d97b8SChris Packham 		uint64_t ctl_mcst:1;
435422d97b8SChris Packham 		uint64_t ctl_smac:1;
436422d97b8SChris Packham 		uint64_t pre_free:1;
437422d97b8SChris Packham 		uint64_t vlan_len:1;
438422d97b8SChris Packham 		uint64_t pad_len:1;
439422d97b8SChris Packham 		uint64_t pre_align:1;
440422d97b8SChris Packham 		uint64_t null_dis:1;
441422d97b8SChris Packham 		uint64_t reserved_11_11:1;
442422d97b8SChris Packham 		uint64_t ptp_mode:1;
443422d97b8SChris Packham 		uint64_t reserved_13_63:51;
444422d97b8SChris Packham 	} s;
445422d97b8SChris Packham 	struct cvmx_gmxx_rxx_frm_ctl_cn30xx {
446422d97b8SChris Packham 		uint64_t pre_chk:1;
447422d97b8SChris Packham 		uint64_t pre_strp:1;
448422d97b8SChris Packham 		uint64_t ctl_drp:1;
449422d97b8SChris Packham 		uint64_t ctl_bck:1;
450422d97b8SChris Packham 		uint64_t ctl_mcst:1;
451422d97b8SChris Packham 		uint64_t ctl_smac:1;
452422d97b8SChris Packham 		uint64_t pre_free:1;
453422d97b8SChris Packham 		uint64_t vlan_len:1;
454422d97b8SChris Packham 		uint64_t pad_len:1;
455422d97b8SChris Packham 		uint64_t reserved_9_63:55;
456422d97b8SChris Packham 	} cn30xx;
457422d97b8SChris Packham 	struct cvmx_gmxx_rxx_frm_ctl_cn31xx {
458422d97b8SChris Packham 		uint64_t pre_chk:1;
459422d97b8SChris Packham 		uint64_t pre_strp:1;
460422d97b8SChris Packham 		uint64_t ctl_drp:1;
461422d97b8SChris Packham 		uint64_t ctl_bck:1;
462422d97b8SChris Packham 		uint64_t ctl_mcst:1;
463422d97b8SChris Packham 		uint64_t ctl_smac:1;
464422d97b8SChris Packham 		uint64_t pre_free:1;
465422d97b8SChris Packham 		uint64_t vlan_len:1;
466422d97b8SChris Packham 		uint64_t reserved_8_63:56;
467422d97b8SChris Packham 	} cn31xx;
468422d97b8SChris Packham 	struct cvmx_gmxx_rxx_frm_ctl_cn50xx {
469422d97b8SChris Packham 		uint64_t pre_chk:1;
470422d97b8SChris Packham 		uint64_t pre_strp:1;
471422d97b8SChris Packham 		uint64_t ctl_drp:1;
472422d97b8SChris Packham 		uint64_t ctl_bck:1;
473422d97b8SChris Packham 		uint64_t ctl_mcst:1;
474422d97b8SChris Packham 		uint64_t ctl_smac:1;
475422d97b8SChris Packham 		uint64_t pre_free:1;
476422d97b8SChris Packham 		uint64_t reserved_7_8:2;
477422d97b8SChris Packham 		uint64_t pre_align:1;
478422d97b8SChris Packham 		uint64_t null_dis:1;
479422d97b8SChris Packham 		uint64_t reserved_11_63:53;
480422d97b8SChris Packham 	} cn50xx;
481422d97b8SChris Packham 	struct cvmx_gmxx_rxx_frm_ctl_cn56xxp1 {
482422d97b8SChris Packham 		uint64_t pre_chk:1;
483422d97b8SChris Packham 		uint64_t pre_strp:1;
484422d97b8SChris Packham 		uint64_t ctl_drp:1;
485422d97b8SChris Packham 		uint64_t ctl_bck:1;
486422d97b8SChris Packham 		uint64_t ctl_mcst:1;
487422d97b8SChris Packham 		uint64_t ctl_smac:1;
488422d97b8SChris Packham 		uint64_t pre_free:1;
489422d97b8SChris Packham 		uint64_t reserved_7_8:2;
490422d97b8SChris Packham 		uint64_t pre_align:1;
491422d97b8SChris Packham 		uint64_t reserved_10_63:54;
492422d97b8SChris Packham 	} cn56xxp1;
493422d97b8SChris Packham 	struct cvmx_gmxx_rxx_frm_ctl_cn58xx {
494422d97b8SChris Packham 		uint64_t pre_chk:1;
495422d97b8SChris Packham 		uint64_t pre_strp:1;
496422d97b8SChris Packham 		uint64_t ctl_drp:1;
497422d97b8SChris Packham 		uint64_t ctl_bck:1;
498422d97b8SChris Packham 		uint64_t ctl_mcst:1;
499422d97b8SChris Packham 		uint64_t ctl_smac:1;
500422d97b8SChris Packham 		uint64_t pre_free:1;
501422d97b8SChris Packham 		uint64_t vlan_len:1;
502422d97b8SChris Packham 		uint64_t pad_len:1;
503422d97b8SChris Packham 		uint64_t pre_align:1;
504422d97b8SChris Packham 		uint64_t null_dis:1;
505422d97b8SChris Packham 		uint64_t reserved_11_63:53;
506422d97b8SChris Packham 	} cn58xx;
507422d97b8SChris Packham 	struct cvmx_gmxx_rxx_frm_ctl_cn61xx {
508422d97b8SChris Packham 		uint64_t pre_chk:1;
509422d97b8SChris Packham 		uint64_t pre_strp:1;
510422d97b8SChris Packham 		uint64_t ctl_drp:1;
511422d97b8SChris Packham 		uint64_t ctl_bck:1;
512422d97b8SChris Packham 		uint64_t ctl_mcst:1;
513422d97b8SChris Packham 		uint64_t ctl_smac:1;
514422d97b8SChris Packham 		uint64_t pre_free:1;
515422d97b8SChris Packham 		uint64_t reserved_7_8:2;
516422d97b8SChris Packham 		uint64_t pre_align:1;
517422d97b8SChris Packham 		uint64_t null_dis:1;
518422d97b8SChris Packham 		uint64_t reserved_11_11:1;
519422d97b8SChris Packham 		uint64_t ptp_mode:1;
520422d97b8SChris Packham 		uint64_t reserved_13_63:51;
521422d97b8SChris Packham 	} cn61xx;
522422d97b8SChris Packham };
523422d97b8SChris Packham 
524422d97b8SChris Packham union cvmx_gmxx_rxx_int_reg {
525422d97b8SChris Packham 	uint64_t u64;
526422d97b8SChris Packham 	struct cvmx_gmxx_rxx_int_reg_s {
527422d97b8SChris Packham 		uint64_t minerr:1;
528422d97b8SChris Packham 		uint64_t carext:1;
529422d97b8SChris Packham 		uint64_t maxerr:1;
530422d97b8SChris Packham 		uint64_t jabber:1;
531422d97b8SChris Packham 		uint64_t fcserr:1;
532422d97b8SChris Packham 		uint64_t alnerr:1;
533422d97b8SChris Packham 		uint64_t lenerr:1;
534422d97b8SChris Packham 		uint64_t rcverr:1;
535422d97b8SChris Packham 		uint64_t skperr:1;
536422d97b8SChris Packham 		uint64_t niberr:1;
537422d97b8SChris Packham 		uint64_t ovrerr:1;
538422d97b8SChris Packham 		uint64_t pcterr:1;
539422d97b8SChris Packham 		uint64_t rsverr:1;
540422d97b8SChris Packham 		uint64_t falerr:1;
541422d97b8SChris Packham 		uint64_t coldet:1;
542422d97b8SChris Packham 		uint64_t ifgerr:1;
543422d97b8SChris Packham 		uint64_t phy_link:1;
544422d97b8SChris Packham 		uint64_t phy_spd:1;
545422d97b8SChris Packham 		uint64_t phy_dupx:1;
546422d97b8SChris Packham 		uint64_t pause_drp:1;
547422d97b8SChris Packham 		uint64_t loc_fault:1;
548422d97b8SChris Packham 		uint64_t rem_fault:1;
549422d97b8SChris Packham 		uint64_t bad_seq:1;
550422d97b8SChris Packham 		uint64_t bad_term:1;
551422d97b8SChris Packham 		uint64_t unsop:1;
552422d97b8SChris Packham 		uint64_t uneop:1;
553422d97b8SChris Packham 		uint64_t undat:1;
554422d97b8SChris Packham 		uint64_t hg2fld:1;
555422d97b8SChris Packham 		uint64_t hg2cc:1;
556422d97b8SChris Packham 		uint64_t reserved_29_63:35;
557422d97b8SChris Packham 	} s;
558422d97b8SChris Packham 	struct cvmx_gmxx_rxx_int_reg_cn30xx {
559422d97b8SChris Packham 		uint64_t minerr:1;
560422d97b8SChris Packham 		uint64_t carext:1;
561422d97b8SChris Packham 		uint64_t maxerr:1;
562422d97b8SChris Packham 		uint64_t jabber:1;
563422d97b8SChris Packham 		uint64_t fcserr:1;
564422d97b8SChris Packham 		uint64_t alnerr:1;
565422d97b8SChris Packham 		uint64_t lenerr:1;
566422d97b8SChris Packham 		uint64_t rcverr:1;
567422d97b8SChris Packham 		uint64_t skperr:1;
568422d97b8SChris Packham 		uint64_t niberr:1;
569422d97b8SChris Packham 		uint64_t ovrerr:1;
570422d97b8SChris Packham 		uint64_t pcterr:1;
571422d97b8SChris Packham 		uint64_t rsverr:1;
572422d97b8SChris Packham 		uint64_t falerr:1;
573422d97b8SChris Packham 		uint64_t coldet:1;
574422d97b8SChris Packham 		uint64_t ifgerr:1;
575422d97b8SChris Packham 		uint64_t phy_link:1;
576422d97b8SChris Packham 		uint64_t phy_spd:1;
577422d97b8SChris Packham 		uint64_t phy_dupx:1;
578422d97b8SChris Packham 		uint64_t reserved_19_63:45;
579422d97b8SChris Packham 	} cn30xx;
580422d97b8SChris Packham 	struct cvmx_gmxx_rxx_int_reg_cn50xx {
581422d97b8SChris Packham 		uint64_t reserved_0_0:1;
582422d97b8SChris Packham 		uint64_t carext:1;
583422d97b8SChris Packham 		uint64_t reserved_2_2:1;
584422d97b8SChris Packham 		uint64_t jabber:1;
585422d97b8SChris Packham 		uint64_t fcserr:1;
586422d97b8SChris Packham 		uint64_t alnerr:1;
587422d97b8SChris Packham 		uint64_t reserved_6_6:1;
588422d97b8SChris Packham 		uint64_t rcverr:1;
589422d97b8SChris Packham 		uint64_t skperr:1;
590422d97b8SChris Packham 		uint64_t niberr:1;
591422d97b8SChris Packham 		uint64_t ovrerr:1;
592422d97b8SChris Packham 		uint64_t pcterr:1;
593422d97b8SChris Packham 		uint64_t rsverr:1;
594422d97b8SChris Packham 		uint64_t falerr:1;
595422d97b8SChris Packham 		uint64_t coldet:1;
596422d97b8SChris Packham 		uint64_t ifgerr:1;
597422d97b8SChris Packham 		uint64_t phy_link:1;
598422d97b8SChris Packham 		uint64_t phy_spd:1;
599422d97b8SChris Packham 		uint64_t phy_dupx:1;
600422d97b8SChris Packham 		uint64_t pause_drp:1;
601422d97b8SChris Packham 		uint64_t reserved_20_63:44;
602422d97b8SChris Packham 	} cn50xx;
603422d97b8SChris Packham 	struct cvmx_gmxx_rxx_int_reg_cn52xx {
604422d97b8SChris Packham 		uint64_t reserved_0_0:1;
605422d97b8SChris Packham 		uint64_t carext:1;
606422d97b8SChris Packham 		uint64_t reserved_2_2:1;
607422d97b8SChris Packham 		uint64_t jabber:1;
608422d97b8SChris Packham 		uint64_t fcserr:1;
609422d97b8SChris Packham 		uint64_t reserved_5_6:2;
610422d97b8SChris Packham 		uint64_t rcverr:1;
611422d97b8SChris Packham 		uint64_t skperr:1;
612422d97b8SChris Packham 		uint64_t reserved_9_9:1;
613422d97b8SChris Packham 		uint64_t ovrerr:1;
614422d97b8SChris Packham 		uint64_t pcterr:1;
615422d97b8SChris Packham 		uint64_t rsverr:1;
616422d97b8SChris Packham 		uint64_t falerr:1;
617422d97b8SChris Packham 		uint64_t coldet:1;
618422d97b8SChris Packham 		uint64_t ifgerr:1;
619422d97b8SChris Packham 		uint64_t reserved_16_18:3;
620422d97b8SChris Packham 		uint64_t pause_drp:1;
621422d97b8SChris Packham 		uint64_t loc_fault:1;
622422d97b8SChris Packham 		uint64_t rem_fault:1;
623422d97b8SChris Packham 		uint64_t bad_seq:1;
624422d97b8SChris Packham 		uint64_t bad_term:1;
625422d97b8SChris Packham 		uint64_t unsop:1;
626422d97b8SChris Packham 		uint64_t uneop:1;
627422d97b8SChris Packham 		uint64_t undat:1;
628422d97b8SChris Packham 		uint64_t hg2fld:1;
629422d97b8SChris Packham 		uint64_t hg2cc:1;
630422d97b8SChris Packham 		uint64_t reserved_29_63:35;
631422d97b8SChris Packham 	} cn52xx;
632422d97b8SChris Packham 	struct cvmx_gmxx_rxx_int_reg_cn56xxp1 {
633422d97b8SChris Packham 		uint64_t reserved_0_0:1;
634422d97b8SChris Packham 		uint64_t carext:1;
635422d97b8SChris Packham 		uint64_t reserved_2_2:1;
636422d97b8SChris Packham 		uint64_t jabber:1;
637422d97b8SChris Packham 		uint64_t fcserr:1;
638422d97b8SChris Packham 		uint64_t reserved_5_6:2;
639422d97b8SChris Packham 		uint64_t rcverr:1;
640422d97b8SChris Packham 		uint64_t skperr:1;
641422d97b8SChris Packham 		uint64_t reserved_9_9:1;
642422d97b8SChris Packham 		uint64_t ovrerr:1;
643422d97b8SChris Packham 		uint64_t pcterr:1;
644422d97b8SChris Packham 		uint64_t rsverr:1;
645422d97b8SChris Packham 		uint64_t falerr:1;
646422d97b8SChris Packham 		uint64_t coldet:1;
647422d97b8SChris Packham 		uint64_t ifgerr:1;
648422d97b8SChris Packham 		uint64_t reserved_16_18:3;
649422d97b8SChris Packham 		uint64_t pause_drp:1;
650422d97b8SChris Packham 		uint64_t loc_fault:1;
651422d97b8SChris Packham 		uint64_t rem_fault:1;
652422d97b8SChris Packham 		uint64_t bad_seq:1;
653422d97b8SChris Packham 		uint64_t bad_term:1;
654422d97b8SChris Packham 		uint64_t unsop:1;
655422d97b8SChris Packham 		uint64_t uneop:1;
656422d97b8SChris Packham 		uint64_t undat:1;
657422d97b8SChris Packham 		uint64_t reserved_27_63:37;
658422d97b8SChris Packham 	} cn56xxp1;
659422d97b8SChris Packham 	struct cvmx_gmxx_rxx_int_reg_cn58xx {
660422d97b8SChris Packham 		uint64_t minerr:1;
661422d97b8SChris Packham 		uint64_t carext:1;
662422d97b8SChris Packham 		uint64_t maxerr:1;
663422d97b8SChris Packham 		uint64_t jabber:1;
664422d97b8SChris Packham 		uint64_t fcserr:1;
665422d97b8SChris Packham 		uint64_t alnerr:1;
666422d97b8SChris Packham 		uint64_t lenerr:1;
667422d97b8SChris Packham 		uint64_t rcverr:1;
668422d97b8SChris Packham 		uint64_t skperr:1;
669422d97b8SChris Packham 		uint64_t niberr:1;
670422d97b8SChris Packham 		uint64_t ovrerr:1;
671422d97b8SChris Packham 		uint64_t pcterr:1;
672422d97b8SChris Packham 		uint64_t rsverr:1;
673422d97b8SChris Packham 		uint64_t falerr:1;
674422d97b8SChris Packham 		uint64_t coldet:1;
675422d97b8SChris Packham 		uint64_t ifgerr:1;
676422d97b8SChris Packham 		uint64_t phy_link:1;
677422d97b8SChris Packham 		uint64_t phy_spd:1;
678422d97b8SChris Packham 		uint64_t phy_dupx:1;
679422d97b8SChris Packham 		uint64_t pause_drp:1;
680422d97b8SChris Packham 		uint64_t reserved_20_63:44;
681422d97b8SChris Packham 	} cn58xx;
682422d97b8SChris Packham 	struct cvmx_gmxx_rxx_int_reg_cn61xx {
683422d97b8SChris Packham 		uint64_t minerr:1;
684422d97b8SChris Packham 		uint64_t carext:1;
685422d97b8SChris Packham 		uint64_t reserved_2_2:1;
686422d97b8SChris Packham 		uint64_t jabber:1;
687422d97b8SChris Packham 		uint64_t fcserr:1;
688422d97b8SChris Packham 		uint64_t reserved_5_6:2;
689422d97b8SChris Packham 		uint64_t rcverr:1;
690422d97b8SChris Packham 		uint64_t skperr:1;
691422d97b8SChris Packham 		uint64_t reserved_9_9:1;
692422d97b8SChris Packham 		uint64_t ovrerr:1;
693422d97b8SChris Packham 		uint64_t pcterr:1;
694422d97b8SChris Packham 		uint64_t rsverr:1;
695422d97b8SChris Packham 		uint64_t falerr:1;
696422d97b8SChris Packham 		uint64_t coldet:1;
697422d97b8SChris Packham 		uint64_t ifgerr:1;
698422d97b8SChris Packham 		uint64_t reserved_16_18:3;
699422d97b8SChris Packham 		uint64_t pause_drp:1;
700422d97b8SChris Packham 		uint64_t loc_fault:1;
701422d97b8SChris Packham 		uint64_t rem_fault:1;
702422d97b8SChris Packham 		uint64_t bad_seq:1;
703422d97b8SChris Packham 		uint64_t bad_term:1;
704422d97b8SChris Packham 		uint64_t unsop:1;
705422d97b8SChris Packham 		uint64_t uneop:1;
706422d97b8SChris Packham 		uint64_t undat:1;
707422d97b8SChris Packham 		uint64_t hg2fld:1;
708422d97b8SChris Packham 		uint64_t hg2cc:1;
709422d97b8SChris Packham 		uint64_t reserved_29_63:35;
710422d97b8SChris Packham 	} cn61xx;
711422d97b8SChris Packham };
712422d97b8SChris Packham 
713422d97b8SChris Packham union cvmx_gmxx_prtx_cfg {
714422d97b8SChris Packham 	uint64_t u64;
715422d97b8SChris Packham 	struct cvmx_gmxx_prtx_cfg_s {
716422d97b8SChris Packham 		uint64_t reserved_22_63:42;
717422d97b8SChris Packham 		uint64_t pknd:6;
718422d97b8SChris Packham 		uint64_t reserved_14_15:2;
719422d97b8SChris Packham 		uint64_t tx_idle:1;
720422d97b8SChris Packham 		uint64_t rx_idle:1;
721422d97b8SChris Packham 		uint64_t reserved_9_11:3;
722422d97b8SChris Packham 		uint64_t speed_msb:1;
723422d97b8SChris Packham 		uint64_t reserved_4_7:4;
724422d97b8SChris Packham 		uint64_t slottime:1;
725422d97b8SChris Packham 		uint64_t duplex:1;
726422d97b8SChris Packham 		uint64_t speed:1;
727422d97b8SChris Packham 		uint64_t en:1;
728422d97b8SChris Packham 	} s;
729422d97b8SChris Packham 	struct cvmx_gmxx_prtx_cfg_cn30xx {
730422d97b8SChris Packham 		uint64_t reserved_4_63:60;
731422d97b8SChris Packham 		uint64_t slottime:1;
732422d97b8SChris Packham 		uint64_t duplex:1;
733422d97b8SChris Packham 		uint64_t speed:1;
734422d97b8SChris Packham 		uint64_t en:1;
735422d97b8SChris Packham 	} cn30xx;
736422d97b8SChris Packham 	struct cvmx_gmxx_prtx_cfg_cn52xx {
737422d97b8SChris Packham 		uint64_t reserved_14_63:50;
738422d97b8SChris Packham 		uint64_t tx_idle:1;
739422d97b8SChris Packham 		uint64_t rx_idle:1;
740422d97b8SChris Packham 		uint64_t reserved_9_11:3;
741422d97b8SChris Packham 		uint64_t speed_msb:1;
742422d97b8SChris Packham 		uint64_t reserved_4_7:4;
743422d97b8SChris Packham 		uint64_t slottime:1;
744422d97b8SChris Packham 		uint64_t duplex:1;
745422d97b8SChris Packham 		uint64_t speed:1;
746422d97b8SChris Packham 		uint64_t en:1;
747422d97b8SChris Packham 	} cn52xx;
748422d97b8SChris Packham };
749422d97b8SChris Packham 
750422d97b8SChris Packham union cvmx_gmxx_rxx_adr_ctl {
751422d97b8SChris Packham 	uint64_t u64;
752422d97b8SChris Packham 	struct cvmx_gmxx_rxx_adr_ctl_s {
753422d97b8SChris Packham 		uint64_t reserved_4_63:60;
754422d97b8SChris Packham 		uint64_t cam_mode:1;
755422d97b8SChris Packham 		uint64_t mcst:2;
756422d97b8SChris Packham 		uint64_t bcst:1;
757422d97b8SChris Packham 	} s;
758422d97b8SChris Packham };
759422d97b8SChris Packham 
760422d97b8SChris Packham union cvmx_pip_prt_tagx {
761422d97b8SChris Packham 	uint64_t u64;
762422d97b8SChris Packham 	struct cvmx_pip_prt_tagx_s {
763422d97b8SChris Packham 		uint64_t reserved_54_63:10;
764422d97b8SChris Packham 		uint64_t portadd_en:1;
765422d97b8SChris Packham 		uint64_t inc_hwchk:1;
766422d97b8SChris Packham 		uint64_t reserved_50_51:2;
767422d97b8SChris Packham 		uint64_t grptagbase_msb:2;
768422d97b8SChris Packham 		uint64_t reserved_46_47:2;
769422d97b8SChris Packham 		uint64_t grptagmask_msb:2;
770422d97b8SChris Packham 		uint64_t reserved_42_43:2;
771422d97b8SChris Packham 		uint64_t grp_msb:2;
772422d97b8SChris Packham 		uint64_t grptagbase:4;
773422d97b8SChris Packham 		uint64_t grptagmask:4;
774422d97b8SChris Packham 		uint64_t grptag:1;
775422d97b8SChris Packham 		uint64_t grptag_mskip:1;
776422d97b8SChris Packham 		uint64_t tag_mode:2;
777422d97b8SChris Packham 		uint64_t inc_vs:2;
778422d97b8SChris Packham 		uint64_t inc_vlan:1;
779422d97b8SChris Packham 		uint64_t inc_prt_flag:1;
780422d97b8SChris Packham 		uint64_t ip6_dprt_flag:1;
781422d97b8SChris Packham 		uint64_t ip4_dprt_flag:1;
782422d97b8SChris Packham 		uint64_t ip6_sprt_flag:1;
783422d97b8SChris Packham 		uint64_t ip4_sprt_flag:1;
784422d97b8SChris Packham 		uint64_t ip6_nxth_flag:1;
785422d97b8SChris Packham 		uint64_t ip4_pctl_flag:1;
786422d97b8SChris Packham 		uint64_t ip6_dst_flag:1;
787422d97b8SChris Packham 		uint64_t ip4_dst_flag:1;
788422d97b8SChris Packham 		uint64_t ip6_src_flag:1;
789422d97b8SChris Packham 		uint64_t ip4_src_flag:1;
790422d97b8SChris Packham 		uint64_t tcp6_tag_type:2;
791422d97b8SChris Packham 		uint64_t tcp4_tag_type:2;
792422d97b8SChris Packham 		uint64_t ip6_tag_type:2;
793422d97b8SChris Packham 		uint64_t ip4_tag_type:2;
794422d97b8SChris Packham 		uint64_t non_tag_type:2;
795422d97b8SChris Packham 		uint64_t grp:4;
796422d97b8SChris Packham 	} s;
797422d97b8SChris Packham 	struct cvmx_pip_prt_tagx_cn30xx {
798422d97b8SChris Packham 		uint64_t reserved_40_63:24;
799422d97b8SChris Packham 		uint64_t grptagbase:4;
800422d97b8SChris Packham 		uint64_t grptagmask:4;
801422d97b8SChris Packham 		uint64_t grptag:1;
802422d97b8SChris Packham 		uint64_t reserved_30_30:1;
803422d97b8SChris Packham 		uint64_t tag_mode:2;
804422d97b8SChris Packham 		uint64_t inc_vs:2;
805422d97b8SChris Packham 		uint64_t inc_vlan:1;
806422d97b8SChris Packham 		uint64_t inc_prt_flag:1;
807422d97b8SChris Packham 		uint64_t ip6_dprt_flag:1;
808422d97b8SChris Packham 		uint64_t ip4_dprt_flag:1;
809422d97b8SChris Packham 		uint64_t ip6_sprt_flag:1;
810422d97b8SChris Packham 		uint64_t ip4_sprt_flag:1;
811422d97b8SChris Packham 		uint64_t ip6_nxth_flag:1;
812422d97b8SChris Packham 		uint64_t ip4_pctl_flag:1;
813422d97b8SChris Packham 		uint64_t ip6_dst_flag:1;
814422d97b8SChris Packham 		uint64_t ip4_dst_flag:1;
815422d97b8SChris Packham 		uint64_t ip6_src_flag:1;
816422d97b8SChris Packham 		uint64_t ip4_src_flag:1;
817422d97b8SChris Packham 		uint64_t tcp6_tag_type:2;
818422d97b8SChris Packham 		uint64_t tcp4_tag_type:2;
819422d97b8SChris Packham 		uint64_t ip6_tag_type:2;
820422d97b8SChris Packham 		uint64_t ip4_tag_type:2;
821422d97b8SChris Packham 		uint64_t non_tag_type:2;
822422d97b8SChris Packham 		uint64_t grp:4;
823422d97b8SChris Packham 	} cn30xx;
824422d97b8SChris Packham 	struct cvmx_pip_prt_tagx_cn50xx {
825422d97b8SChris Packham 		uint64_t reserved_40_63:24;
826422d97b8SChris Packham 		uint64_t grptagbase:4;
827422d97b8SChris Packham 		uint64_t grptagmask:4;
828422d97b8SChris Packham 		uint64_t grptag:1;
829422d97b8SChris Packham 		uint64_t grptag_mskip:1;
830422d97b8SChris Packham 		uint64_t tag_mode:2;
831422d97b8SChris Packham 		uint64_t inc_vs:2;
832422d97b8SChris Packham 		uint64_t inc_vlan:1;
833422d97b8SChris Packham 		uint64_t inc_prt_flag:1;
834422d97b8SChris Packham 		uint64_t ip6_dprt_flag:1;
835422d97b8SChris Packham 		uint64_t ip4_dprt_flag:1;
836422d97b8SChris Packham 		uint64_t ip6_sprt_flag:1;
837422d97b8SChris Packham 		uint64_t ip4_sprt_flag:1;
838422d97b8SChris Packham 		uint64_t ip6_nxth_flag:1;
839422d97b8SChris Packham 		uint64_t ip4_pctl_flag:1;
840422d97b8SChris Packham 		uint64_t ip6_dst_flag:1;
841422d97b8SChris Packham 		uint64_t ip4_dst_flag:1;
842422d97b8SChris Packham 		uint64_t ip6_src_flag:1;
843422d97b8SChris Packham 		uint64_t ip4_src_flag:1;
844422d97b8SChris Packham 		uint64_t tcp6_tag_type:2;
845422d97b8SChris Packham 		uint64_t tcp4_tag_type:2;
846422d97b8SChris Packham 		uint64_t ip6_tag_type:2;
847422d97b8SChris Packham 		uint64_t ip4_tag_type:2;
848422d97b8SChris Packham 		uint64_t non_tag_type:2;
849422d97b8SChris Packham 		uint64_t grp:4;
850422d97b8SChris Packham 	} cn50xx;
851422d97b8SChris Packham };
852422d97b8SChris Packham 
853422d97b8SChris Packham union cvmx_spxx_int_reg {
854422d97b8SChris Packham 	uint64_t u64;
855422d97b8SChris Packham 	struct cvmx_spxx_int_reg_s {
856422d97b8SChris Packham 		uint64_t reserved_32_63:32;
857422d97b8SChris Packham 		uint64_t spf:1;
858422d97b8SChris Packham 		uint64_t reserved_12_30:19;
859422d97b8SChris Packham 		uint64_t calerr:1;
860422d97b8SChris Packham 		uint64_t syncerr:1;
861422d97b8SChris Packham 		uint64_t diperr:1;
862422d97b8SChris Packham 		uint64_t tpaovr:1;
863422d97b8SChris Packham 		uint64_t rsverr:1;
864422d97b8SChris Packham 		uint64_t drwnng:1;
865422d97b8SChris Packham 		uint64_t clserr:1;
866422d97b8SChris Packham 		uint64_t spiovr:1;
867422d97b8SChris Packham 		uint64_t reserved_2_3:2;
868422d97b8SChris Packham 		uint64_t abnorm:1;
869422d97b8SChris Packham 		uint64_t prtnxa:1;
870422d97b8SChris Packham 	} s;
871422d97b8SChris Packham };
872422d97b8SChris Packham 
873422d97b8SChris Packham union cvmx_spxx_int_msk {
874422d97b8SChris Packham 	uint64_t u64;
875422d97b8SChris Packham 	struct cvmx_spxx_int_msk_s {
876422d97b8SChris Packham 		uint64_t reserved_12_63:52;
877422d97b8SChris Packham 		uint64_t calerr:1;
878422d97b8SChris Packham 		uint64_t syncerr:1;
879422d97b8SChris Packham 		uint64_t diperr:1;
880422d97b8SChris Packham 		uint64_t tpaovr:1;
881422d97b8SChris Packham 		uint64_t rsverr:1;
882422d97b8SChris Packham 		uint64_t drwnng:1;
883422d97b8SChris Packham 		uint64_t clserr:1;
884422d97b8SChris Packham 		uint64_t spiovr:1;
885422d97b8SChris Packham 		uint64_t reserved_2_3:2;
886422d97b8SChris Packham 		uint64_t abnorm:1;
887422d97b8SChris Packham 		uint64_t prtnxa:1;
888422d97b8SChris Packham 	} s;
889422d97b8SChris Packham };
890422d97b8SChris Packham 
891422d97b8SChris Packham union cvmx_pow_wq_int {
892422d97b8SChris Packham 	uint64_t u64;
893422d97b8SChris Packham 	struct cvmx_pow_wq_int_s {
894422d97b8SChris Packham 		uint64_t wq_int:16;
895422d97b8SChris Packham 		uint64_t iq_dis:16;
896422d97b8SChris Packham 		uint64_t reserved_32_63:32;
897422d97b8SChris Packham 	} s;
898422d97b8SChris Packham };
899422d97b8SChris Packham 
900422d97b8SChris Packham union cvmx_sso_wq_int_thrx {
901422d97b8SChris Packham 	uint64_t u64;
902422d97b8SChris Packham 	struct {
903422d97b8SChris Packham 		uint64_t iq_thr:12;
904422d97b8SChris Packham 		uint64_t reserved_12_13:2;
905422d97b8SChris Packham 		uint64_t ds_thr:12;
906422d97b8SChris Packham 		uint64_t reserved_26_27:2;
907422d97b8SChris Packham 		uint64_t tc_thr:4;
908422d97b8SChris Packham 		uint64_t tc_en:1;
909422d97b8SChris Packham 		uint64_t reserved_33_63:31;
910422d97b8SChris Packham 	} s;
911422d97b8SChris Packham };
912422d97b8SChris Packham 
913422d97b8SChris Packham union cvmx_stxx_int_reg {
914422d97b8SChris Packham 	uint64_t u64;
915422d97b8SChris Packham 	struct cvmx_stxx_int_reg_s {
916422d97b8SChris Packham 		uint64_t reserved_9_63:55;
917422d97b8SChris Packham 		uint64_t syncerr:1;
918422d97b8SChris Packham 		uint64_t frmerr:1;
919422d97b8SChris Packham 		uint64_t unxfrm:1;
920422d97b8SChris Packham 		uint64_t nosync:1;
921422d97b8SChris Packham 		uint64_t diperr:1;
922422d97b8SChris Packham 		uint64_t datovr:1;
923422d97b8SChris Packham 		uint64_t ovrbst:1;
924422d97b8SChris Packham 		uint64_t calpar1:1;
925422d97b8SChris Packham 		uint64_t calpar0:1;
926422d97b8SChris Packham 	} s;
927422d97b8SChris Packham };
928422d97b8SChris Packham 
929422d97b8SChris Packham union cvmx_stxx_int_msk {
930422d97b8SChris Packham 	uint64_t u64;
931422d97b8SChris Packham 	struct cvmx_stxx_int_msk_s {
932422d97b8SChris Packham 		uint64_t reserved_8_63:56;
933422d97b8SChris Packham 		uint64_t frmerr:1;
934422d97b8SChris Packham 		uint64_t unxfrm:1;
935422d97b8SChris Packham 		uint64_t nosync:1;
936422d97b8SChris Packham 		uint64_t diperr:1;
937422d97b8SChris Packham 		uint64_t datovr:1;
938422d97b8SChris Packham 		uint64_t ovrbst:1;
939422d97b8SChris Packham 		uint64_t calpar1:1;
940422d97b8SChris Packham 		uint64_t calpar0:1;
941422d97b8SChris Packham 	} s;
942422d97b8SChris Packham };
943422d97b8SChris Packham 
944422d97b8SChris Packham union cvmx_pow_wq_int_pc {
945422d97b8SChris Packham 	uint64_t u64;
946422d97b8SChris Packham 	struct cvmx_pow_wq_int_pc_s {
947422d97b8SChris Packham 		uint64_t reserved_0_7:8;
948422d97b8SChris Packham 		uint64_t pc_thr:20;
949422d97b8SChris Packham 		uint64_t reserved_28_31:4;
950422d97b8SChris Packham 		uint64_t pc:28;
951422d97b8SChris Packham 		uint64_t reserved_60_63:4;
952422d97b8SChris Packham 	} s;
953422d97b8SChris Packham };
954422d97b8SChris Packham 
955422d97b8SChris Packham union cvmx_pow_wq_int_thrx {
956422d97b8SChris Packham 	uint64_t u64;
957422d97b8SChris Packham 	struct cvmx_pow_wq_int_thrx_s {
958422d97b8SChris Packham 		uint64_t reserved_29_63:35;
959422d97b8SChris Packham 		uint64_t tc_en:1;
960422d97b8SChris Packham 		uint64_t tc_thr:4;
961422d97b8SChris Packham 		uint64_t reserved_23_23:1;
962422d97b8SChris Packham 		uint64_t ds_thr:11;
963422d97b8SChris Packham 		uint64_t reserved_11_11:1;
964422d97b8SChris Packham 		uint64_t iq_thr:11;
965422d97b8SChris Packham 	} s;
966422d97b8SChris Packham 	struct cvmx_pow_wq_int_thrx_cn30xx {
967422d97b8SChris Packham 		uint64_t reserved_29_63:35;
968422d97b8SChris Packham 		uint64_t tc_en:1;
969422d97b8SChris Packham 		uint64_t tc_thr:4;
970422d97b8SChris Packham 		uint64_t reserved_18_23:6;
971422d97b8SChris Packham 		uint64_t ds_thr:6;
972422d97b8SChris Packham 		uint64_t reserved_6_11:6;
973422d97b8SChris Packham 		uint64_t iq_thr:6;
974422d97b8SChris Packham 	} cn30xx;
975422d97b8SChris Packham 	struct cvmx_pow_wq_int_thrx_cn31xx {
976422d97b8SChris Packham 		uint64_t reserved_29_63:35;
977422d97b8SChris Packham 		uint64_t tc_en:1;
978422d97b8SChris Packham 		uint64_t tc_thr:4;
979422d97b8SChris Packham 		uint64_t reserved_20_23:4;
980422d97b8SChris Packham 		uint64_t ds_thr:8;
981422d97b8SChris Packham 		uint64_t reserved_8_11:4;
982422d97b8SChris Packham 		uint64_t iq_thr:8;
983422d97b8SChris Packham 	} cn31xx;
984422d97b8SChris Packham 	struct cvmx_pow_wq_int_thrx_cn52xx {
985422d97b8SChris Packham 		uint64_t reserved_29_63:35;
986422d97b8SChris Packham 		uint64_t tc_en:1;
987422d97b8SChris Packham 		uint64_t tc_thr:4;
988422d97b8SChris Packham 		uint64_t reserved_21_23:3;
989422d97b8SChris Packham 		uint64_t ds_thr:9;
990422d97b8SChris Packham 		uint64_t reserved_9_11:3;
991422d97b8SChris Packham 		uint64_t iq_thr:9;
992422d97b8SChris Packham 	} cn52xx;
993422d97b8SChris Packham 	struct cvmx_pow_wq_int_thrx_cn63xx {
994422d97b8SChris Packham 		uint64_t reserved_29_63:35;
995422d97b8SChris Packham 		uint64_t tc_en:1;
996422d97b8SChris Packham 		uint64_t tc_thr:4;
997422d97b8SChris Packham 		uint64_t reserved_22_23:2;
998422d97b8SChris Packham 		uint64_t ds_thr:10;
999422d97b8SChris Packham 		uint64_t reserved_10_11:2;
1000422d97b8SChris Packham 		uint64_t iq_thr:10;
1001422d97b8SChris Packham 	} cn63xx;
1002422d97b8SChris Packham };
1003422d97b8SChris Packham 
1004422d97b8SChris Packham union cvmx_npi_rsl_int_blocks {
1005422d97b8SChris Packham 	uint64_t u64;
1006422d97b8SChris Packham 	struct cvmx_npi_rsl_int_blocks_s {
1007422d97b8SChris Packham 		uint64_t reserved_32_63:32;
1008422d97b8SChris Packham 		uint64_t rint_31:1;
1009422d97b8SChris Packham 		uint64_t iob:1;
1010422d97b8SChris Packham 		uint64_t reserved_28_29:2;
1011422d97b8SChris Packham 		uint64_t rint_27:1;
1012422d97b8SChris Packham 		uint64_t rint_26:1;
1013422d97b8SChris Packham 		uint64_t rint_25:1;
1014422d97b8SChris Packham 		uint64_t rint_24:1;
1015422d97b8SChris Packham 		uint64_t asx1:1;
1016422d97b8SChris Packham 		uint64_t asx0:1;
1017422d97b8SChris Packham 		uint64_t rint_21:1;
1018422d97b8SChris Packham 		uint64_t pip:1;
1019422d97b8SChris Packham 		uint64_t spx1:1;
1020422d97b8SChris Packham 		uint64_t spx0:1;
1021422d97b8SChris Packham 		uint64_t lmc:1;
1022422d97b8SChris Packham 		uint64_t l2c:1;
1023422d97b8SChris Packham 		uint64_t rint_15:1;
1024422d97b8SChris Packham 		uint64_t reserved_13_14:2;
1025422d97b8SChris Packham 		uint64_t pow:1;
1026422d97b8SChris Packham 		uint64_t tim:1;
1027422d97b8SChris Packham 		uint64_t pko:1;
1028422d97b8SChris Packham 		uint64_t ipd:1;
1029422d97b8SChris Packham 		uint64_t rint_8:1;
1030422d97b8SChris Packham 		uint64_t zip:1;
1031422d97b8SChris Packham 		uint64_t dfa:1;
1032422d97b8SChris Packham 		uint64_t fpa:1;
1033422d97b8SChris Packham 		uint64_t key:1;
1034422d97b8SChris Packham 		uint64_t npi:1;
1035422d97b8SChris Packham 		uint64_t gmx1:1;
1036422d97b8SChris Packham 		uint64_t gmx0:1;
1037422d97b8SChris Packham 		uint64_t mio:1;
1038422d97b8SChris Packham 	} s;
1039422d97b8SChris Packham 	struct cvmx_npi_rsl_int_blocks_cn30xx {
1040422d97b8SChris Packham 		uint64_t reserved_32_63:32;
1041422d97b8SChris Packham 		uint64_t rint_31:1;
1042422d97b8SChris Packham 		uint64_t iob:1;
1043422d97b8SChris Packham 		uint64_t rint_29:1;
1044422d97b8SChris Packham 		uint64_t rint_28:1;
1045422d97b8SChris Packham 		uint64_t rint_27:1;
1046422d97b8SChris Packham 		uint64_t rint_26:1;
1047422d97b8SChris Packham 		uint64_t rint_25:1;
1048422d97b8SChris Packham 		uint64_t rint_24:1;
1049422d97b8SChris Packham 		uint64_t asx1:1;
1050422d97b8SChris Packham 		uint64_t asx0:1;
1051422d97b8SChris Packham 		uint64_t rint_21:1;
1052422d97b8SChris Packham 		uint64_t pip:1;
1053422d97b8SChris Packham 		uint64_t spx1:1;
1054422d97b8SChris Packham 		uint64_t spx0:1;
1055422d97b8SChris Packham 		uint64_t lmc:1;
1056422d97b8SChris Packham 		uint64_t l2c:1;
1057422d97b8SChris Packham 		uint64_t rint_15:1;
1058422d97b8SChris Packham 		uint64_t rint_14:1;
1059422d97b8SChris Packham 		uint64_t usb:1;
1060422d97b8SChris Packham 		uint64_t pow:1;
1061422d97b8SChris Packham 		uint64_t tim:1;
1062422d97b8SChris Packham 		uint64_t pko:1;
1063422d97b8SChris Packham 		uint64_t ipd:1;
1064422d97b8SChris Packham 		uint64_t rint_8:1;
1065422d97b8SChris Packham 		uint64_t zip:1;
1066422d97b8SChris Packham 		uint64_t dfa:1;
1067422d97b8SChris Packham 		uint64_t fpa:1;
1068422d97b8SChris Packham 		uint64_t key:1;
1069422d97b8SChris Packham 		uint64_t npi:1;
1070422d97b8SChris Packham 		uint64_t gmx1:1;
1071422d97b8SChris Packham 		uint64_t gmx0:1;
1072422d97b8SChris Packham 		uint64_t mio:1;
1073422d97b8SChris Packham 	} cn30xx;
1074422d97b8SChris Packham 	struct cvmx_npi_rsl_int_blocks_cn38xx {
1075422d97b8SChris Packham 		uint64_t reserved_32_63:32;
1076422d97b8SChris Packham 		uint64_t rint_31:1;
1077422d97b8SChris Packham 		uint64_t iob:1;
1078422d97b8SChris Packham 		uint64_t rint_29:1;
1079422d97b8SChris Packham 		uint64_t rint_28:1;
1080422d97b8SChris Packham 		uint64_t rint_27:1;
1081422d97b8SChris Packham 		uint64_t rint_26:1;
1082422d97b8SChris Packham 		uint64_t rint_25:1;
1083422d97b8SChris Packham 		uint64_t rint_24:1;
1084422d97b8SChris Packham 		uint64_t asx1:1;
1085422d97b8SChris Packham 		uint64_t asx0:1;
1086422d97b8SChris Packham 		uint64_t rint_21:1;
1087422d97b8SChris Packham 		uint64_t pip:1;
1088422d97b8SChris Packham 		uint64_t spx1:1;
1089422d97b8SChris Packham 		uint64_t spx0:1;
1090422d97b8SChris Packham 		uint64_t lmc:1;
1091422d97b8SChris Packham 		uint64_t l2c:1;
1092422d97b8SChris Packham 		uint64_t rint_15:1;
1093422d97b8SChris Packham 		uint64_t rint_14:1;
1094422d97b8SChris Packham 		uint64_t rint_13:1;
1095422d97b8SChris Packham 		uint64_t pow:1;
1096422d97b8SChris Packham 		uint64_t tim:1;
1097422d97b8SChris Packham 		uint64_t pko:1;
1098422d97b8SChris Packham 		uint64_t ipd:1;
1099422d97b8SChris Packham 		uint64_t rint_8:1;
1100422d97b8SChris Packham 		uint64_t zip:1;
1101422d97b8SChris Packham 		uint64_t dfa:1;
1102422d97b8SChris Packham 		uint64_t fpa:1;
1103422d97b8SChris Packham 		uint64_t key:1;
1104422d97b8SChris Packham 		uint64_t npi:1;
1105422d97b8SChris Packham 		uint64_t gmx1:1;
1106422d97b8SChris Packham 		uint64_t gmx0:1;
1107422d97b8SChris Packham 		uint64_t mio:1;
1108422d97b8SChris Packham 	} cn38xx;
1109422d97b8SChris Packham 	struct cvmx_npi_rsl_int_blocks_cn50xx {
1110422d97b8SChris Packham 		uint64_t reserved_31_63:33;
1111422d97b8SChris Packham 		uint64_t iob:1;
1112422d97b8SChris Packham 		uint64_t lmc1:1;
1113422d97b8SChris Packham 		uint64_t agl:1;
1114422d97b8SChris Packham 		uint64_t reserved_24_27:4;
1115422d97b8SChris Packham 		uint64_t asx1:1;
1116422d97b8SChris Packham 		uint64_t asx0:1;
1117422d97b8SChris Packham 		uint64_t reserved_21_21:1;
1118422d97b8SChris Packham 		uint64_t pip:1;
1119422d97b8SChris Packham 		uint64_t spx1:1;
1120422d97b8SChris Packham 		uint64_t spx0:1;
1121422d97b8SChris Packham 		uint64_t lmc:1;
1122422d97b8SChris Packham 		uint64_t l2c:1;
1123422d97b8SChris Packham 		uint64_t reserved_15_15:1;
1124422d97b8SChris Packham 		uint64_t rad:1;
1125422d97b8SChris Packham 		uint64_t usb:1;
1126422d97b8SChris Packham 		uint64_t pow:1;
1127422d97b8SChris Packham 		uint64_t tim:1;
1128422d97b8SChris Packham 		uint64_t pko:1;
1129422d97b8SChris Packham 		uint64_t ipd:1;
1130422d97b8SChris Packham 		uint64_t reserved_8_8:1;
1131422d97b8SChris Packham 		uint64_t zip:1;
1132422d97b8SChris Packham 		uint64_t dfa:1;
1133422d97b8SChris Packham 		uint64_t fpa:1;
1134422d97b8SChris Packham 		uint64_t key:1;
1135422d97b8SChris Packham 		uint64_t npi:1;
1136422d97b8SChris Packham 		uint64_t gmx1:1;
1137422d97b8SChris Packham 		uint64_t gmx0:1;
1138422d97b8SChris Packham 		uint64_t mio:1;
1139422d97b8SChris Packham 	} cn50xx;
1140422d97b8SChris Packham };
1141422d97b8SChris Packham 
1142422d97b8SChris Packham union cvmx_pko_command_word0 {
1143422d97b8SChris Packham 	uint64_t u64;
1144422d97b8SChris Packham 	struct {
1145422d97b8SChris Packham 		uint64_t total_bytes:16;
1146422d97b8SChris Packham 		uint64_t segs:6;
1147422d97b8SChris Packham 		uint64_t dontfree:1;
1148422d97b8SChris Packham 		uint64_t ignore_i:1;
1149422d97b8SChris Packham 		uint64_t ipoffp1:7;
1150422d97b8SChris Packham 		uint64_t gather:1;
1151422d97b8SChris Packham 		uint64_t rsp:1;
1152422d97b8SChris Packham 		uint64_t wqp:1;
1153422d97b8SChris Packham 		uint64_t n2:1;
1154422d97b8SChris Packham 		uint64_t le:1;
1155422d97b8SChris Packham 		uint64_t reg0:11;
1156422d97b8SChris Packham 		uint64_t subone0:1;
1157422d97b8SChris Packham 		uint64_t reg1:11;
1158422d97b8SChris Packham 		uint64_t subone1:1;
1159422d97b8SChris Packham 		uint64_t size0:2;
1160422d97b8SChris Packham 		uint64_t size1:2;
1161422d97b8SChris Packham 	} s;
1162422d97b8SChris Packham };
1163422d97b8SChris Packham 
1164422d97b8SChris Packham union cvmx_ciu_timx {
1165422d97b8SChris Packham 	uint64_t u64;
1166422d97b8SChris Packham 	struct cvmx_ciu_timx_s {
1167422d97b8SChris Packham 		uint64_t reserved_37_63:27;
1168422d97b8SChris Packham 		uint64_t one_shot:1;
1169422d97b8SChris Packham 		uint64_t len:36;
1170422d97b8SChris Packham 	} s;
1171422d97b8SChris Packham };
1172422d97b8SChris Packham 
1173422d97b8SChris Packham union cvmx_gmxx_rxx_rx_inbnd {
1174422d97b8SChris Packham 	uint64_t u64;
1175422d97b8SChris Packham 	struct cvmx_gmxx_rxx_rx_inbnd_s {
1176422d97b8SChris Packham 		uint64_t status:1;
1177422d97b8SChris Packham 		uint64_t speed:2;
1178422d97b8SChris Packham 		uint64_t duplex:1;
1179422d97b8SChris Packham 		uint64_t reserved_4_63:60;
1180422d97b8SChris Packham 	} s;
1181422d97b8SChris Packham };
1182422d97b8SChris Packham 
cvmx_fau_fetch_and_add32(enum cvmx_fau_reg_32 reg,int32_t value)1183422d97b8SChris Packham static inline int32_t cvmx_fau_fetch_and_add32(enum cvmx_fau_reg_32 reg,
1184422d97b8SChris Packham 					       int32_t value)
1185422d97b8SChris Packham {
1186422d97b8SChris Packham 	return value;
1187422d97b8SChris Packham }
1188422d97b8SChris Packham 
cvmx_fau_atomic_add32(enum cvmx_fau_reg_32 reg,int32_t value)1189422d97b8SChris Packham static inline void cvmx_fau_atomic_add32(enum cvmx_fau_reg_32 reg,
1190422d97b8SChris Packham 					 int32_t value)
1191422d97b8SChris Packham { }
1192422d97b8SChris Packham 
cvmx_fau_atomic_write32(enum cvmx_fau_reg_32 reg,int32_t value)1193422d97b8SChris Packham static inline void cvmx_fau_atomic_write32(enum cvmx_fau_reg_32 reg,
1194422d97b8SChris Packham 					   int32_t value)
1195422d97b8SChris Packham { }
1196422d97b8SChris Packham 
cvmx_scratch_read64(uint64_t address)1197422d97b8SChris Packham static inline uint64_t cvmx_scratch_read64(uint64_t address)
1198422d97b8SChris Packham {
1199422d97b8SChris Packham 	return 0;
1200422d97b8SChris Packham }
1201422d97b8SChris Packham 
cvmx_scratch_write64(uint64_t address,uint64_t value)1202422d97b8SChris Packham static inline void cvmx_scratch_write64(uint64_t address, uint64_t value)
1203422d97b8SChris Packham { }
1204422d97b8SChris Packham 
cvmx_wqe_get_grp(struct cvmx_wqe * work)1205422d97b8SChris Packham static inline int cvmx_wqe_get_grp(struct cvmx_wqe *work)
1206422d97b8SChris Packham {
1207422d97b8SChris Packham 	return 0;
1208422d97b8SChris Packham }
1209422d97b8SChris Packham 
cvmx_phys_to_ptr(uint64_t physical_address)1210422d97b8SChris Packham static inline void *cvmx_phys_to_ptr(uint64_t physical_address)
1211422d97b8SChris Packham {
1212422d97b8SChris Packham 	return (void *)(uintptr_t)(physical_address);
1213422d97b8SChris Packham }
1214422d97b8SChris Packham 
cvmx_ptr_to_phys(void * ptr)12153cbb8d0dSGeert Uytterhoeven static inline phys_addr_t cvmx_ptr_to_phys(void *ptr)
1216422d97b8SChris Packham {
1217422d97b8SChris Packham 	return (unsigned long)ptr;
1218422d97b8SChris Packham }
1219422d97b8SChris Packham 
cvmx_helper_get_interface_num(int ipd_port)1220422d97b8SChris Packham static inline int cvmx_helper_get_interface_num(int ipd_port)
1221422d97b8SChris Packham {
1222422d97b8SChris Packham 	return ipd_port;
1223422d97b8SChris Packham }
1224422d97b8SChris Packham 
cvmx_helper_get_interface_index_num(int ipd_port)1225422d97b8SChris Packham static inline int cvmx_helper_get_interface_index_num(int ipd_port)
1226422d97b8SChris Packham {
1227422d97b8SChris Packham 	return ipd_port;
1228422d97b8SChris Packham }
1229422d97b8SChris Packham 
cvmx_fpa_enable(void)1230422d97b8SChris Packham static inline void cvmx_fpa_enable(void)
1231422d97b8SChris Packham { }
1232422d97b8SChris Packham 
cvmx_read_csr(uint64_t csr_addr)1233422d97b8SChris Packham static inline uint64_t cvmx_read_csr(uint64_t csr_addr)
1234422d97b8SChris Packham {
1235422d97b8SChris Packham 	return 0;
1236422d97b8SChris Packham }
1237422d97b8SChris Packham 
cvmx_write_csr(uint64_t csr_addr,uint64_t val)1238422d97b8SChris Packham static inline void cvmx_write_csr(uint64_t csr_addr, uint64_t val)
1239422d97b8SChris Packham { }
1240422d97b8SChris Packham 
cvmx_helper_setup_red(int pass_thresh,int drop_thresh)1241422d97b8SChris Packham static inline int cvmx_helper_setup_red(int pass_thresh, int drop_thresh)
1242422d97b8SChris Packham {
1243422d97b8SChris Packham 	return 0;
1244422d97b8SChris Packham }
1245422d97b8SChris Packham 
cvmx_fpa_alloc(uint64_t pool)1246422d97b8SChris Packham static inline void *cvmx_fpa_alloc(uint64_t pool)
1247422d97b8SChris Packham {
1248422d97b8SChris Packham 	return NULL;
1249422d97b8SChris Packham }
1250422d97b8SChris Packham 
cvmx_fpa_free(void * ptr,uint64_t pool,uint64_t num_cache_lines)1251422d97b8SChris Packham static inline void cvmx_fpa_free(void *ptr, uint64_t pool,
1252422d97b8SChris Packham 				 uint64_t num_cache_lines)
1253422d97b8SChris Packham { }
1254422d97b8SChris Packham 
octeon_is_simulation(void)1255422d97b8SChris Packham static inline int octeon_is_simulation(void)
1256422d97b8SChris Packham {
1257422d97b8SChris Packham 	return 1;
1258422d97b8SChris Packham }
1259422d97b8SChris Packham 
cvmx_pip_get_port_status(uint64_t port_num,uint64_t clear,cvmx_pip_port_status_t * status)1260422d97b8SChris Packham static inline void cvmx_pip_get_port_status(uint64_t port_num, uint64_t clear,
1261422d97b8SChris Packham 					    cvmx_pip_port_status_t *status)
1262422d97b8SChris Packham { }
1263422d97b8SChris Packham 
cvmx_pko_get_port_status(uint64_t port_num,uint64_t clear,cvmx_pko_port_status_t * status)1264422d97b8SChris Packham static inline void cvmx_pko_get_port_status(uint64_t port_num, uint64_t clear,
1265422d97b8SChris Packham 					    cvmx_pko_port_status_t *status)
1266422d97b8SChris Packham { }
1267422d97b8SChris Packham 
cvmx_helper_interface_get_mode(int interface)1268422d97b8SChris Packham static inline cvmx_helper_interface_mode_t cvmx_helper_interface_get_mode(int
1269422d97b8SChris Packham 								   interface)
1270422d97b8SChris Packham {
1271422d97b8SChris Packham 	return 0;
1272422d97b8SChris Packham }
1273422d97b8SChris Packham 
cvmx_helper_link_get(int ipd_port)1274422d97b8SChris Packham static inline union cvmx_helper_link_info cvmx_helper_link_get(int ipd_port)
1275422d97b8SChris Packham {
1276422d97b8SChris Packham 	union cvmx_helper_link_info ret = { .u64 = 0 };
1277422d97b8SChris Packham 
1278422d97b8SChris Packham 	return ret;
1279422d97b8SChris Packham }
1280422d97b8SChris Packham 
cvmx_helper_link_set(int ipd_port,union cvmx_helper_link_info link_info)1281422d97b8SChris Packham static inline int cvmx_helper_link_set(int ipd_port,
1282422d97b8SChris Packham 				       union cvmx_helper_link_info link_info)
1283422d97b8SChris Packham {
1284422d97b8SChris Packham 	return 0;
1285422d97b8SChris Packham }
1286422d97b8SChris Packham 
cvmx_helper_initialize_packet_io_global(void)1287422d97b8SChris Packham static inline int cvmx_helper_initialize_packet_io_global(void)
1288422d97b8SChris Packham {
1289422d97b8SChris Packham 	return 0;
1290422d97b8SChris Packham }
1291422d97b8SChris Packham 
cvmx_helper_get_number_of_interfaces(void)1292422d97b8SChris Packham static inline int cvmx_helper_get_number_of_interfaces(void)
1293422d97b8SChris Packham {
1294422d97b8SChris Packham 	return 2;
1295422d97b8SChris Packham }
1296422d97b8SChris Packham 
cvmx_helper_ports_on_interface(int interface)1297422d97b8SChris Packham static inline int cvmx_helper_ports_on_interface(int interface)
1298422d97b8SChris Packham {
1299422d97b8SChris Packham 	return 1;
1300422d97b8SChris Packham }
1301422d97b8SChris Packham 
cvmx_helper_get_ipd_port(int interface,int port)1302422d97b8SChris Packham static inline int cvmx_helper_get_ipd_port(int interface, int port)
1303422d97b8SChris Packham {
1304422d97b8SChris Packham 	return 0;
1305422d97b8SChris Packham }
1306422d97b8SChris Packham 
cvmx_helper_ipd_and_packet_input_enable(void)1307422d97b8SChris Packham static inline int cvmx_helper_ipd_and_packet_input_enable(void)
1308422d97b8SChris Packham {
1309422d97b8SChris Packham 	return 0;
1310422d97b8SChris Packham }
1311422d97b8SChris Packham 
cvmx_ipd_disable(void)1312422d97b8SChris Packham static inline void cvmx_ipd_disable(void)
1313422d97b8SChris Packham { }
1314422d97b8SChris Packham 
cvmx_ipd_free_ptr(void)1315422d97b8SChris Packham static inline void cvmx_ipd_free_ptr(void)
1316422d97b8SChris Packham { }
1317422d97b8SChris Packham 
cvmx_pko_disable(void)1318422d97b8SChris Packham static inline void cvmx_pko_disable(void)
1319422d97b8SChris Packham { }
1320422d97b8SChris Packham 
cvmx_pko_shutdown(void)1321422d97b8SChris Packham static inline void cvmx_pko_shutdown(void)
1322422d97b8SChris Packham { }
1323422d97b8SChris Packham 
cvmx_pko_get_base_queue_per_core(int port,int core)1324422d97b8SChris Packham static inline int cvmx_pko_get_base_queue_per_core(int port, int core)
1325422d97b8SChris Packham {
1326422d97b8SChris Packham 	return port;
1327422d97b8SChris Packham }
1328422d97b8SChris Packham 
cvmx_pko_get_base_queue(int port)1329422d97b8SChris Packham static inline int cvmx_pko_get_base_queue(int port)
1330422d97b8SChris Packham {
1331422d97b8SChris Packham 	return port;
1332422d97b8SChris Packham }
1333422d97b8SChris Packham 
cvmx_pko_get_num_queues(int port)1334422d97b8SChris Packham static inline int cvmx_pko_get_num_queues(int port)
1335422d97b8SChris Packham {
1336422d97b8SChris Packham 	return port;
1337422d97b8SChris Packham }
1338422d97b8SChris Packham 
cvmx_get_core_num(void)1339422d97b8SChris Packham static inline unsigned int cvmx_get_core_num(void)
1340422d97b8SChris Packham {
1341422d97b8SChris Packham 	return 0;
1342422d97b8SChris Packham }
1343422d97b8SChris Packham 
cvmx_pow_work_request_async_nocheck(int scr_addr,cvmx_pow_wait_t wait)1344422d97b8SChris Packham static inline void cvmx_pow_work_request_async_nocheck(int scr_addr,
1345422d97b8SChris Packham 						       cvmx_pow_wait_t wait)
1346422d97b8SChris Packham { }
1347422d97b8SChris Packham 
cvmx_pow_work_request_async(int scr_addr,cvmx_pow_wait_t wait)1348422d97b8SChris Packham static inline void cvmx_pow_work_request_async(int scr_addr,
1349422d97b8SChris Packham 					       cvmx_pow_wait_t wait)
1350422d97b8SChris Packham { }
1351422d97b8SChris Packham 
cvmx_pow_work_response_async(int scr_addr)1352422d97b8SChris Packham static inline struct cvmx_wqe *cvmx_pow_work_response_async(int scr_addr)
1353422d97b8SChris Packham {
1354422d97b8SChris Packham 	struct cvmx_wqe *wqe = (void *)(unsigned long)scr_addr;
1355422d97b8SChris Packham 
1356422d97b8SChris Packham 	return wqe;
1357422d97b8SChris Packham }
1358422d97b8SChris Packham 
cvmx_pow_work_request_sync(cvmx_pow_wait_t wait)1359422d97b8SChris Packham static inline struct cvmx_wqe *cvmx_pow_work_request_sync(cvmx_pow_wait_t wait)
1360422d97b8SChris Packham {
1361422d97b8SChris Packham 	return (void *)(unsigned long)wait;
1362422d97b8SChris Packham }
1363422d97b8SChris Packham 
cvmx_spi_restart_interface(int interface,cvmx_spi_mode_t mode,int timeout)1364422d97b8SChris Packham static inline int cvmx_spi_restart_interface(int interface,
1365422d97b8SChris Packham 					cvmx_spi_mode_t mode, int timeout)
1366422d97b8SChris Packham {
1367422d97b8SChris Packham 	return 0;
1368422d97b8SChris Packham }
1369422d97b8SChris Packham 
cvmx_fau_async_fetch_and_add32(uint64_t scraddr,enum cvmx_fau_reg_32 reg,int32_t value)1370422d97b8SChris Packham static inline void cvmx_fau_async_fetch_and_add32(uint64_t scraddr,
1371422d97b8SChris Packham 						  enum cvmx_fau_reg_32 reg,
1372422d97b8SChris Packham 						  int32_t value)
1373422d97b8SChris Packham { }
1374422d97b8SChris Packham 
cvmx_spi4000_check_speed(int interface,int port)1375*f4a8e711SSumitra Sharma static inline union cvmx_gmxx_rxx_rx_inbnd cvmx_spi4000_check_speed(int interface, int port)
1376422d97b8SChris Packham {
1377422d97b8SChris Packham 	union cvmx_gmxx_rxx_rx_inbnd r;
1378422d97b8SChris Packham 
1379422d97b8SChris Packham 	r.u64 = 0;
1380422d97b8SChris Packham 	return r;
1381422d97b8SChris Packham }
1382422d97b8SChris Packham 
cvmx_pko_send_packet_prepare(uint64_t port,uint64_t queue,cvmx_pko_lock_t use_locking)1383422d97b8SChris Packham static inline void cvmx_pko_send_packet_prepare(uint64_t port, uint64_t queue,
1384422d97b8SChris Packham 						cvmx_pko_lock_t use_locking)
1385422d97b8SChris Packham { }
1386422d97b8SChris Packham 
cvmx_pko_send_packet_finish(uint64_t port,uint64_t queue,union cvmx_pko_command_word0 pko_command,union cvmx_buf_ptr packet,cvmx_pko_lock_t use_locking)1387422d97b8SChris Packham static inline cvmx_pko_status_t cvmx_pko_send_packet_finish(uint64_t port,
1388422d97b8SChris Packham 		uint64_t queue, union cvmx_pko_command_word0 pko_command,
1389422d97b8SChris Packham 		union cvmx_buf_ptr packet, cvmx_pko_lock_t use_locking)
1390422d97b8SChris Packham {
1391422d97b8SChris Packham 	return 0;
1392422d97b8SChris Packham }
1393422d97b8SChris Packham 
cvmx_wqe_set_port(struct cvmx_wqe * work,int port)1394422d97b8SChris Packham static inline void cvmx_wqe_set_port(struct cvmx_wqe *work, int port)
1395422d97b8SChris Packham { }
1396422d97b8SChris Packham 
cvmx_wqe_set_qos(struct cvmx_wqe * work,int qos)1397422d97b8SChris Packham static inline void cvmx_wqe_set_qos(struct cvmx_wqe *work, int qos)
1398422d97b8SChris Packham { }
1399422d97b8SChris Packham 
cvmx_wqe_get_qos(struct cvmx_wqe * work)1400422d97b8SChris Packham static inline int cvmx_wqe_get_qos(struct cvmx_wqe *work)
1401422d97b8SChris Packham {
1402422d97b8SChris Packham 	return 0;
1403422d97b8SChris Packham }
1404422d97b8SChris Packham 
cvmx_wqe_set_grp(struct cvmx_wqe * work,int grp)1405422d97b8SChris Packham static inline void cvmx_wqe_set_grp(struct cvmx_wqe *work, int grp)
1406422d97b8SChris Packham { }
1407422d97b8SChris Packham 
cvmx_pow_work_submit(struct cvmx_wqe * wqp,uint32_t tag,enum cvmx_pow_tag_type tag_type,uint64_t qos,uint64_t grp)1408422d97b8SChris Packham static inline void cvmx_pow_work_submit(struct cvmx_wqe *wqp, uint32_t tag,
1409422d97b8SChris Packham 					enum cvmx_pow_tag_type tag_type,
1410422d97b8SChris Packham 					uint64_t qos, uint64_t grp)
1411422d97b8SChris Packham { }
1412422d97b8SChris Packham 
1413422d97b8SChris Packham #define CVMX_ASXX_RX_CLK_SETX(a, b)	((a) + (b))
1414422d97b8SChris Packham #define CVMX_ASXX_TX_CLK_SETX(a, b)	((a) + (b))
1415422d97b8SChris Packham #define CVMX_CIU_TIMX(a)		(a)
1416422d97b8SChris Packham #define CVMX_GMXX_RXX_ADR_CAM0(a, b)	((a) + (b))
1417422d97b8SChris Packham #define CVMX_GMXX_RXX_ADR_CAM1(a, b)	((a) + (b))
1418422d97b8SChris Packham #define CVMX_GMXX_RXX_ADR_CAM2(a, b)	((a) + (b))
1419422d97b8SChris Packham #define CVMX_GMXX_RXX_ADR_CAM3(a, b)	((a) + (b))
1420422d97b8SChris Packham #define CVMX_GMXX_RXX_ADR_CAM4(a, b)	((a) + (b))
1421422d97b8SChris Packham #define CVMX_GMXX_RXX_ADR_CAM5(a, b)	((a) + (b))
1422422d97b8SChris Packham #define CVMX_GMXX_RXX_FRM_CTL(a, b)	((a) + (b))
1423422d97b8SChris Packham #define CVMX_GMXX_RXX_INT_REG(a, b)	((a) + (b))
1424422d97b8SChris Packham #define CVMX_GMXX_SMACX(a, b)		((a) + (b))
1425422d97b8SChris Packham #define CVMX_PIP_PRT_TAGX(a)		(a)
1426422d97b8SChris Packham #define CVMX_POW_PP_GRP_MSKX(a)		(a)
1427422d97b8SChris Packham #define CVMX_POW_WQ_INT_THRX(a)		(a)
1428422d97b8SChris Packham #define CVMX_SPXX_INT_MSK(a)		(a)
1429422d97b8SChris Packham #define CVMX_SPXX_INT_REG(a)		(a)
1430422d97b8SChris Packham #define CVMX_SSO_PPX_GRP_MSK(a)		(a)
1431422d97b8SChris Packham #define CVMX_SSO_WQ_INT_THRX(a)		(a)
1432422d97b8SChris Packham #define CVMX_STXX_INT_MSK(a)		(a)
1433422d97b8SChris Packham #define CVMX_STXX_INT_REG(a)		(a)
1434