/***********************license start***************
 * Author: Cavium Networks
 *
 * Contact: support@caviumnetworks.com
 * This file is part of the OCTEON SDK
 *
 * Copyright (c) 2003-2011 Cavium Networks
 *
 * This file is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License, Version 2, as
 * published by the Free Software Foundation.
 *
 * This file is distributed in the hope that it will be useful, but
 * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
 * NONINFRINGEMENT.  See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this file; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 * or visit http://www.gnu.org/licenses/.
 *
 * This file may also be available under a different license from Cavium.
 * Contact Cavium Networks for more information
 ***********************license end**************************************/

#ifndef __CVMX_SRIOX_DEFS_H__
#define __CVMX_SRIOX_DEFS_H__

#define CVMX_SRIOX_ACC_CTRL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000148ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_ASMBLY_ID(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000200ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_ASMBLY_INFO(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000208ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_BELL_RESP_CTRL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000310ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_BIST_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000108ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_IMSG_CTRL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000508ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_IMSG_INST_HDRX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000510ull) + (((offset) & 1) + ((block_id) & 3) * 0x200000ull) * 8)
#define CVMX_SRIOX_IMSG_QOS_GRPX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000600ull) + (((offset) & 31) + ((block_id) & 3) * 0x200000ull) * 8)
#define CVMX_SRIOX_IMSG_STATUSX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000700ull) + (((offset) & 31) + ((block_id) & 3) * 0x200000ull) * 8)
#define CVMX_SRIOX_IMSG_VPORT_THR(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000500ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_IMSG_VPORT_THR2(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000528ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_INT2_ENABLE(block_id) (CVMX_ADD_IO_SEG(0x00011800C80003E0ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_INT2_REG(block_id) (CVMX_ADD_IO_SEG(0x00011800C80003E8ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_INT_ENABLE(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000110ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_INT_INFO0(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000120ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_INT_INFO1(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000128ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_INT_INFO2(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000130ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_INT_INFO3(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000138ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_INT_REG(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000118ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_IP_FEATURE(block_id) (CVMX_ADD_IO_SEG(0x00011800C80003F8ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_MAC_BUFFERS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000390ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_MAINT_OP(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000158ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_MAINT_RD_DATA(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000160ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_MCE_TX_CTL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000240ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_MEM_OP_CTRL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000168ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_OMSG_CTRLX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000488ull) + (((offset) & 1) + ((block_id) & 3) * 0x40000ull) * 64)
#define CVMX_SRIOX_OMSG_DONE_COUNTSX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C80004B0ull) + (((offset) & 1) + ((block_id) & 3) * 0x40000ull) * 64)
#define CVMX_SRIOX_OMSG_FMP_MRX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000498ull) + (((offset) & 1) + ((block_id) & 3) * 0x40000ull) * 64)
#define CVMX_SRIOX_OMSG_NMP_MRX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C80004A0ull) + (((offset) & 1) + ((block_id) & 3) * 0x40000ull) * 64)
#define CVMX_SRIOX_OMSG_PORTX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000480ull) + (((offset) & 1) + ((block_id) & 3) * 0x40000ull) * 64)
#define CVMX_SRIOX_OMSG_SILO_THR(block_id) (CVMX_ADD_IO_SEG(0x00011800C80004F8ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_OMSG_SP_MRX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000490ull) + (((offset) & 1) + ((block_id) & 3) * 0x40000ull) * 64)
#define CVMX_SRIOX_PRIOX_IN_USE(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C80003C0ull) + (((offset) & 3) + ((block_id) & 3) * 0x200000ull) * 8)
#define CVMX_SRIOX_RX_BELL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000308ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_RX_BELL_SEQ(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000300ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_RX_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000380ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_S2M_TYPEX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C8000180ull) + (((offset) & 15) + ((block_id) & 3) * 0x200000ull) * 8)
#define CVMX_SRIOX_SEQ(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000278ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_STATUS_REG(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000100ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_TAG_CTRL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000178ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_TLP_CREDITS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000150ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_TX_BELL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000280ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_TX_BELL_INFO(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000288ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_TX_CTRL(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000170ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_TX_EMPHASIS(block_id) (CVMX_ADD_IO_SEG(0x00011800C80003F0ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_TX_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000388ull) + ((block_id) & 3) * 0x1000000ull)
#define CVMX_SRIOX_WR_DONE_COUNTS(block_id) (CVMX_ADD_IO_SEG(0x00011800C8000340ull) + ((block_id) & 3) * 0x1000000ull)

union cvmx_sriox_acc_ctrl {
	uint64_t u64;
	struct cvmx_sriox_acc_ctrl_s {
		uint64_t reserved_7_63:57;
		uint64_t deny_adr2:1;
		uint64_t deny_adr1:1;
		uint64_t deny_adr0:1;
		uint64_t reserved_3_3:1;
		uint64_t deny_bar2:1;
		uint64_t deny_bar1:1;
		uint64_t deny_bar0:1;
	} s;
	struct cvmx_sriox_acc_ctrl_cn63xx {
		uint64_t reserved_3_63:61;
		uint64_t deny_bar2:1;
		uint64_t deny_bar1:1;
		uint64_t deny_bar0:1;
	} cn63xx;
	struct cvmx_sriox_acc_ctrl_cn63xx cn63xxp1;
	struct cvmx_sriox_acc_ctrl_s cn66xx;
};

union cvmx_sriox_asmbly_id {
	uint64_t u64;
	struct cvmx_sriox_asmbly_id_s {
		uint64_t reserved_32_63:32;
		uint64_t assy_id:16;
		uint64_t assy_ven:16;
	} s;
	struct cvmx_sriox_asmbly_id_s cn63xx;
	struct cvmx_sriox_asmbly_id_s cn63xxp1;
	struct cvmx_sriox_asmbly_id_s cn66xx;
};

union cvmx_sriox_asmbly_info {
	uint64_t u64;
	struct cvmx_sriox_asmbly_info_s {
		uint64_t reserved_32_63:32;
		uint64_t assy_rev:16;
		uint64_t reserved_0_15:16;
	} s;
	struct cvmx_sriox_asmbly_info_s cn63xx;
	struct cvmx_sriox_asmbly_info_s cn63xxp1;
	struct cvmx_sriox_asmbly_info_s cn66xx;
};

union cvmx_sriox_bell_resp_ctrl {
	uint64_t u64;
	struct cvmx_sriox_bell_resp_ctrl_s {
		uint64_t reserved_6_63:58;
		uint64_t rp1_sid:1;
		uint64_t rp0_sid:2;
		uint64_t rp1_pid:1;
		uint64_t rp0_pid:2;
	} s;
	struct cvmx_sriox_bell_resp_ctrl_s cn63xx;
	struct cvmx_sriox_bell_resp_ctrl_s cn63xxp1;
	struct cvmx_sriox_bell_resp_ctrl_s cn66xx;
};

union cvmx_sriox_bist_status {
	uint64_t u64;
	struct cvmx_sriox_bist_status_s {
		uint64_t reserved_45_63:19;
		uint64_t lram:1;
		uint64_t mram:2;
		uint64_t cram:2;
		uint64_t bell:2;
		uint64_t otag:2;
		uint64_t itag:1;
		uint64_t ofree:1;
		uint64_t rtn:2;
		uint64_t obulk:4;
		uint64_t optrs:4;
		uint64_t oarb2:2;
		uint64_t rxbuf2:2;
		uint64_t oarb:2;
		uint64_t ispf:1;
		uint64_t ospf:1;
		uint64_t txbuf:2;
		uint64_t rxbuf:2;
		uint64_t imsg:5;
		uint64_t omsg:7;
	} s;
	struct cvmx_sriox_bist_status_cn63xx {
		uint64_t reserved_44_63:20;
		uint64_t mram:2;
		uint64_t cram:2;
		uint64_t bell:2;
		uint64_t otag:2;
		uint64_t itag:1;
		uint64_t ofree:1;
		uint64_t rtn:2;
		uint64_t obulk:4;
		uint64_t optrs:4;
		uint64_t oarb2:2;
		uint64_t rxbuf2:2;
		uint64_t oarb:2;
		uint64_t ispf:1;
		uint64_t ospf:1;
		uint64_t txbuf:2;
		uint64_t rxbuf:2;
		uint64_t imsg:5;
		uint64_t omsg:7;
	} cn63xx;
	struct cvmx_sriox_bist_status_cn63xxp1 {
		uint64_t reserved_44_63:20;
		uint64_t mram:2;
		uint64_t cram:2;
		uint64_t bell:2;
		uint64_t otag:2;
		uint64_t itag:1;
		uint64_t ofree:1;
		uint64_t rtn:2;
		uint64_t obulk:4;
		uint64_t optrs:4;
		uint64_t reserved_20_23:4;
		uint64_t oarb:2;
		uint64_t ispf:1;
		uint64_t ospf:1;
		uint64_t txbuf:2;
		uint64_t rxbuf:2;
		uint64_t imsg:5;
		uint64_t omsg:7;
	} cn63xxp1;
	struct cvmx_sriox_bist_status_s cn66xx;
};

union cvmx_sriox_imsg_ctrl {
	uint64_t u64;
	struct cvmx_sriox_imsg_ctrl_s {
		uint64_t reserved_32_63:32;
		uint64_t to_mode:1;
		uint64_t reserved_30_30:1;
		uint64_t rsp_thr:6;
		uint64_t reserved_22_23:2;
		uint64_t rp1_sid:1;
		uint64_t rp0_sid:2;
		uint64_t rp1_pid:1;
		uint64_t rp0_pid:2;
		uint64_t reserved_15_15:1;
		uint64_t prt_sel:3;
		uint64_t lttr:4;
		uint64_t prio:4;
		uint64_t mbox:4;
	} s;
	struct cvmx_sriox_imsg_ctrl_s cn63xx;
	struct cvmx_sriox_imsg_ctrl_s cn63xxp1;
	struct cvmx_sriox_imsg_ctrl_s cn66xx;
};

union cvmx_sriox_imsg_inst_hdrx {
	uint64_t u64;
	struct cvmx_sriox_imsg_inst_hdrx_s {
		uint64_t r:1;
		uint64_t reserved_58_62:5;
		uint64_t pm:2;
		uint64_t reserved_55_55:1;
		uint64_t sl:7;
		uint64_t reserved_46_47:2;
		uint64_t nqos:1;
		uint64_t ngrp:1;
		uint64_t ntt:1;
		uint64_t ntag:1;
		uint64_t reserved_35_41:7;
		uint64_t rs:1;
		uint64_t tt:2;
		uint64_t tag:32;
	} s;
	struct cvmx_sriox_imsg_inst_hdrx_s cn63xx;
	struct cvmx_sriox_imsg_inst_hdrx_s cn63xxp1;
	struct cvmx_sriox_imsg_inst_hdrx_s cn66xx;
};

union cvmx_sriox_imsg_qos_grpx {
	uint64_t u64;
	struct cvmx_sriox_imsg_qos_grpx_s {
		uint64_t reserved_63_63:1;
		uint64_t qos7:3;
		uint64_t grp7:4;
		uint64_t reserved_55_55:1;
		uint64_t qos6:3;
		uint64_t grp6:4;
		uint64_t reserved_47_47:1;
		uint64_t qos5:3;
		uint64_t grp5:4;
		uint64_t reserved_39_39:1;
		uint64_t qos4:3;
		uint64_t grp4:4;
		uint64_t reserved_31_31:1;
		uint64_t qos3:3;
		uint64_t grp3:4;
		uint64_t reserved_23_23:1;
		uint64_t qos2:3;
		uint64_t grp2:4;
		uint64_t reserved_15_15:1;
		uint64_t qos1:3;
		uint64_t grp1:4;
		uint64_t reserved_7_7:1;
		uint64_t qos0:3;
		uint64_t grp0:4;
	} s;
	struct cvmx_sriox_imsg_qos_grpx_s cn63xx;
	struct cvmx_sriox_imsg_qos_grpx_s cn63xxp1;
	struct cvmx_sriox_imsg_qos_grpx_s cn66xx;
};

union cvmx_sriox_imsg_statusx {
	uint64_t u64;
	struct cvmx_sriox_imsg_statusx_s {
		uint64_t val1:1;
		uint64_t err1:1;
		uint64_t toe1:1;
		uint64_t toc1:1;
		uint64_t prt1:1;
		uint64_t reserved_58_58:1;
		uint64_t tt1:1;
		uint64_t dis1:1;
		uint64_t seg1:4;
		uint64_t mbox1:2;
		uint64_t lttr1:2;
		uint64_t sid1:16;
		uint64_t val0:1;
		uint64_t err0:1;
		uint64_t toe0:1;
		uint64_t toc0:1;
		uint64_t prt0:1;
		uint64_t reserved_26_26:1;
		uint64_t tt0:1;
		uint64_t dis0:1;
		uint64_t seg0:4;
		uint64_t mbox0:2;
		uint64_t lttr0:2;
		uint64_t sid0:16;
	} s;
	struct cvmx_sriox_imsg_statusx_s cn63xx;
	struct cvmx_sriox_imsg_statusx_s cn63xxp1;
	struct cvmx_sriox_imsg_statusx_s cn66xx;
};

union cvmx_sriox_imsg_vport_thr {
	uint64_t u64;
	struct cvmx_sriox_imsg_vport_thr_s {
		uint64_t reserved_54_63:10;
		uint64_t max_tot:6;
		uint64_t reserved_46_47:2;
		uint64_t max_s1:6;
		uint64_t reserved_38_39:2;
		uint64_t max_s0:6;
		uint64_t sp_vport:1;
		uint64_t reserved_20_30:11;
		uint64_t buf_thr:4;
		uint64_t reserved_14_15:2;
		uint64_t max_p1:6;
		uint64_t reserved_6_7:2;
		uint64_t max_p0:6;
	} s;
	struct cvmx_sriox_imsg_vport_thr_s cn63xx;
	struct cvmx_sriox_imsg_vport_thr_s cn63xxp1;
	struct cvmx_sriox_imsg_vport_thr_s cn66xx;
};

union cvmx_sriox_imsg_vport_thr2 {
	uint64_t u64;
	struct cvmx_sriox_imsg_vport_thr2_s {
		uint64_t reserved_46_63:18;
		uint64_t max_s3:6;
		uint64_t reserved_38_39:2;
		uint64_t max_s2:6;
		uint64_t reserved_0_31:32;
	} s;
	struct cvmx_sriox_imsg_vport_thr2_s cn66xx;
};

union cvmx_sriox_int2_enable {
	uint64_t u64;
	struct cvmx_sriox_int2_enable_s {
		uint64_t reserved_1_63:63;
		uint64_t pko_rst:1;
	} s;
	struct cvmx_sriox_int2_enable_s cn63xx;
	struct cvmx_sriox_int2_enable_s cn66xx;
};

union cvmx_sriox_int2_reg {
	uint64_t u64;
	struct cvmx_sriox_int2_reg_s {
		uint64_t reserved_32_63:32;
		uint64_t int_sum:1;
		uint64_t reserved_1_30:30;
		uint64_t pko_rst:1;
	} s;
	struct cvmx_sriox_int2_reg_s cn63xx;
	struct cvmx_sriox_int2_reg_s cn66xx;
};

union cvmx_sriox_int_enable {
	uint64_t u64;
	struct cvmx_sriox_int_enable_s {
		uint64_t reserved_27_63:37;
		uint64_t zero_pkt:1;
		uint64_t ttl_tout:1;
		uint64_t fail:1;
		uint64_t degrade:1;
		uint64_t mac_buf:1;
		uint64_t f_error:1;
		uint64_t rtry_err:1;
		uint64_t pko_err:1;
		uint64_t omsg_err:1;
		uint64_t omsg1:1;
		uint64_t omsg0:1;
		uint64_t link_up:1;
		uint64_t link_dwn:1;
		uint64_t phy_erb:1;
		uint64_t log_erb:1;
		uint64_t soft_rx:1;
		uint64_t soft_tx:1;
		uint64_t mce_rx:1;
		uint64_t mce_tx:1;
		uint64_t wr_done:1;
		uint64_t sli_err:1;
		uint64_t deny_wr:1;
		uint64_t bar_err:1;
		uint64_t maint_op:1;
		uint64_t rxbell:1;
		uint64_t bell_err:1;
		uint64_t txbell:1;
	} s;
	struct cvmx_sriox_int_enable_s cn63xx;
	struct cvmx_sriox_int_enable_cn63xxp1 {
		uint64_t reserved_22_63:42;
		uint64_t f_error:1;
		uint64_t rtry_err:1;
		uint64_t pko_err:1;
		uint64_t omsg_err:1;
		uint64_t omsg1:1;
		uint64_t omsg0:1;
		uint64_t link_up:1;
		uint64_t link_dwn:1;
		uint64_t phy_erb:1;
		uint64_t log_erb:1;
		uint64_t soft_rx:1;
		uint64_t soft_tx:1;
		uint64_t mce_rx:1;
		uint64_t mce_tx:1;
		uint64_t wr_done:1;
		uint64_t sli_err:1;
		uint64_t deny_wr:1;
		uint64_t bar_err:1;
		uint64_t maint_op:1;
		uint64_t rxbell:1;
		uint64_t bell_err:1;
		uint64_t txbell:1;
	} cn63xxp1;
	struct cvmx_sriox_int_enable_s cn66xx;
};

union cvmx_sriox_int_info0 {
	uint64_t u64;
	struct cvmx_sriox_int_info0_s {
		uint64_t cmd:4;
		uint64_t type:4;
		uint64_t tag:8;
		uint64_t reserved_42_47:6;
		uint64_t length:10;
		uint64_t status:3;
		uint64_t reserved_16_28:13;
		uint64_t be0:8;
		uint64_t be1:8;
	} s;
	struct cvmx_sriox_int_info0_s cn63xx;
	struct cvmx_sriox_int_info0_s cn63xxp1;
	struct cvmx_sriox_int_info0_s cn66xx;
};

union cvmx_sriox_int_info1 {
	uint64_t u64;
	struct cvmx_sriox_int_info1_s {
		uint64_t info1:64;
	} s;
	struct cvmx_sriox_int_info1_s cn63xx;
	struct cvmx_sriox_int_info1_s cn63xxp1;
	struct cvmx_sriox_int_info1_s cn66xx;
};

union cvmx_sriox_int_info2 {
	uint64_t u64;
	struct cvmx_sriox_int_info2_s {
		uint64_t prio:2;
		uint64_t tt:1;
		uint64_t sis:1;
		uint64_t ssize:4;
		uint64_t did:16;
		uint64_t xmbox:4;
		uint64_t mbox:2;
		uint64_t letter:2;
		uint64_t rsrvd:30;
		uint64_t lns:1;
		uint64_t intr:1;
	} s;
	struct cvmx_sriox_int_info2_s cn63xx;
	struct cvmx_sriox_int_info2_s cn63xxp1;
	struct cvmx_sriox_int_info2_s cn66xx;
};

union cvmx_sriox_int_info3 {
	uint64_t u64;
	struct cvmx_sriox_int_info3_s {
		uint64_t prio:2;
		uint64_t tt:2;
		uint64_t type:4;
		uint64_t other:48;
		uint64_t reserved_0_7:8;
	} s;
	struct cvmx_sriox_int_info3_s cn63xx;
	struct cvmx_sriox_int_info3_s cn63xxp1;
	struct cvmx_sriox_int_info3_s cn66xx;
};

union cvmx_sriox_int_reg {
	uint64_t u64;
	struct cvmx_sriox_int_reg_s {
		uint64_t reserved_32_63:32;
		uint64_t int2_sum:1;
		uint64_t reserved_27_30:4;
		uint64_t zero_pkt:1;
		uint64_t ttl_tout:1;
		uint64_t fail:1;
		uint64_t degrad:1;
		uint64_t mac_buf:1;
		uint64_t f_error:1;
		uint64_t rtry_err:1;
		uint64_t pko_err:1;
		uint64_t omsg_err:1;
		uint64_t omsg1:1;
		uint64_t omsg0:1;
		uint64_t link_up:1;
		uint64_t link_dwn:1;
		uint64_t phy_erb:1;
		uint64_t log_erb:1;
		uint64_t soft_rx:1;
		uint64_t soft_tx:1;
		uint64_t mce_rx:1;
		uint64_t mce_tx:1;
		uint64_t wr_done:1;
		uint64_t sli_err:1;
		uint64_t deny_wr:1;
		uint64_t bar_err:1;
		uint64_t maint_op:1;
		uint64_t rxbell:1;
		uint64_t bell_err:1;
		uint64_t txbell:1;
	} s;
	struct cvmx_sriox_int_reg_s cn63xx;
	struct cvmx_sriox_int_reg_cn63xxp1 {
		uint64_t reserved_22_63:42;
		uint64_t f_error:1;
		uint64_t rtry_err:1;
		uint64_t pko_err:1;
		uint64_t omsg_err:1;
		uint64_t omsg1:1;
		uint64_t omsg0:1;
		uint64_t link_up:1;
		uint64_t link_dwn:1;
		uint64_t phy_erb:1;
		uint64_t log_erb:1;
		uint64_t soft_rx:1;
		uint64_t soft_tx:1;
		uint64_t mce_rx:1;
		uint64_t mce_tx:1;
		uint64_t wr_done:1;
		uint64_t sli_err:1;
		uint64_t deny_wr:1;
		uint64_t bar_err:1;
		uint64_t maint_op:1;
		uint64_t rxbell:1;
		uint64_t bell_err:1;
		uint64_t txbell:1;
	} cn63xxp1;
	struct cvmx_sriox_int_reg_s cn66xx;
};

union cvmx_sriox_ip_feature {
	uint64_t u64;
	struct cvmx_sriox_ip_feature_s {
		uint64_t ops:32;
		uint64_t reserved_15_31:17;
		uint64_t no_vmin:1;
		uint64_t a66:1;
		uint64_t a50:1;
		uint64_t reserved_11_11:1;
		uint64_t tx_flow:1;
		uint64_t pt_width:2;
		uint64_t tx_pol:4;
		uint64_t rx_pol:4;
	} s;
	struct cvmx_sriox_ip_feature_cn63xx {
		uint64_t ops:32;
		uint64_t reserved_14_31:18;
		uint64_t a66:1;
		uint64_t a50:1;
		uint64_t reserved_11_11:1;
		uint64_t tx_flow:1;
		uint64_t pt_width:2;
		uint64_t tx_pol:4;
		uint64_t rx_pol:4;
	} cn63xx;
	struct cvmx_sriox_ip_feature_cn63xx cn63xxp1;
	struct cvmx_sriox_ip_feature_s cn66xx;
};

union cvmx_sriox_mac_buffers {
	uint64_t u64;
	struct cvmx_sriox_mac_buffers_s {
		uint64_t reserved_56_63:8;
		uint64_t tx_enb:8;
		uint64_t reserved_44_47:4;
		uint64_t tx_inuse:4;
		uint64_t tx_stat:8;
		uint64_t reserved_24_31:8;
		uint64_t rx_enb:8;
		uint64_t reserved_12_15:4;
		uint64_t rx_inuse:4;
		uint64_t rx_stat:8;
	} s;
	struct cvmx_sriox_mac_buffers_s cn63xx;
	struct cvmx_sriox_mac_buffers_s cn66xx;
};

union cvmx_sriox_maint_op {
	uint64_t u64;
	struct cvmx_sriox_maint_op_s {
		uint64_t wr_data:32;
		uint64_t reserved_27_31:5;
		uint64_t fail:1;
		uint64_t pending:1;
		uint64_t op:1;
		uint64_t addr:24;
	} s;
	struct cvmx_sriox_maint_op_s cn63xx;
	struct cvmx_sriox_maint_op_s cn63xxp1;
	struct cvmx_sriox_maint_op_s cn66xx;
};

union cvmx_sriox_maint_rd_data {
	uint64_t u64;
	struct cvmx_sriox_maint_rd_data_s {
		uint64_t reserved_33_63:31;
		uint64_t valid:1;
		uint64_t rd_data:32;
	} s;
	struct cvmx_sriox_maint_rd_data_s cn63xx;
	struct cvmx_sriox_maint_rd_data_s cn63xxp1;
	struct cvmx_sriox_maint_rd_data_s cn66xx;
};

union cvmx_sriox_mce_tx_ctl {
	uint64_t u64;
	struct cvmx_sriox_mce_tx_ctl_s {
		uint64_t reserved_1_63:63;
		uint64_t mce:1;
	} s;
	struct cvmx_sriox_mce_tx_ctl_s cn63xx;
	struct cvmx_sriox_mce_tx_ctl_s cn63xxp1;
	struct cvmx_sriox_mce_tx_ctl_s cn66xx;
};

union cvmx_sriox_mem_op_ctrl {
	uint64_t u64;
	struct cvmx_sriox_mem_op_ctrl_s {
		uint64_t reserved_10_63:54;
		uint64_t rr_ro:1;
		uint64_t w_ro:1;
		uint64_t reserved_6_7:2;
		uint64_t rp1_sid:1;
		uint64_t rp0_sid:2;
		uint64_t rp1_pid:1;
		uint64_t rp0_pid:2;
	} s;
	struct cvmx_sriox_mem_op_ctrl_s cn63xx;
	struct cvmx_sriox_mem_op_ctrl_s cn63xxp1;
	struct cvmx_sriox_mem_op_ctrl_s cn66xx;
};

union cvmx_sriox_omsg_ctrlx {
	uint64_t u64;
	struct cvmx_sriox_omsg_ctrlx_s {
		uint64_t testmode:1;
		uint64_t reserved_37_62:26;
		uint64_t silo_max:5;
		uint64_t rtry_thr:16;
		uint64_t rtry_en:1;
		uint64_t reserved_11_14:4;
		uint64_t idm_tt:1;
		uint64_t idm_sis:1;
		uint64_t idm_did:1;
		uint64_t lttr_sp:4;
		uint64_t lttr_mp:4;
	} s;
	struct cvmx_sriox_omsg_ctrlx_s cn63xx;
	struct cvmx_sriox_omsg_ctrlx_cn63xxp1 {
		uint64_t testmode:1;
		uint64_t reserved_32_62:31;
		uint64_t rtry_thr:16;
		uint64_t rtry_en:1;
		uint64_t reserved_11_14:4;
		uint64_t idm_tt:1;
		uint64_t idm_sis:1;
		uint64_t idm_did:1;
		uint64_t lttr_sp:4;
		uint64_t lttr_mp:4;
	} cn63xxp1;
	struct cvmx_sriox_omsg_ctrlx_s cn66xx;
};

union cvmx_sriox_omsg_done_countsx {
	uint64_t u64;
	struct cvmx_sriox_omsg_done_countsx_s {
		uint64_t reserved_32_63:32;
		uint64_t bad:16;
		uint64_t good:16;
	} s;
	struct cvmx_sriox_omsg_done_countsx_s cn63xx;
	struct cvmx_sriox_omsg_done_countsx_s cn66xx;
};

union cvmx_sriox_omsg_fmp_mrx {
	uint64_t u64;
	struct cvmx_sriox_omsg_fmp_mrx_s {
		uint64_t reserved_15_63:49;
		uint64_t ctlr_sp:1;
		uint64_t ctlr_fmp:1;
		uint64_t ctlr_nmp:1;
		uint64_t id_sp:1;
		uint64_t id_fmp:1;
		uint64_t id_nmp:1;
		uint64_t id_psd:1;
		uint64_t mbox_sp:1;
		uint64_t mbox_fmp:1;
		uint64_t mbox_nmp:1;
		uint64_t mbox_psd:1;
		uint64_t all_sp:1;
		uint64_t all_fmp:1;
		uint64_t all_nmp:1;
		uint64_t all_psd:1;
	} s;
	struct cvmx_sriox_omsg_fmp_mrx_s cn63xx;
	struct cvmx_sriox_omsg_fmp_mrx_s cn63xxp1;
	struct cvmx_sriox_omsg_fmp_mrx_s cn66xx;
};

union cvmx_sriox_omsg_nmp_mrx {
	uint64_t u64;
	struct cvmx_sriox_omsg_nmp_mrx_s {
		uint64_t reserved_15_63:49;
		uint64_t ctlr_sp:1;
		uint64_t ctlr_fmp:1;
		uint64_t ctlr_nmp:1;
		uint64_t id_sp:1;
		uint64_t id_fmp:1;
		uint64_t id_nmp:1;
		uint64_t reserved_8_8:1;
		uint64_t mbox_sp:1;
		uint64_t mbox_fmp:1;
		uint64_t mbox_nmp:1;
		uint64_t reserved_4_4:1;
		uint64_t all_sp:1;
		uint64_t all_fmp:1;
		uint64_t all_nmp:1;
		uint64_t reserved_0_0:1;
	} s;
	struct cvmx_sriox_omsg_nmp_mrx_s cn63xx;
	struct cvmx_sriox_omsg_nmp_mrx_s cn63xxp1;
	struct cvmx_sriox_omsg_nmp_mrx_s cn66xx;
};

union cvmx_sriox_omsg_portx {
	uint64_t u64;
	struct cvmx_sriox_omsg_portx_s {
		uint64_t reserved_32_63:32;
		uint64_t enable:1;
		uint64_t reserved_3_30:28;
		uint64_t port:3;
	} s;
	struct cvmx_sriox_omsg_portx_cn63xx {
		uint64_t reserved_32_63:32;
		uint64_t enable:1;
		uint64_t reserved_2_30:29;
		uint64_t port:2;
	} cn63xx;
	struct cvmx_sriox_omsg_portx_cn63xx cn63xxp1;
	struct cvmx_sriox_omsg_portx_s cn66xx;
};

union cvmx_sriox_omsg_silo_thr {
	uint64_t u64;
	struct cvmx_sriox_omsg_silo_thr_s {
		uint64_t reserved_5_63:59;
		uint64_t tot_silo:5;
	} s;
	struct cvmx_sriox_omsg_silo_thr_s cn63xx;
	struct cvmx_sriox_omsg_silo_thr_s cn66xx;
};

union cvmx_sriox_omsg_sp_mrx {
	uint64_t u64;
	struct cvmx_sriox_omsg_sp_mrx_s {
		uint64_t reserved_16_63:48;
		uint64_t xmbox_sp:1;
		uint64_t ctlr_sp:1;
		uint64_t ctlr_fmp:1;
		uint64_t ctlr_nmp:1;
		uint64_t id_sp:1;
		uint64_t id_fmp:1;
		uint64_t id_nmp:1;
		uint64_t id_psd:1;
		uint64_t mbox_sp:1;
		uint64_t mbox_fmp:1;
		uint64_t mbox_nmp:1;
		uint64_t mbox_psd:1;
		uint64_t all_sp:1;
		uint64_t all_fmp:1;
		uint64_t all_nmp:1;
		uint64_t all_psd:1;
	} s;
	struct cvmx_sriox_omsg_sp_mrx_s cn63xx;
	struct cvmx_sriox_omsg_sp_mrx_s cn63xxp1;
	struct cvmx_sriox_omsg_sp_mrx_s cn66xx;
};

union cvmx_sriox_priox_in_use {
	uint64_t u64;
	struct cvmx_sriox_priox_in_use_s {
		uint64_t reserved_32_63:32;
		uint64_t end_cnt:16;
		uint64_t start_cnt:16;
	} s;
	struct cvmx_sriox_priox_in_use_s cn63xx;
	struct cvmx_sriox_priox_in_use_s cn66xx;
};

union cvmx_sriox_rx_bell {
	uint64_t u64;
	struct cvmx_sriox_rx_bell_s {
		uint64_t reserved_48_63:16;
		uint64_t data:16;
		uint64_t src_id:16;
		uint64_t count:8;
		uint64_t reserved_5_7:3;
		uint64_t dest_id:1;
		uint64_t id16:1;
		uint64_t reserved_2_2:1;
		uint64_t priority:2;
	} s;
	struct cvmx_sriox_rx_bell_s cn63xx;
	struct cvmx_sriox_rx_bell_s cn63xxp1;
	struct cvmx_sriox_rx_bell_s cn66xx;
};

union cvmx_sriox_rx_bell_seq {
	uint64_t u64;
	struct cvmx_sriox_rx_bell_seq_s {
		uint64_t reserved_40_63:24;
		uint64_t count:8;
		uint64_t seq:32;
	} s;
	struct cvmx_sriox_rx_bell_seq_s cn63xx;
	struct cvmx_sriox_rx_bell_seq_s cn63xxp1;
	struct cvmx_sriox_rx_bell_seq_s cn66xx;
};

union cvmx_sriox_rx_status {
	uint64_t u64;
	struct cvmx_sriox_rx_status_s {
		uint64_t rtn_pr3:8;
		uint64_t rtn_pr2:8;
		uint64_t rtn_pr1:8;
		uint64_t reserved_28_39:12;
		uint64_t mbox:4;
		uint64_t comp:8;
		uint64_t reserved_13_15:3;
		uint64_t n_post:5;
		uint64_t post:8;
	} s;
	struct cvmx_sriox_rx_status_s cn63xx;
	struct cvmx_sriox_rx_status_s cn63xxp1;
	struct cvmx_sriox_rx_status_s cn66xx;
};

union cvmx_sriox_s2m_typex {
	uint64_t u64;
	struct cvmx_sriox_s2m_typex_s {
		uint64_t reserved_19_63:45;
		uint64_t wr_op:3;
		uint64_t reserved_15_15:1;
		uint64_t rd_op:3;
		uint64_t wr_prior:2;
		uint64_t rd_prior:2;
		uint64_t reserved_6_7:2;
		uint64_t src_id:1;
		uint64_t id16:1;
		uint64_t reserved_2_3:2;
		uint64_t iaow_sel:2;
	} s;
	struct cvmx_sriox_s2m_typex_s cn63xx;
	struct cvmx_sriox_s2m_typex_s cn63xxp1;
	struct cvmx_sriox_s2m_typex_s cn66xx;
};

union cvmx_sriox_seq {
	uint64_t u64;
	struct cvmx_sriox_seq_s {
		uint64_t reserved_32_63:32;
		uint64_t seq:32;
	} s;
	struct cvmx_sriox_seq_s cn63xx;
	struct cvmx_sriox_seq_s cn63xxp1;
	struct cvmx_sriox_seq_s cn66xx;
};

union cvmx_sriox_status_reg {
	uint64_t u64;
	struct cvmx_sriox_status_reg_s {
		uint64_t reserved_2_63:62;
		uint64_t access:1;
		uint64_t srio:1;
	} s;
	struct cvmx_sriox_status_reg_s cn63xx;
	struct cvmx_sriox_status_reg_s cn63xxp1;
	struct cvmx_sriox_status_reg_s cn66xx;
};

union cvmx_sriox_tag_ctrl {
	uint64_t u64;
	struct cvmx_sriox_tag_ctrl_s {
		uint64_t reserved_17_63:47;
		uint64_t o_clr:1;
		uint64_t reserved_13_15:3;
		uint64_t otag:5;
		uint64_t reserved_5_7:3;
		uint64_t itag:5;
	} s;
	struct cvmx_sriox_tag_ctrl_s cn63xx;
	struct cvmx_sriox_tag_ctrl_s cn63xxp1;
	struct cvmx_sriox_tag_ctrl_s cn66xx;
};

union cvmx_sriox_tlp_credits {
	uint64_t u64;
	struct cvmx_sriox_tlp_credits_s {
		uint64_t reserved_28_63:36;
		uint64_t mbox:4;
		uint64_t comp:8;
		uint64_t reserved_13_15:3;
		uint64_t n_post:5;
		uint64_t post:8;
	} s;
	struct cvmx_sriox_tlp_credits_s cn63xx;
	struct cvmx_sriox_tlp_credits_s cn63xxp1;
	struct cvmx_sriox_tlp_credits_s cn66xx;
};

union cvmx_sriox_tx_bell {
	uint64_t u64;
	struct cvmx_sriox_tx_bell_s {
		uint64_t reserved_48_63:16;
		uint64_t data:16;
		uint64_t dest_id:16;
		uint64_t reserved_9_15:7;
		uint64_t pending:1;
		uint64_t reserved_5_7:3;
		uint64_t src_id:1;
		uint64_t id16:1;
		uint64_t reserved_2_2:1;
		uint64_t priority:2;
	} s;
	struct cvmx_sriox_tx_bell_s cn63xx;
	struct cvmx_sriox_tx_bell_s cn63xxp1;
	struct cvmx_sriox_tx_bell_s cn66xx;
};

union cvmx_sriox_tx_bell_info {
	uint64_t u64;
	struct cvmx_sriox_tx_bell_info_s {
		uint64_t reserved_48_63:16;
		uint64_t data:16;
		uint64_t dest_id:16;
		uint64_t reserved_8_15:8;
		uint64_t timeout:1;
		uint64_t error:1;
		uint64_t retry:1;
		uint64_t src_id:1;
		uint64_t id16:1;
		uint64_t reserved_2_2:1;
		uint64_t priority:2;
	} s;
	struct cvmx_sriox_tx_bell_info_s cn63xx;
	struct cvmx_sriox_tx_bell_info_s cn63xxp1;
	struct cvmx_sriox_tx_bell_info_s cn66xx;
};

union cvmx_sriox_tx_ctrl {
	uint64_t u64;
	struct cvmx_sriox_tx_ctrl_s {
		uint64_t reserved_53_63:11;
		uint64_t tag_th2:5;
		uint64_t reserved_45_47:3;
		uint64_t tag_th1:5;
		uint64_t reserved_37_39:3;
		uint64_t tag_th0:5;
		uint64_t reserved_20_31:12;
		uint64_t tx_th2:4;
		uint64_t reserved_12_15:4;
		uint64_t tx_th1:4;
		uint64_t reserved_4_7:4;
		uint64_t tx_th0:4;
	} s;
	struct cvmx_sriox_tx_ctrl_s cn63xx;
	struct cvmx_sriox_tx_ctrl_s cn63xxp1;
	struct cvmx_sriox_tx_ctrl_s cn66xx;
};

union cvmx_sriox_tx_emphasis {
	uint64_t u64;
	struct cvmx_sriox_tx_emphasis_s {
		uint64_t reserved_4_63:60;
		uint64_t emph:4;
	} s;
	struct cvmx_sriox_tx_emphasis_s cn63xx;
	struct cvmx_sriox_tx_emphasis_s cn66xx;
};

union cvmx_sriox_tx_status {
	uint64_t u64;
	struct cvmx_sriox_tx_status_s {
		uint64_t reserved_32_63:32;
		uint64_t s2m_pr3:8;
		uint64_t s2m_pr2:8;
		uint64_t s2m_pr1:8;
		uint64_t s2m_pr0:8;
	} s;
	struct cvmx_sriox_tx_status_s cn63xx;
	struct cvmx_sriox_tx_status_s cn63xxp1;
	struct cvmx_sriox_tx_status_s cn66xx;
};

union cvmx_sriox_wr_done_counts {
	uint64_t u64;
	struct cvmx_sriox_wr_done_counts_s {
		uint64_t reserved_32_63:32;
		uint64_t bad:16;
		uint64_t good:16;
	} s;
	struct cvmx_sriox_wr_done_counts_s cn63xx;
	struct cvmx_sriox_wr_done_counts_s cn66xx;
};

#endif
