aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rvu.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rvu.h')
-rw-r--r--src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rvu.h4167
1 files changed, 4167 insertions, 0 deletions
diff --git a/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rvu.h b/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rvu.h
new file mode 100644
index 0000000000..4a0c33d521
--- /dev/null
+++ b/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rvu.h
@@ -0,0 +1,4167 @@
+#ifndef __BDK_CSRS_RVU_H__
+#define __BDK_CSRS_RVU_H__
+/* This file is auto-generated. Do not edit */
+
+/***********************license start***************
+ * Copyright (c) 2003-2017 Cavium Inc. (support@cavium.com). All rights
+ * reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+
+ * * Neither the name of Cavium Inc. nor the names of
+ * its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+
+ * This Software, including technical data, may be subject to U.S. export control
+ * laws, including the U.S. Export Administration Act and its associated
+ * regulations, and may be subject to export or import regulations in other
+ * countries.
+
+ * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
+ * AND WITH ALL FAULTS AND CAVIUM NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR
+ * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
+ * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
+ * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
+ * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
+ * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
+ * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
+ * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
+ * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
+ ***********************license end**************************************/
+
+
+/**
+ * @file
+ *
+ * Configuration and status register (CSR) address and type definitions for
+ * Cavium RVU.
+ *
+ * This file is auto generated. Do not edit.
+ *
+ */
+
+/**
+ * Enumeration rvu_af_int_vec_e
+ *
+ * RVU Admin Function Interrupt Vector Enumeration
+ * Enumerates the MSI-X interrupt vectors.
+ * Internal:
+ * RVU maintains the state of these vectors internally, and generates GIB
+ * messages for it without accessing the MSI-X table region in LLC/DRAM.
+ */
+#define BDK_RVU_AF_INT_VEC_E_GEN (3)
+#define BDK_RVU_AF_INT_VEC_E_MBOX (4)
+#define BDK_RVU_AF_INT_VEC_E_PFFLR (1)
+#define BDK_RVU_AF_INT_VEC_E_PFME (2)
+#define BDK_RVU_AF_INT_VEC_E_POISON (0)
+
+/**
+ * Enumeration rvu_bar_e
+ *
+ * RVU Base Address Register Enumeration
+ * Enumerates the base address registers.
+ * Internal:
+ * For documentation only.
+ */
+#define BDK_RVU_BAR_E_RVU_PFX_BAR0(a) (0x850000000000ll + 0x1000000000ll * (a))
+#define BDK_RVU_BAR_E_RVU_PFX_BAR0_SIZE 0x200000000ull
+#define BDK_RVU_BAR_E_RVU_PFX_FUNCX_BAR2(a,b) (0x850200000000ll + 0x1000000000ll * (a) + 0x2000000ll * (b))
+#define BDK_RVU_BAR_E_RVU_PFX_FUNCX_BAR2_SIZE 0x2000000ull
+
+/**
+ * Enumeration rvu_block_addr_e
+ *
+ * RVU Block Address Enumeration
+ * Enumerates addressing of RVU resource blocks within each RVU BAR, i.e. values
+ * of RVU_FUNC_ADDR_S[BLOCK] and RVU_AF_ADDR_S[BLOCK].
+ */
+#define BDK_RVU_BLOCK_ADDR_E_CPTX(a) (0xa + (a))
+#define BDK_RVU_BLOCK_ADDR_E_LMT (1)
+#define BDK_RVU_BLOCK_ADDR_E_MSIX (2)
+#define BDK_RVU_BLOCK_ADDR_E_NDCX(a) (0xc + (a))
+#define BDK_RVU_BLOCK_ADDR_E_NIXX(a) (4 + (a))
+#define BDK_RVU_BLOCK_ADDR_E_NPA (3)
+#define BDK_RVU_BLOCK_ADDR_E_NPC (6)
+#define BDK_RVU_BLOCK_ADDR_E_RX(a) (0 + (a))
+#define BDK_RVU_BLOCK_ADDR_E_RVUM (0)
+#define BDK_RVU_BLOCK_ADDR_E_SSO (7)
+#define BDK_RVU_BLOCK_ADDR_E_SSOW (8)
+#define BDK_RVU_BLOCK_ADDR_E_TIM (9)
+
+/**
+ * Enumeration rvu_block_type_e
+ *
+ * RVU Block Type Enumeration
+ * Enumerates values of RVU_PF/RVU_VF_BLOCK_ADDR()_DISC[BTYPE].
+ */
+#define BDK_RVU_BLOCK_TYPE_E_CPT (9)
+#define BDK_RVU_BLOCK_TYPE_E_DDF (0xb)
+#define BDK_RVU_BLOCK_TYPE_E_DFA (0xe)
+#define BDK_RVU_BLOCK_TYPE_E_HNA (0xf)
+#define BDK_RVU_BLOCK_TYPE_E_LMT (2)
+#define BDK_RVU_BLOCK_TYPE_E_MSIX (1)
+#define BDK_RVU_BLOCK_TYPE_E_NDC (0xa)
+#define BDK_RVU_BLOCK_TYPE_E_NIX (3)
+#define BDK_RVU_BLOCK_TYPE_E_NPA (4)
+#define BDK_RVU_BLOCK_TYPE_E_NPC (5)
+#define BDK_RVU_BLOCK_TYPE_E_RAD (0xd)
+#define BDK_RVU_BLOCK_TYPE_E_RVUM (0)
+#define BDK_RVU_BLOCK_TYPE_E_SSO (6)
+#define BDK_RVU_BLOCK_TYPE_E_SSOW (7)
+#define BDK_RVU_BLOCK_TYPE_E_TIM (8)
+#define BDK_RVU_BLOCK_TYPE_E_ZIP (0xc)
+
+/**
+ * Enumeration rvu_bus_lf_e
+ *
+ * INTERNAL: RVU Bus LF Range Enumeration
+ *
+ * Enumerates the LF range for the RVU bus.
+ * Internal:
+ * This is an enum used in csr3 virtual equations.
+ */
+#define BDK_RVU_BUS_LF_E_RVU_BUS_LFX(a) (0 + 0x2000000 * (a))
+
+/**
+ * Enumeration rvu_bus_pf_e
+ *
+ * INTERNAL: RVU Bus PF Range Enumeration
+ *
+ * Enumerates the PF range for the RVU bus.
+ * Internal:
+ * This is an enum used in csr3 virtual equations.
+ */
+#define BDK_RVU_BUS_PF_E_RVU_BUS_PFX(a) (0ll + 0x1000000000ll * (a))
+
+/**
+ * Enumeration rvu_bus_pfvf_e
+ *
+ * INTERNAL: RVU Bus PFVF Range Enumeration
+ *
+ * Enumerates the PF and VF ranges for the RVU bus.
+ * Internal:
+ * This is an enum used in csr3 virtual equations.
+ */
+#define BDK_RVU_BUS_PFVF_E_RVU_BUS_PFX(a) (0 + 0x2000000 * (a))
+#define BDK_RVU_BUS_PFVF_E_RVU_BUS_VFX(a) (0 + 0x2000000 * (a))
+
+/**
+ * Enumeration rvu_busbar_e
+ *
+ * INTERNAL: RVU Bus Base Address Region Enumeration
+ *
+ * Enumerates the base address region for the RVU bus.
+ * Internal:
+ * This is an enum used in csr3 virtual equations.
+ */
+#define BDK_RVU_BUSBAR_E_RVU_BUSBAR0 (0)
+#define BDK_RVU_BUSBAR_E_RVU_BUSBAR2 (0x200000000ll)
+
+/**
+ * Enumeration rvu_busdid_e
+ *
+ * INTERNAL: RVU Bus DID Enumeration
+ *
+ * Enumerates the DID offset for the RVU bus.
+ * Internal:
+ * This is an enum used in csr3 virtual equations.
+ */
+#define BDK_RVU_BUSDID_E_RVU_BUSDID (0x850000000000ll)
+
+/**
+ * Enumeration rvu_ndc_idx_e
+ *
+ * RVU NDC Index Enumeration
+ * Enumerates NDC instances and index of RVU_BLOCK_ADDR_E::NDC().
+ */
+#define BDK_RVU_NDC_IDX_E_NIXX_RX(a) (0 + 4 * (a))
+#define BDK_RVU_NDC_IDX_E_NIXX_TX(a) (1 + 4 * (a))
+#define BDK_RVU_NDC_IDX_E_NPA_UX(a) (2 + 0 * (a))
+
+/**
+ * Enumeration rvu_pf_int_vec_e
+ *
+ * RVU PF Interrupt Vector Enumeration
+ * Enumerates the MSI-X interrupt vectors.
+ */
+#define BDK_RVU_PF_INT_VEC_E_AFPF_MBOX (0xc)
+#define BDK_RVU_PF_INT_VEC_E_VFFLRX(a) (0 + (a))
+#define BDK_RVU_PF_INT_VEC_E_VFMEX(a) (4 + (a))
+#define BDK_RVU_PF_INT_VEC_E_VFPF_MBOXX(a) (8 + (a))
+
+/**
+ * Enumeration rvu_vf_int_vec_e
+ *
+ * RVU VF Interrupt Vector Enumeration
+ * Enumerates the MSI-X interrupt vectors.
+ */
+#define BDK_RVU_VF_INT_VEC_E_MBOX (0)
+
+/**
+ * Structure rvu_af_addr_s
+ *
+ * RVU Admin Function Register Address Structure
+ * Address format for accessing shared Admin Function (AF) registers in
+ * RVU PF BAR0. These registers may be accessed by all RVU PFs whose
+ * RVU_PRIV_PF()_CFG[AF_ENA] bit is set.
+ */
+union bdk_rvu_af_addr_s
+{
+ uint64_t u;
+ struct bdk_rvu_af_addr_s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_33_63 : 31;
+ uint64_t block : 5; /**< [ 32: 28] Resource block enumerated by RVU_BLOCK_ADDR_E. */
+ uint64_t addr : 28; /**< [ 27: 0] Register address within [BLOCK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t addr : 28; /**< [ 27: 0] Register address within [BLOCK]. */
+ uint64_t block : 5; /**< [ 32: 28] Resource block enumerated by RVU_BLOCK_ADDR_E. */
+ uint64_t reserved_33_63 : 31;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_addr_s_s cn; */
+};
+
+/**
+ * Structure rvu_func_addr_s
+ *
+ * RVU Function-unique Address Structure
+ * Address format for accessing function-unique registers in RVU PF/FUNC BAR2.
+ */
+union bdk_rvu_func_addr_s
+{
+ uint32_t u;
+ struct bdk_rvu_func_addr_s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint32_t reserved_25_31 : 7;
+ uint32_t block : 5; /**< [ 24: 20] Resource block enumerated by RVU_BLOCK_ADDR_E. */
+ uint32_t lf_slot : 8; /**< [ 19: 12] Local function slot, or extended register address within the block's LF
+ slot 0, depending on [BLOCK]. */
+ uint32_t addr : 12; /**< [ 11: 0] Register address within the block and LF slot. */
+#else /* Word 0 - Little Endian */
+ uint32_t addr : 12; /**< [ 11: 0] Register address within the block and LF slot. */
+ uint32_t lf_slot : 8; /**< [ 19: 12] Local function slot, or extended register address within the block's LF
+ slot 0, depending on [BLOCK]. */
+ uint32_t block : 5; /**< [ 24: 20] Resource block enumerated by RVU_BLOCK_ADDR_E. */
+ uint32_t reserved_25_31 : 7;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_func_addr_s_s cn; */
+};
+
+/**
+ * Structure rvu_msix_vec_s
+ *
+ * RVU MSI-X Vector Structure
+ * Format of entries in the RVU MSI-X table region in LLC/DRAM. See
+ * RVU_PRIV_PF()_MSIX_CFG.
+ */
+union bdk_rvu_msix_vec_s
+{
+ uint64_t u[2];
+ struct bdk_rvu_msix_vec_s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t addr : 64; /**< [ 63: 0] IOVA to use for MSI-X delivery of this vector. Bits \<63:53\> are reserved.
+ Bit \<1:0\> are reserved for alignment. */
+#else /* Word 0 - Little Endian */
+ uint64_t addr : 64; /**< [ 63: 0] IOVA to use for MSI-X delivery of this vector. Bits \<63:53\> are reserved.
+ Bit \<1:0\> are reserved for alignment. */
+#endif /* Word 0 - End */
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 1 - Big Endian */
+ uint64_t reserved_98_127 : 30;
+ uint64_t pend : 1; /**< [ 97: 97] Vector's pending bit in the MSI-X PBA. */
+ uint64_t mask : 1; /**< [ 96: 96] When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t data : 32; /**< [ 95: 64] Data to use for MSI-X delivery of this vector. */
+#else /* Word 1 - Little Endian */
+ uint64_t data : 32; /**< [ 95: 64] Data to use for MSI-X delivery of this vector. */
+ uint64_t mask : 1; /**< [ 96: 96] When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t pend : 1; /**< [ 97: 97] Vector's pending bit in the MSI-X PBA. */
+ uint64_t reserved_98_127 : 30;
+#endif /* Word 1 - End */
+ } s;
+ /* struct bdk_rvu_msix_vec_s_s cn; */
+};
+
+/**
+ * Structure rvu_pf_func_s
+ *
+ * RVU PF Function Identification Structure
+ * Identifies an RVU PF/VF, and format of *_PRIV_LF()_CFG[PF_FUNC] in RVU
+ * resource blocks, e.g. NPA_PRIV_LF()_CFG[PF_FUNC].
+ *
+ * Internal:
+ * Also used for PF/VF identification on inter-coprocessor hardware
+ * interfaces (NPA, SSO, CPT, ...).
+ */
+union bdk_rvu_pf_func_s
+{
+ uint32_t u;
+ struct bdk_rvu_pf_func_s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint32_t reserved_16_31 : 16;
+ uint32_t pf : 6; /**< [ 15: 10] RVU PF number. */
+ uint32_t func : 10; /**< [ 9: 0] Function within [PF]; 0 for the PF itself, else VF number plus 1. */
+#else /* Word 0 - Little Endian */
+ uint32_t func : 10; /**< [ 9: 0] Function within [PF]; 0 for the PF itself, else VF number plus 1. */
+ uint32_t pf : 6; /**< [ 15: 10] RVU PF number. */
+ uint32_t reserved_16_31 : 16;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_func_s_s cn; */
+};
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_afpf#_mbox#
+ *
+ * RVU Admin Function AF/PF Mailbox Registers
+ */
+union bdk_rvu_af_afpfx_mboxx
+{
+ uint64_t u;
+ struct bdk_rvu_af_afpfx_mboxx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W/H) Mailbox data. These AF registers access the 16-byte-per-PF PF/AF
+ mailbox. Each corresponding PF may access the same storage using
+ RVU_PF_PFAF_MBOX(). MBOX(0) is typically used for AF to PF
+ signaling, MBOX(1) for PF to AF.
+ Writing RVU_AF_AFPF()_MBOX(0) (but not RVU_PF_PFAF_MBOX(0)) will
+ set the corresponding
+ RVU_PF_INT[MBOX] which if appropriately enabled will send an
+ interrupt to the PF. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W/H) Mailbox data. These AF registers access the 16-byte-per-PF PF/AF
+ mailbox. Each corresponding PF may access the same storage using
+ RVU_PF_PFAF_MBOX(). MBOX(0) is typically used for AF to PF
+ signaling, MBOX(1) for PF to AF.
+ Writing RVU_AF_AFPF()_MBOX(0) (but not RVU_PF_PFAF_MBOX(0)) will
+ set the corresponding
+ RVU_PF_INT[MBOX] which if appropriately enabled will send an
+ interrupt to the PF. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_afpfx_mboxx_s cn; */
+};
+typedef union bdk_rvu_af_afpfx_mboxx bdk_rvu_af_afpfx_mboxx_t;
+
+static inline uint64_t BDK_RVU_AF_AFPFX_MBOXX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_AFPFX_MBOXX(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=15) && (b<=1)))
+ return 0x850000002000ll + 0x10ll * ((a) & 0xf) + 8ll * ((b) & 0x1);
+ __bdk_csr_fatal("RVU_AF_AFPFX_MBOXX", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_AFPFX_MBOXX(a,b) bdk_rvu_af_afpfx_mboxx_t
+#define bustype_BDK_RVU_AF_AFPFX_MBOXX(a,b) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_AFPFX_MBOXX(a,b) "RVU_AF_AFPFX_MBOXX"
+#define device_bar_BDK_RVU_AF_AFPFX_MBOXX(a,b) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_AFPFX_MBOXX(a,b) (a)
+#define arguments_BDK_RVU_AF_AFPFX_MBOXX(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_blk_rst
+ *
+ * RVU Master Admin Function Block Reset Register
+ */
+union bdk_rvu_af_blk_rst
+{
+ uint64_t u;
+ struct bdk_rvu_af_blk_rst_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_2_63 : 62;
+ uint64_t busy : 1; /**< [ 1: 1](RO/H) When one, RVUM is busy completing reset. No access except the reading of this
+ bit should occur to RVUM until this is clear. */
+ uint64_t rst : 1; /**< [ 0: 0](WO) Write one to reset RVUM, except for privileged AF registers (RVU_PRIV_*).
+ Software must ensure that all RVUM activity is quiesced before writing one. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst : 1; /**< [ 0: 0](WO) Write one to reset RVUM, except for privileged AF registers (RVU_PRIV_*).
+ Software must ensure that all RVUM activity is quiesced before writing one. */
+ uint64_t busy : 1; /**< [ 1: 1](RO/H) When one, RVUM is busy completing reset. No access except the reading of this
+ bit should occur to RVUM until this is clear. */
+ uint64_t reserved_2_63 : 62;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_blk_rst_s cn; */
+};
+typedef union bdk_rvu_af_blk_rst bdk_rvu_af_blk_rst_t;
+
+#define BDK_RVU_AF_BLK_RST BDK_RVU_AF_BLK_RST_FUNC()
+static inline uint64_t BDK_RVU_AF_BLK_RST_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_BLK_RST_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000030ll;
+ __bdk_csr_fatal("RVU_AF_BLK_RST", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_BLK_RST bdk_rvu_af_blk_rst_t
+#define bustype_BDK_RVU_AF_BLK_RST BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_BLK_RST "RVU_AF_BLK_RST"
+#define device_bar_BDK_RVU_AF_BLK_RST 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_BLK_RST 0
+#define arguments_BDK_RVU_AF_BLK_RST -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_eco
+ *
+ * INTERNAL: RVU Admin Function ECO Register
+ */
+union bdk_rvu_af_eco
+{
+ uint64_t u;
+ struct bdk_rvu_af_eco_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_32_63 : 32;
+ uint64_t eco_rw : 32; /**< [ 31: 0](R/W) Internal:
+ Reserved for ECO usage. */
+#else /* Word 0 - Little Endian */
+ uint64_t eco_rw : 32; /**< [ 31: 0](R/W) Internal:
+ Reserved for ECO usage. */
+ uint64_t reserved_32_63 : 32;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_eco_s cn; */
+};
+typedef union bdk_rvu_af_eco bdk_rvu_af_eco_t;
+
+#define BDK_RVU_AF_ECO BDK_RVU_AF_ECO_FUNC()
+static inline uint64_t BDK_RVU_AF_ECO_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_ECO_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000020ll;
+ __bdk_csr_fatal("RVU_AF_ECO", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_ECO bdk_rvu_af_eco_t
+#define bustype_BDK_RVU_AF_ECO BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_ECO "RVU_AF_ECO"
+#define device_bar_BDK_RVU_AF_ECO 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_ECO 0
+#define arguments_BDK_RVU_AF_ECO -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_gen_int
+ *
+ * RVU Admin Function General Interrupt Register
+ * This register contains General interrupt summary bits.
+ */
+union bdk_rvu_af_gen_int
+{
+ uint64_t u;
+ struct bdk_rvu_af_gen_int_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_2_63 : 62;
+ uint64_t msix_fault : 1; /**< [ 1: 1](R/W1C/H) Received MSIX-X table read response with fault data */
+ uint64_t unmapped : 1; /**< [ 0: 0](R/W1C/H) Received a register read or write request to an unmapped or disabled PF or
+ VF. Specifically:
+ * A PF/VF BAR2 access in a PF whose RVU_PRIV_PF()_CFG[ENA] is
+ clear.
+ * A VF BAR2 access to a VF number that is greater than or equal to the
+ associated PF's RVU_PRIV_PF()_CFG[NVF]. */
+#else /* Word 0 - Little Endian */
+ uint64_t unmapped : 1; /**< [ 0: 0](R/W1C/H) Received a register read or write request to an unmapped or disabled PF or
+ VF. Specifically:
+ * A PF/VF BAR2 access in a PF whose RVU_PRIV_PF()_CFG[ENA] is
+ clear.
+ * A VF BAR2 access to a VF number that is greater than or equal to the
+ associated PF's RVU_PRIV_PF()_CFG[NVF]. */
+ uint64_t msix_fault : 1; /**< [ 1: 1](R/W1C/H) Received MSIX-X table read response with fault data */
+ uint64_t reserved_2_63 : 62;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_gen_int_s cn; */
+};
+typedef union bdk_rvu_af_gen_int bdk_rvu_af_gen_int_t;
+
+#define BDK_RVU_AF_GEN_INT BDK_RVU_AF_GEN_INT_FUNC()
+static inline uint64_t BDK_RVU_AF_GEN_INT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_GEN_INT_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000120ll;
+ __bdk_csr_fatal("RVU_AF_GEN_INT", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_GEN_INT bdk_rvu_af_gen_int_t
+#define bustype_BDK_RVU_AF_GEN_INT BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_GEN_INT "RVU_AF_GEN_INT"
+#define device_bar_BDK_RVU_AF_GEN_INT 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_GEN_INT 0
+#define arguments_BDK_RVU_AF_GEN_INT -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_gen_int_ena_w1c
+ *
+ * RVU Admin Function General Interrupt Enable Clear Register
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_af_gen_int_ena_w1c
+{
+ uint64_t u;
+ struct bdk_rvu_af_gen_int_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_2_63 : 62;
+ uint64_t msix_fault : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for RVU_AF_GEN_INT[MSIX_FAULT]. */
+ uint64_t unmapped : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for RVU_AF_GEN_INT[UNMAPPED]. */
+#else /* Word 0 - Little Endian */
+ uint64_t unmapped : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for RVU_AF_GEN_INT[UNMAPPED]. */
+ uint64_t msix_fault : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for RVU_AF_GEN_INT[MSIX_FAULT]. */
+ uint64_t reserved_2_63 : 62;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_gen_int_ena_w1c_s cn; */
+};
+typedef union bdk_rvu_af_gen_int_ena_w1c bdk_rvu_af_gen_int_ena_w1c_t;
+
+#define BDK_RVU_AF_GEN_INT_ENA_W1C BDK_RVU_AF_GEN_INT_ENA_W1C_FUNC()
+static inline uint64_t BDK_RVU_AF_GEN_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_GEN_INT_ENA_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000138ll;
+ __bdk_csr_fatal("RVU_AF_GEN_INT_ENA_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_GEN_INT_ENA_W1C bdk_rvu_af_gen_int_ena_w1c_t
+#define bustype_BDK_RVU_AF_GEN_INT_ENA_W1C BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_GEN_INT_ENA_W1C "RVU_AF_GEN_INT_ENA_W1C"
+#define device_bar_BDK_RVU_AF_GEN_INT_ENA_W1C 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_GEN_INT_ENA_W1C 0
+#define arguments_BDK_RVU_AF_GEN_INT_ENA_W1C -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_gen_int_ena_w1s
+ *
+ * RVU Admin Function General Interrupt Enable Set Register
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_af_gen_int_ena_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_gen_int_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_2_63 : 62;
+ uint64_t msix_fault : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for RVU_AF_GEN_INT[MSIX_FAULT]. */
+ uint64_t unmapped : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for RVU_AF_GEN_INT[UNMAPPED]. */
+#else /* Word 0 - Little Endian */
+ uint64_t unmapped : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for RVU_AF_GEN_INT[UNMAPPED]. */
+ uint64_t msix_fault : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for RVU_AF_GEN_INT[MSIX_FAULT]. */
+ uint64_t reserved_2_63 : 62;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_gen_int_ena_w1s_s cn; */
+};
+typedef union bdk_rvu_af_gen_int_ena_w1s bdk_rvu_af_gen_int_ena_w1s_t;
+
+#define BDK_RVU_AF_GEN_INT_ENA_W1S BDK_RVU_AF_GEN_INT_ENA_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_GEN_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_GEN_INT_ENA_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000130ll;
+ __bdk_csr_fatal("RVU_AF_GEN_INT_ENA_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_GEN_INT_ENA_W1S bdk_rvu_af_gen_int_ena_w1s_t
+#define bustype_BDK_RVU_AF_GEN_INT_ENA_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_GEN_INT_ENA_W1S "RVU_AF_GEN_INT_ENA_W1S"
+#define device_bar_BDK_RVU_AF_GEN_INT_ENA_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_GEN_INT_ENA_W1S 0
+#define arguments_BDK_RVU_AF_GEN_INT_ENA_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_gen_int_w1s
+ *
+ * RVU Admin Function General Interrupt Set Register
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_af_gen_int_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_gen_int_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_2_63 : 62;
+ uint64_t msix_fault : 1; /**< [ 1: 1](R/W1S/H) Reads or sets RVU_AF_GEN_INT[MSIX_FAULT]. */
+ uint64_t unmapped : 1; /**< [ 0: 0](R/W1S/H) Reads or sets RVU_AF_GEN_INT[UNMAPPED]. */
+#else /* Word 0 - Little Endian */
+ uint64_t unmapped : 1; /**< [ 0: 0](R/W1S/H) Reads or sets RVU_AF_GEN_INT[UNMAPPED]. */
+ uint64_t msix_fault : 1; /**< [ 1: 1](R/W1S/H) Reads or sets RVU_AF_GEN_INT[MSIX_FAULT]. */
+ uint64_t reserved_2_63 : 62;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_gen_int_w1s_s cn; */
+};
+typedef union bdk_rvu_af_gen_int_w1s bdk_rvu_af_gen_int_w1s_t;
+
+#define BDK_RVU_AF_GEN_INT_W1S BDK_RVU_AF_GEN_INT_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_GEN_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_GEN_INT_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000128ll;
+ __bdk_csr_fatal("RVU_AF_GEN_INT_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_GEN_INT_W1S bdk_rvu_af_gen_int_w1s_t
+#define bustype_BDK_RVU_AF_GEN_INT_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_GEN_INT_W1S "RVU_AF_GEN_INT_W1S"
+#define device_bar_BDK_RVU_AF_GEN_INT_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_GEN_INT_W1S 0
+#define arguments_BDK_RVU_AF_GEN_INT_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_hwvf_rst
+ *
+ * RVU Admin Function Hardware VF Soft Reset Register
+ */
+union bdk_rvu_af_hwvf_rst
+{
+ uint64_t u;
+ struct bdk_rvu_af_hwvf_rst_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_13_63 : 51;
+ uint64_t exec : 1; /**< [ 12: 12](R/W1S/H) Execute HWVF soft reset. When software writes a one to set this bit, hardware
+ resets the RVUM resources of the hardware VF selected by [HWVF] and the
+ associated MSI-X table in LLC/DRAM specified by
+ RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_OFFSET,VF_MSIXT_SIZEM1].
+ Hardware clears this bit when done. */
+ uint64_t reserved_8_11 : 4;
+ uint64_t hwvf : 8; /**< [ 7: 0](R/W) Hardware VF that is reset when [EXEC] is set. */
+#else /* Word 0 - Little Endian */
+ uint64_t hwvf : 8; /**< [ 7: 0](R/W) Hardware VF that is reset when [EXEC] is set. */
+ uint64_t reserved_8_11 : 4;
+ uint64_t exec : 1; /**< [ 12: 12](R/W1S/H) Execute HWVF soft reset. When software writes a one to set this bit, hardware
+ resets the RVUM resources of the hardware VF selected by [HWVF] and the
+ associated MSI-X table in LLC/DRAM specified by
+ RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_OFFSET,VF_MSIXT_SIZEM1].
+ Hardware clears this bit when done. */
+ uint64_t reserved_13_63 : 51;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_hwvf_rst_s cn; */
+};
+typedef union bdk_rvu_af_hwvf_rst bdk_rvu_af_hwvf_rst_t;
+
+#define BDK_RVU_AF_HWVF_RST BDK_RVU_AF_HWVF_RST_FUNC()
+static inline uint64_t BDK_RVU_AF_HWVF_RST_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_HWVF_RST_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002850ll;
+ __bdk_csr_fatal("RVU_AF_HWVF_RST", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_HWVF_RST bdk_rvu_af_hwvf_rst_t
+#define bustype_BDK_RVU_AF_HWVF_RST BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_HWVF_RST "RVU_AF_HWVF_RST"
+#define device_bar_BDK_RVU_AF_HWVF_RST 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_HWVF_RST 0
+#define arguments_BDK_RVU_AF_HWVF_RST -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_msixtr_base
+ *
+ * RVU Admin Function MSI-X Table Region Base-Address Register
+ */
+union bdk_rvu_af_msixtr_base
+{
+ uint64_t u;
+ struct bdk_rvu_af_msixtr_base_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_53_63 : 11;
+ uint64_t addr : 46; /**< [ 52: 7](R/W) Base IOVA of MSI-X table region in LLC/DRAM. IOVA bits \<6:0\> are always zero.
+ See RVU_PRIV_PF()_MSIX_CFG. */
+ uint64_t reserved_0_6 : 7;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_6 : 7;
+ uint64_t addr : 46; /**< [ 52: 7](R/W) Base IOVA of MSI-X table region in LLC/DRAM. IOVA bits \<6:0\> are always zero.
+ See RVU_PRIV_PF()_MSIX_CFG. */
+ uint64_t reserved_53_63 : 11;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_msixtr_base_s cn; */
+};
+typedef union bdk_rvu_af_msixtr_base bdk_rvu_af_msixtr_base_t;
+
+#define BDK_RVU_AF_MSIXTR_BASE BDK_RVU_AF_MSIXTR_BASE_FUNC()
+static inline uint64_t BDK_RVU_AF_MSIXTR_BASE_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_MSIXTR_BASE_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000010ll;
+ __bdk_csr_fatal("RVU_AF_MSIXTR_BASE", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_MSIXTR_BASE bdk_rvu_af_msixtr_base_t
+#define bustype_BDK_RVU_AF_MSIXTR_BASE BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_MSIXTR_BASE "RVU_AF_MSIXTR_BASE"
+#define device_bar_BDK_RVU_AF_MSIXTR_BASE 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_MSIXTR_BASE 0
+#define arguments_BDK_RVU_AF_MSIXTR_BASE -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pf_bar4_addr
+ *
+ * RVU Admin Function PF BAR4 Address Registers
+ */
+union bdk_rvu_af_pf_bar4_addr
+{
+ uint64_t u;
+ struct bdk_rvu_af_pf_bar4_addr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t addr : 48; /**< [ 63: 16](R/W) Programmable base address of up to 16 consecutive 64 KB
+ pages in DRAM (one per PF). May be used as PF/AF mailbox memory in addition to
+ RVU_AF_AFPF()_MBOX()/RVU_PF_PFAF_MBOX().
+ Provides PCC_EA_ENTRY_S[BASEH,BASEL] value advertised by PF BAR4's entry in
+ PCCPF_XXX_EA_ENTRY(). */
+ uint64_t reserved_0_15 : 16;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_15 : 16;
+ uint64_t addr : 48; /**< [ 63: 16](R/W) Programmable base address of up to 16 consecutive 64 KB
+ pages in DRAM (one per PF). May be used as PF/AF mailbox memory in addition to
+ RVU_AF_AFPF()_MBOX()/RVU_PF_PFAF_MBOX().
+ Provides PCC_EA_ENTRY_S[BASEH,BASEL] value advertised by PF BAR4's entry in
+ PCCPF_XXX_EA_ENTRY(). */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pf_bar4_addr_s cn; */
+};
+typedef union bdk_rvu_af_pf_bar4_addr bdk_rvu_af_pf_bar4_addr_t;
+
+#define BDK_RVU_AF_PF_BAR4_ADDR BDK_RVU_AF_PF_BAR4_ADDR_FUNC()
+static inline uint64_t BDK_RVU_AF_PF_BAR4_ADDR_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PF_BAR4_ADDR_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000040ll;
+ __bdk_csr_fatal("RVU_AF_PF_BAR4_ADDR", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PF_BAR4_ADDR bdk_rvu_af_pf_bar4_addr_t
+#define bustype_BDK_RVU_AF_PF_BAR4_ADDR BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PF_BAR4_ADDR "RVU_AF_PF_BAR4_ADDR"
+#define device_bar_BDK_RVU_AF_PF_BAR4_ADDR 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PF_BAR4_ADDR 0
+#define arguments_BDK_RVU_AF_PF_BAR4_ADDR -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pf_rst
+ *
+ * RVU Admin Function PF Soft Reset Register
+ */
+union bdk_rvu_af_pf_rst
+{
+ uint64_t u;
+ struct bdk_rvu_af_pf_rst_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_13_63 : 51;
+ uint64_t exec : 1; /**< [ 12: 12](R/W1S/H) Execute PF soft reset. When software writes a one to set this bit, hardware
+ resets the RVUM resources of the physical function selected by [PF] and the
+ associated MSI-X table in LLC/DRAM specified by
+ RVU_PRIV_PF()_MSIX_CFG[PF_MSIXT_OFFSET,PF_MSIXT_SIZEM1].
+ Hardware clears this bit when done.
+ Note this does not reset HWVFs which are mapped to the PF. */
+ uint64_t reserved_4_11 : 8;
+ uint64_t pf : 4; /**< [ 3: 0](R/W) Physical function that is reset when [EXEC] is set. */
+#else /* Word 0 - Little Endian */
+ uint64_t pf : 4; /**< [ 3: 0](R/W) Physical function that is reset when [EXEC] is set. */
+ uint64_t reserved_4_11 : 8;
+ uint64_t exec : 1; /**< [ 12: 12](R/W1S/H) Execute PF soft reset. When software writes a one to set this bit, hardware
+ resets the RVUM resources of the physical function selected by [PF] and the
+ associated MSI-X table in LLC/DRAM specified by
+ RVU_PRIV_PF()_MSIX_CFG[PF_MSIXT_OFFSET,PF_MSIXT_SIZEM1].
+ Hardware clears this bit when done.
+ Note this does not reset HWVFs which are mapped to the PF. */
+ uint64_t reserved_13_63 : 51;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pf_rst_s cn; */
+};
+typedef union bdk_rvu_af_pf_rst bdk_rvu_af_pf_rst_t;
+
+#define BDK_RVU_AF_PF_RST BDK_RVU_AF_PF_RST_FUNC()
+static inline uint64_t BDK_RVU_AF_PF_RST_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PF_RST_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002840ll;
+ __bdk_csr_fatal("RVU_AF_PF_RST", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PF_RST bdk_rvu_af_pf_rst_t
+#define bustype_BDK_RVU_AF_PF_RST BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PF_RST "RVU_AF_PF_RST"
+#define device_bar_BDK_RVU_AF_PF_RST 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PF_RST 0
+#define arguments_BDK_RVU_AF_PF_RST -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfaf_mbox_int
+ *
+ * RVU Admin Function PF to AF Mailbox Interrupt Registers
+ */
+union bdk_rvu_af_pfaf_mbox_int
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfaf_mbox_int_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1C/H) Mailbox interrupt bit per PF.
+ Each bit is set when the PF writes to the corresponding
+ RVU_PF_PFAF_MBOX(1) register. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1C/H) Mailbox interrupt bit per PF.
+ Each bit is set when the PF writes to the corresponding
+ RVU_PF_PFAF_MBOX(1) register. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfaf_mbox_int_s cn; */
+};
+typedef union bdk_rvu_af_pfaf_mbox_int bdk_rvu_af_pfaf_mbox_int_t;
+
+#define BDK_RVU_AF_PFAF_MBOX_INT BDK_RVU_AF_PFAF_MBOX_INT_FUNC()
+static inline uint64_t BDK_RVU_AF_PFAF_MBOX_INT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFAF_MBOX_INT_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002880ll;
+ __bdk_csr_fatal("RVU_AF_PFAF_MBOX_INT", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFAF_MBOX_INT bdk_rvu_af_pfaf_mbox_int_t
+#define bustype_BDK_RVU_AF_PFAF_MBOX_INT BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFAF_MBOX_INT "RVU_AF_PFAF_MBOX_INT"
+#define device_bar_BDK_RVU_AF_PFAF_MBOX_INT 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFAF_MBOX_INT 0
+#define arguments_BDK_RVU_AF_PFAF_MBOX_INT -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfaf_mbox_int_ena_w1c
+ *
+ * RVU Admin Function PF to AF Mailbox Interrupt Enable Clear Registers
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_af_pfaf_mbox_int_ena_w1c
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfaf_mbox_int_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_AF_PFAF_MBOX_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_AF_PFAF_MBOX_INT[MBOX]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfaf_mbox_int_ena_w1c_s cn; */
+};
+typedef union bdk_rvu_af_pfaf_mbox_int_ena_w1c bdk_rvu_af_pfaf_mbox_int_ena_w1c_t;
+
+#define BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C_FUNC()
+static inline uint64_t BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002898ll;
+ __bdk_csr_fatal("RVU_AF_PFAF_MBOX_INT_ENA_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C bdk_rvu_af_pfaf_mbox_int_ena_w1c_t
+#define bustype_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C "RVU_AF_PFAF_MBOX_INT_ENA_W1C"
+#define device_bar_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C 0
+#define arguments_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1C -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfaf_mbox_int_ena_w1s
+ *
+ * RVU Admin Function PF to AF Mailbox Interrupt Enable Set Registers
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_af_pfaf_mbox_int_ena_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfaf_mbox_int_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_AF_PFAF_MBOX_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_AF_PFAF_MBOX_INT[MBOX]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfaf_mbox_int_ena_w1s_s cn; */
+};
+typedef union bdk_rvu_af_pfaf_mbox_int_ena_w1s bdk_rvu_af_pfaf_mbox_int_ena_w1s_t;
+
+#define BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002890ll;
+ __bdk_csr_fatal("RVU_AF_PFAF_MBOX_INT_ENA_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S bdk_rvu_af_pfaf_mbox_int_ena_w1s_t
+#define bustype_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S "RVU_AF_PFAF_MBOX_INT_ENA_W1S"
+#define device_bar_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S 0
+#define arguments_BDK_RVU_AF_PFAF_MBOX_INT_ENA_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfaf_mbox_int_w1s
+ *
+ * RVU Admin Function PF to AF Mailbox Interrupt Set Registers
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_af_pfaf_mbox_int_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfaf_mbox_int_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_AF_PFAF_MBOX_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_AF_PFAF_MBOX_INT[MBOX]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfaf_mbox_int_w1s_s cn; */
+};
+typedef union bdk_rvu_af_pfaf_mbox_int_w1s bdk_rvu_af_pfaf_mbox_int_w1s_t;
+
+#define BDK_RVU_AF_PFAF_MBOX_INT_W1S BDK_RVU_AF_PFAF_MBOX_INT_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_PFAF_MBOX_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFAF_MBOX_INT_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002888ll;
+ __bdk_csr_fatal("RVU_AF_PFAF_MBOX_INT_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFAF_MBOX_INT_W1S bdk_rvu_af_pfaf_mbox_int_w1s_t
+#define bustype_BDK_RVU_AF_PFAF_MBOX_INT_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFAF_MBOX_INT_W1S "RVU_AF_PFAF_MBOX_INT_W1S"
+#define device_bar_BDK_RVU_AF_PFAF_MBOX_INT_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFAF_MBOX_INT_W1S 0
+#define arguments_BDK_RVU_AF_PFAF_MBOX_INT_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfflr_int
+ *
+ * RVU Admin Function PF Function Level Reset Interrupt Registers
+ */
+union bdk_rvu_af_pfflr_int
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfflr_int_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1C/H) FLR interrupt bit per PF.
+
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, each bit is set along with
+ the corresponding bit in RVU_AF_PFTRPEND when function level reset is
+ initiated for the associated PF, i.e. a one is written to
+ PCCPF_XXX_E_DEV_CTL[BCR_FLR]. */
+#else /* Word 0 - Little Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1C/H) FLR interrupt bit per PF.
+
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, each bit is set along with
+ the corresponding bit in RVU_AF_PFTRPEND when function level reset is
+ initiated for the associated PF, i.e. a one is written to
+ PCCPF_XXX_E_DEV_CTL[BCR_FLR]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfflr_int_s cn; */
+};
+typedef union bdk_rvu_af_pfflr_int bdk_rvu_af_pfflr_int_t;
+
+#define BDK_RVU_AF_PFFLR_INT BDK_RVU_AF_PFFLR_INT_FUNC()
+static inline uint64_t BDK_RVU_AF_PFFLR_INT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFFLR_INT_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x8500000028a0ll;
+ __bdk_csr_fatal("RVU_AF_PFFLR_INT", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFFLR_INT bdk_rvu_af_pfflr_int_t
+#define bustype_BDK_RVU_AF_PFFLR_INT BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFFLR_INT "RVU_AF_PFFLR_INT"
+#define device_bar_BDK_RVU_AF_PFFLR_INT 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFFLR_INT 0
+#define arguments_BDK_RVU_AF_PFFLR_INT -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfflr_int_ena_w1c
+ *
+ * RVU Admin Function PF Function Level Reset Interrupt Enable Clear Registers
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_af_pfflr_int_ena_w1c
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfflr_int_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_AF_PFFLR_INT[FLR]. */
+#else /* Word 0 - Little Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_AF_PFFLR_INT[FLR]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfflr_int_ena_w1c_s cn; */
+};
+typedef union bdk_rvu_af_pfflr_int_ena_w1c bdk_rvu_af_pfflr_int_ena_w1c_t;
+
+#define BDK_RVU_AF_PFFLR_INT_ENA_W1C BDK_RVU_AF_PFFLR_INT_ENA_W1C_FUNC()
+static inline uint64_t BDK_RVU_AF_PFFLR_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFFLR_INT_ENA_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x8500000028b8ll;
+ __bdk_csr_fatal("RVU_AF_PFFLR_INT_ENA_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFFLR_INT_ENA_W1C bdk_rvu_af_pfflr_int_ena_w1c_t
+#define bustype_BDK_RVU_AF_PFFLR_INT_ENA_W1C BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFFLR_INT_ENA_W1C "RVU_AF_PFFLR_INT_ENA_W1C"
+#define device_bar_BDK_RVU_AF_PFFLR_INT_ENA_W1C 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFFLR_INT_ENA_W1C 0
+#define arguments_BDK_RVU_AF_PFFLR_INT_ENA_W1C -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfflr_int_ena_w1s
+ *
+ * RVU Admin Function PF Function Level Reset Interrupt Enable Set Registers
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_af_pfflr_int_ena_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfflr_int_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_AF_PFFLR_INT[FLR]. */
+#else /* Word 0 - Little Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_AF_PFFLR_INT[FLR]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfflr_int_ena_w1s_s cn; */
+};
+typedef union bdk_rvu_af_pfflr_int_ena_w1s bdk_rvu_af_pfflr_int_ena_w1s_t;
+
+#define BDK_RVU_AF_PFFLR_INT_ENA_W1S BDK_RVU_AF_PFFLR_INT_ENA_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_PFFLR_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFFLR_INT_ENA_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x8500000028b0ll;
+ __bdk_csr_fatal("RVU_AF_PFFLR_INT_ENA_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFFLR_INT_ENA_W1S bdk_rvu_af_pfflr_int_ena_w1s_t
+#define bustype_BDK_RVU_AF_PFFLR_INT_ENA_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFFLR_INT_ENA_W1S "RVU_AF_PFFLR_INT_ENA_W1S"
+#define device_bar_BDK_RVU_AF_PFFLR_INT_ENA_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFFLR_INT_ENA_W1S 0
+#define arguments_BDK_RVU_AF_PFFLR_INT_ENA_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfflr_int_w1s
+ *
+ * RVU Admin Function PF Function Level Reset Interrupt Set Registers
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_af_pfflr_int_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfflr_int_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_AF_PFFLR_INT[FLR]. */
+#else /* Word 0 - Little Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_AF_PFFLR_INT[FLR]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfflr_int_w1s_s cn; */
+};
+typedef union bdk_rvu_af_pfflr_int_w1s bdk_rvu_af_pfflr_int_w1s_t;
+
+#define BDK_RVU_AF_PFFLR_INT_W1S BDK_RVU_AF_PFFLR_INT_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_PFFLR_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFFLR_INT_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x8500000028a8ll;
+ __bdk_csr_fatal("RVU_AF_PFFLR_INT_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFFLR_INT_W1S bdk_rvu_af_pfflr_int_w1s_t
+#define bustype_BDK_RVU_AF_PFFLR_INT_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFFLR_INT_W1S "RVU_AF_PFFLR_INT_W1S"
+#define device_bar_BDK_RVU_AF_PFFLR_INT_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFFLR_INT_W1S 0
+#define arguments_BDK_RVU_AF_PFFLR_INT_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfme_int
+ *
+ * RVU Admin Function PF Bus Master Enable Interrupt Registers
+ */
+union bdk_rvu_af_pfme_int
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfme_int_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1C/H) Master enable interrupt bit per PF.
+ A device-dependent AF driver typically uses these bits to handle state
+ changes to PCCPF_XXX_CMD[ME], which are typically modified by
+ non-device-dependent software only.
+
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, each bit is set when the
+ corresponding PCCPF_XXX_CMD[ME] bit is either set or cleared for the
+ associated PF. The corresponding bit in RVU_AF_PFME_STATUS returns the
+ current value of PCCPF_XXX_CMD[ME].
+
+ Note that if RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, the corresponding
+ bit in RVU_AF_PFTRPEND is also set when PCCPF_XXX_CMD[ME] is set, but not
+ when PCCPF_XXX_CMD[ME] is cleared. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1C/H) Master enable interrupt bit per PF.
+ A device-dependent AF driver typically uses these bits to handle state
+ changes to PCCPF_XXX_CMD[ME], which are typically modified by
+ non-device-dependent software only.
+
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, each bit is set when the
+ corresponding PCCPF_XXX_CMD[ME] bit is either set or cleared for the
+ associated PF. The corresponding bit in RVU_AF_PFME_STATUS returns the
+ current value of PCCPF_XXX_CMD[ME].
+
+ Note that if RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, the corresponding
+ bit in RVU_AF_PFTRPEND is also set when PCCPF_XXX_CMD[ME] is set, but not
+ when PCCPF_XXX_CMD[ME] is cleared. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfme_int_s cn; */
+};
+typedef union bdk_rvu_af_pfme_int bdk_rvu_af_pfme_int_t;
+
+#define BDK_RVU_AF_PFME_INT BDK_RVU_AF_PFME_INT_FUNC()
+static inline uint64_t BDK_RVU_AF_PFME_INT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFME_INT_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x8500000028c0ll;
+ __bdk_csr_fatal("RVU_AF_PFME_INT", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFME_INT bdk_rvu_af_pfme_int_t
+#define bustype_BDK_RVU_AF_PFME_INT BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFME_INT "RVU_AF_PFME_INT"
+#define device_bar_BDK_RVU_AF_PFME_INT 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFME_INT 0
+#define arguments_BDK_RVU_AF_PFME_INT -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfme_int_ena_w1c
+ *
+ * RVU Admin Function PF Bus Master Enable Interrupt Enable Clear Registers
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_af_pfme_int_ena_w1c
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfme_int_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_AF_PFME_INT[ME]. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_AF_PFME_INT[ME]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfme_int_ena_w1c_s cn; */
+};
+typedef union bdk_rvu_af_pfme_int_ena_w1c bdk_rvu_af_pfme_int_ena_w1c_t;
+
+#define BDK_RVU_AF_PFME_INT_ENA_W1C BDK_RVU_AF_PFME_INT_ENA_W1C_FUNC()
+static inline uint64_t BDK_RVU_AF_PFME_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFME_INT_ENA_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x8500000028d8ll;
+ __bdk_csr_fatal("RVU_AF_PFME_INT_ENA_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFME_INT_ENA_W1C bdk_rvu_af_pfme_int_ena_w1c_t
+#define bustype_BDK_RVU_AF_PFME_INT_ENA_W1C BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFME_INT_ENA_W1C "RVU_AF_PFME_INT_ENA_W1C"
+#define device_bar_BDK_RVU_AF_PFME_INT_ENA_W1C 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFME_INT_ENA_W1C 0
+#define arguments_BDK_RVU_AF_PFME_INT_ENA_W1C -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfme_int_ena_w1s
+ *
+ * RVU Admin Function PF Bus Master Enable Interrupt Enable Set Registers
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_af_pfme_int_ena_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfme_int_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_AF_PFME_INT[ME]. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_AF_PFME_INT[ME]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfme_int_ena_w1s_s cn; */
+};
+typedef union bdk_rvu_af_pfme_int_ena_w1s bdk_rvu_af_pfme_int_ena_w1s_t;
+
+#define BDK_RVU_AF_PFME_INT_ENA_W1S BDK_RVU_AF_PFME_INT_ENA_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_PFME_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFME_INT_ENA_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x8500000028d0ll;
+ __bdk_csr_fatal("RVU_AF_PFME_INT_ENA_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFME_INT_ENA_W1S bdk_rvu_af_pfme_int_ena_w1s_t
+#define bustype_BDK_RVU_AF_PFME_INT_ENA_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFME_INT_ENA_W1S "RVU_AF_PFME_INT_ENA_W1S"
+#define device_bar_BDK_RVU_AF_PFME_INT_ENA_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFME_INT_ENA_W1S 0
+#define arguments_BDK_RVU_AF_PFME_INT_ENA_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfme_int_w1s
+ *
+ * RVU Admin Function PF Bus Master Enable Interrupt Set Registers
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_af_pfme_int_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfme_int_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_AF_PFME_INT[ME]. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_AF_PFME_INT[ME]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfme_int_w1s_s cn; */
+};
+typedef union bdk_rvu_af_pfme_int_w1s bdk_rvu_af_pfme_int_w1s_t;
+
+#define BDK_RVU_AF_PFME_INT_W1S BDK_RVU_AF_PFME_INT_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_PFME_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFME_INT_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x8500000028c8ll;
+ __bdk_csr_fatal("RVU_AF_PFME_INT_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFME_INT_W1S bdk_rvu_af_pfme_int_w1s_t
+#define bustype_BDK_RVU_AF_PFME_INT_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFME_INT_W1S "RVU_AF_PFME_INT_W1S"
+#define device_bar_BDK_RVU_AF_PFME_INT_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFME_INT_W1S 0
+#define arguments_BDK_RVU_AF_PFME_INT_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pfme_status
+ *
+ * RVU Admin Function PF Bus Master Enable Status Registers
+ */
+union bdk_rvu_af_pfme_status
+{
+ uint64_t u;
+ struct bdk_rvu_af_pfme_status_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](RO/H) Bus master enable bit per PF. Each bit returns the PF's
+ PCCPF_XXX_CMD[ME] value. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](RO/H) Bus master enable bit per PF. Each bit returns the PF's
+ PCCPF_XXX_CMD[ME] value. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pfme_status_s cn; */
+};
+typedef union bdk_rvu_af_pfme_status bdk_rvu_af_pfme_status_t;
+
+#define BDK_RVU_AF_PFME_STATUS BDK_RVU_AF_PFME_STATUS_FUNC()
+static inline uint64_t BDK_RVU_AF_PFME_STATUS_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFME_STATUS_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002800ll;
+ __bdk_csr_fatal("RVU_AF_PFME_STATUS", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFME_STATUS bdk_rvu_af_pfme_status_t
+#define bustype_BDK_RVU_AF_PFME_STATUS BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFME_STATUS "RVU_AF_PFME_STATUS"
+#define device_bar_BDK_RVU_AF_PFME_STATUS 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFME_STATUS 0
+#define arguments_BDK_RVU_AF_PFME_STATUS -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pftrpend
+ *
+ * RVU Admin Function PF Transaction Pending Registers
+ */
+union bdk_rvu_af_pftrpend
+{
+ uint64_t u;
+ struct bdk_rvu_af_pftrpend_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t trpend : 64; /**< [ 63: 0](R/W1C/H) Transaction pending bit per PF.
+
+ A PF's bit is set when RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set and:
+ * A one is written to the corresponding PCCPF_XXX_E_DEV_CTL[BCR_FLR], or
+ * PCCPF_XXX_CMD[ME] is set or cleared.
+
+ When a PF's bit is set, forces the corresponding
+ PCCPF_XXX_E_DEV_CTL[TRPEND] to be set.
+
+ Software (typically a device-dependent AF driver) can clear the bit by
+ writing a 1. */
+#else /* Word 0 - Little Endian */
+ uint64_t trpend : 64; /**< [ 63: 0](R/W1C/H) Transaction pending bit per PF.
+
+ A PF's bit is set when RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set and:
+ * A one is written to the corresponding PCCPF_XXX_E_DEV_CTL[BCR_FLR], or
+ * PCCPF_XXX_CMD[ME] is set or cleared.
+
+ When a PF's bit is set, forces the corresponding
+ PCCPF_XXX_E_DEV_CTL[TRPEND] to be set.
+
+ Software (typically a device-dependent AF driver) can clear the bit by
+ writing a 1. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pftrpend_s cn; */
+};
+typedef union bdk_rvu_af_pftrpend bdk_rvu_af_pftrpend_t;
+
+#define BDK_RVU_AF_PFTRPEND BDK_RVU_AF_PFTRPEND_FUNC()
+static inline uint64_t BDK_RVU_AF_PFTRPEND_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFTRPEND_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002810ll;
+ __bdk_csr_fatal("RVU_AF_PFTRPEND", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFTRPEND bdk_rvu_af_pftrpend_t
+#define bustype_BDK_RVU_AF_PFTRPEND BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFTRPEND "RVU_AF_PFTRPEND"
+#define device_bar_BDK_RVU_AF_PFTRPEND 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFTRPEND 0
+#define arguments_BDK_RVU_AF_PFTRPEND -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_pftrpend_w1s
+ *
+ * RVU Admin Function PF Transaction Pending Set Registers
+ * This register reads or sets bits.
+ */
+union bdk_rvu_af_pftrpend_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_pftrpend_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t trpend : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_AF_PFTRPEND[TRPEND]. */
+#else /* Word 0 - Little Endian */
+ uint64_t trpend : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_AF_PFTRPEND[TRPEND]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_pftrpend_w1s_s cn; */
+};
+typedef union bdk_rvu_af_pftrpend_w1s bdk_rvu_af_pftrpend_w1s_t;
+
+#define BDK_RVU_AF_PFTRPEND_W1S BDK_RVU_AF_PFTRPEND_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_PFTRPEND_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_PFTRPEND_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000002820ll;
+ __bdk_csr_fatal("RVU_AF_PFTRPEND_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_PFTRPEND_W1S bdk_rvu_af_pftrpend_w1s_t
+#define bustype_BDK_RVU_AF_PFTRPEND_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_PFTRPEND_W1S "RVU_AF_PFTRPEND_W1S"
+#define device_bar_BDK_RVU_AF_PFTRPEND_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_PFTRPEND_W1S 0
+#define arguments_BDK_RVU_AF_PFTRPEND_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_ras
+ *
+ * RVU Admin Function RAS Interrupt Register
+ * This register is intended for delivery of RAS events to the SCP, so should be
+ * ignored by OS drivers.
+ */
+union bdk_rvu_af_ras
+{
+ uint64_t u;
+ struct bdk_rvu_af_ras_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t msix_poison : 1; /**< [ 0: 0](R/W1C/H) Received MSI-X table read response with poisoned data. */
+#else /* Word 0 - Little Endian */
+ uint64_t msix_poison : 1; /**< [ 0: 0](R/W1C/H) Received MSI-X table read response with poisoned data. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_ras_s cn; */
+};
+typedef union bdk_rvu_af_ras bdk_rvu_af_ras_t;
+
+#define BDK_RVU_AF_RAS BDK_RVU_AF_RAS_FUNC()
+static inline uint64_t BDK_RVU_AF_RAS_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_RAS_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000100ll;
+ __bdk_csr_fatal("RVU_AF_RAS", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_RAS bdk_rvu_af_ras_t
+#define bustype_BDK_RVU_AF_RAS BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_RAS "RVU_AF_RAS"
+#define device_bar_BDK_RVU_AF_RAS 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_RAS 0
+#define arguments_BDK_RVU_AF_RAS -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_ras_ena_w1c
+ *
+ * RVU Admin Function RAS Interrupt Enable Clear Register
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_af_ras_ena_w1c
+{
+ uint64_t u;
+ struct bdk_rvu_af_ras_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t msix_poison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for RVU_AF_RAS[MSIX_POISON]. */
+#else /* Word 0 - Little Endian */
+ uint64_t msix_poison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for RVU_AF_RAS[MSIX_POISON]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_ras_ena_w1c_s cn; */
+};
+typedef union bdk_rvu_af_ras_ena_w1c bdk_rvu_af_ras_ena_w1c_t;
+
+#define BDK_RVU_AF_RAS_ENA_W1C BDK_RVU_AF_RAS_ENA_W1C_FUNC()
+static inline uint64_t BDK_RVU_AF_RAS_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_RAS_ENA_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000118ll;
+ __bdk_csr_fatal("RVU_AF_RAS_ENA_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_RAS_ENA_W1C bdk_rvu_af_ras_ena_w1c_t
+#define bustype_BDK_RVU_AF_RAS_ENA_W1C BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_RAS_ENA_W1C "RVU_AF_RAS_ENA_W1C"
+#define device_bar_BDK_RVU_AF_RAS_ENA_W1C 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_RAS_ENA_W1C 0
+#define arguments_BDK_RVU_AF_RAS_ENA_W1C -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_ras_ena_w1s
+ *
+ * RVU Admin Function RAS Interrupt Enable Set Register
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_af_ras_ena_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_ras_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t msix_poison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for RVU_AF_RAS[MSIX_POISON]. */
+#else /* Word 0 - Little Endian */
+ uint64_t msix_poison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for RVU_AF_RAS[MSIX_POISON]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_ras_ena_w1s_s cn; */
+};
+typedef union bdk_rvu_af_ras_ena_w1s bdk_rvu_af_ras_ena_w1s_t;
+
+#define BDK_RVU_AF_RAS_ENA_W1S BDK_RVU_AF_RAS_ENA_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_RAS_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_RAS_ENA_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000110ll;
+ __bdk_csr_fatal("RVU_AF_RAS_ENA_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_RAS_ENA_W1S bdk_rvu_af_ras_ena_w1s_t
+#define bustype_BDK_RVU_AF_RAS_ENA_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_RAS_ENA_W1S "RVU_AF_RAS_ENA_W1S"
+#define device_bar_BDK_RVU_AF_RAS_ENA_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_RAS_ENA_W1S 0
+#define arguments_BDK_RVU_AF_RAS_ENA_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_af_ras_w1s
+ *
+ * RVU Admin Function RAS Interrupt Set Register
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_af_ras_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_af_ras_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t msix_poison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets RVU_AF_RAS[MSIX_POISON]. */
+#else /* Word 0 - Little Endian */
+ uint64_t msix_poison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets RVU_AF_RAS[MSIX_POISON]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_af_ras_w1s_s cn; */
+};
+typedef union bdk_rvu_af_ras_w1s bdk_rvu_af_ras_w1s_t;
+
+#define BDK_RVU_AF_RAS_W1S BDK_RVU_AF_RAS_W1S_FUNC()
+static inline uint64_t BDK_RVU_AF_RAS_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_AF_RAS_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850000000108ll;
+ __bdk_csr_fatal("RVU_AF_RAS_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_AF_RAS_W1S bdk_rvu_af_ras_w1s_t
+#define bustype_BDK_RVU_AF_RAS_W1S BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_AF_RAS_W1S "RVU_AF_RAS_W1S"
+#define device_bar_BDK_RVU_AF_RAS_W1S 0x0 /* BAR0 */
+#define busnum_BDK_RVU_AF_RAS_W1S 0
+#define arguments_BDK_RVU_AF_RAS_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_block_addr#_disc
+ *
+ * RVU PF Block Address Discovery Registers
+ * These registers allow each PF driver to discover block resources that are
+ * provisioned to its PF. The register's block address index is enumerated by
+ * RVU_BLOCK_ADDR_E.
+ */
+union bdk_rvu_pf_block_addrx_disc
+{
+ uint64_t u;
+ struct bdk_rvu_pf_block_addrx_disc_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_28_63 : 36;
+ uint64_t btype : 8; /**< [ 27: 20](RO/H) Block type enumerated by RVU_BLOCK_TYPE_E. */
+ uint64_t rid : 8; /**< [ 19: 12](RO/H) Revision ID of the block from RVU_PRIV_BLOCK_TYPE()_REV[RID]. */
+ uint64_t imp : 1; /**< [ 11: 11](RO/H) Implemented. When set, a block is present at this block address index as
+ enumerated by RVU_BLOCK_ADDR_E. When clear, a block is not present and the
+ remaining fields in the register are RAZ.
+
+ Internal:
+ Returns zero if the block is implemented but fused out. */
+ uint64_t reserved_9_10 : 2;
+ uint64_t num_lfs : 9; /**< [ 8: 0](RO/H) Number of local functions from the block that are provisioned to the VF/PF.
+ When non-zero, the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in
+ the the block.
+ Returns 0 for block types that do not have local functions, 0 or 1 for
+ single-slot blocks; see RVU_BLOCK_TYPE_E. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](RO/H) Number of local functions from the block that are provisioned to the VF/PF.
+ When non-zero, the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in
+ the the block.
+ Returns 0 for block types that do not have local functions, 0 or 1 for
+ single-slot blocks; see RVU_BLOCK_TYPE_E. */
+ uint64_t reserved_9_10 : 2;
+ uint64_t imp : 1; /**< [ 11: 11](RO/H) Implemented. When set, a block is present at this block address index as
+ enumerated by RVU_BLOCK_ADDR_E. When clear, a block is not present and the
+ remaining fields in the register are RAZ.
+
+ Internal:
+ Returns zero if the block is implemented but fused out. */
+ uint64_t rid : 8; /**< [ 19: 12](RO/H) Revision ID of the block from RVU_PRIV_BLOCK_TYPE()_REV[RID]. */
+ uint64_t btype : 8; /**< [ 27: 20](RO/H) Block type enumerated by RVU_BLOCK_TYPE_E. */
+ uint64_t reserved_28_63 : 36;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_block_addrx_disc_s cn; */
+};
+typedef union bdk_rvu_pf_block_addrx_disc bdk_rvu_pf_block_addrx_disc_t;
+
+static inline uint64_t BDK_RVU_PF_BLOCK_ADDRX_DISC(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_BLOCK_ADDRX_DISC(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=31))
+ return 0x850200000200ll + 8ll * ((a) & 0x1f);
+ __bdk_csr_fatal("RVU_PF_BLOCK_ADDRX_DISC", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_BLOCK_ADDRX_DISC(a) bdk_rvu_pf_block_addrx_disc_t
+#define bustype_BDK_RVU_PF_BLOCK_ADDRX_DISC(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_BLOCK_ADDRX_DISC(a) "RVU_PF_BLOCK_ADDRX_DISC"
+#define device_bar_BDK_RVU_PF_BLOCK_ADDRX_DISC(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_BLOCK_ADDRX_DISC(a) (a)
+#define arguments_BDK_RVU_PF_BLOCK_ADDRX_DISC(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_int
+ *
+ * RVU PF Interrupt Registers
+ */
+union bdk_rvu_pf_int
+{
+ uint64_t u;
+ struct bdk_rvu_pf_int_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1C/H) AF to PF mailbox interrupt. Set when RVU_AF_AFPF()_MBOX(0) is written. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1C/H) AF to PF mailbox interrupt. Set when RVU_AF_AFPF()_MBOX(0) is written. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_int_s cn; */
+};
+typedef union bdk_rvu_pf_int bdk_rvu_pf_int_t;
+
+#define BDK_RVU_PF_INT BDK_RVU_PF_INT_FUNC()
+static inline uint64_t BDK_RVU_PF_INT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_INT_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000c20ll;
+ __bdk_csr_fatal("RVU_PF_INT", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_INT bdk_rvu_pf_int_t
+#define bustype_BDK_RVU_PF_INT BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_INT "RVU_PF_INT"
+#define device_bar_BDK_RVU_PF_INT 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_INT 0
+#define arguments_BDK_RVU_PF_INT -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_int_ena_w1c
+ *
+ * RVU PF Interrupt Enable Clear Register
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_pf_int_ena_w1c
+{
+ uint64_t u;
+ struct bdk_rvu_pf_int_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for RVU_PF_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for RVU_PF_INT[MBOX]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_int_ena_w1c_s cn; */
+};
+typedef union bdk_rvu_pf_int_ena_w1c bdk_rvu_pf_int_ena_w1c_t;
+
+#define BDK_RVU_PF_INT_ENA_W1C BDK_RVU_PF_INT_ENA_W1C_FUNC()
+static inline uint64_t BDK_RVU_PF_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_INT_ENA_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000c38ll;
+ __bdk_csr_fatal("RVU_PF_INT_ENA_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_INT_ENA_W1C bdk_rvu_pf_int_ena_w1c_t
+#define bustype_BDK_RVU_PF_INT_ENA_W1C BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_INT_ENA_W1C "RVU_PF_INT_ENA_W1C"
+#define device_bar_BDK_RVU_PF_INT_ENA_W1C 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_INT_ENA_W1C 0
+#define arguments_BDK_RVU_PF_INT_ENA_W1C -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_int_ena_w1s
+ *
+ * RVU PF Interrupt Enable Set Register
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_pf_int_ena_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_pf_int_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for RVU_PF_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for RVU_PF_INT[MBOX]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_int_ena_w1s_s cn; */
+};
+typedef union bdk_rvu_pf_int_ena_w1s bdk_rvu_pf_int_ena_w1s_t;
+
+#define BDK_RVU_PF_INT_ENA_W1S BDK_RVU_PF_INT_ENA_W1S_FUNC()
+static inline uint64_t BDK_RVU_PF_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_INT_ENA_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000c30ll;
+ __bdk_csr_fatal("RVU_PF_INT_ENA_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_INT_ENA_W1S bdk_rvu_pf_int_ena_w1s_t
+#define bustype_BDK_RVU_PF_INT_ENA_W1S BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_INT_ENA_W1S "RVU_PF_INT_ENA_W1S"
+#define device_bar_BDK_RVU_PF_INT_ENA_W1S 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_INT_ENA_W1S 0
+#define arguments_BDK_RVU_PF_INT_ENA_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_int_w1s
+ *
+ * RVU PF Interrupt Set Register
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_pf_int_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_pf_int_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1S/H) Reads or sets RVU_PF_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1S/H) Reads or sets RVU_PF_INT[MBOX]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_int_w1s_s cn; */
+};
+typedef union bdk_rvu_pf_int_w1s bdk_rvu_pf_int_w1s_t;
+
+#define BDK_RVU_PF_INT_W1S BDK_RVU_PF_INT_W1S_FUNC()
+static inline uint64_t BDK_RVU_PF_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_INT_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000c28ll;
+ __bdk_csr_fatal("RVU_PF_INT_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_INT_W1S bdk_rvu_pf_int_w1s_t
+#define bustype_BDK_RVU_PF_INT_W1S BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_INT_W1S "RVU_PF_INT_W1S"
+#define device_bar_BDK_RVU_PF_INT_W1S 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_INT_W1S 0
+#define arguments_BDK_RVU_PF_INT_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_msix_pba#
+ *
+ * RVU PF MSI-X Pending-Bit-Array Registers
+ * This register is the MSI-X PF PBA table.
+ */
+union bdk_rvu_pf_msix_pbax
+{
+ uint64_t u;
+ struct bdk_rvu_pf_msix_pbax_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message bit for each MSI-X vector, i.e. one bit per
+ RVU_PF_MSIX_VEC()_CTL register.
+ The total number of bits for a given PF (and thus the number of PBA
+ registers) is determined by RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_SIZEM1]
+ (plus 1). */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message bit for each MSI-X vector, i.e. one bit per
+ RVU_PF_MSIX_VEC()_CTL register.
+ The total number of bits for a given PF (and thus the number of PBA
+ registers) is determined by RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_SIZEM1]
+ (plus 1). */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_msix_pbax_s cn; */
+};
+typedef union bdk_rvu_pf_msix_pbax bdk_rvu_pf_msix_pbax_t;
+
+static inline uint64_t BDK_RVU_PF_MSIX_PBAX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_MSIX_PBAX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a==0))
+ return 0x8502002f0000ll + 8ll * ((a) & 0x0);
+ __bdk_csr_fatal("RVU_PF_MSIX_PBAX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_MSIX_PBAX(a) bdk_rvu_pf_msix_pbax_t
+#define bustype_BDK_RVU_PF_MSIX_PBAX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_MSIX_PBAX(a) "RVU_PF_MSIX_PBAX"
+#define device_bar_BDK_RVU_PF_MSIX_PBAX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_MSIX_PBAX(a) (a)
+#define arguments_BDK_RVU_PF_MSIX_PBAX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_msix_vec#_addr
+ *
+ * RVU PF MSI-X Vector-Table Address Registers
+ * These registers and RVU_PF_MSIX_VEC()_CTL form the PF MSI-X vector table.
+ * The number of MSI-X vectors for a given PF is specified by
+ * RVU_PRIV_PF()_MSIX_CFG[PF_MSIXT_SIZEM1] (plus 1).
+ *
+ * Internal:
+ * PF vector count of 256 is sized to allow up to 120 for AF, 4 for PF/VF
+ * mailboxes, and 128 for LF resources from various blocks that are directly
+ * provisioned to the PF.
+ */
+union bdk_rvu_pf_msix_vecx_addr
+{
+ uint64_t u;
+ struct bdk_rvu_pf_msix_vecx_addr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_53_63 : 11;
+ uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
+ uint64_t reserved_1 : 1;
+ uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
+ 0 = This vector may be read or written by either secure or nonsecure states.
+ 1 = This vector's RVU_PF_MSIX_VEC()_ADDR, RVU_PF_MSIX_VEC()_CTL, and
+ corresponding bit of RVU_PF_MSIX_PBA() are RAZ/WI and does not cause a
+ fault when accessed by the nonsecure world.
+
+ If PCCPF_RVU_VSEC_SCTL[MSIX_SEC] (for documentation, see
+ PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors of the function are
+ secure as if [SECVEC] was set. */
+#else /* Word 0 - Little Endian */
+ uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
+ 0 = This vector may be read or written by either secure or nonsecure states.
+ 1 = This vector's RVU_PF_MSIX_VEC()_ADDR, RVU_PF_MSIX_VEC()_CTL, and
+ corresponding bit of RVU_PF_MSIX_PBA() are RAZ/WI and does not cause a
+ fault when accessed by the nonsecure world.
+
+ If PCCPF_RVU_VSEC_SCTL[MSIX_SEC] (for documentation, see
+ PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors of the function are
+ secure as if [SECVEC] was set. */
+ uint64_t reserved_1 : 1;
+ uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
+ uint64_t reserved_53_63 : 11;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_msix_vecx_addr_s cn; */
+};
+typedef union bdk_rvu_pf_msix_vecx_addr bdk_rvu_pf_msix_vecx_addr_t;
+
+static inline uint64_t BDK_RVU_PF_MSIX_VECX_ADDR(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_MSIX_VECX_ADDR(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a==0))
+ return 0x850200200000ll + 0x10ll * ((a) & 0x0);
+ __bdk_csr_fatal("RVU_PF_MSIX_VECX_ADDR", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_MSIX_VECX_ADDR(a) bdk_rvu_pf_msix_vecx_addr_t
+#define bustype_BDK_RVU_PF_MSIX_VECX_ADDR(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_MSIX_VECX_ADDR(a) "RVU_PF_MSIX_VECX_ADDR"
+#define device_bar_BDK_RVU_PF_MSIX_VECX_ADDR(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_MSIX_VECX_ADDR(a) (a)
+#define arguments_BDK_RVU_PF_MSIX_VECX_ADDR(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_msix_vec#_ctl
+ *
+ * RVU PF MSI-X Vector-Table Control and Data Registers
+ * These registers and RVU_PF_MSIX_VEC()_ADDR form the PF MSI-X vector table.
+ */
+union bdk_rvu_pf_msix_vecx_ctl
+{
+ uint64_t u;
+ struct bdk_rvu_pf_msix_vecx_ctl_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_33_63 : 31;
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector. */
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t reserved_33_63 : 31;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_msix_vecx_ctl_s cn; */
+};
+typedef union bdk_rvu_pf_msix_vecx_ctl bdk_rvu_pf_msix_vecx_ctl_t;
+
+static inline uint64_t BDK_RVU_PF_MSIX_VECX_CTL(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_MSIX_VECX_CTL(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a==0))
+ return 0x850200200008ll + 0x10ll * ((a) & 0x0);
+ __bdk_csr_fatal("RVU_PF_MSIX_VECX_CTL", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_MSIX_VECX_CTL(a) bdk_rvu_pf_msix_vecx_ctl_t
+#define bustype_BDK_RVU_PF_MSIX_VECX_CTL(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_MSIX_VECX_CTL(a) "RVU_PF_MSIX_VECX_CTL"
+#define device_bar_BDK_RVU_PF_MSIX_VECX_CTL(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_MSIX_VECX_CTL(a) (a)
+#define arguments_BDK_RVU_PF_MSIX_VECX_CTL(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_pfaf_mbox#
+ *
+ * RVU PF/AF Mailbox Registers
+ */
+union bdk_rvu_pf_pfaf_mboxx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_pfaf_mboxx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W/H) Mailbox data. These PF registers access the 16-byte-per-PF PF/AF
+ mailbox. The AF may access the same storage using
+ RVU_AF_AFPF()_MBOX(). MBOX(0) is typically used for AF to PF
+ signaling, MBOX(1) for PF to AF.
+ Writing RVU_PF_PFAF_MBOX(1) (but not RVU_AF_AFPF()_MBOX(1))
+ will set the corresponding RVU_AF_PFAF_MBOX_INT bit, which if appropriately
+ enabled will send an interrupt to the AF. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W/H) Mailbox data. These PF registers access the 16-byte-per-PF PF/AF
+ mailbox. The AF may access the same storage using
+ RVU_AF_AFPF()_MBOX(). MBOX(0) is typically used for AF to PF
+ signaling, MBOX(1) for PF to AF.
+ Writing RVU_PF_PFAF_MBOX(1) (but not RVU_AF_AFPF()_MBOX(1))
+ will set the corresponding RVU_AF_PFAF_MBOX_INT bit, which if appropriately
+ enabled will send an interrupt to the AF. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_pfaf_mboxx_s cn; */
+};
+typedef union bdk_rvu_pf_pfaf_mboxx bdk_rvu_pf_pfaf_mboxx_t;
+
+static inline uint64_t BDK_RVU_PF_PFAF_MBOXX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_PFAF_MBOXX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=1))
+ return 0x850200000c00ll + 8ll * ((a) & 0x1);
+ __bdk_csr_fatal("RVU_PF_PFAF_MBOXX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_PFAF_MBOXX(a) bdk_rvu_pf_pfaf_mboxx_t
+#define bustype_BDK_RVU_PF_PFAF_MBOXX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_PFAF_MBOXX(a) "RVU_PF_PFAF_MBOXX"
+#define device_bar_BDK_RVU_PF_PFAF_MBOXX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_PFAF_MBOXX(a) (a)
+#define arguments_BDK_RVU_PF_PFAF_MBOXX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vf#_pfvf_mbox#
+ *
+ * RVU PF/VF Mailbox Registers
+ */
+union bdk_rvu_pf_vfx_pfvf_mboxx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfx_pfvf_mboxx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W/H) Mailbox data. These PF registers access the 16-byte-per-VF VF/PF mailbox
+ RAM. Each corresponding VF may access the same storage using
+ RVU_VF_VFPF_MBOX(). MBOX(0) is typically used for PF to VF
+ signaling, MBOX(1) for VF to PF. Writing RVU_PF_VF()_PFVF_MBOX(0) (but
+ not RVU_VF_VFPF_MBOX(0)) will set the corresponding
+ RVU_VF_INT[MBOX] which if appropriately enabled will send an
+ interrupt to the VF. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W/H) Mailbox data. These PF registers access the 16-byte-per-VF VF/PF mailbox
+ RAM. Each corresponding VF may access the same storage using
+ RVU_VF_VFPF_MBOX(). MBOX(0) is typically used for PF to VF
+ signaling, MBOX(1) for VF to PF. Writing RVU_PF_VF()_PFVF_MBOX(0) (but
+ not RVU_VF_VFPF_MBOX(0)) will set the corresponding
+ RVU_VF_INT[MBOX] which if appropriately enabled will send an
+ interrupt to the VF. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfx_pfvf_mboxx_s cn; */
+};
+typedef union bdk_rvu_pf_vfx_pfvf_mboxx bdk_rvu_pf_vfx_pfvf_mboxx_t;
+
+static inline uint64_t BDK_RVU_PF_VFX_PFVF_MBOXX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFX_PFVF_MBOXX(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=127) && (b<=1)))
+ return 0x850200000000ll + 0x1000ll * ((a) & 0x7f) + 8ll * ((b) & 0x1);
+ __bdk_csr_fatal("RVU_PF_VFX_PFVF_MBOXX", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFX_PFVF_MBOXX(a,b) bdk_rvu_pf_vfx_pfvf_mboxx_t
+#define bustype_BDK_RVU_PF_VFX_PFVF_MBOXX(a,b) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFX_PFVF_MBOXX(a,b) "RVU_PF_VFX_PFVF_MBOXX"
+#define device_bar_BDK_RVU_PF_VFX_PFVF_MBOXX(a,b) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFX_PFVF_MBOXX(a,b) (a)
+#define arguments_BDK_RVU_PF_VFX_PFVF_MBOXX(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vf_bar4_addr
+ *
+ * RVU PF VF BAR4 Address Registers
+ */
+union bdk_rvu_pf_vf_bar4_addr
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vf_bar4_addr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t addr : 48; /**< [ 63: 16](R/W) Programmable base address of RVU_PRIV_PF()_CFG[NVF] consecutive 64 KB
+ pages in DRAM. May be used as VF/PF mailbox memory in addition to
+ RVU_PF_VF()_PFVF_MBOX()/RVU_VF_VFPF_MBOX().
+ Provides PCC_EA_ENTRY_S[BASEH,BASEL] value advertised by VF BAR4's entry in
+ PCCPF_XXX_EA_ENTRY(). */
+ uint64_t reserved_0_15 : 16;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_15 : 16;
+ uint64_t addr : 48; /**< [ 63: 16](R/W) Programmable base address of RVU_PRIV_PF()_CFG[NVF] consecutive 64 KB
+ pages in DRAM. May be used as VF/PF mailbox memory in addition to
+ RVU_PF_VF()_PFVF_MBOX()/RVU_VF_VFPF_MBOX().
+ Provides PCC_EA_ENTRY_S[BASEH,BASEL] value advertised by VF BAR4's entry in
+ PCCPF_XXX_EA_ENTRY(). */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vf_bar4_addr_s cn; */
+};
+typedef union bdk_rvu_pf_vf_bar4_addr bdk_rvu_pf_vf_bar4_addr_t;
+
+#define BDK_RVU_PF_VF_BAR4_ADDR BDK_RVU_PF_VF_BAR4_ADDR_FUNC()
+static inline uint64_t BDK_RVU_PF_VF_BAR4_ADDR_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VF_BAR4_ADDR_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000010ll;
+ __bdk_csr_fatal("RVU_PF_VF_BAR4_ADDR", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VF_BAR4_ADDR bdk_rvu_pf_vf_bar4_addr_t
+#define bustype_BDK_RVU_PF_VF_BAR4_ADDR BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VF_BAR4_ADDR "RVU_PF_VF_BAR4_ADDR"
+#define device_bar_BDK_RVU_PF_VF_BAR4_ADDR 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VF_BAR4_ADDR 0
+#define arguments_BDK_RVU_PF_VF_BAR4_ADDR -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfflr_int#
+ *
+ * RVU PF VF Function Level Reset Interrupt Registers
+ */
+union bdk_rvu_pf_vfflr_intx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfflr_intx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1C/H) FLR interrupt bit per VF (RVU_PF_VFFLR_INT({a})[FLR]\<{b}\> for VF
+ number 64*{a} + {b}).
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, each bit is set along with
+ the corresponding bit in RVU_PF_VFTRPEND() when function level reset is
+ initiated for the associated VF, i.e. a one is written to
+ PCCVF_XXX_E_DEV_CTL[BCR_FLR]. */
+#else /* Word 0 - Little Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1C/H) FLR interrupt bit per VF (RVU_PF_VFFLR_INT({a})[FLR]\<{b}\> for VF
+ number 64*{a} + {b}).
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, each bit is set along with
+ the corresponding bit in RVU_PF_VFTRPEND() when function level reset is
+ initiated for the associated VF, i.e. a one is written to
+ PCCVF_XXX_E_DEV_CTL[BCR_FLR]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfflr_intx_s cn; */
+};
+typedef union bdk_rvu_pf_vfflr_intx bdk_rvu_pf_vfflr_intx_t;
+
+static inline uint64_t BDK_RVU_PF_VFFLR_INTX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFFLR_INTX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000900ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFFLR_INTX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFFLR_INTX(a) bdk_rvu_pf_vfflr_intx_t
+#define bustype_BDK_RVU_PF_VFFLR_INTX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFFLR_INTX(a) "RVU_PF_VFFLR_INTX"
+#define device_bar_BDK_RVU_PF_VFFLR_INTX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFFLR_INTX(a) (a)
+#define arguments_BDK_RVU_PF_VFFLR_INTX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfflr_int_ena_w1c#
+ *
+ * RVU PF VF Function Level Reset Interrupt Enable Clear Registers
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_pf_vfflr_int_ena_w1cx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfflr_int_ena_w1cx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_PF_VFFLR_INT(0..3)[FLR]. */
+#else /* Word 0 - Little Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_PF_VFFLR_INT(0..3)[FLR]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfflr_int_ena_w1cx_s cn; */
+};
+typedef union bdk_rvu_pf_vfflr_int_ena_w1cx bdk_rvu_pf_vfflr_int_ena_w1cx_t;
+
+static inline uint64_t BDK_RVU_PF_VFFLR_INT_ENA_W1CX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFFLR_INT_ENA_W1CX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000960ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFFLR_INT_ENA_W1CX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFFLR_INT_ENA_W1CX(a) bdk_rvu_pf_vfflr_int_ena_w1cx_t
+#define bustype_BDK_RVU_PF_VFFLR_INT_ENA_W1CX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFFLR_INT_ENA_W1CX(a) "RVU_PF_VFFLR_INT_ENA_W1CX"
+#define device_bar_BDK_RVU_PF_VFFLR_INT_ENA_W1CX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFFLR_INT_ENA_W1CX(a) (a)
+#define arguments_BDK_RVU_PF_VFFLR_INT_ENA_W1CX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfflr_int_ena_w1s#
+ *
+ * RVU PF VF Function Level Reset Interrupt Enable Set Registers
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_pf_vfflr_int_ena_w1sx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfflr_int_ena_w1sx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_PF_VFFLR_INT(0..3)[FLR]. */
+#else /* Word 0 - Little Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_PF_VFFLR_INT(0..3)[FLR]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfflr_int_ena_w1sx_s cn; */
+};
+typedef union bdk_rvu_pf_vfflr_int_ena_w1sx bdk_rvu_pf_vfflr_int_ena_w1sx_t;
+
+static inline uint64_t BDK_RVU_PF_VFFLR_INT_ENA_W1SX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFFLR_INT_ENA_W1SX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000940ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFFLR_INT_ENA_W1SX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFFLR_INT_ENA_W1SX(a) bdk_rvu_pf_vfflr_int_ena_w1sx_t
+#define bustype_BDK_RVU_PF_VFFLR_INT_ENA_W1SX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFFLR_INT_ENA_W1SX(a) "RVU_PF_VFFLR_INT_ENA_W1SX"
+#define device_bar_BDK_RVU_PF_VFFLR_INT_ENA_W1SX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFFLR_INT_ENA_W1SX(a) (a)
+#define arguments_BDK_RVU_PF_VFFLR_INT_ENA_W1SX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfflr_int_w1s#
+ *
+ * RVU PF VF Function Level Reset Interrupt Set Registers
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_pf_vfflr_int_w1sx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfflr_int_w1sx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_PF_VFFLR_INT(0..3)[FLR]. */
+#else /* Word 0 - Little Endian */
+ uint64_t flr : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_PF_VFFLR_INT(0..3)[FLR]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfflr_int_w1sx_s cn; */
+};
+typedef union bdk_rvu_pf_vfflr_int_w1sx bdk_rvu_pf_vfflr_int_w1sx_t;
+
+static inline uint64_t BDK_RVU_PF_VFFLR_INT_W1SX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFFLR_INT_W1SX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000920ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFFLR_INT_W1SX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFFLR_INT_W1SX(a) bdk_rvu_pf_vfflr_int_w1sx_t
+#define bustype_BDK_RVU_PF_VFFLR_INT_W1SX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFFLR_INT_W1SX(a) "RVU_PF_VFFLR_INT_W1SX"
+#define device_bar_BDK_RVU_PF_VFFLR_INT_W1SX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFFLR_INT_W1SX(a) (a)
+#define arguments_BDK_RVU_PF_VFFLR_INT_W1SX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfme_int#
+ *
+ * RVU PF VF Bus Master Enable Interrupt Registers
+ */
+union bdk_rvu_pf_vfme_intx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfme_intx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1C/H) Master enable interrupt bit per VF (RVU_PF_VFME_INT({a})[ME]\<{b}\> for VF
+ number 64*{a} + {b}).
+ A device-dependent PF driver typically uses these bits to handle state
+ changes to PCCPF_XXX_CMD[ME], which are typically modified by
+ non-device-dependent software only.
+
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, each bit is set when the
+ corresponding PCCVF_XXX_CMD[ME] bit is either set or cleared for the
+ associated PF. The corresponding bit in RVU_PF_VFME_STATUS() returns the
+ current value of PCCVF_XXX_CMD[ME].
+
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, the corresponding bit in
+ RVU_PF_VFTRPEND() is also set when PCCVF_XXX_CMD[ME] is set, but not
+ when PCCVF_XXX_CMD[ME] is cleared. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1C/H) Master enable interrupt bit per VF (RVU_PF_VFME_INT({a})[ME]\<{b}\> for VF
+ number 64*{a} + {b}).
+ A device-dependent PF driver typically uses these bits to handle state
+ changes to PCCPF_XXX_CMD[ME], which are typically modified by
+ non-device-dependent software only.
+
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, each bit is set when the
+ corresponding PCCVF_XXX_CMD[ME] bit is either set or cleared for the
+ associated PF. The corresponding bit in RVU_PF_VFME_STATUS() returns the
+ current value of PCCVF_XXX_CMD[ME].
+
+ If RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set, the corresponding bit in
+ RVU_PF_VFTRPEND() is also set when PCCVF_XXX_CMD[ME] is set, but not
+ when PCCVF_XXX_CMD[ME] is cleared. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfme_intx_s cn; */
+};
+typedef union bdk_rvu_pf_vfme_intx bdk_rvu_pf_vfme_intx_t;
+
+static inline uint64_t BDK_RVU_PF_VFME_INTX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFME_INTX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000980ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFME_INTX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFME_INTX(a) bdk_rvu_pf_vfme_intx_t
+#define bustype_BDK_RVU_PF_VFME_INTX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFME_INTX(a) "RVU_PF_VFME_INTX"
+#define device_bar_BDK_RVU_PF_VFME_INTX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFME_INTX(a) (a)
+#define arguments_BDK_RVU_PF_VFME_INTX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfme_int_ena_w1c#
+ *
+ * RVU PF VF Bus Master Enable Interrupt Enable Clear Registers
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_pf_vfme_int_ena_w1cx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfme_int_ena_w1cx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_PF_VFME_INT(0..3)[ME]. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_PF_VFME_INT(0..3)[ME]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfme_int_ena_w1cx_s cn; */
+};
+typedef union bdk_rvu_pf_vfme_int_ena_w1cx bdk_rvu_pf_vfme_int_ena_w1cx_t;
+
+static inline uint64_t BDK_RVU_PF_VFME_INT_ENA_W1CX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFME_INT_ENA_W1CX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x8502000009e0ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFME_INT_ENA_W1CX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFME_INT_ENA_W1CX(a) bdk_rvu_pf_vfme_int_ena_w1cx_t
+#define bustype_BDK_RVU_PF_VFME_INT_ENA_W1CX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFME_INT_ENA_W1CX(a) "RVU_PF_VFME_INT_ENA_W1CX"
+#define device_bar_BDK_RVU_PF_VFME_INT_ENA_W1CX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFME_INT_ENA_W1CX(a) (a)
+#define arguments_BDK_RVU_PF_VFME_INT_ENA_W1CX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfme_int_ena_w1s#
+ *
+ * RVU PF VF Bus Master Enable Interrupt Enable Set Registers
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_pf_vfme_int_ena_w1sx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfme_int_ena_w1sx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_PF_VFME_INT(0..3)[ME]. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_PF_VFME_INT(0..3)[ME]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfme_int_ena_w1sx_s cn; */
+};
+typedef union bdk_rvu_pf_vfme_int_ena_w1sx bdk_rvu_pf_vfme_int_ena_w1sx_t;
+
+static inline uint64_t BDK_RVU_PF_VFME_INT_ENA_W1SX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFME_INT_ENA_W1SX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x8502000009c0ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFME_INT_ENA_W1SX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFME_INT_ENA_W1SX(a) bdk_rvu_pf_vfme_int_ena_w1sx_t
+#define bustype_BDK_RVU_PF_VFME_INT_ENA_W1SX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFME_INT_ENA_W1SX(a) "RVU_PF_VFME_INT_ENA_W1SX"
+#define device_bar_BDK_RVU_PF_VFME_INT_ENA_W1SX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFME_INT_ENA_W1SX(a) (a)
+#define arguments_BDK_RVU_PF_VFME_INT_ENA_W1SX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfme_int_w1s#
+ *
+ * RVU PF VF Bus Master Enable Interrupt Set Registers
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_pf_vfme_int_w1sx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfme_int_w1sx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_PF_VFME_INT(0..3)[ME]. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_PF_VFME_INT(0..3)[ME]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfme_int_w1sx_s cn; */
+};
+typedef union bdk_rvu_pf_vfme_int_w1sx bdk_rvu_pf_vfme_int_w1sx_t;
+
+static inline uint64_t BDK_RVU_PF_VFME_INT_W1SX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFME_INT_W1SX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x8502000009a0ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFME_INT_W1SX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFME_INT_W1SX(a) bdk_rvu_pf_vfme_int_w1sx_t
+#define bustype_BDK_RVU_PF_VFME_INT_W1SX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFME_INT_W1SX(a) "RVU_PF_VFME_INT_W1SX"
+#define device_bar_BDK_RVU_PF_VFME_INT_W1SX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFME_INT_W1SX(a) (a)
+#define arguments_BDK_RVU_PF_VFME_INT_W1SX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfme_status#
+ *
+ * RVU PF VF Bus Master Enable Status Registers
+ */
+union bdk_rvu_pf_vfme_statusx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfme_statusx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t me : 64; /**< [ 63: 0](RO/H) Bus master enable bit per VF (RVU_PF_VFME_STATUS({a})[ME]\<{b}\> for VF
+ number 64*{a} + {b}).
+ Each bit returns the VF's PCCVF_XXX_CMD[ME] value. */
+#else /* Word 0 - Little Endian */
+ uint64_t me : 64; /**< [ 63: 0](RO/H) Bus master enable bit per VF (RVU_PF_VFME_STATUS({a})[ME]\<{b}\> for VF
+ number 64*{a} + {b}).
+ Each bit returns the VF's PCCVF_XXX_CMD[ME] value. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfme_statusx_s cn; */
+};
+typedef union bdk_rvu_pf_vfme_statusx bdk_rvu_pf_vfme_statusx_t;
+
+static inline uint64_t BDK_RVU_PF_VFME_STATUSX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFME_STATUSX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000800ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFME_STATUSX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFME_STATUSX(a) bdk_rvu_pf_vfme_statusx_t
+#define bustype_BDK_RVU_PF_VFME_STATUSX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFME_STATUSX(a) "RVU_PF_VFME_STATUSX"
+#define device_bar_BDK_RVU_PF_VFME_STATUSX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFME_STATUSX(a) (a)
+#define arguments_BDK_RVU_PF_VFME_STATUSX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfpf_mbox_int#
+ *
+ * RVU VF to PF Mailbox Interrupt Registers
+ */
+union bdk_rvu_pf_vfpf_mbox_intx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfpf_mbox_intx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1C/H) Mailbox interrupt bit per VF (RVU_PF_VFPF_MBOX_INT({a})[MBOX]\<{b}\> for VF
+ number 64*{a} + {b}).
+ Each bit is set when the VF writes to the corresponding
+ RVU_VF_VFPF_MBOX(1) register. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1C/H) Mailbox interrupt bit per VF (RVU_PF_VFPF_MBOX_INT({a})[MBOX]\<{b}\> for VF
+ number 64*{a} + {b}).
+ Each bit is set when the VF writes to the corresponding
+ RVU_VF_VFPF_MBOX(1) register. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfpf_mbox_intx_s cn; */
+};
+typedef union bdk_rvu_pf_vfpf_mbox_intx bdk_rvu_pf_vfpf_mbox_intx_t;
+
+static inline uint64_t BDK_RVU_PF_VFPF_MBOX_INTX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFPF_MBOX_INTX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000880ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFPF_MBOX_INTX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFPF_MBOX_INTX(a) bdk_rvu_pf_vfpf_mbox_intx_t
+#define bustype_BDK_RVU_PF_VFPF_MBOX_INTX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFPF_MBOX_INTX(a) "RVU_PF_VFPF_MBOX_INTX"
+#define device_bar_BDK_RVU_PF_VFPF_MBOX_INTX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFPF_MBOX_INTX(a) (a)
+#define arguments_BDK_RVU_PF_VFPF_MBOX_INTX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfpf_mbox_int_ena_w1c#
+ *
+ * RVU VF to PF Mailbox Interrupt Enable Clear Registers
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_pf_vfpf_mbox_int_ena_w1cx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfpf_mbox_int_ena_w1cx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_PF_VFPF_MBOX_INT(0..3)[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1C/H) Reads or clears enable for RVU_PF_VFPF_MBOX_INT(0..3)[MBOX]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfpf_mbox_int_ena_w1cx_s cn; */
+};
+typedef union bdk_rvu_pf_vfpf_mbox_int_ena_w1cx bdk_rvu_pf_vfpf_mbox_int_ena_w1cx_t;
+
+static inline uint64_t BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1CX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1CX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x8502000008e0ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFPF_MBOX_INT_ENA_W1CX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1CX(a) bdk_rvu_pf_vfpf_mbox_int_ena_w1cx_t
+#define bustype_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1CX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1CX(a) "RVU_PF_VFPF_MBOX_INT_ENA_W1CX"
+#define device_bar_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1CX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1CX(a) (a)
+#define arguments_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1CX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfpf_mbox_int_ena_w1s#
+ *
+ * RVU VF to PF Mailbox Interrupt Enable Set Registers
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_pf_vfpf_mbox_int_ena_w1sx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfpf_mbox_int_ena_w1sx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_PF_VFPF_MBOX_INT(0..3)[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1S/H) Reads or sets enable for RVU_PF_VFPF_MBOX_INT(0..3)[MBOX]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfpf_mbox_int_ena_w1sx_s cn; */
+};
+typedef union bdk_rvu_pf_vfpf_mbox_int_ena_w1sx bdk_rvu_pf_vfpf_mbox_int_ena_w1sx_t;
+
+static inline uint64_t BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1SX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1SX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x8502000008c0ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFPF_MBOX_INT_ENA_W1SX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1SX(a) bdk_rvu_pf_vfpf_mbox_int_ena_w1sx_t
+#define bustype_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1SX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1SX(a) "RVU_PF_VFPF_MBOX_INT_ENA_W1SX"
+#define device_bar_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1SX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1SX(a) (a)
+#define arguments_BDK_RVU_PF_VFPF_MBOX_INT_ENA_W1SX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vfpf_mbox_int_w1s#
+ *
+ * RVU VF to PF Mailbox Interrupt Set Registers
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_pf_vfpf_mbox_int_w1sx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vfpf_mbox_int_w1sx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_PF_VFPF_MBOX_INT(0..3)[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_PF_VFPF_MBOX_INT(0..3)[MBOX]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vfpf_mbox_int_w1sx_s cn; */
+};
+typedef union bdk_rvu_pf_vfpf_mbox_int_w1sx bdk_rvu_pf_vfpf_mbox_int_w1sx_t;
+
+static inline uint64_t BDK_RVU_PF_VFPF_MBOX_INT_W1SX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFPF_MBOX_INT_W1SX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x8502000008a0ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFPF_MBOX_INT_W1SX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFPF_MBOX_INT_W1SX(a) bdk_rvu_pf_vfpf_mbox_int_w1sx_t
+#define bustype_BDK_RVU_PF_VFPF_MBOX_INT_W1SX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFPF_MBOX_INT_W1SX(a) "RVU_PF_VFPF_MBOX_INT_W1SX"
+#define device_bar_BDK_RVU_PF_VFPF_MBOX_INT_W1SX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFPF_MBOX_INT_W1SX(a) (a)
+#define arguments_BDK_RVU_PF_VFPF_MBOX_INT_W1SX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vftrpend#
+ *
+ * RVU PF VF Transaction Pending Registers
+ */
+union bdk_rvu_pf_vftrpendx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vftrpendx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t trpend : 64; /**< [ 63: 0](R/W1C/H) Transaction pending bit per VF (RVU_PF_VFTRPEND({a})[TRPEND]\<{b}\> for VF
+ number 64*{a} + {b}).
+
+ A VF's bit is set when RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set and:
+ * A one is written to the corresponding PCCVF_XXX_E_DEV_CTL[BCR_FLR], or
+ * PCCVF_XXX_CMD[ME] is set or cleared.
+
+ When a VF's bit is set, forces the corresponding
+ PCCVF_XXX_E_DEV_CTL[TRPEND] to be set.
+
+ Software (typically a device-dependent PF driver) can clear the bit by
+ writing a 1. */
+#else /* Word 0 - Little Endian */
+ uint64_t trpend : 64; /**< [ 63: 0](R/W1C/H) Transaction pending bit per VF (RVU_PF_VFTRPEND({a})[TRPEND]\<{b}\> for VF
+ number 64*{a} + {b}).
+
+ A VF's bit is set when RVU_PRIV_PF()_CFG[ME_FLR_ENA] is set and:
+ * A one is written to the corresponding PCCVF_XXX_E_DEV_CTL[BCR_FLR], or
+ * PCCVF_XXX_CMD[ME] is set or cleared.
+
+ When a VF's bit is set, forces the corresponding
+ PCCVF_XXX_E_DEV_CTL[TRPEND] to be set.
+
+ Software (typically a device-dependent PF driver) can clear the bit by
+ writing a 1. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vftrpendx_s cn; */
+};
+typedef union bdk_rvu_pf_vftrpendx bdk_rvu_pf_vftrpendx_t;
+
+static inline uint64_t BDK_RVU_PF_VFTRPENDX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFTRPENDX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000820ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFTRPENDX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFTRPENDX(a) bdk_rvu_pf_vftrpendx_t
+#define bustype_BDK_RVU_PF_VFTRPENDX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFTRPENDX(a) "RVU_PF_VFTRPENDX"
+#define device_bar_BDK_RVU_PF_VFTRPENDX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFTRPENDX(a) (a)
+#define arguments_BDK_RVU_PF_VFTRPENDX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR2) rvu_pf_vftrpend_w1s#
+ *
+ * RVU PF VF Transaction Pending Set Registers
+ * This register reads or sets bits.
+ */
+union bdk_rvu_pf_vftrpend_w1sx
+{
+ uint64_t u;
+ struct bdk_rvu_pf_vftrpend_w1sx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t trpend : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_PF_VFTRPEND(0..3)[TRPEND]. */
+#else /* Word 0 - Little Endian */
+ uint64_t trpend : 64; /**< [ 63: 0](R/W1S/H) Reads or sets RVU_PF_VFTRPEND(0..3)[TRPEND]. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_pf_vftrpend_w1sx_s cn; */
+};
+typedef union bdk_rvu_pf_vftrpend_w1sx bdk_rvu_pf_vftrpend_w1sx_t;
+
+static inline uint64_t BDK_RVU_PF_VFTRPEND_W1SX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PF_VFTRPEND_W1SX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x850200000840ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RVU_PF_VFTRPEND_W1SX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PF_VFTRPEND_W1SX(a) bdk_rvu_pf_vftrpend_w1sx_t
+#define bustype_BDK_RVU_PF_VFTRPEND_W1SX(a) BDK_CSR_TYPE_RVU_PF_BAR2
+#define basename_BDK_RVU_PF_VFTRPEND_W1SX(a) "RVU_PF_VFTRPEND_W1SX"
+#define device_bar_BDK_RVU_PF_VFTRPEND_W1SX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_PF_VFTRPEND_W1SX(a) (a)
+#define arguments_BDK_RVU_PF_VFTRPEND_W1SX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_active_pc
+ *
+ * RVU Active Program Counter Register
+ */
+union bdk_rvu_priv_active_pc
+{
+ uint64_t u;
+ struct bdk_rvu_priv_active_pc_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t active_pc : 64; /**< [ 63: 0](R/W/H) This register increments on every coprocessor-clock cycle that the RVU conditional clocks
+ are enabled. */
+#else /* Word 0 - Little Endian */
+ uint64_t active_pc : 64; /**< [ 63: 0](R/W/H) This register increments on every coprocessor-clock cycle that the RVU conditional clocks
+ are enabled. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_active_pc_s cn; */
+};
+typedef union bdk_rvu_priv_active_pc bdk_rvu_priv_active_pc_t;
+
+#define BDK_RVU_PRIV_ACTIVE_PC BDK_RVU_PRIV_ACTIVE_PC_FUNC()
+static inline uint64_t BDK_RVU_PRIV_ACTIVE_PC_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_ACTIVE_PC_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850008000030ll;
+ __bdk_csr_fatal("RVU_PRIV_ACTIVE_PC", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_ACTIVE_PC bdk_rvu_priv_active_pc_t
+#define bustype_BDK_RVU_PRIV_ACTIVE_PC BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_ACTIVE_PC "RVU_PRIV_ACTIVE_PC"
+#define device_bar_BDK_RVU_PRIV_ACTIVE_PC 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_ACTIVE_PC 0
+#define arguments_BDK_RVU_PRIV_ACTIVE_PC -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_block_type#_rev
+ *
+ * RVU Privileged Block Type Revision Registers
+ * These registers are used by configuration software to specify the revision ID
+ * of each block type enumerated by RVU_BLOCK_TYPE_E, to assist VF/PF software
+ * discovery.
+ */
+union bdk_rvu_priv_block_typex_rev
+{
+ uint64_t u;
+ struct bdk_rvu_priv_block_typex_rev_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_8_63 : 56;
+ uint64_t rid : 8; /**< [ 7: 0](R/W) Revision ID of the block. This is the read value returned by
+ RVU_VF_BLOCK_ADDR()_DISC[RID]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rid : 8; /**< [ 7: 0](R/W) Revision ID of the block. This is the read value returned by
+ RVU_VF_BLOCK_ADDR()_DISC[RID]. */
+ uint64_t reserved_8_63 : 56;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_block_typex_rev_s cn; */
+};
+typedef union bdk_rvu_priv_block_typex_rev bdk_rvu_priv_block_typex_rev_t;
+
+static inline uint64_t BDK_RVU_PRIV_BLOCK_TYPEX_REV(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_BLOCK_TYPEX_REV(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000400ll + 8ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_BLOCK_TYPEX_REV", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_BLOCK_TYPEX_REV(a) bdk_rvu_priv_block_typex_rev_t
+#define bustype_BDK_RVU_PRIV_BLOCK_TYPEX_REV(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_BLOCK_TYPEX_REV(a) "RVU_PRIV_BLOCK_TYPEX_REV"
+#define device_bar_BDK_RVU_PRIV_BLOCK_TYPEX_REV(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_BLOCK_TYPEX_REV(a) (a)
+#define arguments_BDK_RVU_PRIV_BLOCK_TYPEX_REV(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_clk_cfg
+ *
+ * RVU Privileged General Configuration Register
+ */
+union bdk_rvu_priv_clk_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_clk_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t clk_ena : 1; /**< [ 0: 0](R/W) Force conditional clock to always be enabled. For diagnostic use only. */
+#else /* Word 0 - Little Endian */
+ uint64_t clk_ena : 1; /**< [ 0: 0](R/W) Force conditional clock to always be enabled. For diagnostic use only. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_clk_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_clk_cfg bdk_rvu_priv_clk_cfg_t;
+
+#define BDK_RVU_PRIV_CLK_CFG BDK_RVU_PRIV_CLK_CFG_FUNC()
+static inline uint64_t BDK_RVU_PRIV_CLK_CFG_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_CLK_CFG_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850008000020ll;
+ __bdk_csr_fatal("RVU_PRIV_CLK_CFG", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_CLK_CFG bdk_rvu_priv_clk_cfg_t
+#define bustype_BDK_RVU_PRIV_CLK_CFG BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_CLK_CFG "RVU_PRIV_CLK_CFG"
+#define device_bar_BDK_RVU_PRIV_CLK_CFG 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_CLK_CFG 0
+#define arguments_BDK_RVU_PRIV_CLK_CFG -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_const
+ *
+ * RVU Privileged Constants Register
+ * This register contains constants for software discovery.
+ */
+union bdk_rvu_priv_const
+{
+ uint64_t u;
+ struct bdk_rvu_priv_const_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t max_vfs_per_pf : 8; /**< [ 47: 40](RO) Maximum number of VFs per RVU PF. */
+ uint64_t pfs : 8; /**< [ 39: 32](RO) Number of RVU PFs. */
+ uint64_t hwvfs : 12; /**< [ 31: 20](RO) Number of RVU hardware VFs (HWVFs). */
+ uint64_t max_msix : 20; /**< [ 19: 0](RO) Combined maximum number of MSI-X vectors that may be provisioned to the RVU
+ PFs and VFs. Also the maximum number of 16-byte RVU_MSIX_VEC_S structures
+ in RVU's MSI-X table region in LLC/DRAM. See RVU_PRIV_PF()_MSIX_CFG.
+
+ Internal:
+ Also, size of RVU's internal PBA memory.
+
+ Sized as follows:
+ \<pre\>
+ AP cores 24
+ Vectors per LF:
+ NIX CINT 32
+ NIX QINT 32
+ NIX GINT 1
+ NPA QINT 32
+ NPA GINT 1
+ SSO 1
+ TIM 1
+ CPT 1
+ RVU 1
+ Total per LF: \<128
+ Num LFs 256
+ Total LF vectors \<32K
+ Total AF vectors 64 (budget 16 blocks * 4)
+ Total vectors budget 32K
+ \</pre\> */
+#else /* Word 0 - Little Endian */
+ uint64_t max_msix : 20; /**< [ 19: 0](RO) Combined maximum number of MSI-X vectors that may be provisioned to the RVU
+ PFs and VFs. Also the maximum number of 16-byte RVU_MSIX_VEC_S structures
+ in RVU's MSI-X table region in LLC/DRAM. See RVU_PRIV_PF()_MSIX_CFG.
+
+ Internal:
+ Also, size of RVU's internal PBA memory.
+
+ Sized as follows:
+ \<pre\>
+ AP cores 24
+ Vectors per LF:
+ NIX CINT 32
+ NIX QINT 32
+ NIX GINT 1
+ NPA QINT 32
+ NPA GINT 1
+ SSO 1
+ TIM 1
+ CPT 1
+ RVU 1
+ Total per LF: \<128
+ Num LFs 256
+ Total LF vectors \<32K
+ Total AF vectors 64 (budget 16 blocks * 4)
+ Total vectors budget 32K
+ \</pre\> */
+ uint64_t hwvfs : 12; /**< [ 31: 20](RO) Number of RVU hardware VFs (HWVFs). */
+ uint64_t pfs : 8; /**< [ 39: 32](RO) Number of RVU PFs. */
+ uint64_t max_vfs_per_pf : 8; /**< [ 47: 40](RO) Maximum number of VFs per RVU PF. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_const_s cn; */
+};
+typedef union bdk_rvu_priv_const bdk_rvu_priv_const_t;
+
+#define BDK_RVU_PRIV_CONST BDK_RVU_PRIV_CONST_FUNC()
+static inline uint64_t BDK_RVU_PRIV_CONST_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_CONST_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850008000000ll;
+ __bdk_csr_fatal("RVU_PRIV_CONST", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_CONST bdk_rvu_priv_const_t
+#define bustype_BDK_RVU_PRIV_CONST BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_CONST "RVU_PRIV_CONST"
+#define device_bar_BDK_RVU_PRIV_CONST 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_CONST 0
+#define arguments_BDK_RVU_PRIV_CONST -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_gen_cfg
+ *
+ * RVU Privileged General Configuration Register
+ */
+union bdk_rvu_priv_gen_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_gen_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t lock : 1; /**< [ 0: 0](R/W1S) Lock privileged registers. When set, all privileged registers in RVU and
+ its resource blocks are locked down and cannot be modified. Writing a 1
+ sets this bit; once set, the bit can only be cleared by core reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t lock : 1; /**< [ 0: 0](R/W1S) Lock privileged registers. When set, all privileged registers in RVU and
+ its resource blocks are locked down and cannot be modified. Writing a 1
+ sets this bit; once set, the bit can only be cleared by core reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_gen_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_gen_cfg bdk_rvu_priv_gen_cfg_t;
+
+#define BDK_RVU_PRIV_GEN_CFG BDK_RVU_PRIV_GEN_CFG_FUNC()
+static inline uint64_t BDK_RVU_PRIV_GEN_CFG_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_GEN_CFG_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850008000010ll;
+ __bdk_csr_fatal("RVU_PRIV_GEN_CFG", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_GEN_CFG bdk_rvu_priv_gen_cfg_t
+#define bustype_BDK_RVU_PRIV_GEN_CFG BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_GEN_CFG "RVU_PRIV_GEN_CFG"
+#define device_bar_BDK_RVU_PRIV_GEN_CFG 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_GEN_CFG 0
+#define arguments_BDK_RVU_PRIV_GEN_CFG -1,-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_hwvf#_cpt#_cfg
+ *
+ * RVU Privileged Hardware VF CPT Configuration Registers
+ * Similar to RVU_PRIV_HWVF()_NIX()_CFG, but for CPT({a}) block.
+ */
+union bdk_rvu_priv_hwvfx_cptx_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_hwvfx_cptx_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_hwvfx_cptx_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_hwvfx_cptx_cfg bdk_rvu_priv_hwvfx_cptx_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_HWVFX_CPTX_CFG(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_HWVFX_CPTX_CFG(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=255) && (b==0)))
+ return 0x850008001350ll + 0x10000ll * ((a) & 0xff) + 8ll * ((b) & 0x0);
+ __bdk_csr_fatal("RVU_PRIV_HWVFX_CPTX_CFG", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_HWVFX_CPTX_CFG(a,b) bdk_rvu_priv_hwvfx_cptx_cfg_t
+#define bustype_BDK_RVU_PRIV_HWVFX_CPTX_CFG(a,b) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_HWVFX_CPTX_CFG(a,b) "RVU_PRIV_HWVFX_CPTX_CFG"
+#define device_bar_BDK_RVU_PRIV_HWVFX_CPTX_CFG(a,b) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_HWVFX_CPTX_CFG(a,b) (a)
+#define arguments_BDK_RVU_PRIV_HWVFX_CPTX_CFG(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_hwvf#_int_cfg
+ *
+ * RVU Privileged Hardware VF Interrupt Configuration Registers
+ */
+union bdk_rvu_priv_hwvfx_int_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_hwvfx_int_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_20_63 : 44;
+ uint64_t msix_size : 8; /**< [ 19: 12](RO) Number of interrupt vectors enumerated by RVU_VF_INT_VEC_E. */
+ uint64_t reserved_11 : 1;
+ uint64_t msix_offset : 11; /**< [ 10: 0](R/W) MSI-X offset. Offset of VF interrupt vectors enumerated by RVU_VF_INT_VEC_E
+ in the HWVF's MSI-X table. This is added to each enumerated value to obtain
+ the corresponding MSI-X vector index.
+ The highest enumerated value plus [MSIX_OFFSET] must be less than or equal
+ to RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_SIZEM1]. */
+#else /* Word 0 - Little Endian */
+ uint64_t msix_offset : 11; /**< [ 10: 0](R/W) MSI-X offset. Offset of VF interrupt vectors enumerated by RVU_VF_INT_VEC_E
+ in the HWVF's MSI-X table. This is added to each enumerated value to obtain
+ the corresponding MSI-X vector index.
+ The highest enumerated value plus [MSIX_OFFSET] must be less than or equal
+ to RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_SIZEM1]. */
+ uint64_t reserved_11 : 1;
+ uint64_t msix_size : 8; /**< [ 19: 12](RO) Number of interrupt vectors enumerated by RVU_VF_INT_VEC_E. */
+ uint64_t reserved_20_63 : 44;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_hwvfx_int_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_hwvfx_int_cfg bdk_rvu_priv_hwvfx_int_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_HWVFX_INT_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_HWVFX_INT_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=255))
+ return 0x850008001280ll + 0x10000ll * ((a) & 0xff);
+ __bdk_csr_fatal("RVU_PRIV_HWVFX_INT_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_HWVFX_INT_CFG(a) bdk_rvu_priv_hwvfx_int_cfg_t
+#define bustype_BDK_RVU_PRIV_HWVFX_INT_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_HWVFX_INT_CFG(a) "RVU_PRIV_HWVFX_INT_CFG"
+#define device_bar_BDK_RVU_PRIV_HWVFX_INT_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_HWVFX_INT_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_HWVFX_INT_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_hwvf#_nix#_cfg
+ *
+ * RVU Privileged Hardware VF NIX Configuration Registers
+ * These registers are used to assist VF software discovery. For each HWVF, if the
+ * HWVF is mapped to a VF by RVU_PRIV_PF()_CFG[FIRST_HWVF,NVF], software
+ * writes NIX block's resource configuration for the VF in this register. The VF
+ * driver can read RVU_VF_BLOCK_ADDR()_DISC to discover the configuration.
+ */
+union bdk_rvu_priv_hwvfx_nixx_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_hwvfx_nixx_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t has_lf : 1; /**< [ 0: 0](R/W) Set when an LF from the block is provisioned to the VF, clear otherwise. */
+#else /* Word 0 - Little Endian */
+ uint64_t has_lf : 1; /**< [ 0: 0](R/W) Set when an LF from the block is provisioned to the VF, clear otherwise. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_hwvfx_nixx_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_hwvfx_nixx_cfg bdk_rvu_priv_hwvfx_nixx_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_HWVFX_NIXX_CFG(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_HWVFX_NIXX_CFG(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=255) && (b==0)))
+ return 0x850008001300ll + 0x10000ll * ((a) & 0xff) + 8ll * ((b) & 0x0);
+ __bdk_csr_fatal("RVU_PRIV_HWVFX_NIXX_CFG", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_HWVFX_NIXX_CFG(a,b) bdk_rvu_priv_hwvfx_nixx_cfg_t
+#define bustype_BDK_RVU_PRIV_HWVFX_NIXX_CFG(a,b) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_HWVFX_NIXX_CFG(a,b) "RVU_PRIV_HWVFX_NIXX_CFG"
+#define device_bar_BDK_RVU_PRIV_HWVFX_NIXX_CFG(a,b) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_HWVFX_NIXX_CFG(a,b) (a)
+#define arguments_BDK_RVU_PRIV_HWVFX_NIXX_CFG(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_hwvf#_npa_cfg
+ *
+ * RVU Privileged Hardware VF NPA Configuration Registers
+ * Similar to RVU_PRIV_HWVF()_NIX()_CFG, but for NPA block.
+ */
+union bdk_rvu_priv_hwvfx_npa_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_hwvfx_npa_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t has_lf : 1; /**< [ 0: 0](R/W) Set when an LF from the block is provisioned to the VF, clear otherwise. */
+#else /* Word 0 - Little Endian */
+ uint64_t has_lf : 1; /**< [ 0: 0](R/W) Set when an LF from the block is provisioned to the VF, clear otherwise. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_hwvfx_npa_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_hwvfx_npa_cfg bdk_rvu_priv_hwvfx_npa_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_HWVFX_NPA_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_HWVFX_NPA_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=255))
+ return 0x850008001310ll + 0x10000ll * ((a) & 0xff);
+ __bdk_csr_fatal("RVU_PRIV_HWVFX_NPA_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_HWVFX_NPA_CFG(a) bdk_rvu_priv_hwvfx_npa_cfg_t
+#define bustype_BDK_RVU_PRIV_HWVFX_NPA_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_HWVFX_NPA_CFG(a) "RVU_PRIV_HWVFX_NPA_CFG"
+#define device_bar_BDK_RVU_PRIV_HWVFX_NPA_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_HWVFX_NPA_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_HWVFX_NPA_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_hwvf#_sso_cfg
+ *
+ * RVU Privileged Hardware VF SSO Configuration Registers
+ * Similar to RVU_PRIV_HWVF()_NIX()_CFG, but for SSO block.
+ */
+union bdk_rvu_priv_hwvfx_sso_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_hwvfx_sso_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_hwvfx_sso_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_hwvfx_sso_cfg bdk_rvu_priv_hwvfx_sso_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_HWVFX_SSO_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_HWVFX_SSO_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=255))
+ return 0x850008001320ll + 0x10000ll * ((a) & 0xff);
+ __bdk_csr_fatal("RVU_PRIV_HWVFX_SSO_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_HWVFX_SSO_CFG(a) bdk_rvu_priv_hwvfx_sso_cfg_t
+#define bustype_BDK_RVU_PRIV_HWVFX_SSO_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_HWVFX_SSO_CFG(a) "RVU_PRIV_HWVFX_SSO_CFG"
+#define device_bar_BDK_RVU_PRIV_HWVFX_SSO_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_HWVFX_SSO_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_HWVFX_SSO_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_hwvf#_ssow_cfg
+ *
+ * RVU Privileged Hardware VF SSO Work Slot Configuration Registers
+ * Similar to RVU_PRIV_HWVF()_NIX()_CFG, but for SSOW block.
+ */
+union bdk_rvu_priv_hwvfx_ssow_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_hwvfx_ssow_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_hwvfx_ssow_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_hwvfx_ssow_cfg bdk_rvu_priv_hwvfx_ssow_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_HWVFX_SSOW_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_HWVFX_SSOW_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=255))
+ return 0x850008001330ll + 0x10000ll * ((a) & 0xff);
+ __bdk_csr_fatal("RVU_PRIV_HWVFX_SSOW_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_HWVFX_SSOW_CFG(a) bdk_rvu_priv_hwvfx_ssow_cfg_t
+#define bustype_BDK_RVU_PRIV_HWVFX_SSOW_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_HWVFX_SSOW_CFG(a) "RVU_PRIV_HWVFX_SSOW_CFG"
+#define device_bar_BDK_RVU_PRIV_HWVFX_SSOW_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_HWVFX_SSOW_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_HWVFX_SSOW_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_hwvf#_tim_cfg
+ *
+ * RVU Privileged Hardware VF SSO Work Slot Configuration Registers
+ * Similar to RVU_PRIV_HWVF()_NIX()_CFG, but for TIM block.
+ */
+union bdk_rvu_priv_hwvfx_tim_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_hwvfx_tim_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_hwvfx_tim_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_hwvfx_tim_cfg bdk_rvu_priv_hwvfx_tim_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_HWVFX_TIM_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_HWVFX_TIM_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=255))
+ return 0x850008001340ll + 0x10000ll * ((a) & 0xff);
+ __bdk_csr_fatal("RVU_PRIV_HWVFX_TIM_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_HWVFX_TIM_CFG(a) bdk_rvu_priv_hwvfx_tim_cfg_t
+#define bustype_BDK_RVU_PRIV_HWVFX_TIM_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_HWVFX_TIM_CFG(a) "RVU_PRIV_HWVFX_TIM_CFG"
+#define device_bar_BDK_RVU_PRIV_HWVFX_TIM_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_HWVFX_TIM_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_HWVFX_TIM_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_cfg
+ *
+ * RVU Privileged PF Configuration Registers
+ */
+union bdk_rvu_priv_pfx_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_23_63 : 41;
+ uint64_t me_flr_ena : 1; /**< [ 22: 22](R/W) Bus master enable (ME) and function level reset (FLR) enable. This bit
+ should be set when the PF is configured and associated PF and/or AF drivers
+ that manage VF and/or PF ME/FLR are loaded.
+
+ When clear, PCCPF/PCCVF_XXX_CMD[ME] state changes are ignored, and
+ PCCPF/PCCVF_XXX_E_DEV_CTL[BCR_FLR] reset the PF/VF configuration space and
+ MSI-X tables only.
+
+ When set, hardware updates to the following registers in response to ME/FLR
+ events are additionally enabled:
+ RVU_PF_VFTRPEND(), RVU_PF_VFFLR_INT(), RVU_PF_VFME_INT(),
+ RVU_AF_PFTRPEND, RVU_AF_PFFLR_INT, and RVU_AF_PFFLR_INT. */
+ uint64_t af_ena : 1; /**< [ 21: 21](R/W) Admin function enable. When set, the PF is allowed to access AF
+ (RVU PF BAR0) registers in all RVU blocks. When clear, the PF is not
+ allowed to access AF registers. Must be clear when [ENA] is clear.
+
+ Software should keep this bit set for PF(0) when RVU is used. */
+ uint64_t ena : 1; /**< [ 20: 20](R/W) Enable the PF. When clear, the PF is unused and hidden in the PCI config
+ space, and access to the PF's MSI-X tables in RVU PF/FUNC BAR2 is
+ disabled.
+ When set, the PF is enabled and remaining fields in this register are
+ valid.
+
+ Software should keep this bit set for PF(0) when RVU is used. Hardware
+ delivers all AF interrupts to PF(0). */
+ uint64_t nvf : 8; /**< [ 19: 12](R/W) Number of VFs in the PF. Must be less than or equal to
+ RVU_PRIV_CONST[MAX_VFS_PER_PF]. */
+ uint64_t first_hwvf : 12; /**< [ 11: 0](R/W) HWVF index of the PF's first VF. Valid when [NVF] is non-zero. The HWVF
+ index range for the PF is [FIRST_HWVF] to [FIRST_HWVF]+[NVF]-1, inclusive.
+ Different PFs must have non-overlapping HWVF ranges, and the maximum HWVF
+ index in any range must be less than RVU_PRIV_CONST[HWVFS]. */
+#else /* Word 0 - Little Endian */
+ uint64_t first_hwvf : 12; /**< [ 11: 0](R/W) HWVF index of the PF's first VF. Valid when [NVF] is non-zero. The HWVF
+ index range for the PF is [FIRST_HWVF] to [FIRST_HWVF]+[NVF]-1, inclusive.
+ Different PFs must have non-overlapping HWVF ranges, and the maximum HWVF
+ index in any range must be less than RVU_PRIV_CONST[HWVFS]. */
+ uint64_t nvf : 8; /**< [ 19: 12](R/W) Number of VFs in the PF. Must be less than or equal to
+ RVU_PRIV_CONST[MAX_VFS_PER_PF]. */
+ uint64_t ena : 1; /**< [ 20: 20](R/W) Enable the PF. When clear, the PF is unused and hidden in the PCI config
+ space, and access to the PF's MSI-X tables in RVU PF/FUNC BAR2 is
+ disabled.
+ When set, the PF is enabled and remaining fields in this register are
+ valid.
+
+ Software should keep this bit set for PF(0) when RVU is used. Hardware
+ delivers all AF interrupts to PF(0). */
+ uint64_t af_ena : 1; /**< [ 21: 21](R/W) Admin function enable. When set, the PF is allowed to access AF
+ (RVU PF BAR0) registers in all RVU blocks. When clear, the PF is not
+ allowed to access AF registers. Must be clear when [ENA] is clear.
+
+ Software should keep this bit set for PF(0) when RVU is used. */
+ uint64_t me_flr_ena : 1; /**< [ 22: 22](R/W) Bus master enable (ME) and function level reset (FLR) enable. This bit
+ should be set when the PF is configured and associated PF and/or AF drivers
+ that manage VF and/or PF ME/FLR are loaded.
+
+ When clear, PCCPF/PCCVF_XXX_CMD[ME] state changes are ignored, and
+ PCCPF/PCCVF_XXX_E_DEV_CTL[BCR_FLR] reset the PF/VF configuration space and
+ MSI-X tables only.
+
+ When set, hardware updates to the following registers in response to ME/FLR
+ events are additionally enabled:
+ RVU_PF_VFTRPEND(), RVU_PF_VFFLR_INT(), RVU_PF_VFME_INT(),
+ RVU_AF_PFTRPEND, RVU_AF_PFFLR_INT, and RVU_AF_PFFLR_INT. */
+ uint64_t reserved_23_63 : 41;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_cfg bdk_rvu_priv_pfx_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000100ll + 0x10000ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_PFX_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_CFG(a) bdk_rvu_priv_pfx_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_CFG(a) "RVU_PRIV_PFX_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_PFX_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_cpt#_cfg
+ *
+ * RVU Privileged PF CPT Configuration Registers
+ * Similar to RVU_PRIV_PF()_NIX()_CFG, but for CPT({a}) block.
+ */
+union bdk_rvu_priv_pfx_cptx_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_cptx_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_cptx_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_cptx_cfg bdk_rvu_priv_pfx_cptx_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_CPTX_CFG(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_CPTX_CFG(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=15) && (b==0)))
+ return 0x850008000350ll + 0x10000ll * ((a) & 0xf) + 8ll * ((b) & 0x0);
+ __bdk_csr_fatal("RVU_PRIV_PFX_CPTX_CFG", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_CPTX_CFG(a,b) bdk_rvu_priv_pfx_cptx_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_CPTX_CFG(a,b) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_CPTX_CFG(a,b) "RVU_PRIV_PFX_CPTX_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_CPTX_CFG(a,b) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_CPTX_CFG(a,b) (a)
+#define arguments_BDK_RVU_PRIV_PFX_CPTX_CFG(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_id_cfg
+ *
+ * RVU Privileged PF ID Configuration Registers
+ */
+union bdk_rvu_priv_pfx_id_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_id_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_40_63 : 24;
+ uint64_t class_code : 24; /**< [ 39: 16](R/W) Class code to be presented in PCCPF_XXX_REV[BCC,SC,PI] and
+ PCCVF_XXX_REV[BCC,SC,PI]. Format specified by PCC_CLASS_CODE_S.
+ Resets to PCC_DEV_IDL_E::RVU's class code. */
+ uint64_t vf_devid : 8; /**< [ 15: 8](R/W) Lower bits of VF device ID to be presented in PCCPF_XXX_SRIOV_DEV[VFDEV]\<7:0\>.
+ Resets to PCC_DEV_IDL_E::RVU_VF. */
+ uint64_t pf_devid : 8; /**< [ 7: 0](R/W) Lower bits of PF device ID to be presented in PCCPF_XXX_ID[DEVID]\<7:0\>.
+ Resets to PCC_DEV_IDL_E::RVU_AF for PF(0), PCC_DEV_IDL_E::RVU for other
+ PFs. */
+#else /* Word 0 - Little Endian */
+ uint64_t pf_devid : 8; /**< [ 7: 0](R/W) Lower bits of PF device ID to be presented in PCCPF_XXX_ID[DEVID]\<7:0\>.
+ Resets to PCC_DEV_IDL_E::RVU_AF for PF(0), PCC_DEV_IDL_E::RVU for other
+ PFs. */
+ uint64_t vf_devid : 8; /**< [ 15: 8](R/W) Lower bits of VF device ID to be presented in PCCPF_XXX_SRIOV_DEV[VFDEV]\<7:0\>.
+ Resets to PCC_DEV_IDL_E::RVU_VF. */
+ uint64_t class_code : 24; /**< [ 39: 16](R/W) Class code to be presented in PCCPF_XXX_REV[BCC,SC,PI] and
+ PCCVF_XXX_REV[BCC,SC,PI]. Format specified by PCC_CLASS_CODE_S.
+ Resets to PCC_DEV_IDL_E::RVU's class code. */
+ uint64_t reserved_40_63 : 24;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_id_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_id_cfg bdk_rvu_priv_pfx_id_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_ID_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_ID_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000120ll + 0x10000ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_PFX_ID_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_ID_CFG(a) bdk_rvu_priv_pfx_id_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_ID_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_ID_CFG(a) "RVU_PRIV_PFX_ID_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_ID_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_ID_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_PFX_ID_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_int_cfg
+ *
+ * RVU Privileged PF Interrupt Configuration Registers
+ */
+union bdk_rvu_priv_pfx_int_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_int_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_20_63 : 44;
+ uint64_t msix_size : 8; /**< [ 19: 12](RO) Number of interrupt vectors enumerated by RVU_PF_INT_VEC_E. */
+ uint64_t reserved_11 : 1;
+ uint64_t msix_offset : 11; /**< [ 10: 0](R/W) MSI-X offset. Offset of PF interrupt vectors enumerated by RVU_PF_INT_VEC_E
+ in the PF's MSI-X table. This is added to each enumerated value to obtain
+ the corresponding MSI-X vector index.
+ The highest enumerated value plus [MSIX_OFFSET] must be less than or equal
+ to RVU_PRIV_PF()_MSIX_CFG[PF_MSIXT_SIZEM1].
+
+ Note that the AF interrupt vectors enumerated by RVU_AF_INT_VEC_E have a
+ fixed starting offset of 0 in RVU PF(0)'s MSI-X table. Other PF
+ interrupt vectors should not be mapped at the offsets used by RVU_AF_INT_VEC_E. */
+#else /* Word 0 - Little Endian */
+ uint64_t msix_offset : 11; /**< [ 10: 0](R/W) MSI-X offset. Offset of PF interrupt vectors enumerated by RVU_PF_INT_VEC_E
+ in the PF's MSI-X table. This is added to each enumerated value to obtain
+ the corresponding MSI-X vector index.
+ The highest enumerated value plus [MSIX_OFFSET] must be less than or equal
+ to RVU_PRIV_PF()_MSIX_CFG[PF_MSIXT_SIZEM1].
+
+ Note that the AF interrupt vectors enumerated by RVU_AF_INT_VEC_E have a
+ fixed starting offset of 0 in RVU PF(0)'s MSI-X table. Other PF
+ interrupt vectors should not be mapped at the offsets used by RVU_AF_INT_VEC_E. */
+ uint64_t reserved_11 : 1;
+ uint64_t msix_size : 8; /**< [ 19: 12](RO) Number of interrupt vectors enumerated by RVU_PF_INT_VEC_E. */
+ uint64_t reserved_20_63 : 44;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_int_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_int_cfg bdk_rvu_priv_pfx_int_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_INT_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_INT_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000200ll + 0x10000ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_PFX_INT_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_INT_CFG(a) bdk_rvu_priv_pfx_int_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_INT_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_INT_CFG(a) "RVU_PRIV_PFX_INT_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_INT_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_INT_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_PFX_INT_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_msix_cfg
+ *
+ * RVU Privileged PF MSI-X Configuration Registers
+ * These registers specify MSI-X table sizes and locations for RVU PFs and
+ * associated VFs. Hardware maintains all RVU MSI-X tables in a contiguous memory
+ * region in LLC/DRAM called the MSI-X table region. The table region's base IOVA
+ * is specified by RVU_AF_MSIXTR_BASE, and its size as a multiple of
+ * 16-byte RVU_MSIX_VEC_S structures must be less than or equal to
+ * RVU_PRIV_CONST[MAX_MSIX].
+ *
+ * A PF's MSI-X table consists of the following range of RVU_MSIX_VEC_S structures
+ * in the table region:
+ * * First index: [PF_MSIXT_OFFSET].
+ * * Last index: [PF_MSIXT_OFFSET] + [PF_MSIXT_SIZEM1].
+ *
+ * If a PF has enabled VFs (associated RVU_PRIV_PF()_CFG[NVF] is nonzero),
+ * then each VF's MSI-X table consumes the following range of RVU_MSIX_VEC_S structures:
+ * * First index: [VF_MSIXT_OFFSET] + N*([VF_MSIXT_SIZEM1] + 1).
+ * * Last index: [VF_MSIXT_OFFSET] + N*([VF_MSIXT_SIZEM1] + 1) + [VF_MSIXT_SIZEM1].
+ *
+ * N=0 for the first VF, N=1 for the second VF, etc.
+ *
+ * Different PFs and VFs must have non-overlapping vector ranges, and the last
+ * index of any range must be less than RVU_PRIV_CONST[MAX_MSIX].
+ */
+union bdk_rvu_priv_pfx_msix_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_msix_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t pf_msixt_offset : 20; /**< [ 63: 44](R/W) Starting offset of PF's MSI-X table in the RVU MSI-X table region.
+ Internal:
+ Also, bit offset of the PF's PBA table in RVU's internal PBA memory. */
+ uint64_t pf_msixt_sizem1 : 12; /**< [ 43: 32](R/W) PF's MSI-X table size (number of MSI-X vectors) minus one. */
+ uint64_t vf_msixt_offset : 20; /**< [ 31: 12](R/W) Starting offset of first VF's MSI-X table in the RVU MSI-X table region.
+ Valid when RVU_PRIV_PF()_CFG[NVF] is nonzero.
+
+ Internal:
+ Also, bit offset of the first VF's PBA table in RVU's internal PBA memory. */
+ uint64_t vf_msixt_sizem1 : 12; /**< [ 11: 0](R/W) Each VF's MSI-X table size (number of MSI-X vectors) minus one.
+ Valid when RVU_PRIV_PF()_CFG[NVF] is nonzero. */
+#else /* Word 0 - Little Endian */
+ uint64_t vf_msixt_sizem1 : 12; /**< [ 11: 0](R/W) Each VF's MSI-X table size (number of MSI-X vectors) minus one.
+ Valid when RVU_PRIV_PF()_CFG[NVF] is nonzero. */
+ uint64_t vf_msixt_offset : 20; /**< [ 31: 12](R/W) Starting offset of first VF's MSI-X table in the RVU MSI-X table region.
+ Valid when RVU_PRIV_PF()_CFG[NVF] is nonzero.
+
+ Internal:
+ Also, bit offset of the first VF's PBA table in RVU's internal PBA memory. */
+ uint64_t pf_msixt_sizem1 : 12; /**< [ 43: 32](R/W) PF's MSI-X table size (number of MSI-X vectors) minus one. */
+ uint64_t pf_msixt_offset : 20; /**< [ 63: 44](R/W) Starting offset of PF's MSI-X table in the RVU MSI-X table region.
+ Internal:
+ Also, bit offset of the PF's PBA table in RVU's internal PBA memory. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_msix_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_msix_cfg bdk_rvu_priv_pfx_msix_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_MSIX_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_MSIX_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000110ll + 0x10000ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_PFX_MSIX_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_MSIX_CFG(a) bdk_rvu_priv_pfx_msix_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_MSIX_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_MSIX_CFG(a) "RVU_PRIV_PFX_MSIX_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_MSIX_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_MSIX_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_PFX_MSIX_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_nix#_cfg
+ *
+ * RVU Privileged PF NIX Configuration Registers
+ * These registers are used to assist PF software discovery. For each enabled RVU
+ * PF, software writes the block's resource configuration for the PF in this
+ * register. The PF driver can read RVU_PF_BLOCK_ADDR()_DISC to discover the
+ * configuration.
+ */
+union bdk_rvu_priv_pfx_nixx_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_nixx_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t has_lf : 1; /**< [ 0: 0](R/W) Set when an LF from the block is provisioned to the VF, clear otherwise. */
+#else /* Word 0 - Little Endian */
+ uint64_t has_lf : 1; /**< [ 0: 0](R/W) Set when an LF from the block is provisioned to the VF, clear otherwise. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_nixx_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_nixx_cfg bdk_rvu_priv_pfx_nixx_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_NIXX_CFG(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_NIXX_CFG(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=15) && (b==0)))
+ return 0x850008000300ll + 0x10000ll * ((a) & 0xf) + 8ll * ((b) & 0x0);
+ __bdk_csr_fatal("RVU_PRIV_PFX_NIXX_CFG", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_NIXX_CFG(a,b) bdk_rvu_priv_pfx_nixx_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_NIXX_CFG(a,b) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_NIXX_CFG(a,b) "RVU_PRIV_PFX_NIXX_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_NIXX_CFG(a,b) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_NIXX_CFG(a,b) (a)
+#define arguments_BDK_RVU_PRIV_PFX_NIXX_CFG(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_npa_cfg
+ *
+ * RVU Privileged PF NPA Configuration Registers
+ * Similar to RVU_PRIV_PF()_NIX()_CFG, but for NPA block.
+ */
+union bdk_rvu_priv_pfx_npa_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_npa_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t has_lf : 1; /**< [ 0: 0](R/W) Set when an LF from the block is provisioned to the VF, clear otherwise. */
+#else /* Word 0 - Little Endian */
+ uint64_t has_lf : 1; /**< [ 0: 0](R/W) Set when an LF from the block is provisioned to the VF, clear otherwise. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_npa_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_npa_cfg bdk_rvu_priv_pfx_npa_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_NPA_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_NPA_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000310ll + 0x10000ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_PFX_NPA_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_NPA_CFG(a) bdk_rvu_priv_pfx_npa_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_NPA_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_NPA_CFG(a) "RVU_PRIV_PFX_NPA_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_NPA_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_NPA_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_PFX_NPA_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_sso_cfg
+ *
+ * RVU Privileged PF SSO Configuration Registers
+ * Similar to RVU_PRIV_PF()_NIX()_CFG, but for SSO block.
+ */
+union bdk_rvu_priv_pfx_sso_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_sso_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_sso_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_sso_cfg bdk_rvu_priv_pfx_sso_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_SSO_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_SSO_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000320ll + 0x10000ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_PFX_SSO_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_SSO_CFG(a) bdk_rvu_priv_pfx_sso_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_SSO_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_SSO_CFG(a) "RVU_PRIV_PFX_SSO_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_SSO_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_SSO_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_PFX_SSO_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_ssow_cfg
+ *
+ * RVU Privileged PF SSO Work Slot Configuration Registers
+ * Similar to RVU_PRIV_PF()_NIX()_CFG, but for SSOW block.
+ */
+union bdk_rvu_priv_pfx_ssow_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_ssow_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_ssow_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_ssow_cfg bdk_rvu_priv_pfx_ssow_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_SSOW_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_SSOW_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000330ll + 0x10000ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_PFX_SSOW_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_SSOW_CFG(a) bdk_rvu_priv_pfx_ssow_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_SSOW_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_SSOW_CFG(a) "RVU_PRIV_PFX_SSOW_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_SSOW_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_SSOW_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_PFX_SSOW_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_PF_BAR0) rvu_priv_pf#_tim_cfg
+ *
+ * RVU Privileged PF SSO Work Slot Configuration Registers
+ * Similar to RVU_PRIV_PF()_NIX()_CFG, but for TIM block.
+ */
+union bdk_rvu_priv_pfx_tim_cfg
+{
+ uint64_t u;
+ struct bdk_rvu_priv_pfx_tim_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](R/W) Number of LFs from the block that are provisioned to the PF/VF. When non-zero,
+ the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in the the block. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_priv_pfx_tim_cfg_s cn; */
+};
+typedef union bdk_rvu_priv_pfx_tim_cfg bdk_rvu_priv_pfx_tim_cfg_t;
+
+static inline uint64_t BDK_RVU_PRIV_PFX_TIM_CFG(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_PRIV_PFX_TIM_CFG(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=15))
+ return 0x850008000340ll + 0x10000ll * ((a) & 0xf);
+ __bdk_csr_fatal("RVU_PRIV_PFX_TIM_CFG", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_PRIV_PFX_TIM_CFG(a) bdk_rvu_priv_pfx_tim_cfg_t
+#define bustype_BDK_RVU_PRIV_PFX_TIM_CFG(a) BDK_CSR_TYPE_RVU_PF_BAR0
+#define basename_BDK_RVU_PRIV_PFX_TIM_CFG(a) "RVU_PRIV_PFX_TIM_CFG"
+#define device_bar_BDK_RVU_PRIV_PFX_TIM_CFG(a) 0x0 /* BAR0 */
+#define busnum_BDK_RVU_PRIV_PFX_TIM_CFG(a) (a)
+#define arguments_BDK_RVU_PRIV_PFX_TIM_CFG(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_block_addr#_disc
+ *
+ * RVU VF Block Address Discovery Registers
+ * These registers allow each VF driver to discover block resources that are
+ * provisioned to its VF. The register's block address index is enumerated by
+ * RVU_BLOCK_ADDR_E.
+ */
+union bdk_rvu_vf_block_addrx_disc
+{
+ uint64_t u;
+ struct bdk_rvu_vf_block_addrx_disc_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_28_63 : 36;
+ uint64_t btype : 8; /**< [ 27: 20](RO/H) Block type enumerated by RVU_BLOCK_TYPE_E. */
+ uint64_t rid : 8; /**< [ 19: 12](RO/H) Revision ID of the block from RVU_PRIV_BLOCK_TYPE()_REV[RID]. */
+ uint64_t imp : 1; /**< [ 11: 11](RO/H) Implemented. When set, a block is present at this block address index as
+ enumerated by RVU_BLOCK_ADDR_E. When clear, a block is not present and the
+ remaining fields in the register are RAZ.
+
+ Internal:
+ Returns zero if the block is implemented but fused out. */
+ uint64_t reserved_9_10 : 2;
+ uint64_t num_lfs : 9; /**< [ 8: 0](RO/H) Number of local functions from the block that are provisioned to the VF/PF.
+ When non-zero, the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in
+ the the block.
+ Returns 0 for block types that do not have local functions, 0 or 1 for
+ single-slot blocks; see RVU_BLOCK_TYPE_E. */
+#else /* Word 0 - Little Endian */
+ uint64_t num_lfs : 9; /**< [ 8: 0](RO/H) Number of local functions from the block that are provisioned to the VF/PF.
+ When non-zero, the provisioned LFs are mapped to slots 0 to [NUM_LFS]-1 in
+ the the block.
+ Returns 0 for block types that do not have local functions, 0 or 1 for
+ single-slot blocks; see RVU_BLOCK_TYPE_E. */
+ uint64_t reserved_9_10 : 2;
+ uint64_t imp : 1; /**< [ 11: 11](RO/H) Implemented. When set, a block is present at this block address index as
+ enumerated by RVU_BLOCK_ADDR_E. When clear, a block is not present and the
+ remaining fields in the register are RAZ.
+
+ Internal:
+ Returns zero if the block is implemented but fused out. */
+ uint64_t rid : 8; /**< [ 19: 12](RO/H) Revision ID of the block from RVU_PRIV_BLOCK_TYPE()_REV[RID]. */
+ uint64_t btype : 8; /**< [ 27: 20](RO/H) Block type enumerated by RVU_BLOCK_TYPE_E. */
+ uint64_t reserved_28_63 : 36;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_block_addrx_disc_s cn; */
+};
+typedef union bdk_rvu_vf_block_addrx_disc bdk_rvu_vf_block_addrx_disc_t;
+
+static inline uint64_t BDK_RVU_VF_BLOCK_ADDRX_DISC(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_BLOCK_ADDRX_DISC(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=31))
+ return 0x850200000200ll + 8ll * ((a) & 0x1f);
+ __bdk_csr_fatal("RVU_VF_BLOCK_ADDRX_DISC", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_BLOCK_ADDRX_DISC(a) bdk_rvu_vf_block_addrx_disc_t
+#define bustype_BDK_RVU_VF_BLOCK_ADDRX_DISC(a) BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_BLOCK_ADDRX_DISC(a) "RVU_VF_BLOCK_ADDRX_DISC"
+#define device_bar_BDK_RVU_VF_BLOCK_ADDRX_DISC(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_BLOCK_ADDRX_DISC(a) (a)
+#define arguments_BDK_RVU_VF_BLOCK_ADDRX_DISC(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_int
+ *
+ * RVU VF Interrupt Registers
+ */
+union bdk_rvu_vf_int
+{
+ uint64_t u;
+ struct bdk_rvu_vf_int_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1C/H) PF to VF mailbox interrupt. Set when RVU_PF_VF()_PFVF_MBOX(0) is written. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1C/H) PF to VF mailbox interrupt. Set when RVU_PF_VF()_PFVF_MBOX(0) is written. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_int_s cn; */
+};
+typedef union bdk_rvu_vf_int bdk_rvu_vf_int_t;
+
+#define BDK_RVU_VF_INT BDK_RVU_VF_INT_FUNC()
+static inline uint64_t BDK_RVU_VF_INT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_INT_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000020ll;
+ __bdk_csr_fatal("RVU_VF_INT", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_INT bdk_rvu_vf_int_t
+#define bustype_BDK_RVU_VF_INT BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_INT "RVU_VF_INT"
+#define device_bar_BDK_RVU_VF_INT 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_INT 0
+#define arguments_BDK_RVU_VF_INT -1,-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_int_ena_w1c
+ *
+ * RVU VF Interrupt Enable Clear Register
+ * This register clears interrupt enable bits.
+ */
+union bdk_rvu_vf_int_ena_w1c
+{
+ uint64_t u;
+ struct bdk_rvu_vf_int_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for RVU_VF_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for RVU_VF_INT[MBOX]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_int_ena_w1c_s cn; */
+};
+typedef union bdk_rvu_vf_int_ena_w1c bdk_rvu_vf_int_ena_w1c_t;
+
+#define BDK_RVU_VF_INT_ENA_W1C BDK_RVU_VF_INT_ENA_W1C_FUNC()
+static inline uint64_t BDK_RVU_VF_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_INT_ENA_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000038ll;
+ __bdk_csr_fatal("RVU_VF_INT_ENA_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_INT_ENA_W1C bdk_rvu_vf_int_ena_w1c_t
+#define bustype_BDK_RVU_VF_INT_ENA_W1C BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_INT_ENA_W1C "RVU_VF_INT_ENA_W1C"
+#define device_bar_BDK_RVU_VF_INT_ENA_W1C 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_INT_ENA_W1C 0
+#define arguments_BDK_RVU_VF_INT_ENA_W1C -1,-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_int_ena_w1s
+ *
+ * RVU VF Interrupt Enable Set Register
+ * This register sets interrupt enable bits.
+ */
+union bdk_rvu_vf_int_ena_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_vf_int_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for RVU_VF_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for RVU_VF_INT[MBOX]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_int_ena_w1s_s cn; */
+};
+typedef union bdk_rvu_vf_int_ena_w1s bdk_rvu_vf_int_ena_w1s_t;
+
+#define BDK_RVU_VF_INT_ENA_W1S BDK_RVU_VF_INT_ENA_W1S_FUNC()
+static inline uint64_t BDK_RVU_VF_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_INT_ENA_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000030ll;
+ __bdk_csr_fatal("RVU_VF_INT_ENA_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_INT_ENA_W1S bdk_rvu_vf_int_ena_w1s_t
+#define bustype_BDK_RVU_VF_INT_ENA_W1S BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_INT_ENA_W1S "RVU_VF_INT_ENA_W1S"
+#define device_bar_BDK_RVU_VF_INT_ENA_W1S 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_INT_ENA_W1S 0
+#define arguments_BDK_RVU_VF_INT_ENA_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_int_w1s
+ *
+ * RVU VF Interrupt Set Register
+ * This register sets interrupt bits.
+ */
+union bdk_rvu_vf_int_w1s
+{
+ uint64_t u;
+ struct bdk_rvu_vf_int_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1S/H) Reads or sets RVU_VF_INT[MBOX]. */
+#else /* Word 0 - Little Endian */
+ uint64_t mbox : 1; /**< [ 0: 0](R/W1S/H) Reads or sets RVU_VF_INT[MBOX]. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_int_w1s_s cn; */
+};
+typedef union bdk_rvu_vf_int_w1s bdk_rvu_vf_int_w1s_t;
+
+#define BDK_RVU_VF_INT_W1S BDK_RVU_VF_INT_W1S_FUNC()
+static inline uint64_t BDK_RVU_VF_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_INT_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x850200000028ll;
+ __bdk_csr_fatal("RVU_VF_INT_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_INT_W1S bdk_rvu_vf_int_w1s_t
+#define bustype_BDK_RVU_VF_INT_W1S BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_INT_W1S "RVU_VF_INT_W1S"
+#define device_bar_BDK_RVU_VF_INT_W1S 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_INT_W1S 0
+#define arguments_BDK_RVU_VF_INT_W1S -1,-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_msix_pba#
+ *
+ * RVU VF MSI-X Pending-Bit-Array Registers
+ * This register is the MSI-X VF PBA table.
+ */
+union bdk_rvu_vf_msix_pbax
+{
+ uint64_t u;
+ struct bdk_rvu_vf_msix_pbax_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message bit for each MSI-X vector, i.e. one bit per
+ RVU_VF_MSIX_VEC()_CTL register.
+ The total number of bits for a given VF (and thus the number of PBA
+ registers) is determined by RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_SIZEM1]
+ (plus 1). */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message bit for each MSI-X vector, i.e. one bit per
+ RVU_VF_MSIX_VEC()_CTL register.
+ The total number of bits for a given VF (and thus the number of PBA
+ registers) is determined by RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_SIZEM1]
+ (plus 1). */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_msix_pbax_s cn; */
+};
+typedef union bdk_rvu_vf_msix_pbax bdk_rvu_vf_msix_pbax_t;
+
+static inline uint64_t BDK_RVU_VF_MSIX_PBAX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_MSIX_PBAX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a==0))
+ return 0x8502002f0000ll + 8ll * ((a) & 0x0);
+ __bdk_csr_fatal("RVU_VF_MSIX_PBAX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_MSIX_PBAX(a) bdk_rvu_vf_msix_pbax_t
+#define bustype_BDK_RVU_VF_MSIX_PBAX(a) BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_MSIX_PBAX(a) "RVU_VF_MSIX_PBAX"
+#define device_bar_BDK_RVU_VF_MSIX_PBAX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_MSIX_PBAX(a) (a)
+#define arguments_BDK_RVU_VF_MSIX_PBAX(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_msix_vec#_addr
+ *
+ * RVU VF MSI-X Vector-Table Address Registers
+ * These registers and RVU_VF_MSIX_VEC()_CTL form the VF MSI-X vector table.
+ * The number of MSI-X vectors for a given VF is specified by
+ * RVU_PRIV_PF()_MSIX_CFG[VF_MSIXT_SIZEM1] (plus 1).
+ *
+ * Internal:
+ * VF vector count of 128 allows up to that number to be provisioned to the VF
+ * from LF resources of various blocks.
+ */
+union bdk_rvu_vf_msix_vecx_addr
+{
+ uint64_t u;
+ struct bdk_rvu_vf_msix_vecx_addr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_53_63 : 11;
+ uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
+ uint64_t reserved_1 : 1;
+ uint64_t secvec : 1; /**< [ 0: 0](RAZ) Secure vector. Zero as not supported for RVU vectors. */
+#else /* Word 0 - Little Endian */
+ uint64_t secvec : 1; /**< [ 0: 0](RAZ) Secure vector. Zero as not supported for RVU vectors. */
+ uint64_t reserved_1 : 1;
+ uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
+ uint64_t reserved_53_63 : 11;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_msix_vecx_addr_s cn; */
+};
+typedef union bdk_rvu_vf_msix_vecx_addr bdk_rvu_vf_msix_vecx_addr_t;
+
+static inline uint64_t BDK_RVU_VF_MSIX_VECX_ADDR(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_MSIX_VECX_ADDR(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a==0))
+ return 0x850200200000ll + 0x10ll * ((a) & 0x0);
+ __bdk_csr_fatal("RVU_VF_MSIX_VECX_ADDR", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_MSIX_VECX_ADDR(a) bdk_rvu_vf_msix_vecx_addr_t
+#define bustype_BDK_RVU_VF_MSIX_VECX_ADDR(a) BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_MSIX_VECX_ADDR(a) "RVU_VF_MSIX_VECX_ADDR"
+#define device_bar_BDK_RVU_VF_MSIX_VECX_ADDR(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_MSIX_VECX_ADDR(a) (a)
+#define arguments_BDK_RVU_VF_MSIX_VECX_ADDR(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_msix_vec#_ctl
+ *
+ * RVU VF MSI-X Vector-Table Control and Data Registers
+ * These registers and RVU_VF_MSIX_VEC()_ADDR form the VF MSI-X vector table.
+ */
+union bdk_rvu_vf_msix_vecx_ctl
+{
+ uint64_t u;
+ struct bdk_rvu_vf_msix_vecx_ctl_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_33_63 : 31;
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector. */
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t reserved_33_63 : 31;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_msix_vecx_ctl_s cn; */
+};
+typedef union bdk_rvu_vf_msix_vecx_ctl bdk_rvu_vf_msix_vecx_ctl_t;
+
+static inline uint64_t BDK_RVU_VF_MSIX_VECX_CTL(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_MSIX_VECX_CTL(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a==0))
+ return 0x850200200008ll + 0x10ll * ((a) & 0x0);
+ __bdk_csr_fatal("RVU_VF_MSIX_VECX_CTL", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_MSIX_VECX_CTL(a) bdk_rvu_vf_msix_vecx_ctl_t
+#define bustype_BDK_RVU_VF_MSIX_VECX_CTL(a) BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_MSIX_VECX_CTL(a) "RVU_VF_MSIX_VECX_CTL"
+#define device_bar_BDK_RVU_VF_MSIX_VECX_CTL(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_MSIX_VECX_CTL(a) (a)
+#define arguments_BDK_RVU_VF_MSIX_VECX_CTL(a) (a),-1,-1,-1
+
+/**
+ * Register (RVU_VF_BAR2) rvu_vf_vfpf_mbox#
+ *
+ * RVU VF/PF Mailbox Registers
+ */
+union bdk_rvu_vf_vfpf_mboxx
+{
+ uint64_t u;
+ struct bdk_rvu_vf_vfpf_mboxx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W/H) Mailbox data. These VF registers access the 16-byte-per-VF VF/PF mailbox
+ RAM. The PF may access the same storage using RVU_PF_VF()_PFVF_MBOX().
+ MBOX(0) is typically used for PF to VF signaling, MBOX(1) for VF to PF.
+ Writing RVU_VF_VFPF_MBOX(1) (but not RVU_PF_VF()_PFVF_MBOX(1))
+ will set the corresponding RVU_PF_VFPF_MBOX_INT() bit, which if appropriately
+ enabled will send an interrupt to the PF. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W/H) Mailbox data. These VF registers access the 16-byte-per-VF VF/PF mailbox
+ RAM. The PF may access the same storage using RVU_PF_VF()_PFVF_MBOX().
+ MBOX(0) is typically used for PF to VF signaling, MBOX(1) for VF to PF.
+ Writing RVU_VF_VFPF_MBOX(1) (but not RVU_PF_VF()_PFVF_MBOX(1))
+ will set the corresponding RVU_PF_VFPF_MBOX_INT() bit, which if appropriately
+ enabled will send an interrupt to the PF. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rvu_vf_vfpf_mboxx_s cn; */
+};
+typedef union bdk_rvu_vf_vfpf_mboxx bdk_rvu_vf_vfpf_mboxx_t;
+
+static inline uint64_t BDK_RVU_VF_VFPF_MBOXX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RVU_VF_VFPF_MBOXX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=1))
+ return 0x850200000000ll + 8ll * ((a) & 0x1);
+ __bdk_csr_fatal("RVU_VF_VFPF_MBOXX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RVU_VF_VFPF_MBOXX(a) bdk_rvu_vf_vfpf_mboxx_t
+#define bustype_BDK_RVU_VF_VFPF_MBOXX(a) BDK_CSR_TYPE_RVU_VF_BAR2
+#define basename_BDK_RVU_VF_VFPF_MBOXX(a) "RVU_VF_VFPF_MBOXX"
+#define device_bar_BDK_RVU_VF_VFPF_MBOXX(a) 0x2 /* BAR2 */
+#define busnum_BDK_RVU_VF_VFPF_MBOXX(a) (a)
+#define arguments_BDK_RVU_VF_VFPF_MBOXX(a) (a),-1,-1,-1
+
+#endif /* __BDK_CSRS_RVU_H__ */