1af866496SDavid Daney /***********************license start***************
2af866496SDavid Daney  * Author: Cavium Networks
3af866496SDavid Daney  *
4af866496SDavid Daney  * Contact: support@caviumnetworks.com
5af866496SDavid Daney  * This file is part of the OCTEON SDK
6af866496SDavid Daney  *
7af866496SDavid Daney  * Copyright (c) 2003-2008 Cavium Networks
8af866496SDavid Daney  *
9af866496SDavid Daney  * This file is free software; you can redistribute it and/or modify
10af866496SDavid Daney  * it under the terms of the GNU General Public License, Version 2, as
11af866496SDavid Daney  * published by the Free Software Foundation.
12af866496SDavid Daney  *
13af866496SDavid Daney  * This file is distributed in the hope that it will be useful, but
14af866496SDavid Daney  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15af866496SDavid Daney  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16af866496SDavid Daney  * NONINFRINGEMENT.  See the GNU General Public License for more
17af866496SDavid Daney  * details.
18af866496SDavid Daney  *
19af866496SDavid Daney  * You should have received a copy of the GNU General Public License
20af866496SDavid Daney  * along with this file; if not, write to the Free Software
21af866496SDavid Daney  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22af866496SDavid Daney  * or visit http://www.gnu.org/licenses/.
23af866496SDavid Daney  *
24af866496SDavid Daney  * This file may also be available under a different license from Cavium.
25af866496SDavid Daney  * Contact Cavium Networks for more information
26af866496SDavid Daney  ***********************license end**************************************/
27af866496SDavid Daney 
28af866496SDavid Daney #ifndef __CVMX_PCSXX_DEFS_H__
29af866496SDavid Daney #define __CVMX_PCSXX_DEFS_H__
30af866496SDavid Daney 
31af866496SDavid Daney #define CVMX_PCSXX_10GBX_STATUS_REG(block_id) \
32af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000828ull + (((block_id) & 1) * 0x8000000ull))
33af866496SDavid Daney #define CVMX_PCSXX_BIST_STATUS_REG(block_id) \
34af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000870ull + (((block_id) & 1) * 0x8000000ull))
35af866496SDavid Daney #define CVMX_PCSXX_BIT_LOCK_STATUS_REG(block_id) \
36af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000850ull + (((block_id) & 1) * 0x8000000ull))
37af866496SDavid Daney #define CVMX_PCSXX_CONTROL1_REG(block_id) \
38af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000800ull + (((block_id) & 1) * 0x8000000ull))
39af866496SDavid Daney #define CVMX_PCSXX_CONTROL2_REG(block_id) \
40af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000818ull + (((block_id) & 1) * 0x8000000ull))
41af866496SDavid Daney #define CVMX_PCSXX_INT_EN_REG(block_id) \
42af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000860ull + (((block_id) & 1) * 0x8000000ull))
43af866496SDavid Daney #define CVMX_PCSXX_INT_REG(block_id) \
44af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000858ull + (((block_id) & 1) * 0x8000000ull))
45af866496SDavid Daney #define CVMX_PCSXX_LOG_ANL_REG(block_id) \
46af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000868ull + (((block_id) & 1) * 0x8000000ull))
47af866496SDavid Daney #define CVMX_PCSXX_MISC_CTL_REG(block_id) \
48af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000848ull + (((block_id) & 1) * 0x8000000ull))
49af866496SDavid Daney #define CVMX_PCSXX_RX_SYNC_STATES_REG(block_id) \
50af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000838ull + (((block_id) & 1) * 0x8000000ull))
51af866496SDavid Daney #define CVMX_PCSXX_SPD_ABIL_REG(block_id) \
52af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000810ull + (((block_id) & 1) * 0x8000000ull))
53af866496SDavid Daney #define CVMX_PCSXX_STATUS1_REG(block_id) \
54af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000808ull + (((block_id) & 1) * 0x8000000ull))
55af866496SDavid Daney #define CVMX_PCSXX_STATUS2_REG(block_id) \
56af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000820ull + (((block_id) & 1) * 0x8000000ull))
57af866496SDavid Daney #define CVMX_PCSXX_TX_RX_POLARITY_REG(block_id) \
58af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000840ull + (((block_id) & 1) * 0x8000000ull))
59af866496SDavid Daney #define CVMX_PCSXX_TX_RX_STATES_REG(block_id) \
60af866496SDavid Daney 	 CVMX_ADD_IO_SEG(0x00011800B0000830ull + (((block_id) & 1) * 0x8000000ull))
61af866496SDavid Daney 
62af866496SDavid Daney union cvmx_pcsxx_10gbx_status_reg {
63af866496SDavid Daney 	uint64_t u64;
64af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s {
65af866496SDavid Daney 		uint64_t reserved_13_63:51;
66af866496SDavid Daney 		uint64_t alignd:1;
67af866496SDavid Daney 		uint64_t pattst:1;
68af866496SDavid Daney 		uint64_t reserved_4_10:7;
69af866496SDavid Daney 		uint64_t l3sync:1;
70af866496SDavid Daney 		uint64_t l2sync:1;
71af866496SDavid Daney 		uint64_t l1sync:1;
72af866496SDavid Daney 		uint64_t l0sync:1;
73af866496SDavid Daney 	} s;
74af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn52xx;
75af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn52xxp1;
76af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn56xx;
77af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn56xxp1;
78af866496SDavid Daney };
79af866496SDavid Daney 
80af866496SDavid Daney union cvmx_pcsxx_bist_status_reg {
81af866496SDavid Daney 	uint64_t u64;
82af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s {
83af866496SDavid Daney 		uint64_t reserved_1_63:63;
84af866496SDavid Daney 		uint64_t bist_status:1;
85af866496SDavid Daney 	} s;
86af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn52xx;
87af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn52xxp1;
88af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn56xx;
89af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn56xxp1;
90af866496SDavid Daney };
91af866496SDavid Daney 
92af866496SDavid Daney union cvmx_pcsxx_bit_lock_status_reg {
93af866496SDavid Daney 	uint64_t u64;
94af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s {
95af866496SDavid Daney 		uint64_t reserved_4_63:60;
96af866496SDavid Daney 		uint64_t bitlck3:1;
97af866496SDavid Daney 		uint64_t bitlck2:1;
98af866496SDavid Daney 		uint64_t bitlck1:1;
99af866496SDavid Daney 		uint64_t bitlck0:1;
100af866496SDavid Daney 	} s;
101af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn52xx;
102af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn52xxp1;
103af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn56xx;
104af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn56xxp1;
105af866496SDavid Daney };
106af866496SDavid Daney 
107af866496SDavid Daney union cvmx_pcsxx_control1_reg {
108af866496SDavid Daney 	uint64_t u64;
109af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s {
110af866496SDavid Daney 		uint64_t reserved_16_63:48;
111af866496SDavid Daney 		uint64_t reset:1;
112af866496SDavid Daney 		uint64_t loopbck1:1;
113af866496SDavid Daney 		uint64_t spdsel1:1;
114af866496SDavid Daney 		uint64_t reserved_12_12:1;
115af866496SDavid Daney 		uint64_t lo_pwr:1;
116af866496SDavid Daney 		uint64_t reserved_7_10:4;
117af866496SDavid Daney 		uint64_t spdsel0:1;
118af866496SDavid Daney 		uint64_t spd:4;
119af866496SDavid Daney 		uint64_t reserved_0_1:2;
120af866496SDavid Daney 	} s;
121af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn52xx;
122af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn52xxp1;
123af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn56xx;
124af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn56xxp1;
125af866496SDavid Daney };
126af866496SDavid Daney 
127af866496SDavid Daney union cvmx_pcsxx_control2_reg {
128af866496SDavid Daney 	uint64_t u64;
129af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s {
130af866496SDavid Daney 		uint64_t reserved_2_63:62;
131af866496SDavid Daney 		uint64_t type:2;
132af866496SDavid Daney 	} s;
133af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn52xx;
134af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn52xxp1;
135af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn56xx;
136af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn56xxp1;
137af866496SDavid Daney };
138af866496SDavid Daney 
139af866496SDavid Daney union cvmx_pcsxx_int_en_reg {
140af866496SDavid Daney 	uint64_t u64;
141af866496SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s {
142af866496SDavid Daney 		uint64_t reserved_6_63:58;
143af866496SDavid Daney 		uint64_t algnlos_en:1;
144af866496SDavid Daney 		uint64_t synlos_en:1;
145af866496SDavid Daney 		uint64_t bitlckls_en:1;
146af866496SDavid Daney 		uint64_t rxsynbad_en:1;
147af866496SDavid Daney 		uint64_t rxbad_en:1;
148af866496SDavid Daney 		uint64_t txflt_en:1;
149af866496SDavid Daney 	} s;
150af866496SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn52xx;
151af866496SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn52xxp1;
152af866496SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn56xx;
153af866496SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn56xxp1;
154af866496SDavid Daney };
155af866496SDavid Daney 
156af866496SDavid Daney union cvmx_pcsxx_int_reg {
157af866496SDavid Daney 	uint64_t u64;
158af866496SDavid Daney 	struct cvmx_pcsxx_int_reg_s {
159af866496SDavid Daney 		uint64_t reserved_6_63:58;
160af866496SDavid Daney 		uint64_t algnlos:1;
161af866496SDavid Daney 		uint64_t synlos:1;
162af866496SDavid Daney 		uint64_t bitlckls:1;
163af866496SDavid Daney 		uint64_t rxsynbad:1;
164af866496SDavid Daney 		uint64_t rxbad:1;
165af866496SDavid Daney 		uint64_t txflt:1;
166af866496SDavid Daney 	} s;
167af866496SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn52xx;
168af866496SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn52xxp1;
169af866496SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn56xx;
170af866496SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn56xxp1;
171af866496SDavid Daney };
172af866496SDavid Daney 
173af866496SDavid Daney union cvmx_pcsxx_log_anl_reg {
174af866496SDavid Daney 	uint64_t u64;
175af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s {
176af866496SDavid Daney 		uint64_t reserved_7_63:57;
177af866496SDavid Daney 		uint64_t enc_mode:1;
178af866496SDavid Daney 		uint64_t drop_ln:2;
179af866496SDavid Daney 		uint64_t lafifovfl:1;
180af866496SDavid Daney 		uint64_t la_en:1;
181af866496SDavid Daney 		uint64_t pkt_sz:2;
182af866496SDavid Daney 	} s;
183af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn52xx;
184af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn52xxp1;
185af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn56xx;
186af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn56xxp1;
187af866496SDavid Daney };
188af866496SDavid Daney 
189af866496SDavid Daney union cvmx_pcsxx_misc_ctl_reg {
190af866496SDavid Daney 	uint64_t u64;
191af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s {
192af866496SDavid Daney 		uint64_t reserved_4_63:60;
193af866496SDavid Daney 		uint64_t tx_swap:1;
194af866496SDavid Daney 		uint64_t rx_swap:1;
195af866496SDavid Daney 		uint64_t xaui:1;
196af866496SDavid Daney 		uint64_t gmxeno:1;
197af866496SDavid Daney 	} s;
198af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn52xx;
199af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn52xxp1;
200af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn56xx;
201af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn56xxp1;
202af866496SDavid Daney };
203af866496SDavid Daney 
204af866496SDavid Daney union cvmx_pcsxx_rx_sync_states_reg {
205af866496SDavid Daney 	uint64_t u64;
206af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s {
207af866496SDavid Daney 		uint64_t reserved_16_63:48;
208af866496SDavid Daney 		uint64_t sync3st:4;
209af866496SDavid Daney 		uint64_t sync2st:4;
210af866496SDavid Daney 		uint64_t sync1st:4;
211af866496SDavid Daney 		uint64_t sync0st:4;
212af866496SDavid Daney 	} s;
213af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn52xx;
214af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn52xxp1;
215af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn56xx;
216af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn56xxp1;
217af866496SDavid Daney };
218af866496SDavid Daney 
219af866496SDavid Daney union cvmx_pcsxx_spd_abil_reg {
220af866496SDavid Daney 	uint64_t u64;
221af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s {
222af866496SDavid Daney 		uint64_t reserved_2_63:62;
223af866496SDavid Daney 		uint64_t tenpasst:1;
224af866496SDavid Daney 		uint64_t tengb:1;
225af866496SDavid Daney 	} s;
226af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn52xx;
227af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn52xxp1;
228af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn56xx;
229af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn56xxp1;
230af866496SDavid Daney };
231af866496SDavid Daney 
232af866496SDavid Daney union cvmx_pcsxx_status1_reg {
233af866496SDavid Daney 	uint64_t u64;
234af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s {
235af866496SDavid Daney 		uint64_t reserved_8_63:56;
236af866496SDavid Daney 		uint64_t flt:1;
237af866496SDavid Daney 		uint64_t reserved_3_6:4;
238af866496SDavid Daney 		uint64_t rcv_lnk:1;
239af866496SDavid Daney 		uint64_t lpable:1;
240af866496SDavid Daney 		uint64_t reserved_0_0:1;
241af866496SDavid Daney 	} s;
242af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn52xx;
243af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn52xxp1;
244af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn56xx;
245af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn56xxp1;
246af866496SDavid Daney };
247af866496SDavid Daney 
248af866496SDavid Daney union cvmx_pcsxx_status2_reg {
249af866496SDavid Daney 	uint64_t u64;
250af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s {
251af866496SDavid Daney 		uint64_t reserved_16_63:48;
252af866496SDavid Daney 		uint64_t dev:2;
253af866496SDavid Daney 		uint64_t reserved_12_13:2;
254af866496SDavid Daney 		uint64_t xmtflt:1;
255af866496SDavid Daney 		uint64_t rcvflt:1;
256af866496SDavid Daney 		uint64_t reserved_3_9:7;
257af866496SDavid Daney 		uint64_t tengb_w:1;
258af866496SDavid Daney 		uint64_t tengb_x:1;
259af866496SDavid Daney 		uint64_t tengb_r:1;
260af866496SDavid Daney 	} s;
261af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn52xx;
262af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn52xxp1;
263af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn56xx;
264af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn56xxp1;
265af866496SDavid Daney };
266af866496SDavid Daney 
267af866496SDavid Daney union cvmx_pcsxx_tx_rx_polarity_reg {
268af866496SDavid Daney 	uint64_t u64;
269af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s {
270af866496SDavid Daney 		uint64_t reserved_10_63:54;
271af866496SDavid Daney 		uint64_t xor_rxplrt:4;
272af866496SDavid Daney 		uint64_t xor_txplrt:4;
273af866496SDavid Daney 		uint64_t rxplrt:1;
274af866496SDavid Daney 		uint64_t txplrt:1;
275af866496SDavid Daney 	} s;
276af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn52xx;
277af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_cn52xxp1 {
278af866496SDavid Daney 		uint64_t reserved_2_63:62;
279af866496SDavid Daney 		uint64_t rxplrt:1;
280af866496SDavid Daney 		uint64_t txplrt:1;
281af866496SDavid Daney 	} cn52xxp1;
282af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn56xx;
283af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_cn52xxp1 cn56xxp1;
284af866496SDavid Daney };
285af866496SDavid Daney 
286af866496SDavid Daney union cvmx_pcsxx_tx_rx_states_reg {
287af866496SDavid Daney 	uint64_t u64;
288af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s {
289af866496SDavid Daney 		uint64_t reserved_14_63:50;
290af866496SDavid Daney 		uint64_t term_err:1;
291af866496SDavid Daney 		uint64_t syn3bad:1;
292af866496SDavid Daney 		uint64_t syn2bad:1;
293af866496SDavid Daney 		uint64_t syn1bad:1;
294af866496SDavid Daney 		uint64_t syn0bad:1;
295af866496SDavid Daney 		uint64_t rxbad:1;
296af866496SDavid Daney 		uint64_t algn_st:3;
297af866496SDavid Daney 		uint64_t rx_st:2;
298af866496SDavid Daney 		uint64_t tx_st:3;
299af866496SDavid Daney 	} s;
300af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn52xx;
301af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_cn52xxp1 {
302af866496SDavid Daney 		uint64_t reserved_13_63:51;
303af866496SDavid Daney 		uint64_t syn3bad:1;
304af866496SDavid Daney 		uint64_t syn2bad:1;
305af866496SDavid Daney 		uint64_t syn1bad:1;
306af866496SDavid Daney 		uint64_t syn0bad:1;
307af866496SDavid Daney 		uint64_t rxbad:1;
308af866496SDavid Daney 		uint64_t algn_st:3;
309af866496SDavid Daney 		uint64_t rx_st:2;
310af866496SDavid Daney 		uint64_t tx_st:3;
311af866496SDavid Daney 	} cn52xxp1;
312af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn56xx;
313af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_cn52xxp1 cn56xxp1;
314af866496SDavid Daney };
315af866496SDavid Daney 
316af866496SDavid Daney #endif
317