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  *
7840267e4SSteven J. Hill  * Copyright (C) 2003-2018 Cavium, Inc.
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 
31c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_10GBX_STATUS_REG(unsigned long block_id)
32c5aa59e8SDavid Daney {
33c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
34c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
35c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
36c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
37c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000828ull) + (block_id) * 0x8000000ull;
38c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
39c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
40c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000828ull) + (block_id) * 0x8000000ull;
41c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
42c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000828ull) + (block_id) * 0x1000000ull;
43c5aa59e8SDavid Daney 	}
44c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000828ull) + (block_id) * 0x1000000ull;
45c5aa59e8SDavid Daney }
46c5aa59e8SDavid Daney 
47c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_BIST_STATUS_REG(unsigned long block_id)
48c5aa59e8SDavid Daney {
49c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
50c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
51c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
52c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
53c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000870ull) + (block_id) * 0x8000000ull;
54c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
55c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
56c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000870ull) + (block_id) * 0x8000000ull;
57c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
58c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000870ull) + (block_id) * 0x1000000ull;
59c5aa59e8SDavid Daney 	}
60c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000870ull) + (block_id) * 0x1000000ull;
61c5aa59e8SDavid Daney }
62c5aa59e8SDavid Daney 
63c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_BIT_LOCK_STATUS_REG(unsigned long block_id)
64c5aa59e8SDavid Daney {
65c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
66c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
67c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
68c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
69c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000850ull) + (block_id) * 0x8000000ull;
70c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
71c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
72c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000850ull) + (block_id) * 0x8000000ull;
73c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
74c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000850ull) + (block_id) * 0x1000000ull;
75c5aa59e8SDavid Daney 	}
76c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000850ull) + (block_id) * 0x1000000ull;
77c5aa59e8SDavid Daney }
78c5aa59e8SDavid Daney 
79c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_CONTROL1_REG(unsigned long block_id)
80c5aa59e8SDavid Daney {
81c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
82c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
83c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
84c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
85c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000800ull) + (block_id) * 0x8000000ull;
86c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
87c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
88c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000800ull) + (block_id) * 0x8000000ull;
89c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
90c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000800ull) + (block_id) * 0x1000000ull;
91c5aa59e8SDavid Daney 	}
92c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000800ull) + (block_id) * 0x1000000ull;
93c5aa59e8SDavid Daney }
94c5aa59e8SDavid Daney 
95c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_CONTROL2_REG(unsigned long block_id)
96c5aa59e8SDavid Daney {
97c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
98c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
99c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
100c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
101c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000818ull) + (block_id) * 0x8000000ull;
102c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
103c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
104c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000818ull) + (block_id) * 0x8000000ull;
105c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
106c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000818ull) + (block_id) * 0x1000000ull;
107c5aa59e8SDavid Daney 	}
108c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000818ull) + (block_id) * 0x1000000ull;
109c5aa59e8SDavid Daney }
110c5aa59e8SDavid Daney 
111c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_INT_EN_REG(unsigned long block_id)
112c5aa59e8SDavid Daney {
113c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
114c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
115c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
116c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
117c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000860ull) + (block_id) * 0x8000000ull;
118c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
119c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
120c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000860ull) + (block_id) * 0x8000000ull;
121c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
122c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000860ull) + (block_id) * 0x1000000ull;
123c5aa59e8SDavid Daney 	}
124c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000860ull) + (block_id) * 0x1000000ull;
125c5aa59e8SDavid Daney }
126c5aa59e8SDavid Daney 
127c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_INT_REG(unsigned long block_id)
128c5aa59e8SDavid Daney {
129c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
130c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
131c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
132c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
133c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000858ull) + (block_id) * 0x8000000ull;
134c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
135c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
136c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000858ull) + (block_id) * 0x8000000ull;
137c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
138c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000858ull) + (block_id) * 0x1000000ull;
139c5aa59e8SDavid Daney 	}
140c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000858ull) + (block_id) * 0x1000000ull;
141c5aa59e8SDavid Daney }
142c5aa59e8SDavid Daney 
143c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_LOG_ANL_REG(unsigned long block_id)
144c5aa59e8SDavid Daney {
145c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
146c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
147c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
148c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
149c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000868ull) + (block_id) * 0x8000000ull;
150c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
151c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
152c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000868ull) + (block_id) * 0x8000000ull;
153c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
154c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000868ull) + (block_id) * 0x1000000ull;
155c5aa59e8SDavid Daney 	}
156c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000868ull) + (block_id) * 0x1000000ull;
157c5aa59e8SDavid Daney }
158c5aa59e8SDavid Daney 
159c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_MISC_CTL_REG(unsigned long block_id)
160c5aa59e8SDavid Daney {
161c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
162c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
163c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
164c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
165c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000848ull) + (block_id) * 0x8000000ull;
166c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
167c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
168c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000848ull) + (block_id) * 0x8000000ull;
169c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
170c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000848ull) + (block_id) * 0x1000000ull;
171c5aa59e8SDavid Daney 	}
172c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000848ull) + (block_id) * 0x1000000ull;
173c5aa59e8SDavid Daney }
174c5aa59e8SDavid Daney 
175c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_RX_SYNC_STATES_REG(unsigned long block_id)
176c5aa59e8SDavid Daney {
177c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
178c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
179c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
180c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
181c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000838ull) + (block_id) * 0x8000000ull;
182c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
183c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
184c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000838ull) + (block_id) * 0x8000000ull;
185c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
186c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000838ull) + (block_id) * 0x1000000ull;
187c5aa59e8SDavid Daney 	}
188c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000838ull) + (block_id) * 0x1000000ull;
189c5aa59e8SDavid Daney }
190c5aa59e8SDavid Daney 
191c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_SPD_ABIL_REG(unsigned long block_id)
192c5aa59e8SDavid Daney {
193c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
194c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
195c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
196c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
197c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000810ull) + (block_id) * 0x8000000ull;
198c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
199c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
200c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000810ull) + (block_id) * 0x8000000ull;
201c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
202c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000810ull) + (block_id) * 0x1000000ull;
203c5aa59e8SDavid Daney 	}
204c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000810ull) + (block_id) * 0x1000000ull;
205c5aa59e8SDavid Daney }
206c5aa59e8SDavid Daney 
207c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_STATUS1_REG(unsigned long block_id)
208c5aa59e8SDavid Daney {
209c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
210c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
211c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
212c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
213c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000808ull) + (block_id) * 0x8000000ull;
214c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
215c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
216c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000808ull) + (block_id) * 0x8000000ull;
217c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
218c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000808ull) + (block_id) * 0x1000000ull;
219c5aa59e8SDavid Daney 	}
220c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000808ull) + (block_id) * 0x1000000ull;
221c5aa59e8SDavid Daney }
222c5aa59e8SDavid Daney 
223c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_STATUS2_REG(unsigned long block_id)
224c5aa59e8SDavid Daney {
225c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
226c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
227c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
228c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
229c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000820ull) + (block_id) * 0x8000000ull;
230c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
231c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
232c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000820ull) + (block_id) * 0x8000000ull;
233c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
234c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000820ull) + (block_id) * 0x1000000ull;
235c5aa59e8SDavid Daney 	}
236c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000820ull) + (block_id) * 0x1000000ull;
237c5aa59e8SDavid Daney }
238c5aa59e8SDavid Daney 
239c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_TX_RX_POLARITY_REG(unsigned long block_id)
240c5aa59e8SDavid Daney {
241c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
242c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
243c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
244c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
245c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000840ull) + (block_id) * 0x8000000ull;
246c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
247c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
248c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000840ull) + (block_id) * 0x8000000ull;
249c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
250c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000840ull) + (block_id) * 0x1000000ull;
251c5aa59e8SDavid Daney 	}
252c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000840ull) + (block_id) * 0x1000000ull;
253c5aa59e8SDavid Daney }
254c5aa59e8SDavid Daney 
255c5aa59e8SDavid Daney static inline uint64_t CVMX_PCSXX_TX_RX_STATES_REG(unsigned long block_id)
256c5aa59e8SDavid Daney {
257c5aa59e8SDavid Daney 	switch (cvmx_get_octeon_family()) {
258c5aa59e8SDavid Daney 	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
259c5aa59e8SDavid Daney 	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
260c5aa59e8SDavid Daney 	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
261c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000830ull) + (block_id) * 0x8000000ull;
262c5aa59e8SDavid Daney 	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
263c5aa59e8SDavid Daney 	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
264c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000830ull) + (block_id) * 0x8000000ull;
265c5aa59e8SDavid Daney 	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
266c5aa59e8SDavid Daney 		return CVMX_ADD_IO_SEG(0x00011800B0000830ull) + (block_id) * 0x1000000ull;
267c5aa59e8SDavid Daney 	}
268c5aa59e8SDavid Daney 	return CVMX_ADD_IO_SEG(0x00011800B0000830ull) + (block_id) * 0x1000000ull;
269c5aa59e8SDavid Daney }
270af866496SDavid Daney 
271840267e4SSteven J. Hill void __cvmx_interrupt_pcsxx_int_en_reg_enable(int index);
272840267e4SSteven J. Hill 
273af866496SDavid Daney union cvmx_pcsxx_10gbx_status_reg {
274af866496SDavid Daney 	uint64_t u64;
275af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s {
276c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
277af866496SDavid Daney 		uint64_t reserved_13_63:51;
278af866496SDavid Daney 		uint64_t alignd:1;
279af866496SDavid Daney 		uint64_t pattst:1;
280af866496SDavid Daney 		uint64_t reserved_4_10:7;
281af866496SDavid Daney 		uint64_t l3sync:1;
282af866496SDavid Daney 		uint64_t l2sync:1;
283af866496SDavid Daney 		uint64_t l1sync:1;
284af866496SDavid Daney 		uint64_t l0sync:1;
285c5aa59e8SDavid Daney #else
286c5aa59e8SDavid Daney 		uint64_t l0sync:1;
287c5aa59e8SDavid Daney 		uint64_t l1sync:1;
288c5aa59e8SDavid Daney 		uint64_t l2sync:1;
289c5aa59e8SDavid Daney 		uint64_t l3sync:1;
290c5aa59e8SDavid Daney 		uint64_t reserved_4_10:7;
291c5aa59e8SDavid Daney 		uint64_t pattst:1;
292c5aa59e8SDavid Daney 		uint64_t alignd:1;
293c5aa59e8SDavid Daney 		uint64_t reserved_13_63:51;
294c5aa59e8SDavid Daney #endif
295af866496SDavid Daney 	} s;
296af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn52xx;
297af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn52xxp1;
298af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn56xx;
299af866496SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn56xxp1;
300c5aa59e8SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn61xx;
301c5aa59e8SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn63xx;
302c5aa59e8SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn63xxp1;
303c5aa59e8SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn66xx;
304c5aa59e8SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn68xx;
305c5aa59e8SDavid Daney 	struct cvmx_pcsxx_10gbx_status_reg_s cn68xxp1;
306af866496SDavid Daney };
307af866496SDavid Daney 
308af866496SDavid Daney union cvmx_pcsxx_bist_status_reg {
309af866496SDavid Daney 	uint64_t u64;
310af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s {
311c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
312af866496SDavid Daney 		uint64_t reserved_1_63:63;
313af866496SDavid Daney 		uint64_t bist_status:1;
314c5aa59e8SDavid Daney #else
315c5aa59e8SDavid Daney 		uint64_t bist_status:1;
316c5aa59e8SDavid Daney 		uint64_t reserved_1_63:63;
317c5aa59e8SDavid Daney #endif
318af866496SDavid Daney 	} s;
319af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn52xx;
320af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn52xxp1;
321af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn56xx;
322af866496SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn56xxp1;
323c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn61xx;
324c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn63xx;
325c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn63xxp1;
326c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn66xx;
327c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn68xx;
328c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bist_status_reg_s cn68xxp1;
329af866496SDavid Daney };
330af866496SDavid Daney 
331af866496SDavid Daney union cvmx_pcsxx_bit_lock_status_reg {
332af866496SDavid Daney 	uint64_t u64;
333af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s {
334c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
335af866496SDavid Daney 		uint64_t reserved_4_63:60;
336af866496SDavid Daney 		uint64_t bitlck3:1;
337af866496SDavid Daney 		uint64_t bitlck2:1;
338af866496SDavid Daney 		uint64_t bitlck1:1;
339af866496SDavid Daney 		uint64_t bitlck0:1;
340c5aa59e8SDavid Daney #else
341c5aa59e8SDavid Daney 		uint64_t bitlck0:1;
342c5aa59e8SDavid Daney 		uint64_t bitlck1:1;
343c5aa59e8SDavid Daney 		uint64_t bitlck2:1;
344c5aa59e8SDavid Daney 		uint64_t bitlck3:1;
345c5aa59e8SDavid Daney 		uint64_t reserved_4_63:60;
346c5aa59e8SDavid Daney #endif
347af866496SDavid Daney 	} s;
348af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn52xx;
349af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn52xxp1;
350af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn56xx;
351af866496SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn56xxp1;
352c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn61xx;
353c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn63xx;
354c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn63xxp1;
355c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn66xx;
356c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn68xx;
357c5aa59e8SDavid Daney 	struct cvmx_pcsxx_bit_lock_status_reg_s cn68xxp1;
358af866496SDavid Daney };
359af866496SDavid Daney 
360af866496SDavid Daney union cvmx_pcsxx_control1_reg {
361af866496SDavid Daney 	uint64_t u64;
362af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s {
363c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
364af866496SDavid Daney 		uint64_t reserved_16_63:48;
365af866496SDavid Daney 		uint64_t reset:1;
366af866496SDavid Daney 		uint64_t loopbck1:1;
367af866496SDavid Daney 		uint64_t spdsel1:1;
368af866496SDavid Daney 		uint64_t reserved_12_12:1;
369af866496SDavid Daney 		uint64_t lo_pwr:1;
370af866496SDavid Daney 		uint64_t reserved_7_10:4;
371af866496SDavid Daney 		uint64_t spdsel0:1;
372af866496SDavid Daney 		uint64_t spd:4;
373af866496SDavid Daney 		uint64_t reserved_0_1:2;
374c5aa59e8SDavid Daney #else
375c5aa59e8SDavid Daney 		uint64_t reserved_0_1:2;
376c5aa59e8SDavid Daney 		uint64_t spd:4;
377c5aa59e8SDavid Daney 		uint64_t spdsel0:1;
378c5aa59e8SDavid Daney 		uint64_t reserved_7_10:4;
379c5aa59e8SDavid Daney 		uint64_t lo_pwr:1;
380c5aa59e8SDavid Daney 		uint64_t reserved_12_12:1;
381c5aa59e8SDavid Daney 		uint64_t spdsel1:1;
382c5aa59e8SDavid Daney 		uint64_t loopbck1:1;
383c5aa59e8SDavid Daney 		uint64_t reset:1;
384c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
385c5aa59e8SDavid Daney #endif
386af866496SDavid Daney 	} s;
387af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn52xx;
388af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn52xxp1;
389af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn56xx;
390af866496SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn56xxp1;
391c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn61xx;
392c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn63xx;
393c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn63xxp1;
394c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn66xx;
395c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn68xx;
396c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control1_reg_s cn68xxp1;
397af866496SDavid Daney };
398af866496SDavid Daney 
399af866496SDavid Daney union cvmx_pcsxx_control2_reg {
400af866496SDavid Daney 	uint64_t u64;
401af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s {
402c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
403af866496SDavid Daney 		uint64_t reserved_2_63:62;
404af866496SDavid Daney 		uint64_t type:2;
405c5aa59e8SDavid Daney #else
406c5aa59e8SDavid Daney 		uint64_t type:2;
407c5aa59e8SDavid Daney 		uint64_t reserved_2_63:62;
408c5aa59e8SDavid Daney #endif
409af866496SDavid Daney 	} s;
410af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn52xx;
411af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn52xxp1;
412af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn56xx;
413af866496SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn56xxp1;
414c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn61xx;
415c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn63xx;
416c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn63xxp1;
417c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn66xx;
418c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn68xx;
419c5aa59e8SDavid Daney 	struct cvmx_pcsxx_control2_reg_s cn68xxp1;
420af866496SDavid Daney };
421af866496SDavid Daney 
422af866496SDavid Daney union cvmx_pcsxx_int_en_reg {
423af866496SDavid Daney 	uint64_t u64;
424af866496SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s {
425c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
426c5aa59e8SDavid Daney 		uint64_t reserved_7_63:57;
427c5aa59e8SDavid Daney 		uint64_t dbg_sync_en:1;
428c5aa59e8SDavid Daney 		uint64_t algnlos_en:1;
429c5aa59e8SDavid Daney 		uint64_t synlos_en:1;
430c5aa59e8SDavid Daney 		uint64_t bitlckls_en:1;
431c5aa59e8SDavid Daney 		uint64_t rxsynbad_en:1;
432c5aa59e8SDavid Daney 		uint64_t rxbad_en:1;
433c5aa59e8SDavid Daney 		uint64_t txflt_en:1;
434c5aa59e8SDavid Daney #else
435c5aa59e8SDavid Daney 		uint64_t txflt_en:1;
436c5aa59e8SDavid Daney 		uint64_t rxbad_en:1;
437c5aa59e8SDavid Daney 		uint64_t rxsynbad_en:1;
438c5aa59e8SDavid Daney 		uint64_t bitlckls_en:1;
439c5aa59e8SDavid Daney 		uint64_t synlos_en:1;
440c5aa59e8SDavid Daney 		uint64_t algnlos_en:1;
441c5aa59e8SDavid Daney 		uint64_t dbg_sync_en:1;
442c5aa59e8SDavid Daney 		uint64_t reserved_7_63:57;
443c5aa59e8SDavid Daney #endif
444c5aa59e8SDavid Daney 	} s;
445c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_cn52xx {
446c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
447af866496SDavid Daney 		uint64_t reserved_6_63:58;
448af866496SDavid Daney 		uint64_t algnlos_en:1;
449af866496SDavid Daney 		uint64_t synlos_en:1;
450af866496SDavid Daney 		uint64_t bitlckls_en:1;
451af866496SDavid Daney 		uint64_t rxsynbad_en:1;
452af866496SDavid Daney 		uint64_t rxbad_en:1;
453af866496SDavid Daney 		uint64_t txflt_en:1;
454c5aa59e8SDavid Daney #else
455c5aa59e8SDavid Daney 		uint64_t txflt_en:1;
456c5aa59e8SDavid Daney 		uint64_t rxbad_en:1;
457c5aa59e8SDavid Daney 		uint64_t rxsynbad_en:1;
458c5aa59e8SDavid Daney 		uint64_t bitlckls_en:1;
459c5aa59e8SDavid Daney 		uint64_t synlos_en:1;
460c5aa59e8SDavid Daney 		uint64_t algnlos_en:1;
461c5aa59e8SDavid Daney 		uint64_t reserved_6_63:58;
462c5aa59e8SDavid Daney #endif
463c5aa59e8SDavid Daney 	} cn52xx;
464c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_cn52xx cn52xxp1;
465c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_cn52xx cn56xx;
466c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_cn52xx cn56xxp1;
467c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn61xx;
468c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn63xx;
469c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn63xxp1;
470c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn66xx;
471c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn68xx;
472c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_en_reg_s cn68xxp1;
473af866496SDavid Daney };
474af866496SDavid Daney 
475af866496SDavid Daney union cvmx_pcsxx_int_reg {
476af866496SDavid Daney 	uint64_t u64;
477af866496SDavid Daney 	struct cvmx_pcsxx_int_reg_s {
478c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
479c5aa59e8SDavid Daney 		uint64_t reserved_7_63:57;
480c5aa59e8SDavid Daney 		uint64_t dbg_sync:1;
481c5aa59e8SDavid Daney 		uint64_t algnlos:1;
482c5aa59e8SDavid Daney 		uint64_t synlos:1;
483c5aa59e8SDavid Daney 		uint64_t bitlckls:1;
484c5aa59e8SDavid Daney 		uint64_t rxsynbad:1;
485c5aa59e8SDavid Daney 		uint64_t rxbad:1;
486c5aa59e8SDavid Daney 		uint64_t txflt:1;
487c5aa59e8SDavid Daney #else
488c5aa59e8SDavid Daney 		uint64_t txflt:1;
489c5aa59e8SDavid Daney 		uint64_t rxbad:1;
490c5aa59e8SDavid Daney 		uint64_t rxsynbad:1;
491c5aa59e8SDavid Daney 		uint64_t bitlckls:1;
492c5aa59e8SDavid Daney 		uint64_t synlos:1;
493c5aa59e8SDavid Daney 		uint64_t algnlos:1;
494c5aa59e8SDavid Daney 		uint64_t dbg_sync:1;
495c5aa59e8SDavid Daney 		uint64_t reserved_7_63:57;
496c5aa59e8SDavid Daney #endif
497c5aa59e8SDavid Daney 	} s;
498c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_cn52xx {
499c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
500af866496SDavid Daney 		uint64_t reserved_6_63:58;
501af866496SDavid Daney 		uint64_t algnlos:1;
502af866496SDavid Daney 		uint64_t synlos:1;
503af866496SDavid Daney 		uint64_t bitlckls:1;
504af866496SDavid Daney 		uint64_t rxsynbad:1;
505af866496SDavid Daney 		uint64_t rxbad:1;
506af866496SDavid Daney 		uint64_t txflt:1;
507c5aa59e8SDavid Daney #else
508c5aa59e8SDavid Daney 		uint64_t txflt:1;
509c5aa59e8SDavid Daney 		uint64_t rxbad:1;
510c5aa59e8SDavid Daney 		uint64_t rxsynbad:1;
511c5aa59e8SDavid Daney 		uint64_t bitlckls:1;
512c5aa59e8SDavid Daney 		uint64_t synlos:1;
513c5aa59e8SDavid Daney 		uint64_t algnlos:1;
514c5aa59e8SDavid Daney 		uint64_t reserved_6_63:58;
515c5aa59e8SDavid Daney #endif
516c5aa59e8SDavid Daney 	} cn52xx;
517c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_cn52xx cn52xxp1;
518c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_cn52xx cn56xx;
519c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_cn52xx cn56xxp1;
520c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn61xx;
521c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn63xx;
522c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn63xxp1;
523c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn66xx;
524c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn68xx;
525c5aa59e8SDavid Daney 	struct cvmx_pcsxx_int_reg_s cn68xxp1;
526af866496SDavid Daney };
527af866496SDavid Daney 
528af866496SDavid Daney union cvmx_pcsxx_log_anl_reg {
529af866496SDavid Daney 	uint64_t u64;
530af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s {
531c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
532af866496SDavid Daney 		uint64_t reserved_7_63:57;
533af866496SDavid Daney 		uint64_t enc_mode:1;
534af866496SDavid Daney 		uint64_t drop_ln:2;
535af866496SDavid Daney 		uint64_t lafifovfl:1;
536af866496SDavid Daney 		uint64_t la_en:1;
537af866496SDavid Daney 		uint64_t pkt_sz:2;
538c5aa59e8SDavid Daney #else
539c5aa59e8SDavid Daney 		uint64_t pkt_sz:2;
540c5aa59e8SDavid Daney 		uint64_t la_en:1;
541c5aa59e8SDavid Daney 		uint64_t lafifovfl:1;
542c5aa59e8SDavid Daney 		uint64_t drop_ln:2;
543c5aa59e8SDavid Daney 		uint64_t enc_mode:1;
544c5aa59e8SDavid Daney 		uint64_t reserved_7_63:57;
545c5aa59e8SDavid Daney #endif
546af866496SDavid Daney 	} s;
547af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn52xx;
548af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn52xxp1;
549af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn56xx;
550af866496SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn56xxp1;
551c5aa59e8SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn61xx;
552c5aa59e8SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn63xx;
553c5aa59e8SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn63xxp1;
554c5aa59e8SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn66xx;
555c5aa59e8SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn68xx;
556c5aa59e8SDavid Daney 	struct cvmx_pcsxx_log_anl_reg_s cn68xxp1;
557af866496SDavid Daney };
558af866496SDavid Daney 
559af866496SDavid Daney union cvmx_pcsxx_misc_ctl_reg {
560af866496SDavid Daney 	uint64_t u64;
561af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s {
562c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
563af866496SDavid Daney 		uint64_t reserved_4_63:60;
564af866496SDavid Daney 		uint64_t tx_swap:1;
565af866496SDavid Daney 		uint64_t rx_swap:1;
566af866496SDavid Daney 		uint64_t xaui:1;
567af866496SDavid Daney 		uint64_t gmxeno:1;
568c5aa59e8SDavid Daney #else
569c5aa59e8SDavid Daney 		uint64_t gmxeno:1;
570c5aa59e8SDavid Daney 		uint64_t xaui:1;
571c5aa59e8SDavid Daney 		uint64_t rx_swap:1;
572c5aa59e8SDavid Daney 		uint64_t tx_swap:1;
573c5aa59e8SDavid Daney 		uint64_t reserved_4_63:60;
574c5aa59e8SDavid Daney #endif
575af866496SDavid Daney 	} s;
576af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn52xx;
577af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn52xxp1;
578af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn56xx;
579af866496SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn56xxp1;
580c5aa59e8SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn61xx;
581c5aa59e8SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn63xx;
582c5aa59e8SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn63xxp1;
583c5aa59e8SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn66xx;
584c5aa59e8SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn68xx;
585c5aa59e8SDavid Daney 	struct cvmx_pcsxx_misc_ctl_reg_s cn68xxp1;
586af866496SDavid Daney };
587af866496SDavid Daney 
588af866496SDavid Daney union cvmx_pcsxx_rx_sync_states_reg {
589af866496SDavid Daney 	uint64_t u64;
590af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s {
591c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
592af866496SDavid Daney 		uint64_t reserved_16_63:48;
593af866496SDavid Daney 		uint64_t sync3st:4;
594af866496SDavid Daney 		uint64_t sync2st:4;
595af866496SDavid Daney 		uint64_t sync1st:4;
596af866496SDavid Daney 		uint64_t sync0st:4;
597c5aa59e8SDavid Daney #else
598c5aa59e8SDavid Daney 		uint64_t sync0st:4;
599c5aa59e8SDavid Daney 		uint64_t sync1st:4;
600c5aa59e8SDavid Daney 		uint64_t sync2st:4;
601c5aa59e8SDavid Daney 		uint64_t sync3st:4;
602c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
603c5aa59e8SDavid Daney #endif
604af866496SDavid Daney 	} s;
605af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn52xx;
606af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn52xxp1;
607af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn56xx;
608af866496SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn56xxp1;
609c5aa59e8SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn61xx;
610c5aa59e8SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn63xx;
611c5aa59e8SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn63xxp1;
612c5aa59e8SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn66xx;
613c5aa59e8SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn68xx;
614c5aa59e8SDavid Daney 	struct cvmx_pcsxx_rx_sync_states_reg_s cn68xxp1;
615af866496SDavid Daney };
616af866496SDavid Daney 
617af866496SDavid Daney union cvmx_pcsxx_spd_abil_reg {
618af866496SDavid Daney 	uint64_t u64;
619af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s {
620c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
621af866496SDavid Daney 		uint64_t reserved_2_63:62;
622af866496SDavid Daney 		uint64_t tenpasst:1;
623af866496SDavid Daney 		uint64_t tengb:1;
624c5aa59e8SDavid Daney #else
625c5aa59e8SDavid Daney 		uint64_t tengb:1;
626c5aa59e8SDavid Daney 		uint64_t tenpasst:1;
627c5aa59e8SDavid Daney 		uint64_t reserved_2_63:62;
628c5aa59e8SDavid Daney #endif
629af866496SDavid Daney 	} s;
630af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn52xx;
631af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn52xxp1;
632af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn56xx;
633af866496SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn56xxp1;
634c5aa59e8SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn61xx;
635c5aa59e8SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn63xx;
636c5aa59e8SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn63xxp1;
637c5aa59e8SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn66xx;
638c5aa59e8SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn68xx;
639c5aa59e8SDavid Daney 	struct cvmx_pcsxx_spd_abil_reg_s cn68xxp1;
640af866496SDavid Daney };
641af866496SDavid Daney 
642af866496SDavid Daney union cvmx_pcsxx_status1_reg {
643af866496SDavid Daney 	uint64_t u64;
644af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s {
645c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
646af866496SDavid Daney 		uint64_t reserved_8_63:56;
647af866496SDavid Daney 		uint64_t flt:1;
648af866496SDavid Daney 		uint64_t reserved_3_6:4;
649af866496SDavid Daney 		uint64_t rcv_lnk:1;
650af866496SDavid Daney 		uint64_t lpable:1;
651af866496SDavid Daney 		uint64_t reserved_0_0:1;
652c5aa59e8SDavid Daney #else
653c5aa59e8SDavid Daney 		uint64_t reserved_0_0:1;
654c5aa59e8SDavid Daney 		uint64_t lpable:1;
655c5aa59e8SDavid Daney 		uint64_t rcv_lnk:1;
656c5aa59e8SDavid Daney 		uint64_t reserved_3_6:4;
657c5aa59e8SDavid Daney 		uint64_t flt:1;
658c5aa59e8SDavid Daney 		uint64_t reserved_8_63:56;
659c5aa59e8SDavid Daney #endif
660af866496SDavid Daney 	} s;
661af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn52xx;
662af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn52xxp1;
663af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn56xx;
664af866496SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn56xxp1;
665c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn61xx;
666c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn63xx;
667c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn63xxp1;
668c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn66xx;
669c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn68xx;
670c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status1_reg_s cn68xxp1;
671af866496SDavid Daney };
672af866496SDavid Daney 
673af866496SDavid Daney union cvmx_pcsxx_status2_reg {
674af866496SDavid Daney 	uint64_t u64;
675af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s {
676c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
677af866496SDavid Daney 		uint64_t reserved_16_63:48;
678af866496SDavid Daney 		uint64_t dev:2;
679af866496SDavid Daney 		uint64_t reserved_12_13:2;
680af866496SDavid Daney 		uint64_t xmtflt:1;
681af866496SDavid Daney 		uint64_t rcvflt:1;
682af866496SDavid Daney 		uint64_t reserved_3_9:7;
683af866496SDavid Daney 		uint64_t tengb_w:1;
684af866496SDavid Daney 		uint64_t tengb_x:1;
685af866496SDavid Daney 		uint64_t tengb_r:1;
686c5aa59e8SDavid Daney #else
687c5aa59e8SDavid Daney 		uint64_t tengb_r:1;
688c5aa59e8SDavid Daney 		uint64_t tengb_x:1;
689c5aa59e8SDavid Daney 		uint64_t tengb_w:1;
690c5aa59e8SDavid Daney 		uint64_t reserved_3_9:7;
691c5aa59e8SDavid Daney 		uint64_t rcvflt:1;
692c5aa59e8SDavid Daney 		uint64_t xmtflt:1;
693c5aa59e8SDavid Daney 		uint64_t reserved_12_13:2;
694c5aa59e8SDavid Daney 		uint64_t dev:2;
695c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
696c5aa59e8SDavid Daney #endif
697af866496SDavid Daney 	} s;
698af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn52xx;
699af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn52xxp1;
700af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn56xx;
701af866496SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn56xxp1;
702c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn61xx;
703c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn63xx;
704c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn63xxp1;
705c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn66xx;
706c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn68xx;
707c5aa59e8SDavid Daney 	struct cvmx_pcsxx_status2_reg_s cn68xxp1;
708af866496SDavid Daney };
709af866496SDavid Daney 
710af866496SDavid Daney union cvmx_pcsxx_tx_rx_polarity_reg {
711af866496SDavid Daney 	uint64_t u64;
712af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s {
713c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
714af866496SDavid Daney 		uint64_t reserved_10_63:54;
715af866496SDavid Daney 		uint64_t xor_rxplrt:4;
716af866496SDavid Daney 		uint64_t xor_txplrt:4;
717af866496SDavid Daney 		uint64_t rxplrt:1;
718af866496SDavid Daney 		uint64_t txplrt:1;
719c5aa59e8SDavid Daney #else
720c5aa59e8SDavid Daney 		uint64_t txplrt:1;
721c5aa59e8SDavid Daney 		uint64_t rxplrt:1;
722c5aa59e8SDavid Daney 		uint64_t xor_txplrt:4;
723c5aa59e8SDavid Daney 		uint64_t xor_rxplrt:4;
724c5aa59e8SDavid Daney 		uint64_t reserved_10_63:54;
725c5aa59e8SDavid Daney #endif
726af866496SDavid Daney 	} s;
727af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn52xx;
728af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_cn52xxp1 {
729c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
730af866496SDavid Daney 		uint64_t reserved_2_63:62;
731af866496SDavid Daney 		uint64_t rxplrt:1;
732af866496SDavid Daney 		uint64_t txplrt:1;
733c5aa59e8SDavid Daney #else
734c5aa59e8SDavid Daney 		uint64_t txplrt:1;
735c5aa59e8SDavid Daney 		uint64_t rxplrt:1;
736c5aa59e8SDavid Daney 		uint64_t reserved_2_63:62;
737c5aa59e8SDavid Daney #endif
738af866496SDavid Daney 	} cn52xxp1;
739af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn56xx;
740af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_cn52xxp1 cn56xxp1;
741c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn61xx;
742c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn63xx;
743c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn63xxp1;
744c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn66xx;
745c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn68xx;
746c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_polarity_reg_s cn68xxp1;
747af866496SDavid Daney };
748af866496SDavid Daney 
749af866496SDavid Daney union cvmx_pcsxx_tx_rx_states_reg {
750af866496SDavid Daney 	uint64_t u64;
751af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s {
752c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
753af866496SDavid Daney 		uint64_t reserved_14_63:50;
754af866496SDavid Daney 		uint64_t term_err:1;
755af866496SDavid Daney 		uint64_t syn3bad:1;
756af866496SDavid Daney 		uint64_t syn2bad:1;
757af866496SDavid Daney 		uint64_t syn1bad:1;
758af866496SDavid Daney 		uint64_t syn0bad:1;
759af866496SDavid Daney 		uint64_t rxbad:1;
760af866496SDavid Daney 		uint64_t algn_st:3;
761af866496SDavid Daney 		uint64_t rx_st:2;
762af866496SDavid Daney 		uint64_t tx_st:3;
763c5aa59e8SDavid Daney #else
764c5aa59e8SDavid Daney 		uint64_t tx_st:3;
765c5aa59e8SDavid Daney 		uint64_t rx_st:2;
766c5aa59e8SDavid Daney 		uint64_t algn_st:3;
767c5aa59e8SDavid Daney 		uint64_t rxbad:1;
768c5aa59e8SDavid Daney 		uint64_t syn0bad:1;
769c5aa59e8SDavid Daney 		uint64_t syn1bad:1;
770c5aa59e8SDavid Daney 		uint64_t syn2bad:1;
771c5aa59e8SDavid Daney 		uint64_t syn3bad:1;
772c5aa59e8SDavid Daney 		uint64_t term_err:1;
773c5aa59e8SDavid Daney 		uint64_t reserved_14_63:50;
774c5aa59e8SDavid Daney #endif
775af866496SDavid Daney 	} s;
776af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn52xx;
777af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_cn52xxp1 {
778c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
779af866496SDavid Daney 		uint64_t reserved_13_63:51;
780af866496SDavid Daney 		uint64_t syn3bad:1;
781af866496SDavid Daney 		uint64_t syn2bad:1;
782af866496SDavid Daney 		uint64_t syn1bad:1;
783af866496SDavid Daney 		uint64_t syn0bad:1;
784af866496SDavid Daney 		uint64_t rxbad:1;
785af866496SDavid Daney 		uint64_t algn_st:3;
786af866496SDavid Daney 		uint64_t rx_st:2;
787af866496SDavid Daney 		uint64_t tx_st:3;
788c5aa59e8SDavid Daney #else
789c5aa59e8SDavid Daney 		uint64_t tx_st:3;
790c5aa59e8SDavid Daney 		uint64_t rx_st:2;
791c5aa59e8SDavid Daney 		uint64_t algn_st:3;
792c5aa59e8SDavid Daney 		uint64_t rxbad:1;
793c5aa59e8SDavid Daney 		uint64_t syn0bad:1;
794c5aa59e8SDavid Daney 		uint64_t syn1bad:1;
795c5aa59e8SDavid Daney 		uint64_t syn2bad:1;
796c5aa59e8SDavid Daney 		uint64_t syn3bad:1;
797c5aa59e8SDavid Daney 		uint64_t reserved_13_63:51;
798c5aa59e8SDavid Daney #endif
799af866496SDavid Daney 	} cn52xxp1;
800af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn56xx;
801af866496SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_cn52xxp1 cn56xxp1;
802c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn61xx;
803c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn63xx;
804c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn63xxp1;
805c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn66xx;
806c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn68xx;
807c5aa59e8SDavid Daney 	struct cvmx_pcsxx_tx_rx_states_reg_s cn68xxp1;
808af866496SDavid Daney };
809af866496SDavid Daney 
810af866496SDavid Daney #endif
811