154293ec3SDavid Daney /***********************license start***************
254293ec3SDavid Daney  * Author: Cavium Networks
354293ec3SDavid Daney  *
454293ec3SDavid Daney  * Contact: support@caviumnetworks.com
554293ec3SDavid Daney  * This file is part of the OCTEON SDK
654293ec3SDavid Daney  *
7c5aa59e8SDavid Daney  * Copyright (c) 2003-2012 Cavium Networks
854293ec3SDavid Daney  *
954293ec3SDavid Daney  * This file is free software; you can redistribute it and/or modify
1054293ec3SDavid Daney  * it under the terms of the GNU General Public License, Version 2, as
1154293ec3SDavid Daney  * published by the Free Software Foundation.
1254293ec3SDavid Daney  *
1354293ec3SDavid Daney  * This file is distributed in the hope that it will be useful, but
1454293ec3SDavid Daney  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
1554293ec3SDavid Daney  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
1654293ec3SDavid Daney  * NONINFRINGEMENT.  See the GNU General Public License for more
1754293ec3SDavid Daney  * details.
1854293ec3SDavid Daney  *
1954293ec3SDavid Daney  * You should have received a copy of the GNU General Public License
2054293ec3SDavid Daney  * along with this file; if not, write to the Free Software
2154293ec3SDavid Daney  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2254293ec3SDavid Daney  * or visit http://www.gnu.org/licenses/.
2354293ec3SDavid Daney  *
2454293ec3SDavid Daney  * This file may also be available under a different license from Cavium.
2554293ec3SDavid Daney  * Contact Cavium Networks for more information
2654293ec3SDavid Daney  ***********************license end**************************************/
2754293ec3SDavid Daney 
2854293ec3SDavid Daney #ifndef __CVMX_GPIO_DEFS_H__
2954293ec3SDavid Daney #define __CVMX_GPIO_DEFS_H__
3054293ec3SDavid Daney 
31aa32a955SDavid Daney #define CVMX_GPIO_BIT_CFGX(offset) (CVMX_ADD_IO_SEG(0x0001070000000800ull) + ((offset) & 15) * 8)
32aa32a955SDavid Daney #define CVMX_GPIO_BOOT_ENA (CVMX_ADD_IO_SEG(0x00010700000008A8ull))
33aa32a955SDavid Daney #define CVMX_GPIO_CLK_GENX(offset) (CVMX_ADD_IO_SEG(0x00010700000008C0ull) + ((offset) & 3) * 8)
34aa32a955SDavid Daney #define CVMX_GPIO_CLK_QLMX(offset) (CVMX_ADD_IO_SEG(0x00010700000008E0ull) + ((offset) & 1) * 8)
35aa32a955SDavid Daney #define CVMX_GPIO_DBG_ENA (CVMX_ADD_IO_SEG(0x00010700000008A0ull))
36aa32a955SDavid Daney #define CVMX_GPIO_INT_CLR (CVMX_ADD_IO_SEG(0x0001070000000898ull))
37c5aa59e8SDavid Daney #define CVMX_GPIO_MULTI_CAST (CVMX_ADD_IO_SEG(0x00010700000008B0ull))
38c5aa59e8SDavid Daney #define CVMX_GPIO_PIN_ENA (CVMX_ADD_IO_SEG(0x00010700000008B8ull))
39aa32a955SDavid Daney #define CVMX_GPIO_RX_DAT (CVMX_ADD_IO_SEG(0x0001070000000880ull))
40c5aa59e8SDavid Daney #define CVMX_GPIO_TIM_CTL (CVMX_ADD_IO_SEG(0x00010700000008A0ull))
41aa32a955SDavid Daney #define CVMX_GPIO_TX_CLR (CVMX_ADD_IO_SEG(0x0001070000000890ull))
42aa32a955SDavid Daney #define CVMX_GPIO_TX_SET (CVMX_ADD_IO_SEG(0x0001070000000888ull))
43aa32a955SDavid Daney #define CVMX_GPIO_XBIT_CFGX(offset) (CVMX_ADD_IO_SEG(0x0001070000000900ull) + ((offset) & 31) * 8 - 8*16)
4454293ec3SDavid Daney 
4554293ec3SDavid Daney union cvmx_gpio_bit_cfgx {
4654293ec3SDavid Daney 	uint64_t u64;
4754293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_s {
48c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
49aa32a955SDavid Daney 		uint64_t reserved_17_63:47;
50aa32a955SDavid Daney 		uint64_t synce_sel:2;
5154293ec3SDavid Daney 		uint64_t clk_gen:1;
5254293ec3SDavid Daney 		uint64_t clk_sel:2;
5354293ec3SDavid Daney 		uint64_t fil_sel:4;
5454293ec3SDavid Daney 		uint64_t fil_cnt:4;
5554293ec3SDavid Daney 		uint64_t int_type:1;
5654293ec3SDavid Daney 		uint64_t int_en:1;
5754293ec3SDavid Daney 		uint64_t rx_xor:1;
5854293ec3SDavid Daney 		uint64_t tx_oe:1;
59c5aa59e8SDavid Daney #else
60c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
61c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
62c5aa59e8SDavid Daney 		uint64_t int_en:1;
63c5aa59e8SDavid Daney 		uint64_t int_type:1;
64c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
65c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
66c5aa59e8SDavid Daney 		uint64_t clk_sel:2;
67c5aa59e8SDavid Daney 		uint64_t clk_gen:1;
68c5aa59e8SDavid Daney 		uint64_t synce_sel:2;
69c5aa59e8SDavid Daney 		uint64_t reserved_17_63:47;
70c5aa59e8SDavid Daney #endif
7154293ec3SDavid Daney 	} s;
7254293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx {
73c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
7454293ec3SDavid Daney 		uint64_t reserved_12_63:52;
7554293ec3SDavid Daney 		uint64_t fil_sel:4;
7654293ec3SDavid Daney 		uint64_t fil_cnt:4;
7754293ec3SDavid Daney 		uint64_t int_type:1;
7854293ec3SDavid Daney 		uint64_t int_en:1;
7954293ec3SDavid Daney 		uint64_t rx_xor:1;
8054293ec3SDavid Daney 		uint64_t tx_oe:1;
81c5aa59e8SDavid Daney #else
82c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
83c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
84c5aa59e8SDavid Daney 		uint64_t int_en:1;
85c5aa59e8SDavid Daney 		uint64_t int_type:1;
86c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
87c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
88c5aa59e8SDavid Daney 		uint64_t reserved_12_63:52;
89c5aa59e8SDavid Daney #endif
9054293ec3SDavid Daney 	} cn30xx;
9154293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn31xx;
9254293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn38xx;
9354293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn38xxp2;
9454293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn50xx;
95aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn52xx {
96c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
97aa32a955SDavid Daney 		uint64_t reserved_15_63:49;
98aa32a955SDavid Daney 		uint64_t clk_gen:1;
99aa32a955SDavid Daney 		uint64_t clk_sel:2;
100aa32a955SDavid Daney 		uint64_t fil_sel:4;
101aa32a955SDavid Daney 		uint64_t fil_cnt:4;
102aa32a955SDavid Daney 		uint64_t int_type:1;
103aa32a955SDavid Daney 		uint64_t int_en:1;
104aa32a955SDavid Daney 		uint64_t rx_xor:1;
105aa32a955SDavid Daney 		uint64_t tx_oe:1;
106c5aa59e8SDavid Daney #else
107c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
108c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
109c5aa59e8SDavid Daney 		uint64_t int_en:1;
110c5aa59e8SDavid Daney 		uint64_t int_type:1;
111c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
112c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
113c5aa59e8SDavid Daney 		uint64_t clk_sel:2;
114c5aa59e8SDavid Daney 		uint64_t clk_gen:1;
115c5aa59e8SDavid Daney 		uint64_t reserved_15_63:49;
116c5aa59e8SDavid Daney #endif
117aa32a955SDavid Daney 	} cn52xx;
118aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn52xx cn52xxp1;
119aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn52xx cn56xx;
120aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn52xx cn56xxp1;
12154293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn58xx;
12254293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn58xxp1;
123c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn61xx;
124aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn63xx;
125aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn63xxp1;
126c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn66xx;
127c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn68xx;
128c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn68xxp1;
129c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cnf71xx;
13054293ec3SDavid Daney };
13154293ec3SDavid Daney 
13254293ec3SDavid Daney union cvmx_gpio_boot_ena {
13354293ec3SDavid Daney 	uint64_t u64;
13454293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s {
135c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
13654293ec3SDavid Daney 		uint64_t reserved_12_63:52;
13754293ec3SDavid Daney 		uint64_t boot_ena:4;
13854293ec3SDavid Daney 		uint64_t reserved_0_7:8;
139c5aa59e8SDavid Daney #else
140c5aa59e8SDavid Daney 		uint64_t reserved_0_7:8;
141c5aa59e8SDavid Daney 		uint64_t boot_ena:4;
142c5aa59e8SDavid Daney 		uint64_t reserved_12_63:52;
143c5aa59e8SDavid Daney #endif
14454293ec3SDavid Daney 	} s;
14554293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn30xx;
14654293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn31xx;
14754293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn50xx;
14854293ec3SDavid Daney };
14954293ec3SDavid Daney 
15054293ec3SDavid Daney union cvmx_gpio_clk_genx {
15154293ec3SDavid Daney 	uint64_t u64;
15254293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s {
153c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
15454293ec3SDavid Daney 		uint64_t reserved_32_63:32;
15554293ec3SDavid Daney 		uint64_t n:32;
156c5aa59e8SDavid Daney #else
157c5aa59e8SDavid Daney 		uint64_t n:32;
158c5aa59e8SDavid Daney 		uint64_t reserved_32_63:32;
159c5aa59e8SDavid Daney #endif
16054293ec3SDavid Daney 	} s;
16154293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn52xx;
16254293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn52xxp1;
16354293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn56xx;
16454293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn56xxp1;
165c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cn61xx;
166aa32a955SDavid Daney 	struct cvmx_gpio_clk_genx_s cn63xx;
167aa32a955SDavid Daney 	struct cvmx_gpio_clk_genx_s cn63xxp1;
168c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cn66xx;
169c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cn68xx;
170c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cn68xxp1;
171c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cnf71xx;
172aa32a955SDavid Daney };
173aa32a955SDavid Daney 
174aa32a955SDavid Daney union cvmx_gpio_clk_qlmx {
175aa32a955SDavid Daney 	uint64_t u64;
176aa32a955SDavid Daney 	struct cvmx_gpio_clk_qlmx_s {
177c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
178c5aa59e8SDavid Daney 		uint64_t reserved_11_63:53;
179c5aa59e8SDavid Daney 		uint64_t qlm_sel:3;
180c5aa59e8SDavid Daney 		uint64_t reserved_3_7:5;
181c5aa59e8SDavid Daney 		uint64_t div:1;
182c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
183c5aa59e8SDavid Daney #else
184c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
185c5aa59e8SDavid Daney 		uint64_t div:1;
186c5aa59e8SDavid Daney 		uint64_t reserved_3_7:5;
187c5aa59e8SDavid Daney 		uint64_t qlm_sel:3;
188c5aa59e8SDavid Daney 		uint64_t reserved_11_63:53;
189c5aa59e8SDavid Daney #endif
190c5aa59e8SDavid Daney 	} s;
191c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn61xx {
192c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
193c5aa59e8SDavid Daney 		uint64_t reserved_10_63:54;
194c5aa59e8SDavid Daney 		uint64_t qlm_sel:2;
195c5aa59e8SDavid Daney 		uint64_t reserved_3_7:5;
196c5aa59e8SDavid Daney 		uint64_t div:1;
197c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
198c5aa59e8SDavid Daney #else
199c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
200c5aa59e8SDavid Daney 		uint64_t div:1;
201c5aa59e8SDavid Daney 		uint64_t reserved_3_7:5;
202c5aa59e8SDavid Daney 		uint64_t qlm_sel:2;
203c5aa59e8SDavid Daney 		uint64_t reserved_10_63:54;
204c5aa59e8SDavid Daney #endif
205c5aa59e8SDavid Daney 	} cn61xx;
206c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn63xx {
207c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
208aa32a955SDavid Daney 		uint64_t reserved_3_63:61;
209aa32a955SDavid Daney 		uint64_t div:1;
210aa32a955SDavid Daney 		uint64_t lane_sel:2;
211c5aa59e8SDavid Daney #else
212c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
213c5aa59e8SDavid Daney 		uint64_t div:1;
214c5aa59e8SDavid Daney 		uint64_t reserved_3_63:61;
215c5aa59e8SDavid Daney #endif
216c5aa59e8SDavid Daney 	} cn63xx;
217c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn63xx cn63xxp1;
218c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn61xx cn66xx;
219c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_s cn68xx;
220c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_s cn68xxp1;
221c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn61xx cnf71xx;
22254293ec3SDavid Daney };
22354293ec3SDavid Daney 
22454293ec3SDavid Daney union cvmx_gpio_dbg_ena {
22554293ec3SDavid Daney 	uint64_t u64;
22654293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s {
227c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
22854293ec3SDavid Daney 		uint64_t reserved_21_63:43;
22954293ec3SDavid Daney 		uint64_t dbg_ena:21;
230c5aa59e8SDavid Daney #else
231c5aa59e8SDavid Daney 		uint64_t dbg_ena:21;
232c5aa59e8SDavid Daney 		uint64_t reserved_21_63:43;
233c5aa59e8SDavid Daney #endif
23454293ec3SDavid Daney 	} s;
23554293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn30xx;
23654293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn31xx;
23754293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn50xx;
23854293ec3SDavid Daney };
23954293ec3SDavid Daney 
24054293ec3SDavid Daney union cvmx_gpio_int_clr {
24154293ec3SDavid Daney 	uint64_t u64;
24254293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s {
243c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
24454293ec3SDavid Daney 		uint64_t reserved_16_63:48;
24554293ec3SDavid Daney 		uint64_t type:16;
246c5aa59e8SDavid Daney #else
247c5aa59e8SDavid Daney 		uint64_t type:16;
248c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
249c5aa59e8SDavid Daney #endif
25054293ec3SDavid Daney 	} s;
25154293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn30xx;
25254293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn31xx;
25354293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn38xx;
25454293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn38xxp2;
25554293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn50xx;
25654293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn52xx;
25754293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn52xxp1;
25854293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn56xx;
25954293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn56xxp1;
26054293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn58xx;
26154293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn58xxp1;
262c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cn61xx;
263aa32a955SDavid Daney 	struct cvmx_gpio_int_clr_s cn63xx;
264aa32a955SDavid Daney 	struct cvmx_gpio_int_clr_s cn63xxp1;
265c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cn66xx;
266c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cn68xx;
267c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cn68xxp1;
268c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cnf71xx;
269c5aa59e8SDavid Daney };
270c5aa59e8SDavid Daney 
271c5aa59e8SDavid Daney union cvmx_gpio_multi_cast {
272c5aa59e8SDavid Daney 	uint64_t u64;
273c5aa59e8SDavid Daney 	struct cvmx_gpio_multi_cast_s {
274c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
275c5aa59e8SDavid Daney 		uint64_t reserved_1_63:63;
276c5aa59e8SDavid Daney 		uint64_t en:1;
277c5aa59e8SDavid Daney #else
278c5aa59e8SDavid Daney 		uint64_t en:1;
279c5aa59e8SDavid Daney 		uint64_t reserved_1_63:63;
280c5aa59e8SDavid Daney #endif
281c5aa59e8SDavid Daney 	} s;
282c5aa59e8SDavid Daney 	struct cvmx_gpio_multi_cast_s cn61xx;
283c5aa59e8SDavid Daney 	struct cvmx_gpio_multi_cast_s cnf71xx;
284c5aa59e8SDavid Daney };
285c5aa59e8SDavid Daney 
286c5aa59e8SDavid Daney union cvmx_gpio_pin_ena {
287c5aa59e8SDavid Daney 	uint64_t u64;
288c5aa59e8SDavid Daney 	struct cvmx_gpio_pin_ena_s {
289c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
290c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
291c5aa59e8SDavid Daney 		uint64_t ena19:1;
292c5aa59e8SDavid Daney 		uint64_t ena18:1;
293c5aa59e8SDavid Daney 		uint64_t reserved_0_17:18;
294c5aa59e8SDavid Daney #else
295c5aa59e8SDavid Daney 		uint64_t reserved_0_17:18;
296c5aa59e8SDavid Daney 		uint64_t ena18:1;
297c5aa59e8SDavid Daney 		uint64_t ena19:1;
298c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
299c5aa59e8SDavid Daney #endif
300c5aa59e8SDavid Daney 	} s;
301c5aa59e8SDavid Daney 	struct cvmx_gpio_pin_ena_s cn66xx;
30254293ec3SDavid Daney };
30354293ec3SDavid Daney 
30454293ec3SDavid Daney union cvmx_gpio_rx_dat {
30554293ec3SDavid Daney 	uint64_t u64;
30654293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s {
307c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
30854293ec3SDavid Daney 		uint64_t reserved_24_63:40;
30954293ec3SDavid Daney 		uint64_t dat:24;
310c5aa59e8SDavid Daney #else
311c5aa59e8SDavid Daney 		uint64_t dat:24;
312c5aa59e8SDavid Daney 		uint64_t reserved_24_63:40;
313c5aa59e8SDavid Daney #endif
31454293ec3SDavid Daney 	} s;
31554293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn30xx;
31654293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn31xx;
31754293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx {
318c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
31954293ec3SDavid Daney 		uint64_t reserved_16_63:48;
32054293ec3SDavid Daney 		uint64_t dat:16;
321c5aa59e8SDavid Daney #else
322c5aa59e8SDavid Daney 		uint64_t dat:16;
323c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
324c5aa59e8SDavid Daney #endif
32554293ec3SDavid Daney 	} cn38xx;
32654293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn38xxp2;
32754293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn50xx;
32854293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn52xx;
32954293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn52xxp1;
33054293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn56xx;
33154293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn56xxp1;
33254293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn58xx;
33354293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn58xxp1;
334c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn61xx {
335c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
336c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
337c5aa59e8SDavid Daney 		uint64_t dat:20;
338c5aa59e8SDavid Daney #else
339c5aa59e8SDavid Daney 		uint64_t dat:20;
340c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
341c5aa59e8SDavid Daney #endif
342c5aa59e8SDavid Daney 	} cn61xx;
343aa32a955SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn63xx;
344aa32a955SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn63xxp1;
345c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn61xx cn66xx;
346c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn68xx;
347c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn68xxp1;
348c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn61xx cnf71xx;
349c5aa59e8SDavid Daney };
350c5aa59e8SDavid Daney 
351c5aa59e8SDavid Daney union cvmx_gpio_tim_ctl {
352c5aa59e8SDavid Daney 	uint64_t u64;
353c5aa59e8SDavid Daney 	struct cvmx_gpio_tim_ctl_s {
354c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
355c5aa59e8SDavid Daney 		uint64_t reserved_4_63:60;
356c5aa59e8SDavid Daney 		uint64_t sel:4;
357c5aa59e8SDavid Daney #else
358c5aa59e8SDavid Daney 		uint64_t sel:4;
359c5aa59e8SDavid Daney 		uint64_t reserved_4_63:60;
360c5aa59e8SDavid Daney #endif
361c5aa59e8SDavid Daney 	} s;
362c5aa59e8SDavid Daney 	struct cvmx_gpio_tim_ctl_s cn68xx;
363c5aa59e8SDavid Daney 	struct cvmx_gpio_tim_ctl_s cn68xxp1;
36454293ec3SDavid Daney };
36554293ec3SDavid Daney 
36654293ec3SDavid Daney union cvmx_gpio_tx_clr {
36754293ec3SDavid Daney 	uint64_t u64;
36854293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s {
369c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
37054293ec3SDavid Daney 		uint64_t reserved_24_63:40;
37154293ec3SDavid Daney 		uint64_t clr:24;
372c5aa59e8SDavid Daney #else
373c5aa59e8SDavid Daney 		uint64_t clr:24;
374c5aa59e8SDavid Daney 		uint64_t reserved_24_63:40;
375c5aa59e8SDavid Daney #endif
37654293ec3SDavid Daney 	} s;
37754293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn30xx;
37854293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn31xx;
37954293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx {
380c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
38154293ec3SDavid Daney 		uint64_t reserved_16_63:48;
38254293ec3SDavid Daney 		uint64_t clr:16;
383c5aa59e8SDavid Daney #else
384c5aa59e8SDavid Daney 		uint64_t clr:16;
385c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
386c5aa59e8SDavid Daney #endif
38754293ec3SDavid Daney 	} cn38xx;
38854293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn38xxp2;
38954293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn50xx;
39054293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn52xx;
39154293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn52xxp1;
39254293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn56xx;
39354293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn56xxp1;
39454293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn58xx;
39554293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn58xxp1;
396c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn61xx {
397c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
398c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
399c5aa59e8SDavid Daney 		uint64_t clr:20;
400c5aa59e8SDavid Daney #else
401c5aa59e8SDavid Daney 		uint64_t clr:20;
402c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
403c5aa59e8SDavid Daney #endif
404c5aa59e8SDavid Daney 	} cn61xx;
405aa32a955SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn63xx;
406aa32a955SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn63xxp1;
407c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn61xx cn66xx;
408c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn68xx;
409c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn68xxp1;
410c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn61xx cnf71xx;
41154293ec3SDavid Daney };
41254293ec3SDavid Daney 
41354293ec3SDavid Daney union cvmx_gpio_tx_set {
41454293ec3SDavid Daney 	uint64_t u64;
41554293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s {
416c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
41754293ec3SDavid Daney 		uint64_t reserved_24_63:40;
41854293ec3SDavid Daney 		uint64_t set:24;
419c5aa59e8SDavid Daney #else
420c5aa59e8SDavid Daney 		uint64_t set:24;
421c5aa59e8SDavid Daney 		uint64_t reserved_24_63:40;
422c5aa59e8SDavid Daney #endif
42354293ec3SDavid Daney 	} s;
42454293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn30xx;
42554293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn31xx;
42654293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx {
427c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
42854293ec3SDavid Daney 		uint64_t reserved_16_63:48;
42954293ec3SDavid Daney 		uint64_t set:16;
430c5aa59e8SDavid Daney #else
431c5aa59e8SDavid Daney 		uint64_t set:16;
432c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
433c5aa59e8SDavid Daney #endif
43454293ec3SDavid Daney 	} cn38xx;
43554293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn38xxp2;
43654293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn50xx;
43754293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn52xx;
43854293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn52xxp1;
43954293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn56xx;
44054293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn56xxp1;
44154293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn58xx;
44254293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn58xxp1;
443c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn61xx {
444c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
445c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
446c5aa59e8SDavid Daney 		uint64_t set:20;
447c5aa59e8SDavid Daney #else
448c5aa59e8SDavid Daney 		uint64_t set:20;
449c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
450c5aa59e8SDavid Daney #endif
451c5aa59e8SDavid Daney 	} cn61xx;
452aa32a955SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn63xx;
453aa32a955SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn63xxp1;
454c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn61xx cn66xx;
455c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn68xx;
456c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn68xxp1;
457c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn61xx cnf71xx;
45854293ec3SDavid Daney };
45954293ec3SDavid Daney 
46054293ec3SDavid Daney union cvmx_gpio_xbit_cfgx {
46154293ec3SDavid Daney 	uint64_t u64;
46254293ec3SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s {
463c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
464c5aa59e8SDavid Daney 		uint64_t reserved_17_63:47;
465c5aa59e8SDavid Daney 		uint64_t synce_sel:2;
466c5aa59e8SDavid Daney 		uint64_t clk_gen:1;
467c5aa59e8SDavid Daney 		uint64_t clk_sel:2;
468c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
469c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
470c5aa59e8SDavid Daney 		uint64_t int_type:1;
471c5aa59e8SDavid Daney 		uint64_t int_en:1;
472c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
473c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
474c5aa59e8SDavid Daney #else
475c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
476c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
477c5aa59e8SDavid Daney 		uint64_t int_en:1;
478c5aa59e8SDavid Daney 		uint64_t int_type:1;
479c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
480c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
481c5aa59e8SDavid Daney 		uint64_t clk_sel:2;
482c5aa59e8SDavid Daney 		uint64_t clk_gen:1;
483c5aa59e8SDavid Daney 		uint64_t synce_sel:2;
484c5aa59e8SDavid Daney 		uint64_t reserved_17_63:47;
485c5aa59e8SDavid Daney #endif
486c5aa59e8SDavid Daney 	} s;
487c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_cn30xx {
488c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
48954293ec3SDavid Daney 		uint64_t reserved_12_63:52;
49054293ec3SDavid Daney 		uint64_t fil_sel:4;
49154293ec3SDavid Daney 		uint64_t fil_cnt:4;
49254293ec3SDavid Daney 		uint64_t reserved_2_3:2;
49354293ec3SDavid Daney 		uint64_t rx_xor:1;
49454293ec3SDavid Daney 		uint64_t tx_oe:1;
495c5aa59e8SDavid Daney #else
496c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
497c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
498c5aa59e8SDavid Daney 		uint64_t reserved_2_3:2;
499c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
500c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
501c5aa59e8SDavid Daney 		uint64_t reserved_12_63:52;
502c5aa59e8SDavid Daney #endif
503c5aa59e8SDavid Daney 	} cn30xx;
504c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_cn30xx cn31xx;
505c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_cn30xx cn50xx;
506c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cn61xx;
507c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cn66xx;
508c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cnf71xx;
50954293ec3SDavid Daney };
51054293ec3SDavid Daney 
51154293ec3SDavid Daney #endif
512