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
4993e502b3SSteven J. Hill 		uint64_t reserved_21_63:42;
5093e502b3SSteven J. Hill 		uint64_t output_sel:5;
51aa32a955SDavid Daney 		uint64_t synce_sel:2;
5254293ec3SDavid Daney 		uint64_t clk_gen:1;
5354293ec3SDavid Daney 		uint64_t clk_sel:2;
5454293ec3SDavid Daney 		uint64_t fil_sel:4;
5554293ec3SDavid Daney 		uint64_t fil_cnt:4;
5654293ec3SDavid Daney 		uint64_t int_type:1;
5754293ec3SDavid Daney 		uint64_t int_en:1;
5854293ec3SDavid Daney 		uint64_t rx_xor:1;
5954293ec3SDavid Daney 		uint64_t tx_oe:1;
60c5aa59e8SDavid Daney #else
61c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
62c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
63c5aa59e8SDavid Daney 		uint64_t int_en:1;
64c5aa59e8SDavid Daney 		uint64_t int_type:1;
65c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
66c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
67c5aa59e8SDavid Daney 		uint64_t clk_sel:2;
68c5aa59e8SDavid Daney 		uint64_t clk_gen:1;
69c5aa59e8SDavid Daney 		uint64_t synce_sel:2;
7093e502b3SSteven J. Hill 		uint64_t output_sel:5;
7193e502b3SSteven J. Hill 		uint64_t reserved_21_63:42;
72c5aa59e8SDavid Daney #endif
7354293ec3SDavid Daney 	} s;
7454293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx {
75c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
7654293ec3SDavid Daney 		uint64_t reserved_12_63:52;
7754293ec3SDavid Daney 		uint64_t fil_sel:4;
7854293ec3SDavid Daney 		uint64_t fil_cnt:4;
7954293ec3SDavid Daney 		uint64_t int_type:1;
8054293ec3SDavid Daney 		uint64_t int_en:1;
8154293ec3SDavid Daney 		uint64_t rx_xor:1;
8254293ec3SDavid Daney 		uint64_t tx_oe:1;
83c5aa59e8SDavid Daney #else
84c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
85c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
86c5aa59e8SDavid Daney 		uint64_t int_en:1;
87c5aa59e8SDavid Daney 		uint64_t int_type:1;
88c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
89c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
90c5aa59e8SDavid Daney 		uint64_t reserved_12_63:52;
91c5aa59e8SDavid Daney #endif
9254293ec3SDavid Daney 	} cn30xx;
9354293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn31xx;
9454293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn38xx;
9554293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn38xxp2;
9654293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn50xx;
97aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn52xx {
98c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
99aa32a955SDavid Daney 		uint64_t reserved_15_63:49;
100aa32a955SDavid Daney 		uint64_t clk_gen:1;
101aa32a955SDavid Daney 		uint64_t clk_sel:2;
102aa32a955SDavid Daney 		uint64_t fil_sel:4;
103aa32a955SDavid Daney 		uint64_t fil_cnt:4;
104aa32a955SDavid Daney 		uint64_t int_type:1;
105aa32a955SDavid Daney 		uint64_t int_en:1;
106aa32a955SDavid Daney 		uint64_t rx_xor:1;
107aa32a955SDavid Daney 		uint64_t tx_oe:1;
108c5aa59e8SDavid Daney #else
109c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
110c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
111c5aa59e8SDavid Daney 		uint64_t int_en:1;
112c5aa59e8SDavid Daney 		uint64_t int_type:1;
113c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
114c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
115c5aa59e8SDavid Daney 		uint64_t clk_sel:2;
116c5aa59e8SDavid Daney 		uint64_t clk_gen:1;
117c5aa59e8SDavid Daney 		uint64_t reserved_15_63:49;
118c5aa59e8SDavid Daney #endif
119aa32a955SDavid Daney 	} cn52xx;
120aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn52xx cn52xxp1;
121aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn52xx cn56xx;
122aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn52xx cn56xxp1;
12354293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn58xx;
12454293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn58xxp1;
125c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn61xx;
126aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn63xx;
127aa32a955SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn63xxp1;
128c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn66xx;
129c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn68xx;
130c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn68xxp1;
13193e502b3SSteven J. Hill 	struct cvmx_gpio_bit_cfgx_s cn70xx;
13293e502b3SSteven J. Hill 	struct cvmx_gpio_bit_cfgx_s cn73xx;
133c5aa59e8SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cnf71xx;
13454293ec3SDavid Daney };
13554293ec3SDavid Daney 
13654293ec3SDavid Daney union cvmx_gpio_boot_ena {
13754293ec3SDavid Daney 	uint64_t u64;
13854293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s {
139c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
14054293ec3SDavid Daney 		uint64_t reserved_12_63:52;
14154293ec3SDavid Daney 		uint64_t boot_ena:4;
14254293ec3SDavid Daney 		uint64_t reserved_0_7:8;
143c5aa59e8SDavid Daney #else
144c5aa59e8SDavid Daney 		uint64_t reserved_0_7:8;
145c5aa59e8SDavid Daney 		uint64_t boot_ena:4;
146c5aa59e8SDavid Daney 		uint64_t reserved_12_63:52;
147c5aa59e8SDavid Daney #endif
14854293ec3SDavid Daney 	} s;
14954293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn30xx;
15054293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn31xx;
15154293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn50xx;
15254293ec3SDavid Daney };
15354293ec3SDavid Daney 
15454293ec3SDavid Daney union cvmx_gpio_clk_genx {
15554293ec3SDavid Daney 	uint64_t u64;
15654293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s {
157c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
15854293ec3SDavid Daney 		uint64_t reserved_32_63:32;
15954293ec3SDavid Daney 		uint64_t n:32;
160c5aa59e8SDavid Daney #else
161c5aa59e8SDavid Daney 		uint64_t n:32;
162c5aa59e8SDavid Daney 		uint64_t reserved_32_63:32;
163c5aa59e8SDavid Daney #endif
16454293ec3SDavid Daney 	} s;
16554293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn52xx;
16654293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn52xxp1;
16754293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn56xx;
16854293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn56xxp1;
169c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cn61xx;
170aa32a955SDavid Daney 	struct cvmx_gpio_clk_genx_s cn63xx;
171aa32a955SDavid Daney 	struct cvmx_gpio_clk_genx_s cn63xxp1;
172c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cn66xx;
173c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cn68xx;
174c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cn68xxp1;
175c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_genx_s cnf71xx;
176aa32a955SDavid Daney };
177aa32a955SDavid Daney 
178aa32a955SDavid Daney union cvmx_gpio_clk_qlmx {
179aa32a955SDavid Daney 	uint64_t u64;
180aa32a955SDavid Daney 	struct cvmx_gpio_clk_qlmx_s {
181c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
182c5aa59e8SDavid Daney 		uint64_t reserved_11_63:53;
183c5aa59e8SDavid Daney 		uint64_t qlm_sel:3;
184c5aa59e8SDavid Daney 		uint64_t reserved_3_7:5;
185c5aa59e8SDavid Daney 		uint64_t div:1;
186c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
187c5aa59e8SDavid Daney #else
188c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
189c5aa59e8SDavid Daney 		uint64_t div:1;
190c5aa59e8SDavid Daney 		uint64_t reserved_3_7:5;
191c5aa59e8SDavid Daney 		uint64_t qlm_sel:3;
192c5aa59e8SDavid Daney 		uint64_t reserved_11_63:53;
193c5aa59e8SDavid Daney #endif
194c5aa59e8SDavid Daney 	} s;
195c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn61xx {
196c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
197c5aa59e8SDavid Daney 		uint64_t reserved_10_63:54;
198c5aa59e8SDavid Daney 		uint64_t qlm_sel:2;
199c5aa59e8SDavid Daney 		uint64_t reserved_3_7:5;
200c5aa59e8SDavid Daney 		uint64_t div:1;
201c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
202c5aa59e8SDavid Daney #else
203c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
204c5aa59e8SDavid Daney 		uint64_t div:1;
205c5aa59e8SDavid Daney 		uint64_t reserved_3_7:5;
206c5aa59e8SDavid Daney 		uint64_t qlm_sel:2;
207c5aa59e8SDavid Daney 		uint64_t reserved_10_63:54;
208c5aa59e8SDavid Daney #endif
209c5aa59e8SDavid Daney 	} cn61xx;
210c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn63xx {
211c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
212aa32a955SDavid Daney 		uint64_t reserved_3_63:61;
213aa32a955SDavid Daney 		uint64_t div:1;
214aa32a955SDavid Daney 		uint64_t lane_sel:2;
215c5aa59e8SDavid Daney #else
216c5aa59e8SDavid Daney 		uint64_t lane_sel:2;
217c5aa59e8SDavid Daney 		uint64_t div:1;
218c5aa59e8SDavid Daney 		uint64_t reserved_3_63:61;
219c5aa59e8SDavid Daney #endif
220c5aa59e8SDavid Daney 	} cn63xx;
221c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn63xx cn63xxp1;
222c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn61xx cn66xx;
223c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_s cn68xx;
224c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_s cn68xxp1;
225c5aa59e8SDavid Daney 	struct cvmx_gpio_clk_qlmx_cn61xx cnf71xx;
22654293ec3SDavid Daney };
22754293ec3SDavid Daney 
22854293ec3SDavid Daney union cvmx_gpio_dbg_ena {
22954293ec3SDavid Daney 	uint64_t u64;
23054293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s {
231c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
23254293ec3SDavid Daney 		uint64_t reserved_21_63:43;
23354293ec3SDavid Daney 		uint64_t dbg_ena:21;
234c5aa59e8SDavid Daney #else
235c5aa59e8SDavid Daney 		uint64_t dbg_ena:21;
236c5aa59e8SDavid Daney 		uint64_t reserved_21_63:43;
237c5aa59e8SDavid Daney #endif
23854293ec3SDavid Daney 	} s;
23954293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn30xx;
24054293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn31xx;
24154293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn50xx;
24254293ec3SDavid Daney };
24354293ec3SDavid Daney 
24454293ec3SDavid Daney union cvmx_gpio_int_clr {
24554293ec3SDavid Daney 	uint64_t u64;
24654293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s {
247c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
24854293ec3SDavid Daney 		uint64_t reserved_16_63:48;
24954293ec3SDavid Daney 		uint64_t type:16;
250c5aa59e8SDavid Daney #else
251c5aa59e8SDavid Daney 		uint64_t type:16;
252c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
253c5aa59e8SDavid Daney #endif
25454293ec3SDavid Daney 	} s;
25554293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn30xx;
25654293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn31xx;
25754293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn38xx;
25854293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn38xxp2;
25954293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn50xx;
26054293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn52xx;
26154293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn52xxp1;
26254293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn56xx;
26354293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn56xxp1;
26454293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn58xx;
26554293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn58xxp1;
266c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cn61xx;
267aa32a955SDavid Daney 	struct cvmx_gpio_int_clr_s cn63xx;
268aa32a955SDavid Daney 	struct cvmx_gpio_int_clr_s cn63xxp1;
269c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cn66xx;
270c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cn68xx;
271c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cn68xxp1;
272c5aa59e8SDavid Daney 	struct cvmx_gpio_int_clr_s cnf71xx;
273c5aa59e8SDavid Daney };
274c5aa59e8SDavid Daney 
275c5aa59e8SDavid Daney union cvmx_gpio_multi_cast {
276c5aa59e8SDavid Daney 	uint64_t u64;
277c5aa59e8SDavid Daney 	struct cvmx_gpio_multi_cast_s {
278c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
279c5aa59e8SDavid Daney 		uint64_t reserved_1_63:63;
280c5aa59e8SDavid Daney 		uint64_t en:1;
281c5aa59e8SDavid Daney #else
282c5aa59e8SDavid Daney 		uint64_t en:1;
283c5aa59e8SDavid Daney 		uint64_t reserved_1_63:63;
284c5aa59e8SDavid Daney #endif
285c5aa59e8SDavid Daney 	} s;
286c5aa59e8SDavid Daney 	struct cvmx_gpio_multi_cast_s cn61xx;
287c5aa59e8SDavid Daney 	struct cvmx_gpio_multi_cast_s cnf71xx;
288c5aa59e8SDavid Daney };
289c5aa59e8SDavid Daney 
290c5aa59e8SDavid Daney union cvmx_gpio_pin_ena {
291c5aa59e8SDavid Daney 	uint64_t u64;
292c5aa59e8SDavid Daney 	struct cvmx_gpio_pin_ena_s {
293c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
294c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
295c5aa59e8SDavid Daney 		uint64_t ena19:1;
296c5aa59e8SDavid Daney 		uint64_t ena18:1;
297c5aa59e8SDavid Daney 		uint64_t reserved_0_17:18;
298c5aa59e8SDavid Daney #else
299c5aa59e8SDavid Daney 		uint64_t reserved_0_17:18;
300c5aa59e8SDavid Daney 		uint64_t ena18:1;
301c5aa59e8SDavid Daney 		uint64_t ena19:1;
302c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
303c5aa59e8SDavid Daney #endif
304c5aa59e8SDavid Daney 	} s;
305c5aa59e8SDavid Daney 	struct cvmx_gpio_pin_ena_s cn66xx;
30654293ec3SDavid Daney };
30754293ec3SDavid Daney 
30854293ec3SDavid Daney union cvmx_gpio_rx_dat {
30954293ec3SDavid Daney 	uint64_t u64;
31054293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s {
311c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
31254293ec3SDavid Daney 		uint64_t reserved_24_63:40;
31354293ec3SDavid Daney 		uint64_t dat:24;
314c5aa59e8SDavid Daney #else
315c5aa59e8SDavid Daney 		uint64_t dat:24;
316c5aa59e8SDavid Daney 		uint64_t reserved_24_63:40;
317c5aa59e8SDavid Daney #endif
31854293ec3SDavid Daney 	} s;
31954293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn30xx;
32054293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn31xx;
32154293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx {
322c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
32354293ec3SDavid Daney 		uint64_t reserved_16_63:48;
32454293ec3SDavid Daney 		uint64_t dat:16;
325c5aa59e8SDavid Daney #else
326c5aa59e8SDavid Daney 		uint64_t dat:16;
327c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
328c5aa59e8SDavid Daney #endif
32954293ec3SDavid Daney 	} cn38xx;
33054293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn38xxp2;
33154293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn50xx;
33254293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn52xx;
33354293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn52xxp1;
33454293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn56xx;
33554293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn56xxp1;
33654293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn58xx;
33754293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn58xxp1;
338c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn61xx {
339c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
340c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
341c5aa59e8SDavid Daney 		uint64_t dat:20;
342c5aa59e8SDavid Daney #else
343c5aa59e8SDavid Daney 		uint64_t dat:20;
344c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
345c5aa59e8SDavid Daney #endif
346c5aa59e8SDavid Daney 	} cn61xx;
347aa32a955SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn63xx;
348aa32a955SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn63xxp1;
349c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn61xx cn66xx;
350c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn68xx;
351c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn68xxp1;
352c5aa59e8SDavid Daney 	struct cvmx_gpio_rx_dat_cn61xx cnf71xx;
353c5aa59e8SDavid Daney };
354c5aa59e8SDavid Daney 
355c5aa59e8SDavid Daney union cvmx_gpio_tim_ctl {
356c5aa59e8SDavid Daney 	uint64_t u64;
357c5aa59e8SDavid Daney 	struct cvmx_gpio_tim_ctl_s {
358c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
359c5aa59e8SDavid Daney 		uint64_t reserved_4_63:60;
360c5aa59e8SDavid Daney 		uint64_t sel:4;
361c5aa59e8SDavid Daney #else
362c5aa59e8SDavid Daney 		uint64_t sel:4;
363c5aa59e8SDavid Daney 		uint64_t reserved_4_63:60;
364c5aa59e8SDavid Daney #endif
365c5aa59e8SDavid Daney 	} s;
366c5aa59e8SDavid Daney 	struct cvmx_gpio_tim_ctl_s cn68xx;
367c5aa59e8SDavid Daney 	struct cvmx_gpio_tim_ctl_s cn68xxp1;
36854293ec3SDavid Daney };
36954293ec3SDavid Daney 
37054293ec3SDavid Daney union cvmx_gpio_tx_clr {
37154293ec3SDavid Daney 	uint64_t u64;
37254293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s {
373c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
37454293ec3SDavid Daney 		uint64_t reserved_24_63:40;
37554293ec3SDavid Daney 		uint64_t clr:24;
376c5aa59e8SDavid Daney #else
377c5aa59e8SDavid Daney 		uint64_t clr:24;
378c5aa59e8SDavid Daney 		uint64_t reserved_24_63:40;
379c5aa59e8SDavid Daney #endif
38054293ec3SDavid Daney 	} s;
38154293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn30xx;
38254293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn31xx;
38354293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx {
384c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
38554293ec3SDavid Daney 		uint64_t reserved_16_63:48;
38654293ec3SDavid Daney 		uint64_t clr:16;
387c5aa59e8SDavid Daney #else
388c5aa59e8SDavid Daney 		uint64_t clr:16;
389c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
390c5aa59e8SDavid Daney #endif
39154293ec3SDavid Daney 	} cn38xx;
39254293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn38xxp2;
39354293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn50xx;
39454293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn52xx;
39554293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn52xxp1;
39654293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn56xx;
39754293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn56xxp1;
39854293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn58xx;
39954293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn58xxp1;
400c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn61xx {
401c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
402c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
403c5aa59e8SDavid Daney 		uint64_t clr:20;
404c5aa59e8SDavid Daney #else
405c5aa59e8SDavid Daney 		uint64_t clr:20;
406c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
407c5aa59e8SDavid Daney #endif
408c5aa59e8SDavid Daney 	} cn61xx;
409aa32a955SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn63xx;
410aa32a955SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn63xxp1;
411c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn61xx cn66xx;
412c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn68xx;
413c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn68xxp1;
414c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_clr_cn61xx cnf71xx;
41554293ec3SDavid Daney };
41654293ec3SDavid Daney 
41754293ec3SDavid Daney union cvmx_gpio_tx_set {
41854293ec3SDavid Daney 	uint64_t u64;
41954293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s {
420c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
42154293ec3SDavid Daney 		uint64_t reserved_24_63:40;
42254293ec3SDavid Daney 		uint64_t set:24;
423c5aa59e8SDavid Daney #else
424c5aa59e8SDavid Daney 		uint64_t set:24;
425c5aa59e8SDavid Daney 		uint64_t reserved_24_63:40;
426c5aa59e8SDavid Daney #endif
42754293ec3SDavid Daney 	} s;
42854293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn30xx;
42954293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn31xx;
43054293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx {
431c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
43254293ec3SDavid Daney 		uint64_t reserved_16_63:48;
43354293ec3SDavid Daney 		uint64_t set:16;
434c5aa59e8SDavid Daney #else
435c5aa59e8SDavid Daney 		uint64_t set:16;
436c5aa59e8SDavid Daney 		uint64_t reserved_16_63:48;
437c5aa59e8SDavid Daney #endif
43854293ec3SDavid Daney 	} cn38xx;
43954293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn38xxp2;
44054293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn50xx;
44154293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn52xx;
44254293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn52xxp1;
44354293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn56xx;
44454293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn56xxp1;
44554293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn58xx;
44654293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn58xxp1;
447c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn61xx {
448c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
449c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
450c5aa59e8SDavid Daney 		uint64_t set:20;
451c5aa59e8SDavid Daney #else
452c5aa59e8SDavid Daney 		uint64_t set:20;
453c5aa59e8SDavid Daney 		uint64_t reserved_20_63:44;
454c5aa59e8SDavid Daney #endif
455c5aa59e8SDavid Daney 	} cn61xx;
456aa32a955SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn63xx;
457aa32a955SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn63xxp1;
458c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn61xx cn66xx;
459c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn68xx;
460c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn68xxp1;
461c5aa59e8SDavid Daney 	struct cvmx_gpio_tx_set_cn61xx cnf71xx;
46254293ec3SDavid Daney };
46354293ec3SDavid Daney 
46454293ec3SDavid Daney union cvmx_gpio_xbit_cfgx {
46554293ec3SDavid Daney 	uint64_t u64;
46654293ec3SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s {
467c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
468c5aa59e8SDavid Daney 		uint64_t reserved_17_63:47;
469c5aa59e8SDavid Daney 		uint64_t synce_sel:2;
470c5aa59e8SDavid Daney 		uint64_t clk_gen:1;
471c5aa59e8SDavid Daney 		uint64_t clk_sel:2;
472c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
473c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
474c5aa59e8SDavid Daney 		uint64_t int_type:1;
475c5aa59e8SDavid Daney 		uint64_t int_en:1;
476c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
477c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
478c5aa59e8SDavid Daney #else
479c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
480c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
481c5aa59e8SDavid Daney 		uint64_t int_en:1;
482c5aa59e8SDavid Daney 		uint64_t int_type:1;
483c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
484c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
485c5aa59e8SDavid Daney 		uint64_t clk_sel:2;
486c5aa59e8SDavid Daney 		uint64_t clk_gen:1;
487c5aa59e8SDavid Daney 		uint64_t synce_sel:2;
488c5aa59e8SDavid Daney 		uint64_t reserved_17_63:47;
489c5aa59e8SDavid Daney #endif
490c5aa59e8SDavid Daney 	} s;
491c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_cn30xx {
492c5aa59e8SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
49354293ec3SDavid Daney 		uint64_t reserved_12_63:52;
49454293ec3SDavid Daney 		uint64_t fil_sel:4;
49554293ec3SDavid Daney 		uint64_t fil_cnt:4;
49654293ec3SDavid Daney 		uint64_t reserved_2_3:2;
49754293ec3SDavid Daney 		uint64_t rx_xor:1;
49854293ec3SDavid Daney 		uint64_t tx_oe:1;
499c5aa59e8SDavid Daney #else
500c5aa59e8SDavid Daney 		uint64_t tx_oe:1;
501c5aa59e8SDavid Daney 		uint64_t rx_xor:1;
502c5aa59e8SDavid Daney 		uint64_t reserved_2_3:2;
503c5aa59e8SDavid Daney 		uint64_t fil_cnt:4;
504c5aa59e8SDavid Daney 		uint64_t fil_sel:4;
505c5aa59e8SDavid Daney 		uint64_t reserved_12_63:52;
506c5aa59e8SDavid Daney #endif
507c5aa59e8SDavid Daney 	} cn30xx;
508c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_cn30xx cn31xx;
509c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_cn30xx cn50xx;
510c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cn61xx;
511c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cn66xx;
512c5aa59e8SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cnf71xx;
51354293ec3SDavid Daney };
51454293ec3SDavid Daney 
51554293ec3SDavid Daney #endif
516