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  *
754293ec3SDavid Daney  * Copyright (c) 2003-2008 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 
3154293ec3SDavid Daney #define CVMX_GPIO_BIT_CFGX(offset) \
3254293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x0001070000000800ull + (((offset) & 15) * 8))
3354293ec3SDavid Daney #define CVMX_GPIO_BOOT_ENA \
3454293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x00010700000008A8ull)
3554293ec3SDavid Daney #define CVMX_GPIO_CLK_GENX(offset) \
3654293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x00010700000008C0ull + (((offset) & 3) * 8))
3754293ec3SDavid Daney #define CVMX_GPIO_DBG_ENA \
3854293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x00010700000008A0ull)
3954293ec3SDavid Daney #define CVMX_GPIO_INT_CLR \
4054293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x0001070000000898ull)
4154293ec3SDavid Daney #define CVMX_GPIO_RX_DAT \
4254293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x0001070000000880ull)
4354293ec3SDavid Daney #define CVMX_GPIO_TX_CLR \
4454293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x0001070000000890ull)
4554293ec3SDavid Daney #define CVMX_GPIO_TX_SET \
4654293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x0001070000000888ull)
4754293ec3SDavid Daney #define CVMX_GPIO_XBIT_CFGX(offset) \
4854293ec3SDavid Daney 	 CVMX_ADD_IO_SEG(0x0001070000000900ull + (((offset) & 31) * 8) - 8 * 16)
4954293ec3SDavid Daney 
5054293ec3SDavid Daney union cvmx_gpio_bit_cfgx {
5154293ec3SDavid Daney 	uint64_t u64;
5254293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_s {
5354293ec3SDavid Daney 		uint64_t reserved_15_63:49;
5454293ec3SDavid Daney 		uint64_t clk_gen:1;
5554293ec3SDavid Daney 		uint64_t clk_sel:2;
5654293ec3SDavid Daney 		uint64_t fil_sel:4;
5754293ec3SDavid Daney 		uint64_t fil_cnt:4;
5854293ec3SDavid Daney 		uint64_t int_type:1;
5954293ec3SDavid Daney 		uint64_t int_en:1;
6054293ec3SDavid Daney 		uint64_t rx_xor:1;
6154293ec3SDavid Daney 		uint64_t tx_oe:1;
6254293ec3SDavid Daney 	} s;
6354293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx {
6454293ec3SDavid Daney 		uint64_t reserved_12_63:52;
6554293ec3SDavid Daney 		uint64_t fil_sel:4;
6654293ec3SDavid Daney 		uint64_t fil_cnt:4;
6754293ec3SDavid Daney 		uint64_t int_type:1;
6854293ec3SDavid Daney 		uint64_t int_en:1;
6954293ec3SDavid Daney 		uint64_t rx_xor:1;
7054293ec3SDavid Daney 		uint64_t tx_oe:1;
7154293ec3SDavid Daney 	} cn30xx;
7254293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn31xx;
7354293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn38xx;
7454293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn38xxp2;
7554293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn50xx;
7654293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn52xx;
7754293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn52xxp1;
7854293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn56xx;
7954293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_s cn56xxp1;
8054293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn58xx;
8154293ec3SDavid Daney 	struct cvmx_gpio_bit_cfgx_cn30xx cn58xxp1;
8254293ec3SDavid Daney };
8354293ec3SDavid Daney 
8454293ec3SDavid Daney union cvmx_gpio_boot_ena {
8554293ec3SDavid Daney 	uint64_t u64;
8654293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s {
8754293ec3SDavid Daney 		uint64_t reserved_12_63:52;
8854293ec3SDavid Daney 		uint64_t boot_ena:4;
8954293ec3SDavid Daney 		uint64_t reserved_0_7:8;
9054293ec3SDavid Daney 	} s;
9154293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn30xx;
9254293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn31xx;
9354293ec3SDavid Daney 	struct cvmx_gpio_boot_ena_s cn50xx;
9454293ec3SDavid Daney };
9554293ec3SDavid Daney 
9654293ec3SDavid Daney union cvmx_gpio_clk_genx {
9754293ec3SDavid Daney 	uint64_t u64;
9854293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s {
9954293ec3SDavid Daney 		uint64_t reserved_32_63:32;
10054293ec3SDavid Daney 		uint64_t n:32;
10154293ec3SDavid Daney 	} s;
10254293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn52xx;
10354293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn52xxp1;
10454293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn56xx;
10554293ec3SDavid Daney 	struct cvmx_gpio_clk_genx_s cn56xxp1;
10654293ec3SDavid Daney };
10754293ec3SDavid Daney 
10854293ec3SDavid Daney union cvmx_gpio_dbg_ena {
10954293ec3SDavid Daney 	uint64_t u64;
11054293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s {
11154293ec3SDavid Daney 		uint64_t reserved_21_63:43;
11254293ec3SDavid Daney 		uint64_t dbg_ena:21;
11354293ec3SDavid Daney 	} s;
11454293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn30xx;
11554293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn31xx;
11654293ec3SDavid Daney 	struct cvmx_gpio_dbg_ena_s cn50xx;
11754293ec3SDavid Daney };
11854293ec3SDavid Daney 
11954293ec3SDavid Daney union cvmx_gpio_int_clr {
12054293ec3SDavid Daney 	uint64_t u64;
12154293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s {
12254293ec3SDavid Daney 		uint64_t reserved_16_63:48;
12354293ec3SDavid Daney 		uint64_t type:16;
12454293ec3SDavid Daney 	} s;
12554293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn30xx;
12654293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn31xx;
12754293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn38xx;
12854293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn38xxp2;
12954293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn50xx;
13054293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn52xx;
13154293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn52xxp1;
13254293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn56xx;
13354293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn56xxp1;
13454293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn58xx;
13554293ec3SDavid Daney 	struct cvmx_gpio_int_clr_s cn58xxp1;
13654293ec3SDavid Daney };
13754293ec3SDavid Daney 
13854293ec3SDavid Daney union cvmx_gpio_rx_dat {
13954293ec3SDavid Daney 	uint64_t u64;
14054293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s {
14154293ec3SDavid Daney 		uint64_t reserved_24_63:40;
14254293ec3SDavid Daney 		uint64_t dat:24;
14354293ec3SDavid Daney 	} s;
14454293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn30xx;
14554293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn31xx;
14654293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx {
14754293ec3SDavid Daney 		uint64_t reserved_16_63:48;
14854293ec3SDavid Daney 		uint64_t dat:16;
14954293ec3SDavid Daney 	} cn38xx;
15054293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn38xxp2;
15154293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_s cn50xx;
15254293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn52xx;
15354293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn52xxp1;
15454293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn56xx;
15554293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn56xxp1;
15654293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn58xx;
15754293ec3SDavid Daney 	struct cvmx_gpio_rx_dat_cn38xx cn58xxp1;
15854293ec3SDavid Daney };
15954293ec3SDavid Daney 
16054293ec3SDavid Daney union cvmx_gpio_tx_clr {
16154293ec3SDavid Daney 	uint64_t u64;
16254293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s {
16354293ec3SDavid Daney 		uint64_t reserved_24_63:40;
16454293ec3SDavid Daney 		uint64_t clr:24;
16554293ec3SDavid Daney 	} s;
16654293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn30xx;
16754293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn31xx;
16854293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx {
16954293ec3SDavid Daney 		uint64_t reserved_16_63:48;
17054293ec3SDavid Daney 		uint64_t clr:16;
17154293ec3SDavid Daney 	} cn38xx;
17254293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn38xxp2;
17354293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_s cn50xx;
17454293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn52xx;
17554293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn52xxp1;
17654293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn56xx;
17754293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn56xxp1;
17854293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn58xx;
17954293ec3SDavid Daney 	struct cvmx_gpio_tx_clr_cn38xx cn58xxp1;
18054293ec3SDavid Daney };
18154293ec3SDavid Daney 
18254293ec3SDavid Daney union cvmx_gpio_tx_set {
18354293ec3SDavid Daney 	uint64_t u64;
18454293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s {
18554293ec3SDavid Daney 		uint64_t reserved_24_63:40;
18654293ec3SDavid Daney 		uint64_t set:24;
18754293ec3SDavid Daney 	} s;
18854293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn30xx;
18954293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn31xx;
19054293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx {
19154293ec3SDavid Daney 		uint64_t reserved_16_63:48;
19254293ec3SDavid Daney 		uint64_t set:16;
19354293ec3SDavid Daney 	} cn38xx;
19454293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn38xxp2;
19554293ec3SDavid Daney 	struct cvmx_gpio_tx_set_s cn50xx;
19654293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn52xx;
19754293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn52xxp1;
19854293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn56xx;
19954293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn56xxp1;
20054293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn58xx;
20154293ec3SDavid Daney 	struct cvmx_gpio_tx_set_cn38xx cn58xxp1;
20254293ec3SDavid Daney };
20354293ec3SDavid Daney 
20454293ec3SDavid Daney union cvmx_gpio_xbit_cfgx {
20554293ec3SDavid Daney 	uint64_t u64;
20654293ec3SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s {
20754293ec3SDavid Daney 		uint64_t reserved_12_63:52;
20854293ec3SDavid Daney 		uint64_t fil_sel:4;
20954293ec3SDavid Daney 		uint64_t fil_cnt:4;
21054293ec3SDavid Daney 		uint64_t reserved_2_3:2;
21154293ec3SDavid Daney 		uint64_t rx_xor:1;
21254293ec3SDavid Daney 		uint64_t tx_oe:1;
21354293ec3SDavid Daney 	} s;
21454293ec3SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cn30xx;
21554293ec3SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cn31xx;
21654293ec3SDavid Daney 	struct cvmx_gpio_xbit_cfgx_s cn50xx;
21754293ec3SDavid Daney };
21854293ec3SDavid Daney 
21954293ec3SDavid Daney #endif
220