162306a36Sopenharmony_ci/***********************license start***************
262306a36Sopenharmony_ci * Author: Cavium Networks
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Contact: support@caviumnetworks.com
562306a36Sopenharmony_ci * This file is part of the OCTEON SDK
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (C) 2003-2018 Cavium, Inc.
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * This file is free software; you can redistribute it and/or modify
1062306a36Sopenharmony_ci * it under the terms of the GNU General Public License, Version 2, as
1162306a36Sopenharmony_ci * published by the Free Software Foundation.
1262306a36Sopenharmony_ci *
1362306a36Sopenharmony_ci * This file is distributed in the hope that it will be useful, but
1462306a36Sopenharmony_ci * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
1562306a36Sopenharmony_ci * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
1662306a36Sopenharmony_ci * NONINFRINGEMENT.  See the GNU General Public License for more
1762306a36Sopenharmony_ci * details.
1862306a36Sopenharmony_ci *
1962306a36Sopenharmony_ci * You should have received a copy of the GNU General Public License
2062306a36Sopenharmony_ci * along with this file; if not, write to the Free Software
2162306a36Sopenharmony_ci * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2262306a36Sopenharmony_ci * or visit http://www.gnu.org/licenses/.
2362306a36Sopenharmony_ci *
2462306a36Sopenharmony_ci * This file may also be available under a different license from Cavium.
2562306a36Sopenharmony_ci * Contact Cavium Networks for more information
2662306a36Sopenharmony_ci ***********************license end**************************************/
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci#ifndef __CVMX_STXX_DEFS_H__
2962306a36Sopenharmony_ci#define __CVMX_STXX_DEFS_H__
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#define CVMX_STXX_ARB_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180090000608ull) + ((block_id) & 1) * 0x8000000ull)
3262306a36Sopenharmony_ci#define CVMX_STXX_BCKPRS_CNT(block_id) (CVMX_ADD_IO_SEG(0x0001180090000688ull) + ((block_id) & 1) * 0x8000000ull)
3362306a36Sopenharmony_ci#define CVMX_STXX_COM_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180090000600ull) + ((block_id) & 1) * 0x8000000ull)
3462306a36Sopenharmony_ci#define CVMX_STXX_DIP_CNT(block_id) (CVMX_ADD_IO_SEG(0x0001180090000690ull) + ((block_id) & 1) * 0x8000000ull)
3562306a36Sopenharmony_ci#define CVMX_STXX_IGN_CAL(block_id) (CVMX_ADD_IO_SEG(0x0001180090000610ull) + ((block_id) & 1) * 0x8000000ull)
3662306a36Sopenharmony_ci#define CVMX_STXX_INT_MSK(block_id) (CVMX_ADD_IO_SEG(0x00011800900006A0ull) + ((block_id) & 1) * 0x8000000ull)
3762306a36Sopenharmony_ci#define CVMX_STXX_INT_REG(block_id) (CVMX_ADD_IO_SEG(0x0001180090000698ull) + ((block_id) & 1) * 0x8000000ull)
3862306a36Sopenharmony_ci#define CVMX_STXX_INT_SYNC(block_id) (CVMX_ADD_IO_SEG(0x00011800900006A8ull) + ((block_id) & 1) * 0x8000000ull)
3962306a36Sopenharmony_ci#define CVMX_STXX_MIN_BST(block_id) (CVMX_ADD_IO_SEG(0x0001180090000618ull) + ((block_id) & 1) * 0x8000000ull)
4062306a36Sopenharmony_ci#define CVMX_STXX_SPI4_CALX(offset, block_id) (CVMX_ADD_IO_SEG(0x0001180090000400ull) + (((offset) & 31) + ((block_id) & 1) * 0x1000000ull) * 8)
4162306a36Sopenharmony_ci#define CVMX_STXX_SPI4_DAT(block_id) (CVMX_ADD_IO_SEG(0x0001180090000628ull) + ((block_id) & 1) * 0x8000000ull)
4262306a36Sopenharmony_ci#define CVMX_STXX_SPI4_STAT(block_id) (CVMX_ADD_IO_SEG(0x0001180090000630ull) + ((block_id) & 1) * 0x8000000ull)
4362306a36Sopenharmony_ci#define CVMX_STXX_STAT_BYTES_HI(block_id) (CVMX_ADD_IO_SEG(0x0001180090000648ull) + ((block_id) & 1) * 0x8000000ull)
4462306a36Sopenharmony_ci#define CVMX_STXX_STAT_BYTES_LO(block_id) (CVMX_ADD_IO_SEG(0x0001180090000680ull) + ((block_id) & 1) * 0x8000000ull)
4562306a36Sopenharmony_ci#define CVMX_STXX_STAT_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180090000638ull) + ((block_id) & 1) * 0x8000000ull)
4662306a36Sopenharmony_ci#define CVMX_STXX_STAT_PKT_XMT(block_id) (CVMX_ADD_IO_SEG(0x0001180090000640ull) + ((block_id) & 1) * 0x8000000ull)
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_civoid __cvmx_interrupt_stxx_int_msk_enable(int index);
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciunion cvmx_stxx_arb_ctl {
5162306a36Sopenharmony_ci	uint64_t u64;
5262306a36Sopenharmony_ci	struct cvmx_stxx_arb_ctl_s {
5362306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
5462306a36Sopenharmony_ci		uint64_t reserved_6_63:58;
5562306a36Sopenharmony_ci		uint64_t mintrn:1;
5662306a36Sopenharmony_ci		uint64_t reserved_4_4:1;
5762306a36Sopenharmony_ci		uint64_t igntpa:1;
5862306a36Sopenharmony_ci		uint64_t reserved_0_2:3;
5962306a36Sopenharmony_ci#else
6062306a36Sopenharmony_ci		uint64_t reserved_0_2:3;
6162306a36Sopenharmony_ci		uint64_t igntpa:1;
6262306a36Sopenharmony_ci		uint64_t reserved_4_4:1;
6362306a36Sopenharmony_ci		uint64_t mintrn:1;
6462306a36Sopenharmony_ci		uint64_t reserved_6_63:58;
6562306a36Sopenharmony_ci#endif
6662306a36Sopenharmony_ci	} s;
6762306a36Sopenharmony_ci};
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciunion cvmx_stxx_bckprs_cnt {
7062306a36Sopenharmony_ci	uint64_t u64;
7162306a36Sopenharmony_ci	struct cvmx_stxx_bckprs_cnt_s {
7262306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
7362306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
7462306a36Sopenharmony_ci		uint64_t cnt:32;
7562306a36Sopenharmony_ci#else
7662306a36Sopenharmony_ci		uint64_t cnt:32;
7762306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
7862306a36Sopenharmony_ci#endif
7962306a36Sopenharmony_ci	} s;
8062306a36Sopenharmony_ci};
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciunion cvmx_stxx_com_ctl {
8362306a36Sopenharmony_ci	uint64_t u64;
8462306a36Sopenharmony_ci	struct cvmx_stxx_com_ctl_s {
8562306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
8662306a36Sopenharmony_ci		uint64_t reserved_4_63:60;
8762306a36Sopenharmony_ci		uint64_t st_en:1;
8862306a36Sopenharmony_ci		uint64_t reserved_1_2:2;
8962306a36Sopenharmony_ci		uint64_t inf_en:1;
9062306a36Sopenharmony_ci#else
9162306a36Sopenharmony_ci		uint64_t inf_en:1;
9262306a36Sopenharmony_ci		uint64_t reserved_1_2:2;
9362306a36Sopenharmony_ci		uint64_t st_en:1;
9462306a36Sopenharmony_ci		uint64_t reserved_4_63:60;
9562306a36Sopenharmony_ci#endif
9662306a36Sopenharmony_ci	} s;
9762306a36Sopenharmony_ci};
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ciunion cvmx_stxx_dip_cnt {
10062306a36Sopenharmony_ci	uint64_t u64;
10162306a36Sopenharmony_ci	struct cvmx_stxx_dip_cnt_s {
10262306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
10362306a36Sopenharmony_ci		uint64_t reserved_8_63:56;
10462306a36Sopenharmony_ci		uint64_t frmmax:4;
10562306a36Sopenharmony_ci		uint64_t dipmax:4;
10662306a36Sopenharmony_ci#else
10762306a36Sopenharmony_ci		uint64_t dipmax:4;
10862306a36Sopenharmony_ci		uint64_t frmmax:4;
10962306a36Sopenharmony_ci		uint64_t reserved_8_63:56;
11062306a36Sopenharmony_ci#endif
11162306a36Sopenharmony_ci	} s;
11262306a36Sopenharmony_ci};
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciunion cvmx_stxx_ign_cal {
11562306a36Sopenharmony_ci	uint64_t u64;
11662306a36Sopenharmony_ci	struct cvmx_stxx_ign_cal_s {
11762306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
11862306a36Sopenharmony_ci		uint64_t reserved_16_63:48;
11962306a36Sopenharmony_ci		uint64_t igntpa:16;
12062306a36Sopenharmony_ci#else
12162306a36Sopenharmony_ci		uint64_t igntpa:16;
12262306a36Sopenharmony_ci		uint64_t reserved_16_63:48;
12362306a36Sopenharmony_ci#endif
12462306a36Sopenharmony_ci	} s;
12562306a36Sopenharmony_ci};
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciunion cvmx_stxx_int_msk {
12862306a36Sopenharmony_ci	uint64_t u64;
12962306a36Sopenharmony_ci	struct cvmx_stxx_int_msk_s {
13062306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
13162306a36Sopenharmony_ci		uint64_t reserved_8_63:56;
13262306a36Sopenharmony_ci		uint64_t frmerr:1;
13362306a36Sopenharmony_ci		uint64_t unxfrm:1;
13462306a36Sopenharmony_ci		uint64_t nosync:1;
13562306a36Sopenharmony_ci		uint64_t diperr:1;
13662306a36Sopenharmony_ci		uint64_t datovr:1;
13762306a36Sopenharmony_ci		uint64_t ovrbst:1;
13862306a36Sopenharmony_ci		uint64_t calpar1:1;
13962306a36Sopenharmony_ci		uint64_t calpar0:1;
14062306a36Sopenharmony_ci#else
14162306a36Sopenharmony_ci		uint64_t calpar0:1;
14262306a36Sopenharmony_ci		uint64_t calpar1:1;
14362306a36Sopenharmony_ci		uint64_t ovrbst:1;
14462306a36Sopenharmony_ci		uint64_t datovr:1;
14562306a36Sopenharmony_ci		uint64_t diperr:1;
14662306a36Sopenharmony_ci		uint64_t nosync:1;
14762306a36Sopenharmony_ci		uint64_t unxfrm:1;
14862306a36Sopenharmony_ci		uint64_t frmerr:1;
14962306a36Sopenharmony_ci		uint64_t reserved_8_63:56;
15062306a36Sopenharmony_ci#endif
15162306a36Sopenharmony_ci	} s;
15262306a36Sopenharmony_ci};
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ciunion cvmx_stxx_int_reg {
15562306a36Sopenharmony_ci	uint64_t u64;
15662306a36Sopenharmony_ci	struct cvmx_stxx_int_reg_s {
15762306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
15862306a36Sopenharmony_ci		uint64_t reserved_9_63:55;
15962306a36Sopenharmony_ci		uint64_t syncerr:1;
16062306a36Sopenharmony_ci		uint64_t frmerr:1;
16162306a36Sopenharmony_ci		uint64_t unxfrm:1;
16262306a36Sopenharmony_ci		uint64_t nosync:1;
16362306a36Sopenharmony_ci		uint64_t diperr:1;
16462306a36Sopenharmony_ci		uint64_t datovr:1;
16562306a36Sopenharmony_ci		uint64_t ovrbst:1;
16662306a36Sopenharmony_ci		uint64_t calpar1:1;
16762306a36Sopenharmony_ci		uint64_t calpar0:1;
16862306a36Sopenharmony_ci#else
16962306a36Sopenharmony_ci		uint64_t calpar0:1;
17062306a36Sopenharmony_ci		uint64_t calpar1:1;
17162306a36Sopenharmony_ci		uint64_t ovrbst:1;
17262306a36Sopenharmony_ci		uint64_t datovr:1;
17362306a36Sopenharmony_ci		uint64_t diperr:1;
17462306a36Sopenharmony_ci		uint64_t nosync:1;
17562306a36Sopenharmony_ci		uint64_t unxfrm:1;
17662306a36Sopenharmony_ci		uint64_t frmerr:1;
17762306a36Sopenharmony_ci		uint64_t syncerr:1;
17862306a36Sopenharmony_ci		uint64_t reserved_9_63:55;
17962306a36Sopenharmony_ci#endif
18062306a36Sopenharmony_ci	} s;
18162306a36Sopenharmony_ci};
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ciunion cvmx_stxx_int_sync {
18462306a36Sopenharmony_ci	uint64_t u64;
18562306a36Sopenharmony_ci	struct cvmx_stxx_int_sync_s {
18662306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
18762306a36Sopenharmony_ci		uint64_t reserved_8_63:56;
18862306a36Sopenharmony_ci		uint64_t frmerr:1;
18962306a36Sopenharmony_ci		uint64_t unxfrm:1;
19062306a36Sopenharmony_ci		uint64_t nosync:1;
19162306a36Sopenharmony_ci		uint64_t diperr:1;
19262306a36Sopenharmony_ci		uint64_t datovr:1;
19362306a36Sopenharmony_ci		uint64_t ovrbst:1;
19462306a36Sopenharmony_ci		uint64_t calpar1:1;
19562306a36Sopenharmony_ci		uint64_t calpar0:1;
19662306a36Sopenharmony_ci#else
19762306a36Sopenharmony_ci		uint64_t calpar0:1;
19862306a36Sopenharmony_ci		uint64_t calpar1:1;
19962306a36Sopenharmony_ci		uint64_t ovrbst:1;
20062306a36Sopenharmony_ci		uint64_t datovr:1;
20162306a36Sopenharmony_ci		uint64_t diperr:1;
20262306a36Sopenharmony_ci		uint64_t nosync:1;
20362306a36Sopenharmony_ci		uint64_t unxfrm:1;
20462306a36Sopenharmony_ci		uint64_t frmerr:1;
20562306a36Sopenharmony_ci		uint64_t reserved_8_63:56;
20662306a36Sopenharmony_ci#endif
20762306a36Sopenharmony_ci	} s;
20862306a36Sopenharmony_ci};
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ciunion cvmx_stxx_min_bst {
21162306a36Sopenharmony_ci	uint64_t u64;
21262306a36Sopenharmony_ci	struct cvmx_stxx_min_bst_s {
21362306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
21462306a36Sopenharmony_ci		uint64_t reserved_9_63:55;
21562306a36Sopenharmony_ci		uint64_t minb:9;
21662306a36Sopenharmony_ci#else
21762306a36Sopenharmony_ci		uint64_t minb:9;
21862306a36Sopenharmony_ci		uint64_t reserved_9_63:55;
21962306a36Sopenharmony_ci#endif
22062306a36Sopenharmony_ci	} s;
22162306a36Sopenharmony_ci};
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ciunion cvmx_stxx_spi4_calx {
22462306a36Sopenharmony_ci	uint64_t u64;
22562306a36Sopenharmony_ci	struct cvmx_stxx_spi4_calx_s {
22662306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
22762306a36Sopenharmony_ci		uint64_t reserved_17_63:47;
22862306a36Sopenharmony_ci		uint64_t oddpar:1;
22962306a36Sopenharmony_ci		uint64_t prt3:4;
23062306a36Sopenharmony_ci		uint64_t prt2:4;
23162306a36Sopenharmony_ci		uint64_t prt1:4;
23262306a36Sopenharmony_ci		uint64_t prt0:4;
23362306a36Sopenharmony_ci#else
23462306a36Sopenharmony_ci		uint64_t prt0:4;
23562306a36Sopenharmony_ci		uint64_t prt1:4;
23662306a36Sopenharmony_ci		uint64_t prt2:4;
23762306a36Sopenharmony_ci		uint64_t prt3:4;
23862306a36Sopenharmony_ci		uint64_t oddpar:1;
23962306a36Sopenharmony_ci		uint64_t reserved_17_63:47;
24062306a36Sopenharmony_ci#endif
24162306a36Sopenharmony_ci	} s;
24262306a36Sopenharmony_ci};
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ciunion cvmx_stxx_spi4_dat {
24562306a36Sopenharmony_ci	uint64_t u64;
24662306a36Sopenharmony_ci	struct cvmx_stxx_spi4_dat_s {
24762306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
24862306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
24962306a36Sopenharmony_ci		uint64_t alpha:16;
25062306a36Sopenharmony_ci		uint64_t max_t:16;
25162306a36Sopenharmony_ci#else
25262306a36Sopenharmony_ci		uint64_t max_t:16;
25362306a36Sopenharmony_ci		uint64_t alpha:16;
25462306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
25562306a36Sopenharmony_ci#endif
25662306a36Sopenharmony_ci	} s;
25762306a36Sopenharmony_ci};
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ciunion cvmx_stxx_spi4_stat {
26062306a36Sopenharmony_ci	uint64_t u64;
26162306a36Sopenharmony_ci	struct cvmx_stxx_spi4_stat_s {
26262306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
26362306a36Sopenharmony_ci		uint64_t reserved_16_63:48;
26462306a36Sopenharmony_ci		uint64_t m:8;
26562306a36Sopenharmony_ci		uint64_t reserved_7_7:1;
26662306a36Sopenharmony_ci		uint64_t len:7;
26762306a36Sopenharmony_ci#else
26862306a36Sopenharmony_ci		uint64_t len:7;
26962306a36Sopenharmony_ci		uint64_t reserved_7_7:1;
27062306a36Sopenharmony_ci		uint64_t m:8;
27162306a36Sopenharmony_ci		uint64_t reserved_16_63:48;
27262306a36Sopenharmony_ci#endif
27362306a36Sopenharmony_ci	} s;
27462306a36Sopenharmony_ci};
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ciunion cvmx_stxx_stat_bytes_hi {
27762306a36Sopenharmony_ci	uint64_t u64;
27862306a36Sopenharmony_ci	struct cvmx_stxx_stat_bytes_hi_s {
27962306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
28062306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
28162306a36Sopenharmony_ci		uint64_t cnt:32;
28262306a36Sopenharmony_ci#else
28362306a36Sopenharmony_ci		uint64_t cnt:32;
28462306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
28562306a36Sopenharmony_ci#endif
28662306a36Sopenharmony_ci	} s;
28762306a36Sopenharmony_ci};
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ciunion cvmx_stxx_stat_bytes_lo {
29062306a36Sopenharmony_ci	uint64_t u64;
29162306a36Sopenharmony_ci	struct cvmx_stxx_stat_bytes_lo_s {
29262306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
29362306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
29462306a36Sopenharmony_ci		uint64_t cnt:32;
29562306a36Sopenharmony_ci#else
29662306a36Sopenharmony_ci		uint64_t cnt:32;
29762306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
29862306a36Sopenharmony_ci#endif
29962306a36Sopenharmony_ci	} s;
30062306a36Sopenharmony_ci};
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ciunion cvmx_stxx_stat_ctl {
30362306a36Sopenharmony_ci	uint64_t u64;
30462306a36Sopenharmony_ci	struct cvmx_stxx_stat_ctl_s {
30562306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
30662306a36Sopenharmony_ci		uint64_t reserved_5_63:59;
30762306a36Sopenharmony_ci		uint64_t clr:1;
30862306a36Sopenharmony_ci		uint64_t bckprs:4;
30962306a36Sopenharmony_ci#else
31062306a36Sopenharmony_ci		uint64_t bckprs:4;
31162306a36Sopenharmony_ci		uint64_t clr:1;
31262306a36Sopenharmony_ci		uint64_t reserved_5_63:59;
31362306a36Sopenharmony_ci#endif
31462306a36Sopenharmony_ci	} s;
31562306a36Sopenharmony_ci};
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ciunion cvmx_stxx_stat_pkt_xmt {
31862306a36Sopenharmony_ci	uint64_t u64;
31962306a36Sopenharmony_ci	struct cvmx_stxx_stat_pkt_xmt_s {
32062306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
32162306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
32262306a36Sopenharmony_ci		uint64_t cnt:32;
32362306a36Sopenharmony_ci#else
32462306a36Sopenharmony_ci		uint64_t cnt:32;
32562306a36Sopenharmony_ci		uint64_t reserved_32_63:32;
32662306a36Sopenharmony_ci#endif
32762306a36Sopenharmony_ci	} s;
32862306a36Sopenharmony_ci};
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ci#endif
331