#ifndef __BDK_CSRS_PEM_H__ #define __BDK_CSRS_PEM_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 PEM. * * This file is auto generated. Do not edit. * */ /** * Enumeration pem_bar_e * * PEM Base Address Register Enumeration * Enumerates the base address registers. */ #define BDK_PEM_BAR_E_PEMX_PF_BAR0_CN8(a) (0x87e0c0000000ll + 0x1000000ll * (a)) #define BDK_PEM_BAR_E_PEMX_PF_BAR0_CN8_SIZE 0x800000ull #define BDK_PEM_BAR_E_PEMX_PF_BAR0_CN9(a) (0x8e0000000000ll + 0x1000000000ll * (a)) #define BDK_PEM_BAR_E_PEMX_PF_BAR0_CN9_SIZE 0x40000000ull #define BDK_PEM_BAR_E_PEMX_PF_BAR4_CN8(a) (0x87e0c0f00000ll + 0x1000000ll * (a)) #define BDK_PEM_BAR_E_PEMX_PF_BAR4_CN8_SIZE 0x100000ull #define BDK_PEM_BAR_E_PEMX_PF_BAR4_CN9(a) (0x8e0f00000000ll + 0x1000000000ll * (a)) #define BDK_PEM_BAR_E_PEMX_PF_BAR4_CN9_SIZE 0x100000ull /** * Enumeration pem_ep_functions_e * * PEM EP Mode Function Number Enumeration * Enumerates the function numbers that an EP PEM masters. */ #define BDK_PEM_EP_FUNCTIONS_E_PF0 (0) #define BDK_PEM_EP_FUNCTIONS_E_PF0_VFX(a) (0 + (a)) /** * Enumeration pem_int_vec_e * * PEM MSI-X Vector Enumeration * Enumerates the MSI-X interrupt vectors. */ #define BDK_PEM_INT_VEC_E_DBG_INFO_CN81XX (0xb) #define BDK_PEM_INT_VEC_E_DBG_INFO_CN88XX (0xd) #define BDK_PEM_INT_VEC_E_DBG_INFO_CN83XX (0xb) #define BDK_PEM_INT_VEC_E_ERROR_AERI (0) #define BDK_PEM_INT_VEC_E_ERROR_AERI_CLEAR (1) #define BDK_PEM_INT_VEC_E_ERROR_PMEI (2) #define BDK_PEM_INT_VEC_E_ERROR_PMEI_CLEAR (3) #define BDK_PEM_INT_VEC_E_HP_INT (0xe) #define BDK_PEM_INT_VEC_E_HP_INT_CLEAR (0xf) #define BDK_PEM_INT_VEC_E_HP_PMEI (1) #define BDK_PEM_INT_VEC_E_INTA_CN9 (0) #define BDK_PEM_INT_VEC_E_INTA_CN81XX (2) #define BDK_PEM_INT_VEC_E_INTA_CN88XX (4) #define BDK_PEM_INT_VEC_E_INTA_CN83XX (2) #define BDK_PEM_INT_VEC_E_INTA_CLEAR_CN9 (1) #define BDK_PEM_INT_VEC_E_INTA_CLEAR_CN81XX (3) #define BDK_PEM_INT_VEC_E_INTA_CLEAR_CN88XX (5) #define BDK_PEM_INT_VEC_E_INTA_CLEAR_CN83XX (3) #define BDK_PEM_INT_VEC_E_INTB_CN9 (2) #define BDK_PEM_INT_VEC_E_INTB_CN81XX (4) #define BDK_PEM_INT_VEC_E_INTB_CN88XX (6) #define BDK_PEM_INT_VEC_E_INTB_CN83XX (4) #define BDK_PEM_INT_VEC_E_INTB_CLEAR_CN9 (3) #define BDK_PEM_INT_VEC_E_INTB_CLEAR_CN81XX (5) #define BDK_PEM_INT_VEC_E_INTB_CLEAR_CN88XX (7) #define BDK_PEM_INT_VEC_E_INTB_CLEAR_CN83XX (5) #define BDK_PEM_INT_VEC_E_INTC_CN9 (4) #define BDK_PEM_INT_VEC_E_INTC_CN81XX (6) #define BDK_PEM_INT_VEC_E_INTC_CN88XX (8) #define BDK_PEM_INT_VEC_E_INTC_CN83XX (6) #define BDK_PEM_INT_VEC_E_INTC_CLEAR_CN9 (5) #define BDK_PEM_INT_VEC_E_INTC_CLEAR_CN81XX (7) #define BDK_PEM_INT_VEC_E_INTC_CLEAR_CN88XX (9) #define BDK_PEM_INT_VEC_E_INTC_CLEAR_CN83XX (7) #define BDK_PEM_INT_VEC_E_INTD_CN9 (6) #define BDK_PEM_INT_VEC_E_INTD_CN81XX (8) #define BDK_PEM_INT_VEC_E_INTD_CN88XX (0xa) #define BDK_PEM_INT_VEC_E_INTD_CN83XX (8) #define BDK_PEM_INT_VEC_E_INTD_CLEAR_CN9 (7) #define BDK_PEM_INT_VEC_E_INTD_CLEAR_CN81XX (9) #define BDK_PEM_INT_VEC_E_INTD_CLEAR_CN88XX (0xb) #define BDK_PEM_INT_VEC_E_INTD_CLEAR_CN83XX (9) #define BDK_PEM_INT_VEC_E_INT_SUM_CN9 (8) #define BDK_PEM_INT_VEC_E_INT_SUM_CN81XX (0xa) #define BDK_PEM_INT_VEC_E_INT_SUM_CN88XX (0xc) #define BDK_PEM_INT_VEC_E_INT_SUM_CN83XX (0xa) /** * Register (RSL) pem#_bar1_index# * * PEM BAR1 Index 0-15 Register * This register contains the address index and control bits for access to memory ranges of BAR1. * The index is selected from the PCIe address depending on the programmed BAR-1 size. */ union bdk_pemx_bar1_indexx { uint64_t u; struct bdk_pemx_bar1_indexx_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_31_63 : 33; uint64_t addr_idx : 27; /**< [ 30: 4](R/W) Address index. Address bits [48:22] sent to L2C. */ uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in L2. */ uint64_t end_swp : 2; /**< [ 2: 1](R/W) Endian-swap mode. */ uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */ #else /* Word 0 - Little Endian */ uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */ uint64_t end_swp : 2; /**< [ 2: 1](R/W) Endian-swap mode. */ uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in L2. */ uint64_t addr_idx : 27; /**< [ 30: 4](R/W) Address index. Address bits [48:22] sent to L2C. */ uint64_t reserved_31_63 : 33; #endif /* Word 0 - End */ } s; struct bdk_pemx_bar1_indexx_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_31_63 : 33; uint64_t addr_idx : 27; /**< [ 30: 4](R/W) Address index. Address bits [48:22] sent to L2C. */ uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in L2. */ uint64_t reserved_1_2 : 2; uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */ #else /* Word 0 - Little Endian */ uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */ uint64_t reserved_1_2 : 2; uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in L2. */ uint64_t addr_idx : 27; /**< [ 30: 4](R/W) Address index. Address bits [48:22] sent to L2C. */ uint64_t reserved_31_63 : 33; #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_bar1_indexx_cn81xx cn88xx; */ /* struct bdk_pemx_bar1_indexx_s cn83xx; */ }; typedef union bdk_pemx_bar1_indexx bdk_pemx_bar1_indexx_t; static inline uint64_t BDK_PEMX_BAR1_INDEXX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BAR1_INDEXX(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a<=2) && (b<=15))) return 0x87e0c0000100ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=15))) return 0x87e0c0000100ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && ((a<=5) && (b<=15))) return 0x87e0c0000100ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0xf); __bdk_csr_fatal("PEMX_BAR1_INDEXX", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_BAR1_INDEXX(a,b) bdk_pemx_bar1_indexx_t #define bustype_BDK_PEMX_BAR1_INDEXX(a,b) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_BAR1_INDEXX(a,b) "PEMX_BAR1_INDEXX" #define device_bar_BDK_PEMX_BAR1_INDEXX(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BAR1_INDEXX(a,b) (a) #define arguments_BDK_PEMX_BAR1_INDEXX(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_bar2_mask * * PEM BAR2 Mask Register * This register contains the mask pattern that is ANDed with the address from the PCIe core for * inbound PF BAR2 hits in either RC or EP mode. This mask is only applied if * PEM()_EBUS_CTL[PF_BAR2_SEL] is clear and the address hits in the PCIEEP_BAR2L / PCIEEP_BAR2U * registers (EP mode) or PEM()_P2N_BAR2_START / PEM()_BAR_CTL[BAR2_SIZ] registers (RC mode). * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bar2_mask { uint64_t u; struct bdk_pemx_bar2_mask_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_53_63 : 11; uint64_t mask : 49; /**< [ 52: 4](R/W) The value to be ANDED with the address sent to memory. */ uint64_t reserved_0_3 : 4; #else /* Word 0 - Little Endian */ uint64_t reserved_0_3 : 4; uint64_t mask : 49; /**< [ 52: 4](R/W) The value to be ANDED with the address sent to memory. */ uint64_t reserved_53_63 : 11; #endif /* Word 0 - End */ } s; struct bdk_pemx_bar2_mask_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_53_63 : 11; uint64_t mask : 49; /**< [ 52: 4](R/W) The value to be ANDed with the address sent to memory (to IOB). */ uint64_t reserved_0_3 : 4; #else /* Word 0 - Little Endian */ uint64_t reserved_0_3 : 4; uint64_t mask : 49; /**< [ 52: 4](R/W) The value to be ANDed with the address sent to memory (to IOB). */ uint64_t reserved_53_63 : 11; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_bar2_mask_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_49_63 : 15; uint64_t mask : 45; /**< [ 48: 4](R/W) The value to be ANDED with the address sent to memory. */ uint64_t reserved_0_3 : 4; #else /* Word 0 - Little Endian */ uint64_t reserved_0_3 : 4; uint64_t mask : 45; /**< [ 48: 4](R/W) The value to be ANDED with the address sent to memory. */ uint64_t reserved_49_63 : 15; #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_bar2_mask_cn81xx cn88xx; */ struct bdk_pemx_bar2_mask_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_49_63 : 15; uint64_t mask : 45; /**< [ 48: 4](R/W) The value to be ANDed with the address sent to memory (to IOB). */ uint64_t reserved_0_3 : 4; #else /* Word 0 - Little Endian */ uint64_t reserved_0_3 : 4; uint64_t mask : 45; /**< [ 48: 4](R/W) The value to be ANDed with the address sent to memory (to IOB). */ uint64_t reserved_49_63 : 15; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_bar2_mask bdk_pemx_bar2_mask_t; static inline uint64_t BDK_PEMX_BAR2_MASK(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BAR2_MASK(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c00000b0ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c00000b0ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c00000b0ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000040ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BAR2_MASK", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BAR2_MASK(a) bdk_pemx_bar2_mask_t #define bustype_BDK_PEMX_BAR2_MASK(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BAR2_MASK(a) "PEMX_BAR2_MASK" #define device_bar_BDK_PEMX_BAR2_MASK(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BAR2_MASK(a) (a) #define arguments_BDK_PEMX_BAR2_MASK(a) (a),-1,-1,-1 /** * Register (NCB) pem#_bar4_index# * * PEM BAR4 Index 0-15 Register * This register contains the address index and control bits for access to memory ranges of BAR4. * The index is built from the PCI inbound address \<25:22\>. The bits in this register only apply to * inbound accesses targeting the NCB bus in both RC and EP modes, this register is ignored * when PEM()_EBUS_CTL[PF_BAR4_SEL] is set. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bar4_indexx { uint64_t u; struct bdk_pemx_bar4_indexx_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_35_63 : 29; uint64_t addr_idx : 31; /**< [ 34: 4](R/W) Address index. IOVA \<52:22\> sent to NCB. */ uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in LLC. */ uint64_t reserved_1_2 : 2; uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */ #else /* Word 0 - Little Endian */ uint64_t addr_v : 1; /**< [ 0: 0](R/W) Address valid. Set to 1 when the selected address range is valid. */ uint64_t reserved_1_2 : 2; uint64_t ca : 1; /**< [ 3: 3](R/W) Cached. Set to 1 when access is not to be cached in LLC. */ uint64_t addr_idx : 31; /**< [ 34: 4](R/W) Address index. IOVA \<52:22\> sent to NCB. */ uint64_t reserved_35_63 : 29; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_bar4_indexx_s cn; */ }; typedef union bdk_pemx_bar4_indexx bdk_pemx_bar4_indexx_t; static inline uint64_t BDK_PEMX_BAR4_INDEXX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BAR4_INDEXX(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15))) return 0x8e0000000700ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf); __bdk_csr_fatal("PEMX_BAR4_INDEXX", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_BAR4_INDEXX(a,b) bdk_pemx_bar4_indexx_t #define bustype_BDK_PEMX_BAR4_INDEXX(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BAR4_INDEXX(a,b) "PEMX_BAR4_INDEXX" #define device_bar_BDK_PEMX_BAR4_INDEXX(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BAR4_INDEXX(a,b) (a) #define arguments_BDK_PEMX_BAR4_INDEXX(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_bar_ctl * * PEM BAR Control Register * This register contains control for BAR accesses. This control always * applies to memory accesses targeting the NCBI bus. Some of the fields also * apply to accesses targeting EBUS in RC mode only, see the individual field * descriptions for more detail. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bar_ctl { uint64_t u; struct bdk_pemx_bar_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_38_63 : 26; uint64_t vf_bar4_enb : 1; /**< [ 37: 37](R/W) This bit controls whether BAR4 for all virtual functions is enabled. In RC mode: * VF BAR4 does not exist. This bit has no effect. In EP mode: * VF BAR4 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR4U, PCIEEP_SRIOV_BAR4L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR4 hit to the PCI address specified by PCIEEP_SRIOV_BAR4U / PCIEEP_SRIOV_BAR4L. */ uint64_t vf_bar2_enb : 1; /**< [ 36: 36](R/W) This bit controls whether BAR2 for all virtual functions is enabled. In RC mode: * VF BAR2 does not exist. This bit has no effect. In EP mode: * VF BAR2 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR2U, PCIEEP_SRIOV_BAR2L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR2 hit to the PCI address specified by PCIEEP_SRIOV_BAR2U / PCIEEP_SRIOV_BAR2L. */ uint64_t vf_bar0_enb : 1; /**< [ 35: 35](R/W) This bit controls whether BAR0 for all virtual functions is enabled. In RC mode: * VF BAR0 does not exist. This bit has no effect. In EP mode: * VF BAR0 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR0U, PCIEEP_SRIOV_BAR0L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR0 hit to the PCI address specified by PCIEEP_SRIOV_BAR0U / PCIEEP_SRIOV_BAR0L. */ uint64_t erom_siz : 3; /**< [ 34: 32](R/W) PCIe EROM BAR size. Used to mask off upper bits of address when sending to NCBI or via private EROM interface to MIO. 0x0 = Reserved. 0x1 = 64 KB; 2^16. 0x2 = 128 KB; 2^17. 0x3 = 256 KB; 2^18. 0x4 = 512 KB; 2^19. 0x5 = 1 MB; 2^20. 0x6 = 2 MB; 2^21. 0x7 = 4 MB; 2^22. */ uint64_t bar4_enb : 1; /**< [ 31: 31](R/W) In RC mode: 0 = BAR4 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR4_SEL]. 1 = BAR4 is enabled and will respond if the corresponding bits in PEM()_BAR4_INDEX() are set and the address matches an enabled indexed address range. In EP mode: * If PEM()_EBUS_CTL[PF_BAR4_SEL] is set, BAR4 hits are based on a combination of this bit and config registers PCIEEP_BAR4U / PCIEEP_BAR4L. Both enable bits must be set to enable a BAR4 hit. * If PEM()_EBUS_CTL[PF_BAR4_SEL] is clear, BAR4 hits are based on a combination of this bit, the config registers PCIEEP_BAR4U / PCIEEP_BAR4L, and the PEM()_BAR4_INDEX() registers. Both enable bits must be set along with the appropriate bits in PEM()_BAR4_INDEX() in order for a BAR4 access to respond. */ uint64_t bar0_siz : 5; /**< [ 30: 26](R/W) PCIe BAR0 size. 0x0 = Reserved. 0x1 = 64 KB; 2^16. 0x2 = 128 KB; 2^17. 0x3 = 256 KB; 2^18. 0x4 = 512 KB; 2^19. 0x5 = 1 MB; 2^20. 0x6 = 2 MB; 2^21. 0x7 = 4 MB; 2^22. 0x8 = 8 MB; 2^23. 0x9 = 16 MB; 2^24. 0xA = 32 MB; 2^25. 0xB = 64 MB; 2^26. 0xC - 0x1F = Reserved. */ uint64_t bar0_enb : 1; /**< [ 25: 25](R/W) In RC mode: 0 = BAR0 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR0_SEL]. 1 = BAR0 is enabled and will respond. In EP mode: * BAR0 hits are based on a combination of this bit and config registers PCIEEP_BAR0U / PCIEEP_BAR0L. Both enable bits must be set to enable a BAR0 hit. */ uint64_t bar2_ebit : 6; /**< [ 24: 19](R/W) Address bits for ESX\<1:0\> in a PCIe BAR2 address. When [BAR2_EBIT] is zero, a PCIe BAR2 address does not contain an ESX\<1:0\> field, and [BAR2_ESX] is the endian-swap used for all BAR2 requests. When [BAR2_EBIT] is non-zero, it places ESX\<1:0\> (ESX\<0\> is at PCIe BAR2 address bit [BAR2_EBIT], and ESX\<1\> is at PCIe BAR2 address bit [BAR2_EBIT]+1). [BAR2_EBIT] must be in the range 16 .. [BAR2_SIZ]+18 and must not conflict with a non-zero [BAR2_CBIT] in this case. [BAR2_ESX] XOR ESX\<1:0\> is the endian-swap used for BAR2 requests in this case. If [BAR2_EBIT] \<= 48 in this case, then one or two PCIe BAR2 address ESX field bit(s) are in the address forwarded to SLI and the SMMU, in the same position. */ uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit for CAX in a PCIe BAR2 address. When [BAR2_CBIT] is zero, a PCIe BAR2 address does not contain a CAX bit, and [BAR2_CAX] is the cache allocation for all BAR2 requests. When [BAR2_CBIT] is non-zero, the CAX bit is at bit [BAR2_CBIT] in the PCIe BAR2 address. [BAR2_CBIT] must be in the range 16 .. [BAR2_SIZ]+19 and must not conflict with a non-zero [BAR2_EBIT] in this case. [BAR2_CBIT] XOR CAX is the cache allocation for BAR2 requests. If [BAR2_CBIT] \<= 48 in this case, then the PCIe BAR2 address CAX bit is in the address forwarded to SLI and the SMMU, in the same position. */ uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded identically to PCIEEP()_CFG190[RBARS]. Resets to 0x1D (512 TB). In EP mode, [BAR2_SIZ] must equal the corresponding PCIEEP()_CFG190[RBARS]. In RC mode, [BAR2_SIZ] determines the PEM()_P2N_BAR2_START[ADDR] bits used/compared to an incoming PCIe address. On a BAR2 match, PEM zeroes the PCIe address bits outside [BAR2_SIZ], applies [BAR2_EBIT,BAR2_CBIT], and forwards the request to SLI and the SMMU. */ uint64_t reserved_4_6 : 3; uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */ uint64_t bar2_esx : 2; /**< [ 2: 1](R/W) Value is XORed with PCIe addresses as defined by [BAR2_EBIT] to determine the endian swap mode. */ uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address \<49\> to determine the L2 cache attribute. Not cached in L2 if XOR result is 1. */ #else /* Word 0 - Little Endian */ uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address \<49\> to determine the L2 cache attribute. Not cached in L2 if XOR result is 1. */ uint64_t bar2_esx : 2; /**< [ 2: 1](R/W) Value is XORed with PCIe addresses as defined by [BAR2_EBIT] to determine the endian swap mode. */ uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */ uint64_t reserved_4_6 : 3; uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded identically to PCIEEP()_CFG190[RBARS]. Resets to 0x1D (512 TB). In EP mode, [BAR2_SIZ] must equal the corresponding PCIEEP()_CFG190[RBARS]. In RC mode, [BAR2_SIZ] determines the PEM()_P2N_BAR2_START[ADDR] bits used/compared to an incoming PCIe address. On a BAR2 match, PEM zeroes the PCIe address bits outside [BAR2_SIZ], applies [BAR2_EBIT,BAR2_CBIT], and forwards the request to SLI and the SMMU. */ uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit for CAX in a PCIe BAR2 address. When [BAR2_CBIT] is zero, a PCIe BAR2 address does not contain a CAX bit, and [BAR2_CAX] is the cache allocation for all BAR2 requests. When [BAR2_CBIT] is non-zero, the CAX bit is at bit [BAR2_CBIT] in the PCIe BAR2 address. [BAR2_CBIT] must be in the range 16 .. [BAR2_SIZ]+19 and must not conflict with a non-zero [BAR2_EBIT] in this case. [BAR2_CBIT] XOR CAX is the cache allocation for BAR2 requests. If [BAR2_CBIT] \<= 48 in this case, then the PCIe BAR2 address CAX bit is in the address forwarded to SLI and the SMMU, in the same position. */ uint64_t bar2_ebit : 6; /**< [ 24: 19](R/W) Address bits for ESX\<1:0\> in a PCIe BAR2 address. When [BAR2_EBIT] is zero, a PCIe BAR2 address does not contain an ESX\<1:0\> field, and [BAR2_ESX] is the endian-swap used for all BAR2 requests. When [BAR2_EBIT] is non-zero, it places ESX\<1:0\> (ESX\<0\> is at PCIe BAR2 address bit [BAR2_EBIT], and ESX\<1\> is at PCIe BAR2 address bit [BAR2_EBIT]+1). [BAR2_EBIT] must be in the range 16 .. [BAR2_SIZ]+18 and must not conflict with a non-zero [BAR2_CBIT] in this case. [BAR2_ESX] XOR ESX\<1:0\> is the endian-swap used for BAR2 requests in this case. If [BAR2_EBIT] \<= 48 in this case, then one or two PCIe BAR2 address ESX field bit(s) are in the address forwarded to SLI and the SMMU, in the same position. */ uint64_t bar0_enb : 1; /**< [ 25: 25](R/W) In RC mode: 0 = BAR0 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR0_SEL]. 1 = BAR0 is enabled and will respond. In EP mode: * BAR0 hits are based on a combination of this bit and config registers PCIEEP_BAR0U / PCIEEP_BAR0L. Both enable bits must be set to enable a BAR0 hit. */ uint64_t bar0_siz : 5; /**< [ 30: 26](R/W) PCIe BAR0 size. 0x0 = Reserved. 0x1 = 64 KB; 2^16. 0x2 = 128 KB; 2^17. 0x3 = 256 KB; 2^18. 0x4 = 512 KB; 2^19. 0x5 = 1 MB; 2^20. 0x6 = 2 MB; 2^21. 0x7 = 4 MB; 2^22. 0x8 = 8 MB; 2^23. 0x9 = 16 MB; 2^24. 0xA = 32 MB; 2^25. 0xB = 64 MB; 2^26. 0xC - 0x1F = Reserved. */ uint64_t bar4_enb : 1; /**< [ 31: 31](R/W) In RC mode: 0 = BAR4 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR4_SEL]. 1 = BAR4 is enabled and will respond if the corresponding bits in PEM()_BAR4_INDEX() are set and the address matches an enabled indexed address range. In EP mode: * If PEM()_EBUS_CTL[PF_BAR4_SEL] is set, BAR4 hits are based on a combination of this bit and config registers PCIEEP_BAR4U / PCIEEP_BAR4L. Both enable bits must be set to enable a BAR4 hit. * If PEM()_EBUS_CTL[PF_BAR4_SEL] is clear, BAR4 hits are based on a combination of this bit, the config registers PCIEEP_BAR4U / PCIEEP_BAR4L, and the PEM()_BAR4_INDEX() registers. Both enable bits must be set along with the appropriate bits in PEM()_BAR4_INDEX() in order for a BAR4 access to respond. */ uint64_t erom_siz : 3; /**< [ 34: 32](R/W) PCIe EROM BAR size. Used to mask off upper bits of address when sending to NCBI or via private EROM interface to MIO. 0x0 = Reserved. 0x1 = 64 KB; 2^16. 0x2 = 128 KB; 2^17. 0x3 = 256 KB; 2^18. 0x4 = 512 KB; 2^19. 0x5 = 1 MB; 2^20. 0x6 = 2 MB; 2^21. 0x7 = 4 MB; 2^22. */ uint64_t vf_bar0_enb : 1; /**< [ 35: 35](R/W) This bit controls whether BAR0 for all virtual functions is enabled. In RC mode: * VF BAR0 does not exist. This bit has no effect. In EP mode: * VF BAR0 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR0U, PCIEEP_SRIOV_BAR0L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR0 hit to the PCI address specified by PCIEEP_SRIOV_BAR0U / PCIEEP_SRIOV_BAR0L. */ uint64_t vf_bar2_enb : 1; /**< [ 36: 36](R/W) This bit controls whether BAR2 for all virtual functions is enabled. In RC mode: * VF BAR2 does not exist. This bit has no effect. In EP mode: * VF BAR2 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR2U, PCIEEP_SRIOV_BAR2L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR2 hit to the PCI address specified by PCIEEP_SRIOV_BAR2U / PCIEEP_SRIOV_BAR2L. */ uint64_t vf_bar4_enb : 1; /**< [ 37: 37](R/W) This bit controls whether BAR4 for all virtual functions is enabled. In RC mode: * VF BAR4 does not exist. This bit has no effect. In EP mode: * VF BAR4 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR4U, PCIEEP_SRIOV_BAR4L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR4 hit to the PCI address specified by PCIEEP_SRIOV_BAR4U / PCIEEP_SRIOV_BAR4L. */ uint64_t reserved_38_63 : 26; #endif /* Word 0 - End */ } s; struct bdk_pemx_bar_ctl_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_38_63 : 26; uint64_t vf_bar4_enb : 1; /**< [ 37: 37](R/W) This bit controls whether BAR4 for all virtual functions is enabled. In RC mode: * VF BAR4 does not exist. This bit has no effect. In EP mode: * VF BAR4 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR4U, PCIEEP_SRIOV_BAR4L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR4 hit to the PCI address specified by PCIEEP_SRIOV_BAR4U / PCIEEP_SRIOV_BAR4L. */ uint64_t vf_bar2_enb : 1; /**< [ 36: 36](R/W) This bit controls whether BAR2 for all virtual functions is enabled. In RC mode: * VF BAR2 does not exist. This bit has no effect. In EP mode: * VF BAR2 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR2U, PCIEEP_SRIOV_BAR2L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR2 hit to the PCI address specified by PCIEEP_SRIOV_BAR2U / PCIEEP_SRIOV_BAR2L. */ uint64_t vf_bar0_enb : 1; /**< [ 35: 35](R/W) This bit controls whether BAR0 for all virtual functions is enabled. In RC mode: * VF BAR0 does not exist. This bit has no effect. In EP mode: * VF BAR0 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR0U, PCIEEP_SRIOV_BAR0L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR0 hit to the PCI address specified by PCIEEP_SRIOV_BAR0U / PCIEEP_SRIOV_BAR0L. */ uint64_t erom_siz : 3; /**< [ 34: 32](R/W) PCIe EROM BAR size. Used to mask off upper bits of address when sending to NCBI or via private EROM interface to MIO. 0x0 = Reserved. 0x1 = 64 KB; 2^16. 0x2 = 128 KB; 2^17. 0x3 = 256 KB; 2^18. 0x4 = 512 KB; 2^19. 0x5 = 1 MB; 2^20. 0x6 = 2 MB; 2^21. 0x7 = 4 MB; 2^22. */ uint64_t bar4_enb : 1; /**< [ 31: 31](R/W) In RC mode: 0 = BAR4 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR4_SEL]. 1 = BAR4 is enabled and will respond if the corresponding bits in PEM()_BAR4_INDEX() are set and the address matches an enabled indexed address range. In EP mode: * If PEM()_EBUS_CTL[PF_BAR4_SEL] is set, BAR4 hits are based on a combination of this bit and config registers PCIEEP_BAR4U / PCIEEP_BAR4L. Both enable bits must be set to enable a BAR4 hit. * If PEM()_EBUS_CTL[PF_BAR4_SEL] is clear, BAR4 hits are based on a combination of this bit, the config registers PCIEEP_BAR4U / PCIEEP_BAR4L, and the PEM()_BAR4_INDEX() registers. Both enable bits must be set along with the appropriate bits in PEM()_BAR4_INDEX() in order for a BAR4 access to respond. */ uint64_t bar0_siz : 5; /**< [ 30: 26](R/W) PCIe BAR0 size. 0x0 = Reserved. 0x1 = 64 KB; 2^16. 0x2 = 128 KB; 2^17. 0x3 = 256 KB; 2^18. 0x4 = 512 KB; 2^19. 0x5 = 1 MB; 2^20. 0x6 = 2 MB; 2^21. 0x7 = 4 MB; 2^22. 0x8 = 8 MB; 2^23. 0x9 = 16 MB; 2^24. 0xA = 32 MB; 2^25. 0xB = 64 MB; 2^26. 0xC - 0x1F = Reserved. */ uint64_t bar0_enb : 1; /**< [ 25: 25](R/W) In RC mode: 0 = BAR0 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR0_SEL]. 1 = BAR0 is enabled and will respond. In EP mode: * BAR0 hits are based on a combination of this bit and config registers PCIEEP_BAR0U / PCIEEP_BAR0L. Both enable bits must be set to enable a BAR0 hit. */ uint64_t reserved_19_24 : 6; uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit to be mapped to BAR2's CAX. When 0x0, BAR2's CAX is disabled; otherwise must be 16 to 63 inclusive. Not used if PEM()_EBUS_CTL[PF_BAR2_SEL] is set. */ uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded similar to PCIEEP_RBAR_CTL[RBARS]. Used in RC mode to create a mask that is ANDED with the address prior to applying [BAR2_CAX]. Defaults to 0x21 (8192 TB). */ uint64_t bar4_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR4 size. 0x0 = Reserved. 0x1 = 64 MB; 2^26. 0x2 = 128 MB; 2^27. 0x3 = 256 MB; 2^28. 0x4 = 512 MB; 2^29. 0x5 = 1024 MB; 2^30. 0x6 = 2048 MB; 2^31. 0x7 = Reserved. */ uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) In RC mode: 0 = BAR2 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR2_SEL]. 1 = BAR2 is enabled and will respond. In EP mode: * BAR2 hits are based on a combination of this bit and config registers PCIEEP_BAR2U / PCIEEP_BAR2L. Both enable bits must be set to enable a BAR2 hit. */ uint64_t reserved_1_2 : 2; uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address as defined by [BAR2_CBIT] to determine the LLC cache attribute. Not cached in LLC if XOR result is 1. Not used if PEM()_EBUS_CTL[PF_BAR2_SEL] is set. */ #else /* Word 0 - Little Endian */ uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address as defined by [BAR2_CBIT] to determine the LLC cache attribute. Not cached in LLC if XOR result is 1. Not used if PEM()_EBUS_CTL[PF_BAR2_SEL] is set. */ uint64_t reserved_1_2 : 2; uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) In RC mode: 0 = BAR2 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR2_SEL]. 1 = BAR2 is enabled and will respond. In EP mode: * BAR2 hits are based on a combination of this bit and config registers PCIEEP_BAR2U / PCIEEP_BAR2L. Both enable bits must be set to enable a BAR2 hit. */ uint64_t bar4_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR4 size. 0x0 = Reserved. 0x1 = 64 MB; 2^26. 0x2 = 128 MB; 2^27. 0x3 = 256 MB; 2^28. 0x4 = 512 MB; 2^29. 0x5 = 1024 MB; 2^30. 0x6 = 2048 MB; 2^31. 0x7 = Reserved. */ uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded similar to PCIEEP_RBAR_CTL[RBARS]. Used in RC mode to create a mask that is ANDED with the address prior to applying [BAR2_CAX]. Defaults to 0x21 (8192 TB). */ uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit to be mapped to BAR2's CAX. When 0x0, BAR2's CAX is disabled; otherwise must be 16 to 63 inclusive. Not used if PEM()_EBUS_CTL[PF_BAR2_SEL] is set. */ uint64_t reserved_19_24 : 6; uint64_t bar0_enb : 1; /**< [ 25: 25](R/W) In RC mode: 0 = BAR0 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR0_SEL]. 1 = BAR0 is enabled and will respond. In EP mode: * BAR0 hits are based on a combination of this bit and config registers PCIEEP_BAR0U / PCIEEP_BAR0L. Both enable bits must be set to enable a BAR0 hit. */ uint64_t bar0_siz : 5; /**< [ 30: 26](R/W) PCIe BAR0 size. 0x0 = Reserved. 0x1 = 64 KB; 2^16. 0x2 = 128 KB; 2^17. 0x3 = 256 KB; 2^18. 0x4 = 512 KB; 2^19. 0x5 = 1 MB; 2^20. 0x6 = 2 MB; 2^21. 0x7 = 4 MB; 2^22. 0x8 = 8 MB; 2^23. 0x9 = 16 MB; 2^24. 0xA = 32 MB; 2^25. 0xB = 64 MB; 2^26. 0xC - 0x1F = Reserved. */ uint64_t bar4_enb : 1; /**< [ 31: 31](R/W) In RC mode: 0 = BAR4 access will cause UR responses. This applies no matter the value of PEM()_EBUS_CTL[PF_BAR4_SEL]. 1 = BAR4 is enabled and will respond if the corresponding bits in PEM()_BAR4_INDEX() are set and the address matches an enabled indexed address range. In EP mode: * If PEM()_EBUS_CTL[PF_BAR4_SEL] is set, BAR4 hits are based on a combination of this bit and config registers PCIEEP_BAR4U / PCIEEP_BAR4L. Both enable bits must be set to enable a BAR4 hit. * If PEM()_EBUS_CTL[PF_BAR4_SEL] is clear, BAR4 hits are based on a combination of this bit, the config registers PCIEEP_BAR4U / PCIEEP_BAR4L, and the PEM()_BAR4_INDEX() registers. Both enable bits must be set along with the appropriate bits in PEM()_BAR4_INDEX() in order for a BAR4 access to respond. */ uint64_t erom_siz : 3; /**< [ 34: 32](R/W) PCIe EROM BAR size. Used to mask off upper bits of address when sending to NCBI or via private EROM interface to MIO. 0x0 = Reserved. 0x1 = 64 KB; 2^16. 0x2 = 128 KB; 2^17. 0x3 = 256 KB; 2^18. 0x4 = 512 KB; 2^19. 0x5 = 1 MB; 2^20. 0x6 = 2 MB; 2^21. 0x7 = 4 MB; 2^22. */ uint64_t vf_bar0_enb : 1; /**< [ 35: 35](R/W) This bit controls whether BAR0 for all virtual functions is enabled. In RC mode: * VF BAR0 does not exist. This bit has no effect. In EP mode: * VF BAR0 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR0U, PCIEEP_SRIOV_BAR0L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR0 hit to the PCI address specified by PCIEEP_SRIOV_BAR0U / PCIEEP_SRIOV_BAR0L. */ uint64_t vf_bar2_enb : 1; /**< [ 36: 36](R/W) This bit controls whether BAR2 for all virtual functions is enabled. In RC mode: * VF BAR2 does not exist. This bit has no effect. In EP mode: * VF BAR2 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR2U, PCIEEP_SRIOV_BAR2L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR2 hit to the PCI address specified by PCIEEP_SRIOV_BAR2U / PCIEEP_SRIOV_BAR2L. */ uint64_t vf_bar4_enb : 1; /**< [ 37: 37](R/W) This bit controls whether BAR4 for all virtual functions is enabled. In RC mode: * VF BAR4 does not exist. This bit has no effect. In EP mode: * VF BAR4 hits are based on a combination of this bit and config registers PCIEEP_SRIOV_BAR4U, PCIEEP_SRIOV_BAR4L, and PCIEEP_SRIOV_CTL[VFE]. Both PCIEEP_SRIOV_CTL[VFE] and this bit must be set to enable a VF BAR4 hit to the PCI address specified by PCIEEP_SRIOV_BAR4U / PCIEEP_SRIOV_BAR4L. */ uint64_t reserved_38_63 : 26; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_bar_ctl_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_7_63 : 57; uint64_t bar1_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR1 size. 0x0 = Reserved. 0x1 = 64 MB; 2^26. 0x2 = 128 MB; 2^27. 0x3 = 256 MB; 2^28. 0x4 = 512 MB; 2^29. 0x5 = 1024 MB; 2^30. 0x6 = 2048 MB; 2^31. 0x7 = Reserved. */ uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */ uint64_t reserved_1_2 : 2; uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address \<49\> to determine the L2 cache attribute. Not cached in L2 if XOR result is 1. */ #else /* Word 0 - Little Endian */ uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address \<49\> to determine the L2 cache attribute. Not cached in L2 if XOR result is 1. */ uint64_t reserved_1_2 : 2; uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */ uint64_t bar1_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR1 size. 0x0 = Reserved. 0x1 = 64 MB; 2^26. 0x2 = 128 MB; 2^27. 0x3 = 256 MB; 2^28. 0x4 = 512 MB; 2^29. 0x5 = 1024 MB; 2^30. 0x6 = 2048 MB; 2^31. 0x7 = Reserved. */ uint64_t reserved_7_63 : 57; #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_bar_ctl_cn81xx cn88xx; */ struct bdk_pemx_bar_ctl_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_25_63 : 39; uint64_t bar2_ebit : 6; /**< [ 24: 19](R/W) Address bits for ESX\<1:0\> in a PCIe BAR2 address. When [BAR2_EBIT] is zero, a PCIe BAR2 address does not contain an ESX\<1:0\> field, and [BAR2_ESX] is the endian-swap used for all BAR2 requests. When [BAR2_EBIT] is non-zero, it places ESX\<1:0\> (ESX\<0\> is at PCIe BAR2 address bit [BAR2_EBIT], and ESX\<1\> is at PCIe BAR2 address bit [BAR2_EBIT]+1). [BAR2_EBIT] must be in the range 16 .. [BAR2_SIZ]+18 and must not conflict with a non-zero [BAR2_CBIT] in this case. [BAR2_ESX] XOR ESX\<1:0\> is the endian-swap used for BAR2 requests in this case. If [BAR2_EBIT] \<= 48 in this case, then one or two PCIe BAR2 address ESX field bit(s) are in the address forwarded to SLI and the SMMU, in the same position. */ uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit for CAX in a PCIe BAR2 address. When [BAR2_CBIT] is zero, a PCIe BAR2 address does not contain a CAX bit, and [BAR2_CAX] is the cache allocation for all BAR2 requests. When [BAR2_CBIT] is non-zero, the CAX bit is at bit [BAR2_CBIT] in the PCIe BAR2 address. [BAR2_CBIT] must be in the range 16 .. [BAR2_SIZ]+19 and must not conflict with a non-zero [BAR2_EBIT] in this case. [BAR2_CBIT] XOR CAX is the cache allocation for BAR2 requests. If [BAR2_CBIT] \<= 48 in this case, then the PCIe BAR2 address CAX bit is in the address forwarded to SLI and the SMMU, in the same position. */ uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded identically to PCIEEP()_CFG190[RBARS]. Resets to 0x1D (512 TB). In EP mode, [BAR2_SIZ] must equal the corresponding PCIEEP()_CFG190[RBARS]. In RC mode, [BAR2_SIZ] determines the PEM()_P2N_BAR2_START[ADDR] bits used/compared to an incoming PCIe address. On a BAR2 match, PEM zeroes the PCIe address bits outside [BAR2_SIZ], applies [BAR2_EBIT,BAR2_CBIT], and forwards the request to SLI and the SMMU. */ uint64_t bar1_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR1 size. 0x0 = Reserved. 0x1 = 64 MB; 2^26. 0x2 = 128 MB; 2^27. 0x3 = 256 MB; 2^28. 0x4 = 512 MB; 2^29. 0x5 = 1024 MB; 2^30. 0x6 = 2048 MB; 2^31. 0x7 = Reserved. */ uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */ uint64_t bar2_esx : 2; /**< [ 2: 1](R/W) Value is XORed with PCIe addresses as defined by [BAR2_EBIT] to determine the endian swap mode. */ uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address as defined by [BAR2_CBIT] to determine the L2 cache attribute. Not cached in L2 if XOR result is 1. */ #else /* Word 0 - Little Endian */ uint64_t bar2_cax : 1; /**< [ 0: 0](R/W) Value is XORed with PCIe address as defined by [BAR2_CBIT] to determine the L2 cache attribute. Not cached in L2 if XOR result is 1. */ uint64_t bar2_esx : 2; /**< [ 2: 1](R/W) Value is XORed with PCIe addresses as defined by [BAR2_EBIT] to determine the endian swap mode. */ uint64_t bar2_enb : 1; /**< [ 3: 3](R/W) When set to 1, BAR2 is enabled and will respond; when clear, BAR2 access will cause UR responses. */ uint64_t bar1_siz : 3; /**< [ 6: 4](R/W) PCIe Port 0 BAR1 size. 0x0 = Reserved. 0x1 = 64 MB; 2^26. 0x2 = 128 MB; 2^27. 0x3 = 256 MB; 2^28. 0x4 = 512 MB; 2^29. 0x5 = 1024 MB; 2^30. 0x6 = 2048 MB; 2^31. 0x7 = Reserved. */ uint64_t bar2_siz : 6; /**< [ 12: 7](R/W) BAR2 size. Encoded identically to PCIEEP()_CFG190[RBARS]. Resets to 0x1D (512 TB). In EP mode, [BAR2_SIZ] must equal the corresponding PCIEEP()_CFG190[RBARS]. In RC mode, [BAR2_SIZ] determines the PEM()_P2N_BAR2_START[ADDR] bits used/compared to an incoming PCIe address. On a BAR2 match, PEM zeroes the PCIe address bits outside [BAR2_SIZ], applies [BAR2_EBIT,BAR2_CBIT], and forwards the request to SLI and the SMMU. */ uint64_t bar2_cbit : 6; /**< [ 18: 13](R/W) Address bit for CAX in a PCIe BAR2 address. When [BAR2_CBIT] is zero, a PCIe BAR2 address does not contain a CAX bit, and [BAR2_CAX] is the cache allocation for all BAR2 requests. When [BAR2_CBIT] is non-zero, the CAX bit is at bit [BAR2_CBIT] in the PCIe BAR2 address. [BAR2_CBIT] must be in the range 16 .. [BAR2_SIZ]+19 and must not conflict with a non-zero [BAR2_EBIT] in this case. [BAR2_CBIT] XOR CAX is the cache allocation for BAR2 requests. If [BAR2_CBIT] \<= 48 in this case, then the PCIe BAR2 address CAX bit is in the address forwarded to SLI and the SMMU, in the same position. */ uint64_t bar2_ebit : 6; /**< [ 24: 19](R/W) Address bits for ESX\<1:0\> in a PCIe BAR2 address. When [BAR2_EBIT] is zero, a PCIe BAR2 address does not contain an ESX\<1:0\> field, and [BAR2_ESX] is the endian-swap used for all BAR2 requests. When [BAR2_EBIT] is non-zero, it places ESX\<1:0\> (ESX\<0\> is at PCIe BAR2 address bit [BAR2_EBIT], and ESX\<1\> is at PCIe BAR2 address bit [BAR2_EBIT]+1). [BAR2_EBIT] must be in the range 16 .. [BAR2_SIZ]+18 and must not conflict with a non-zero [BAR2_CBIT] in this case. [BAR2_ESX] XOR ESX\<1:0\> is the endian-swap used for BAR2 requests in this case. If [BAR2_EBIT] \<= 48 in this case, then one or two PCIe BAR2 address ESX field bit(s) are in the address forwarded to SLI and the SMMU, in the same position. */ uint64_t reserved_25_63 : 39; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_bar_ctl bdk_pemx_bar_ctl_t; static inline uint64_t BDK_PEMX_BAR_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BAR_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c00000a8ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c00000a8ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c00000a8ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000158ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BAR_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BAR_CTL(a) bdk_pemx_bar_ctl_t #define bustype_BDK_PEMX_BAR_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BAR_CTL(a) "PEMX_BAR_CTL" #define device_bar_BDK_PEMX_BAR_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BAR_CTL(a) (a) #define arguments_BDK_PEMX_BAR_CTL(a) (a),-1,-1,-1 /** * Register (RSL) pem#_bist_status * * PEM BIST Status Register * This register contains results from BIST runs of PEM's memories. */ union bdk_pemx_bist_status { uint64_t u; struct bdk_pemx_bist_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_10_63 : 54; uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */ uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */ uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */ uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */ uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */ uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */ uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */ uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */ uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */ uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */ #else /* Word 0 - Little Endian */ uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */ uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */ uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */ uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */ uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */ uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */ uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */ uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */ uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */ uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */ uint64_t reserved_10_63 : 54; #endif /* Word 0 - End */ } s; struct bdk_pemx_bist_status_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_26_63 : 38; uint64_t retryc : 1; /**< [ 25: 25](RO) Retry buffer memory C. */ uint64_t sot : 1; /**< [ 24: 24](RO) Start of transfer memory. */ uint64_t rqhdrb0 : 1; /**< [ 23: 23](RO) RX queue header memory buffer 0. */ uint64_t rqhdrb1 : 1; /**< [ 22: 22](RO) RX queue header memory buffer 1. */ uint64_t rqdatab0 : 1; /**< [ 21: 21](RO) RX queue data buffer 0. */ uint64_t rqdatab1 : 1; /**< [ 20: 20](RO) RX queue data buffer 1. */ uint64_t tlpan_d0 : 1; /**< [ 19: 19](RO) BIST Status for the tlp_n_afifo_data0. */ uint64_t tlpan_d1 : 1; /**< [ 18: 18](RO) BIST Status for the tlp_n_afifo_data1. */ uint64_t tlpan_ctl : 1; /**< [ 17: 17](RO) BIST Status for the tlp_n_afifo_ctl. */ uint64_t tlpap_d0 : 1; /**< [ 16: 16](RO) BIST Status for the tlp_p_afifo_data0. */ uint64_t tlpap_d1 : 1; /**< [ 15: 15](RO) BIST Status for the tlp_p_afifo_data1. */ uint64_t tlpap_ctl : 1; /**< [ 14: 14](RO) BIST Status for the tlp_p_afifo_ctl. */ uint64_t tlpac_d0 : 1; /**< [ 13: 13](RO) BIST Status for the tlp_c_afifo_data0. */ uint64_t tlpac_d1 : 1; /**< [ 12: 12](RO) BIST Status for the tlp_c_afifo_data1. */ uint64_t tlpac_ctl : 1; /**< [ 11: 11](RO) BIST Status for the tlp_c_afifo_ctl. */ uint64_t peai_p2e : 1; /**< [ 10: 10](RO) BIST Status for the peai__pesc_fifo. */ uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */ uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */ uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */ uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */ uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */ uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */ uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */ uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */ uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */ uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */ #else /* Word 0 - Little Endian */ uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */ uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */ uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */ uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */ uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */ uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */ uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */ uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */ uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */ uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */ uint64_t peai_p2e : 1; /**< [ 10: 10](RO) BIST Status for the peai__pesc_fifo. */ uint64_t tlpac_ctl : 1; /**< [ 11: 11](RO) BIST Status for the tlp_c_afifo_ctl. */ uint64_t tlpac_d1 : 1; /**< [ 12: 12](RO) BIST Status for the tlp_c_afifo_data1. */ uint64_t tlpac_d0 : 1; /**< [ 13: 13](RO) BIST Status for the tlp_c_afifo_data0. */ uint64_t tlpap_ctl : 1; /**< [ 14: 14](RO) BIST Status for the tlp_p_afifo_ctl. */ uint64_t tlpap_d1 : 1; /**< [ 15: 15](RO) BIST Status for the tlp_p_afifo_data1. */ uint64_t tlpap_d0 : 1; /**< [ 16: 16](RO) BIST Status for the tlp_p_afifo_data0. */ uint64_t tlpan_ctl : 1; /**< [ 17: 17](RO) BIST Status for the tlp_n_afifo_ctl. */ uint64_t tlpan_d1 : 1; /**< [ 18: 18](RO) BIST Status for the tlp_n_afifo_data1. */ uint64_t tlpan_d0 : 1; /**< [ 19: 19](RO) BIST Status for the tlp_n_afifo_data0. */ uint64_t rqdatab1 : 1; /**< [ 20: 20](RO) RX queue data buffer 1. */ uint64_t rqdatab0 : 1; /**< [ 21: 21](RO) RX queue data buffer 0. */ uint64_t rqhdrb1 : 1; /**< [ 22: 22](RO) RX queue header memory buffer 1. */ uint64_t rqhdrb0 : 1; /**< [ 23: 23](RO) RX queue header memory buffer 0. */ uint64_t sot : 1; /**< [ 24: 24](RO) Start of transfer memory. */ uint64_t retryc : 1; /**< [ 25: 25](RO) Retry buffer memory C. */ uint64_t reserved_26_63 : 38; #endif /* Word 0 - End */ } cn88xxp1; struct bdk_pemx_bist_status_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_26_63 : 38; uint64_t retryc : 1; /**< [ 25: 25](RO) Retry buffer memory C. */ uint64_t sot : 1; /**< [ 24: 24](RO) Start of transfer memory. */ uint64_t rqhdrb0 : 1; /**< [ 23: 23](RO) RX queue header memory buffer 0. */ uint64_t rqhdrb1 : 1; /**< [ 22: 22](RO) RX queue header memory buffer 1. */ uint64_t rqdatab0 : 1; /**< [ 21: 21](RO) RX queue data buffer 0. */ uint64_t rqdatab1 : 1; /**< [ 20: 20](RO) RX queue data buffer 1. */ uint64_t tlpan_d0 : 1; /**< [ 19: 19](RO) Reserved. */ uint64_t tlpan_d1 : 1; /**< [ 18: 18](RO) Reserved. */ uint64_t tlpan_ctl : 1; /**< [ 17: 17](RO) Reserved. */ uint64_t tlpap_d0 : 1; /**< [ 16: 16](RO) Reserved. */ uint64_t tlpap_d1 : 1; /**< [ 15: 15](RO) Reserved. */ uint64_t tlpap_ctl : 1; /**< [ 14: 14](RO) Reserved. */ uint64_t tlpac_d0 : 1; /**< [ 13: 13](RO) Reserved. */ uint64_t tlpac_d1 : 1; /**< [ 12: 12](RO) Reserved. */ uint64_t tlpac_ctl : 1; /**< [ 11: 11](RO) Reserved. */ uint64_t peai_p2e : 1; /**< [ 10: 10](RO) Reserved. */ uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */ uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */ uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */ uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */ uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */ uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */ uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */ uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */ uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */ uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */ #else /* Word 0 - Little Endian */ uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */ uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */ uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */ uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */ uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */ uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */ uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */ uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */ uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */ uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */ uint64_t peai_p2e : 1; /**< [ 10: 10](RO) Reserved. */ uint64_t tlpac_ctl : 1; /**< [ 11: 11](RO) Reserved. */ uint64_t tlpac_d1 : 1; /**< [ 12: 12](RO) Reserved. */ uint64_t tlpac_d0 : 1; /**< [ 13: 13](RO) Reserved. */ uint64_t tlpap_ctl : 1; /**< [ 14: 14](RO) Reserved. */ uint64_t tlpap_d1 : 1; /**< [ 15: 15](RO) Reserved. */ uint64_t tlpap_d0 : 1; /**< [ 16: 16](RO) Reserved. */ uint64_t tlpan_ctl : 1; /**< [ 17: 17](RO) Reserved. */ uint64_t tlpan_d1 : 1; /**< [ 18: 18](RO) Reserved. */ uint64_t tlpan_d0 : 1; /**< [ 19: 19](RO) Reserved. */ uint64_t rqdatab1 : 1; /**< [ 20: 20](RO) RX queue data buffer 1. */ uint64_t rqdatab0 : 1; /**< [ 21: 21](RO) RX queue data buffer 0. */ uint64_t rqhdrb1 : 1; /**< [ 22: 22](RO) RX queue header memory buffer 1. */ uint64_t rqhdrb0 : 1; /**< [ 23: 23](RO) RX queue header memory buffer 0. */ uint64_t sot : 1; /**< [ 24: 24](RO) Start of transfer memory. */ uint64_t retryc : 1; /**< [ 25: 25](RO) Retry buffer memory C. */ uint64_t reserved_26_63 : 38; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_bist_status_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t retryc : 1; /**< [ 15: 15](RO) Retry buffer memory C. */ uint64_t sot : 1; /**< [ 14: 14](RO) Start of transfer memory. */ uint64_t rqhdrb0 : 1; /**< [ 13: 13](RO) RX queue header memory buffer 0. */ uint64_t rqhdrb1 : 1; /**< [ 12: 12](RO) RX queue header memory buffer 1. */ uint64_t rqdatab0 : 1; /**< [ 11: 11](RO) RX queue data buffer 0. */ uint64_t rqdatab1 : 1; /**< [ 10: 10](RO) RX queue data buffer 1. */ uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */ uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */ uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */ uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */ uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */ uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */ uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */ uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */ uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */ uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */ #else /* Word 0 - Little Endian */ uint64_t m2s : 1; /**< [ 0: 0](RO) BIST status for m2s_fifo. */ uint64_t tlpc_ctl : 1; /**< [ 1: 1](RO) BIST status for tlp_c_fifo_ctl. */ uint64_t tlpc_d1 : 1; /**< [ 2: 2](RO) BIST status for tlp_c_fifo_data1. */ uint64_t tlpc_d0 : 1; /**< [ 3: 3](RO) BIST status for tlp_c_fifo_data0. */ uint64_t tlpp_ctl : 1; /**< [ 4: 4](RO) BIST status for tlp_p_fifo_ctl. */ uint64_t tlpp_d1 : 1; /**< [ 5: 5](RO) BIST status for tlp_p_fifo_data1. */ uint64_t tlpp_d0 : 1; /**< [ 6: 6](RO) BIST status for tlp_p_fifo_data0. */ uint64_t tlpn_ctl : 1; /**< [ 7: 7](RO) BIST status for tlp_n_fifo_ctl. */ uint64_t tlpn_d1 : 1; /**< [ 8: 8](RO) BIST status for tlp_n_fifo_data1. */ uint64_t tlpn_d0 : 1; /**< [ 9: 9](RO) BIST status for tlp_n_fifo_data0. */ uint64_t rqdatab1 : 1; /**< [ 10: 10](RO) RX queue data buffer 1. */ uint64_t rqdatab0 : 1; /**< [ 11: 11](RO) RX queue data buffer 0. */ uint64_t rqhdrb1 : 1; /**< [ 12: 12](RO) RX queue header memory buffer 1. */ uint64_t rqhdrb0 : 1; /**< [ 13: 13](RO) RX queue header memory buffer 0. */ uint64_t sot : 1; /**< [ 14: 14](RO) Start of transfer memory. */ uint64_t retryc : 1; /**< [ 15: 15](RO) Retry buffer memory C. */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } cn83xx; /* struct bdk_pemx_bist_status_cn81xx cn88xxp2; */ }; typedef union bdk_pemx_bist_status bdk_pemx_bist_status_t; static inline uint64_t BDK_PEMX_BIST_STATUS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BIST_STATUS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000468ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000468ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000468ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_BIST_STATUS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BIST_STATUS(a) bdk_pemx_bist_status_t #define bustype_BDK_PEMX_BIST_STATUS(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_BIST_STATUS(a) "PEMX_BIST_STATUS" #define device_bar_BDK_PEMX_BIST_STATUS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BIST_STATUS(a) (a) #define arguments_BDK_PEMX_BIST_STATUS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_bp_test0 * * INTERNAL: PEM Backpressure Test Register 0 * * This register is for diagnostic use only. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bp_test0 { uint64_t u; struct bdk_pemx_bp_test0_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. \<63\> = Limit the NCBI posted FIFO, backpressure doing posted requests to ncb_gnt. \<62\> = Limit the NCBI nonposted FIFO, backpressure doing nonposted requests to ncb_gnt. \<61\> = Limit the NCBI completion FIFO, backpressure doing completion requests to ncb_gnt. \<60\> = Limit the NCBI CSR completion FIFO, backpressure doing requests for CSR responses to ncb_gnt. */ uint64_t reserved_24_59 : 36; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_12_15 : 4; uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ #else /* Word 0 - Little Endian */ uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ uint64_t reserved_12_15 : 4; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_24_59 : 36; uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. \<63\> = Limit the NCBI posted FIFO, backpressure doing posted requests to ncb_gnt. \<62\> = Limit the NCBI nonposted FIFO, backpressure doing nonposted requests to ncb_gnt. \<61\> = Limit the NCBI completion FIFO, backpressure doing completion requests to ncb_gnt. \<60\> = Limit the NCBI CSR completion FIFO, backpressure doing requests for CSR responses to ncb_gnt. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_bp_test0_s cn; */ }; typedef union bdk_pemx_bp_test0 bdk_pemx_bp_test0_t; static inline uint64_t BDK_PEMX_BP_TEST0(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BP_TEST0(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001d0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BP_TEST0", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BP_TEST0(a) bdk_pemx_bp_test0_t #define bustype_BDK_PEMX_BP_TEST0(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BP_TEST0(a) "PEMX_BP_TEST0" #define device_bar_BDK_PEMX_BP_TEST0(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BP_TEST0(a) (a) #define arguments_BDK_PEMX_BP_TEST0(a) (a),-1,-1,-1 /** * Register (NCB) pem#_bp_test1 * * INTERNAL: PEM Backpressure Test Register 1 * * This register is for diagnostic use only. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bp_test1 { uint64_t u; struct bdk_pemx_bp_test1_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. \<63\> = Reserved. \<62\> = Reserved. \<61\> = Reserved. \<60\> = Limit the MAC core incoming TLP FIFO; backpressure taking data from this FIFO. */ uint64_t reserved_24_59 : 36; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_12_15 : 4; uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ #else /* Word 0 - Little Endian */ uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ uint64_t reserved_12_15 : 4; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_24_59 : 36; uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. \<63\> = Reserved. \<62\> = Reserved. \<61\> = Reserved. \<60\> = Limit the MAC core incoming TLP FIFO; backpressure taking data from this FIFO. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_bp_test1_s cn; */ }; typedef union bdk_pemx_bp_test1 bdk_pemx_bp_test1_t; static inline uint64_t BDK_PEMX_BP_TEST1(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BP_TEST1(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001d8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BP_TEST1", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BP_TEST1(a) bdk_pemx_bp_test1_t #define bustype_BDK_PEMX_BP_TEST1(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BP_TEST1(a) "PEMX_BP_TEST1" #define device_bar_BDK_PEMX_BP_TEST1(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BP_TEST1(a) (a) #define arguments_BDK_PEMX_BP_TEST1(a) (a),-1,-1,-1 /** * Register (NCB) pem#_bp_test2 * * INTERNAL: PEM Backpressure Test Register 2 * * This register is for diagnostic use only. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bp_test2 { uint64_t u; struct bdk_pemx_bp_test2_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. NOTE: Test backpressure will only be applied at an NCBO transaction boundary. \<63\> = Limit the draining of NCBO CSR offloading FIFO. \<62\> = Reserved \<61\> = Limit the draining of NCBO Non-posted offloading FIFO. \<60\> = Limit the draining of NCBO Posted offloading FIFO. */ uint64_t reserved_24_59 : 36; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_12_15 : 4; uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ #else /* Word 0 - Little Endian */ uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ uint64_t reserved_12_15 : 4; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_24_59 : 36; uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. NOTE: Test backpressure will only be applied at an NCBO transaction boundary. \<63\> = Limit the draining of NCBO CSR offloading FIFO. \<62\> = Reserved \<61\> = Limit the draining of NCBO Non-posted offloading FIFO. \<60\> = Limit the draining of NCBO Posted offloading FIFO. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_bp_test2_s cn; */ }; typedef union bdk_pemx_bp_test2 bdk_pemx_bp_test2_t; static inline uint64_t BDK_PEMX_BP_TEST2(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BP_TEST2(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001e8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BP_TEST2", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BP_TEST2(a) bdk_pemx_bp_test2_t #define bustype_BDK_PEMX_BP_TEST2(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BP_TEST2(a) "PEMX_BP_TEST2" #define device_bar_BDK_PEMX_BP_TEST2(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BP_TEST2(a) (a) #define arguments_BDK_PEMX_BP_TEST2(a) (a),-1,-1,-1 /** * Register (NCB) pem#_bp_test3 * * INTERNAL: PEM Backpressure Test Register 3 * * This register is for diagnostic use only. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bp_test3 { uint64_t u; struct bdk_pemx_bp_test3_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. NOTE: Test backpressure will only be applied at a TLP boundary. \<63\> = Reserved. \<62\> = Limit the transfers of Completion TLPs from pemm to pemc. \<61\> = Limit the transfers of Non-posted TLPs from pemm to pemc. \<60\> = Limit the transfers of Posted TLPs from pemm to pemc. */ uint64_t reserved_24_59 : 36; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_12_15 : 4; uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ #else /* Word 0 - Little Endian */ uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ uint64_t reserved_12_15 : 4; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_24_59 : 36; uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. NOTE: Test backpressure will only be applied at a TLP boundary. \<63\> = Reserved. \<62\> = Limit the transfers of Completion TLPs from pemm to pemc. \<61\> = Limit the transfers of Non-posted TLPs from pemm to pemc. \<60\> = Limit the transfers of Posted TLPs from pemm to pemc. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_bp_test3_s cn; */ }; typedef union bdk_pemx_bp_test3 bdk_pemx_bp_test3_t; static inline uint64_t BDK_PEMX_BP_TEST3(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BP_TEST3(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001f0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BP_TEST3", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BP_TEST3(a) bdk_pemx_bp_test3_t #define bustype_BDK_PEMX_BP_TEST3(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BP_TEST3(a) "PEMX_BP_TEST3" #define device_bar_BDK_PEMX_BP_TEST3(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BP_TEST3(a) (a) #define arguments_BDK_PEMX_BP_TEST3(a) (a),-1,-1,-1 /** * Register (NCB) pem#_bp_test4 * * INTERNAL: PEM Backpressure Test Register 4 * * This register is for diagnostic use only. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bp_test4 { uint64_t u; struct bdk_pemx_bp_test4_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. \<63\> = Limit the EBI posted FIFO. \<62\> = Limit the EBI nonposted FIFO. \<61\> = Limit the EBI completion FIFO. \<60\> = Limit the EBI completion fault FIFO. */ uint64_t reserved_24_59 : 36; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_12_15 : 4; uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ #else /* Word 0 - Little Endian */ uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ uint64_t reserved_12_15 : 4; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_24_59 : 36; uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. \<63\> = Limit the EBI posted FIFO. \<62\> = Limit the EBI nonposted FIFO. \<61\> = Limit the EBI completion FIFO. \<60\> = Limit the EBI completion fault FIFO. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_bp_test4_s cn; */ }; typedef union bdk_pemx_bp_test4 bdk_pemx_bp_test4_t; static inline uint64_t BDK_PEMX_BP_TEST4(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BP_TEST4(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001f8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BP_TEST4", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BP_TEST4(a) bdk_pemx_bp_test4_t #define bustype_BDK_PEMX_BP_TEST4(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BP_TEST4(a) "PEMX_BP_TEST4" #define device_bar_BDK_PEMX_BP_TEST4(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BP_TEST4(a) (a) #define arguments_BDK_PEMX_BP_TEST4(a) (a),-1,-1,-1 /** * Register (NCB) pem#_bp_test5 * * INTERNAL: PEM Backpressure Test Register 5 * * This register is for diagnostic use only. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bp_test5 { uint64_t u; struct bdk_pemx_bp_test5_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. Note backpressure will only be applied at an EBO transaction boundary. \<63\> = Reserved. \<62\> = Limit the draining of EBO Completion offloading buffer. \<61\> = Limit the draining of EBO Non-posted offloading FIFO. \<60\> = Limit the draining of EBO Posted offloading FIFO. */ uint64_t reserved_24_59 : 36; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_12_15 : 4; uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ #else /* Word 0 - Little Endian */ uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ uint64_t reserved_12_15 : 4; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_24_59 : 36; uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. Note backpressure will only be applied at an EBO transaction boundary. \<63\> = Reserved. \<62\> = Limit the draining of EBO Completion offloading buffer. \<61\> = Limit the draining of EBO Non-posted offloading FIFO. \<60\> = Limit the draining of EBO Posted offloading FIFO. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_bp_test5_s cn; */ }; typedef union bdk_pemx_bp_test5 bdk_pemx_bp_test5_t; static inline uint64_t BDK_PEMX_BP_TEST5(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BP_TEST5(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000200ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BP_TEST5", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BP_TEST5(a) bdk_pemx_bp_test5_t #define bustype_BDK_PEMX_BP_TEST5(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BP_TEST5(a) "PEMX_BP_TEST5" #define device_bar_BDK_PEMX_BP_TEST5(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BP_TEST5(a) (a) #define arguments_BDK_PEMX_BP_TEST5(a) (a),-1,-1,-1 /** * Register (NCB) pem#_bp_test6 * * INTERNAL: PEM Backpressure Test Register 6 * * This register is for diagnostic use only. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_bp_test6 { uint64_t u; struct bdk_pemx_bp_test6_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. \<63\> = Reserved. \<62\> = Limit the PSPI nonposted FIFO. \<61\> = Reserved. \<60\> = Reserved. */ uint64_t reserved_24_59 : 36; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_12_15 : 4; uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ #else /* Word 0 - Little Endian */ uint64_t lfsr_freq : 12; /**< [ 11: 0](R/W) Test LFSR update frequency in coprocessor-clocks minus one. */ uint64_t reserved_12_15 : 4; uint64_t bp_cfg : 8; /**< [ 23: 16](R/W) Backpressure weight. For diagnostic use only. Internal: There are 2 backpressure configuration bits per enable, with the two bits defined as 0x0=100% of the time, 0x1=75% of the time, 0x2=50% of the time, 0x3=25% of the time. \<23:22\> = Config 3. \<21:20\> = Config 2. \<19:18\> = Config 1. \<17:16\> = Config 0. */ uint64_t reserved_24_59 : 36; uint64_t enable : 4; /**< [ 63: 60](R/W) Enable test mode. For diagnostic use only. Internal: Once a bit is set, random backpressure is generated at the corresponding point to allow for more frequent backpressure. \<63\> = Reserved. \<62\> = Limit the PSPI nonposted FIFO. \<61\> = Reserved. \<60\> = Reserved. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_bp_test6_s cn; */ }; typedef union bdk_pemx_bp_test6 bdk_pemx_bp_test6_t; static inline uint64_t BDK_PEMX_BP_TEST6(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_BP_TEST6(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000208ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_BP_TEST6", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_BP_TEST6(a) bdk_pemx_bp_test6_t #define bustype_BDK_PEMX_BP_TEST6(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_BP_TEST6(a) "PEMX_BP_TEST6" #define device_bar_BDK_PEMX_BP_TEST6(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_BP_TEST6(a) (a) #define arguments_BDK_PEMX_BP_TEST6(a) (a),-1,-1,-1 /** * Register (NCB) pem#_cfg * * PEM Application Configuration Register * This register configures the PCIe application. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on cold reset. */ union bdk_pemx_cfg { uint64_t u; struct bdk_pemx_cfg_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_0_63 : 64; #else /* Word 0 - Little Endian */ uint64_t reserved_0_63 : 64; #endif /* Word 0 - End */ } s; struct bdk_pemx_cfg_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_8_63 : 56; uint64_t pipe_grp_ptr : 3; /**< [ 7: 5](R/W/H) Each PEM brings in 24 lanes of RX Pipe. Configures the PEM to point to the RX Pipe quad containing Lane 0. 0x0 = grp0 (lane 0). 0x1 = grp1 (lane 4). 0x2 = grp2 (lane 8). 0x3 = grp3 (lane 12). 0x4 = grp4 (lane 16). 0x5 = grp5 (lane 20). 0x6 - 0x7 = Reserved. CN93XX configuration: \ PEM0: Configure to grp0 (QLM0/1/2/3). PEM1: Configure to grp0 (QLM1). Configure to grp1 (DLM4/5). PEM2: Configure to grp0 (QLM3). Configure to grp1 (DLM5). Configure to grp2 (QLM6/7). PEM3: Configure to grp0 (QLM2/3). \ */ uint64_t pipe : 2; /**< [ 4: 3](R/W/H) Configures the PEM pipe sources. 0x0 = Pipe 0. 0x1 = Pipe 1. 0x2 = Pipe 2. 0x3 = Reserved. CN93XX configuration: \ PEM0: Configure to Pipe 0 (QLM0/1/2/3). PEM1: Configure to Pipe 0 (QLM1). Configure to Pipe 1 (DLM4/5). PEM2: Configure to Pipe 0 (QLM3). Configure to Pipe 1 (DLM5). Configure to Pipe 2 (QLM6/7). PEM3: Configure to Pipe 0 (QLM2/3). \ */ uint64_t lanes : 2; /**< [ 2: 1](R/W/H) Ties off RX Pipe for unused lanes. 0x0 = 2 lanes. 0x1 = 4 lanes. 0x2 = 8 lanes. 0x3 = 16 lanes. CN93XX configuration: \ PEM0: Configure to 16 Lanes (QLM0/1/2/3). Configure to 8 Lanes (QLM0/1). Configure to 4 Lanes (QLM0). PEM1: Configure to 4 Lanes (QLM1 or DLM4/5). Configure to 2 Lanes (DLM4). PEM2: Configure to 4 Lanes (QLM3). Configure to 2 Lanes (DLM5). Configure to 8 Lanes (QLM6/7). Configure to 4 Lanes (QLM6). PEM3: Configure to 8 Lanes (QLM2/3 or QLM6/7). Configure to 4 Lanes (QLM 2 or QLM6). \ */ uint64_t hostmd : 1; /**< [ 0: 0](R/W/H) Host mode. 0 = PEM is configured to be an end point (EP mode). 1 = PEM is configured to be a root complex (RC mode). */ #else /* Word 0 - Little Endian */ uint64_t hostmd : 1; /**< [ 0: 0](R/W/H) Host mode. 0 = PEM is configured to be an end point (EP mode). 1 = PEM is configured to be a root complex (RC mode). */ uint64_t lanes : 2; /**< [ 2: 1](R/W/H) Ties off RX Pipe for unused lanes. 0x0 = 2 lanes. 0x1 = 4 lanes. 0x2 = 8 lanes. 0x3 = 16 lanes. CN93XX configuration: \ PEM0: Configure to 16 Lanes (QLM0/1/2/3). Configure to 8 Lanes (QLM0/1). Configure to 4 Lanes (QLM0). PEM1: Configure to 4 Lanes (QLM1 or DLM4/5). Configure to 2 Lanes (DLM4). PEM2: Configure to 4 Lanes (QLM3). Configure to 2 Lanes (DLM5). Configure to 8 Lanes (QLM6/7). Configure to 4 Lanes (QLM6). PEM3: Configure to 8 Lanes (QLM2/3 or QLM6/7). Configure to 4 Lanes (QLM 2 or QLM6). \ */ uint64_t pipe : 2; /**< [ 4: 3](R/W/H) Configures the PEM pipe sources. 0x0 = Pipe 0. 0x1 = Pipe 1. 0x2 = Pipe 2. 0x3 = Reserved. CN93XX configuration: \ PEM0: Configure to Pipe 0 (QLM0/1/2/3). PEM1: Configure to Pipe 0 (QLM1). Configure to Pipe 1 (DLM4/5). PEM2: Configure to Pipe 0 (QLM3). Configure to Pipe 1 (DLM5). Configure to Pipe 2 (QLM6/7). PEM3: Configure to Pipe 0 (QLM2/3). \ */ uint64_t pipe_grp_ptr : 3; /**< [ 7: 5](R/W/H) Each PEM brings in 24 lanes of RX Pipe. Configures the PEM to point to the RX Pipe quad containing Lane 0. 0x0 = grp0 (lane 0). 0x1 = grp1 (lane 4). 0x2 = grp2 (lane 8). 0x3 = grp3 (lane 12). 0x4 = grp4 (lane 16). 0x5 = grp5 (lane 20). 0x6 - 0x7 = Reserved. CN93XX configuration: \ PEM0: Configure to grp0 (QLM0/1/2/3). PEM1: Configure to grp0 (QLM1). Configure to grp1 (DLM4/5). PEM2: Configure to grp0 (QLM3). Configure to grp1 (DLM5). Configure to grp2 (QLM6/7). PEM3: Configure to grp0 (QLM2/3). \ */ uint64_t reserved_8_63 : 56; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_cfg_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_6_63 : 58; uint64_t lanes4 : 1; /**< [ 5: 5](R/W) Determines the number of lanes. When set, the PEM is configured for a maximum of 4 lanes. When clear, the PEM is configured for a maximum of 2 lanes. This value is used to set the maximum link width field in the core's link capabilities register (CFG031) to indicate the maximum number of lanes supported. Note that less lanes than the specified maximum can be configured for use via the core's link control register (CFG032) negotiated link width field. */ uint64_t laneswap : 1; /**< [ 4: 4](R/W) Determines lane swapping. When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t reserved_2_3 : 2; uint64_t md : 2; /**< [ 1: 0](R/W) Determines the speed. 0x0 = Gen1 speed. 0x1 = Gen2 speed. 0x2 = Gen3 speed. 0x3 = Gen3 speed. */ #else /* Word 0 - Little Endian */ uint64_t md : 2; /**< [ 1: 0](R/W) Determines the speed. 0x0 = Gen1 speed. 0x1 = Gen2 speed. 0x2 = Gen3 speed. 0x3 = Gen3 speed. */ uint64_t reserved_2_3 : 2; uint64_t laneswap : 1; /**< [ 4: 4](R/W) Determines lane swapping. When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t lanes4 : 1; /**< [ 5: 5](R/W) Determines the number of lanes. When set, the PEM is configured for a maximum of 4 lanes. When clear, the PEM is configured for a maximum of 2 lanes. This value is used to set the maximum link width field in the core's link capabilities register (CFG031) to indicate the maximum number of lanes supported. Note that less lanes than the specified maximum can be configured for use via the core's link control register (CFG032) negotiated link width field. */ uint64_t reserved_6_63 : 58; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_cfg_cn88xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_5_63 : 59; uint64_t laneswap : 1; /**< [ 4: 4](R/W/H) Determines lane swapping. When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t lanes8 : 1; /**< [ 3: 3](R/W/H) Determines the number of lanes. When set, the PEM is configured for a maximum of 8 lanes. When clear, the PEM is configured for a maximum of 4 lanes. This value is used to set the maximum link width field in the core's link capabilities register (CFG031) to indicate the maximum number of lanes supported. Note that less lanes than the specified maximum can be configured for use via the core's link control register (CFG032) negotiated link width field. */ uint64_t reserved_2 : 1; uint64_t md : 2; /**< [ 1: 0](R/W/H) Determines the speed. 0x0 = Gen1 speed. 0x1 = Gen2 speed. 0x2 = Gen3 speed. 0x3 = Gen3 speed. */ #else /* Word 0 - Little Endian */ uint64_t md : 2; /**< [ 1: 0](R/W/H) Determines the speed. 0x0 = Gen1 speed. 0x1 = Gen2 speed. 0x2 = Gen3 speed. 0x3 = Gen3 speed. */ uint64_t reserved_2 : 1; uint64_t lanes8 : 1; /**< [ 3: 3](R/W/H) Determines the number of lanes. When set, the PEM is configured for a maximum of 8 lanes. When clear, the PEM is configured for a maximum of 4 lanes. This value is used to set the maximum link width field in the core's link capabilities register (CFG031) to indicate the maximum number of lanes supported. Note that less lanes than the specified maximum can be configured for use via the core's link control register (CFG032) negotiated link width field. */ uint64_t laneswap : 1; /**< [ 4: 4](R/W/H) Determines lane swapping. When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t reserved_5_63 : 59; #endif /* Word 0 - End */ } cn88xx; struct bdk_pemx_cfg_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_5_63 : 59; uint64_t laneswap : 1; /**< [ 4: 4](R/W/H) Enables overwriting the value for lane swapping. The reset value is captured on cold reset by the pin straps (see PEM()_STRAP[PILANESWAP]). When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t lanes8 : 1; /**< [ 3: 3](R/W/H) Enables overwriting the value for the maximum number of lanes. The reset value is captured on cold reset by the pin straps (see PEM()_STRAP[PILANES8]). When set, the PEM is configured for a maximum of 8 lanes. When clear, the PEM is configured for a maximum of 4 or 2 lanes. This value is used to set the maximum link width field in the core's link capabilities register (CFG031) to indicate the maximum number of lanes supported. Note that less lanes than the specified maximum can be configured for use via the core's link control register (CFG032) negotiated link width field. */ uint64_t hostmd : 1; /**< [ 2: 2](R/W/H) Enables overwriting the value for host mode. The reset value is captured on cold reset by the pin straps. (See PEM()_STRAP[PIMODE]. The HOSTMD reset value is the bit-wise AND of the PIMODE straps. When set, the PEM is configured to be a root complex. When clear, the PEM is configured to be an end point. */ uint64_t md : 2; /**< [ 1: 0](R/W/H) Enables overwriting the value for speed. The reset value is captured on cold reset by the pin straps (see PEM()_STRAP[PIMODE]). For a root complex configuration that is not running at Gen3 speed, the HOSTMD bit of this register must be set when this field is changed. 0x0 = Gen1 speed. 0x1 = Gen2 speed. 0x2 = Gen3 speed. 0x3 = Reserved. */ #else /* Word 0 - Little Endian */ uint64_t md : 2; /**< [ 1: 0](R/W/H) Enables overwriting the value for speed. The reset value is captured on cold reset by the pin straps (see PEM()_STRAP[PIMODE]). For a root complex configuration that is not running at Gen3 speed, the HOSTMD bit of this register must be set when this field is changed. 0x0 = Gen1 speed. 0x1 = Gen2 speed. 0x2 = Gen3 speed. 0x3 = Reserved. */ uint64_t hostmd : 1; /**< [ 2: 2](R/W/H) Enables overwriting the value for host mode. The reset value is captured on cold reset by the pin straps. (See PEM()_STRAP[PIMODE]. The HOSTMD reset value is the bit-wise AND of the PIMODE straps. When set, the PEM is configured to be a root complex. When clear, the PEM is configured to be an end point. */ uint64_t lanes8 : 1; /**< [ 3: 3](R/W/H) Enables overwriting the value for the maximum number of lanes. The reset value is captured on cold reset by the pin straps (see PEM()_STRAP[PILANES8]). When set, the PEM is configured for a maximum of 8 lanes. When clear, the PEM is configured for a maximum of 4 or 2 lanes. This value is used to set the maximum link width field in the core's link capabilities register (CFG031) to indicate the maximum number of lanes supported. Note that less lanes than the specified maximum can be configured for use via the core's link control register (CFG032) negotiated link width field. */ uint64_t laneswap : 1; /**< [ 4: 4](R/W/H) Enables overwriting the value for lane swapping. The reset value is captured on cold reset by the pin straps (see PEM()_STRAP[PILANESWAP]). When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t reserved_5_63 : 59; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_cfg bdk_pemx_cfg_t; static inline uint64_t BDK_PEMX_CFG(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CFG(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000410ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000410ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000410ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000c8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CFG", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CFG(a) bdk_pemx_cfg_t #define bustype_BDK_PEMX_CFG(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CFG(a) "PEMX_CFG" #define device_bar_BDK_PEMX_CFG(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CFG(a) (a) #define arguments_BDK_PEMX_CFG(a) (a),-1,-1,-1 /** * Register (NCB) pem#_cfg_rd * * PEM Configuration Read Register * This register allows read access to the configuration in the PCIe core, but is for * legacy application use. PEM()_PF()_CS()_PFCFG() and PEM()_PF()_VF()_VFCFG() should * typically be used instead. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_cfg_rd { uint64_t u; struct bdk_pemx_cfg_rd_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */ uint64_t addr : 32; /**< [ 31: 0](R/W/H) Address to read. A write to this register starts a read operation. Following are the sub-fields of the ADDR field. \<11:0\> The offset of the PCIe core CFG register being accessed. */ #else /* Word 0 - Little Endian */ uint64_t addr : 32; /**< [ 31: 0](R/W/H) Address to read. A write to this register starts a read operation. Following are the sub-fields of the ADDR field. \<11:0\> The offset of the PCIe core CFG register being accessed. */ uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */ #endif /* Word 0 - End */ } s; struct bdk_pemx_cfg_rd_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */ uint64_t addr : 32; /**< [ 31: 0](R/W) Address to read. A write to this register starts a read operation. Following are the subfields of [ADDR]. \<31:30\> = Reserved. Must be zero. \<29:22\> = The selected virtual function. Must be zero when \<17\> is clear. Must be zero in RC mode. \<21:18\> = The selected physical function. Must be zero in RC mode. \<17\> = When clear, the write accesses the physical function. When set, the write accesses the virtual function selected by \<29:22\>. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. \<16\> = When clear, the write is the same as a config space write received from external. When set, the write can modify more fields than an external write could (i.e. configuration mask register). Corresponds to the CS2 field in Byte2 of the EEPROM. \<15\> = Must be 1. \<14:12\> = Reserved. Must be zero. \<11:0\> = Selects the PCIe config space register being written in the function. Internal: \<16\> = asserts dbi_cs2 at PCIe core. \<17\> = dbi_vfunc_active to the core. \<29:22\> = dbi_vfunc_num to the core. */ #else /* Word 0 - Little Endian */ uint64_t addr : 32; /**< [ 31: 0](R/W) Address to read. A write to this register starts a read operation. Following are the subfields of [ADDR]. \<31:30\> = Reserved. Must be zero. \<29:22\> = The selected virtual function. Must be zero when \<17\> is clear. Must be zero in RC mode. \<21:18\> = The selected physical function. Must be zero in RC mode. \<17\> = When clear, the write accesses the physical function. When set, the write accesses the virtual function selected by \<29:22\>. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. \<16\> = When clear, the write is the same as a config space write received from external. When set, the write can modify more fields than an external write could (i.e. configuration mask register). Corresponds to the CS2 field in Byte2 of the EEPROM. \<15\> = Must be 1. \<14:12\> = Reserved. Must be zero. \<11:0\> = Selects the PCIe config space register being written in the function. Internal: \<16\> = asserts dbi_cs2 at PCIe core. \<17\> = dbi_vfunc_active to the core. \<29:22\> = dbi_vfunc_num to the core. */ uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */ #endif /* Word 0 - End */ } cn9; /* struct bdk_pemx_cfg_rd_s cn81xx; */ /* struct bdk_pemx_cfg_rd_s cn88xx; */ struct bdk_pemx_cfg_rd_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */ uint64_t addr : 32; /**< [ 31: 0](R/W) Address to read. A write to this register starts a read operation. Following are the subfields of the ADDR field. \<31:24\> = Reserved. Must be zero. \<23\> = When clear, the read accesses the physical function. When set, the read accesses the virtual function selected by \<22:12\>. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. \<22:18\> = Reserved. Must be zero. \<17:12\> = The selected virtual function. Must be zero when \<23\> is clear. Must be zero in RC mode. \<11:0\> = Selects the PCIe config space register being read in the function. Internal: \<31\> = asserts dbi_cs2 at PCIe core. \<23\> = dbi_vfunc_active to the core. \<22:12\> = dbi_vfunc_num to the core. */ #else /* Word 0 - Little Endian */ uint64_t addr : 32; /**< [ 31: 0](R/W) Address to read. A write to this register starts a read operation. Following are the subfields of the ADDR field. \<31:24\> = Reserved. Must be zero. \<23\> = When clear, the read accesses the physical function. When set, the read accesses the virtual function selected by \<22:12\>. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. \<22:18\> = Reserved. Must be zero. \<17:12\> = The selected virtual function. Must be zero when \<23\> is clear. Must be zero in RC mode. \<11:0\> = Selects the PCIe config space register being read in the function. Internal: \<31\> = asserts dbi_cs2 at PCIe core. \<23\> = dbi_vfunc_active to the core. \<22:12\> = dbi_vfunc_num to the core. */ uint64_t data : 32; /**< [ 63: 32](R/W/H) Data. */ #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_cfg_rd bdk_pemx_cfg_rd_t; static inline uint64_t BDK_PEMX_CFG_RD(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CFG_RD(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000030ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000030ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000030ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000020ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CFG_RD", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CFG_RD(a) bdk_pemx_cfg_rd_t #define bustype_BDK_PEMX_CFG_RD(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CFG_RD(a) "PEMX_CFG_RD" #define device_bar_BDK_PEMX_CFG_RD(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CFG_RD(a) (a) #define arguments_BDK_PEMX_CFG_RD(a) (a),-1,-1,-1 /** * Register (NCB) pem#_cfg_tbl# * * PEM Configuration Table Registers * Software managed table with list of config registers to update when * PEM()_CTL_STATUS[LNK_ENB] is written with a 1. Typically the last * table action should be to set PEM()_CTL_STATUS[SCR_DONE]. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on cold reset. */ union bdk_pemx_cfg_tblx { uint64_t u; struct bdk_pemx_cfg_tblx_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. */ uint64_t broadcast : 1; /**< [ 31: 31](R/W) When set, [PF] field is ignored and the write will occur to every Physical Function. When set and [VF_ACTIVE] is set, write will occur to VF0 within every Physical Function. */ uint64_t reserved_30 : 1; uint64_t vf : 8; /**< [ 29: 22](R/W) The selected virtual function. Must be zero when [VF_ACTIVE] is clear, or when configured for RC mode. */ uint64_t pf : 4; /**< [ 21: 18](R/W) Physical function number associated with this access. In RC mode, this field must be zero. */ uint64_t vf_active : 1; /**< [ 17: 17](R/W) VF active. 0 = Write accesses the physical function. 1 = Write accesses the virtual function selected by [VF] belonging to [PF]. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. */ uint64_t shadow : 1; /**< [ 16: 16](R/W) Shadow space. 0 = The destination CSR is the standard PCI configuration write register. This may write WRSL fields. 1 = The destination is the shadow CSR space, e.g. PCIEEP_BAR0_MASKL. */ uint64_t wmask : 4; /**< [ 15: 12](R/W) Byte mask to apply when writing data. If set, the corresponding byte will be written. */ uint64_t offset : 12; /**< [ 11: 0](R/W) Selects the PCIe config space register being written in the function. */ #else /* Word 0 - Little Endian */ uint64_t offset : 12; /**< [ 11: 0](R/W) Selects the PCIe config space register being written in the function. */ uint64_t wmask : 4; /**< [ 15: 12](R/W) Byte mask to apply when writing data. If set, the corresponding byte will be written. */ uint64_t shadow : 1; /**< [ 16: 16](R/W) Shadow space. 0 = The destination CSR is the standard PCI configuration write register. This may write WRSL fields. 1 = The destination is the shadow CSR space, e.g. PCIEEP_BAR0_MASKL. */ uint64_t vf_active : 1; /**< [ 17: 17](R/W) VF active. 0 = Write accesses the physical function. 1 = Write accesses the virtual function selected by [VF] belonging to [PF]. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. */ uint64_t pf : 4; /**< [ 21: 18](R/W) Physical function number associated with this access. In RC mode, this field must be zero. */ uint64_t vf : 8; /**< [ 29: 22](R/W) The selected virtual function. Must be zero when [VF_ACTIVE] is clear, or when configured for RC mode. */ uint64_t reserved_30 : 1; uint64_t broadcast : 1; /**< [ 31: 31](R/W) When set, [PF] field is ignored and the write will occur to every Physical Function. When set and [VF_ACTIVE] is set, write will occur to VF0 within every Physical Function. */ uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_cfg_tblx_s cn; */ }; typedef union bdk_pemx_cfg_tblx bdk_pemx_cfg_tblx_t; static inline uint64_t BDK_PEMX_CFG_TBLX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CFG_TBLX(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=1023))) return 0x8e0000002000ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0x3ff); __bdk_csr_fatal("PEMX_CFG_TBLX", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_CFG_TBLX(a,b) bdk_pemx_cfg_tblx_t #define bustype_BDK_PEMX_CFG_TBLX(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CFG_TBLX(a,b) "PEMX_CFG_TBLX" #define device_bar_BDK_PEMX_CFG_TBLX(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CFG_TBLX(a,b) (a) #define arguments_BDK_PEMX_CFG_TBLX(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_cfg_tbl_size * * PEM Configuration Table Size Register * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on cold reset. */ union bdk_pemx_cfg_tbl_size { uint64_t u; struct bdk_pemx_cfg_tbl_size_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_11_63 : 53; uint64_t size : 11; /**< [ 10: 0](R/W) The number of valid entries in PEM()_CFG_TBL(). When hardware plays out the PEM()_CFG_TBL() table, it will read PEM()_CFG_TBL() entries 0x0 through [SIZE]-1, or take no action if [SIZE] is 0x0. Software, before rewriting PEM()_CFG_TBL(), should clear [SIZE], write all of the desired entries, then write the [SIZE] with the number of written entries. */ #else /* Word 0 - Little Endian */ uint64_t size : 11; /**< [ 10: 0](R/W) The number of valid entries in PEM()_CFG_TBL(). When hardware plays out the PEM()_CFG_TBL() table, it will read PEM()_CFG_TBL() entries 0x0 through [SIZE]-1, or take no action if [SIZE] is 0x0. Software, before rewriting PEM()_CFG_TBL(), should clear [SIZE], write all of the desired entries, then write the [SIZE] with the number of written entries. */ uint64_t reserved_11_63 : 53; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_cfg_tbl_size_s cn; */ }; typedef union bdk_pemx_cfg_tbl_size bdk_pemx_cfg_tbl_size_t; static inline uint64_t BDK_PEMX_CFG_TBL_SIZE(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CFG_TBL_SIZE(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000218ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CFG_TBL_SIZE", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CFG_TBL_SIZE(a) bdk_pemx_cfg_tbl_size_t #define bustype_BDK_PEMX_CFG_TBL_SIZE(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CFG_TBL_SIZE(a) "PEMX_CFG_TBL_SIZE" #define device_bar_BDK_PEMX_CFG_TBL_SIZE(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CFG_TBL_SIZE(a) (a) #define arguments_BDK_PEMX_CFG_TBL_SIZE(a) (a),-1,-1,-1 /** * Register (NCB) pem#_cfg_wr * * PEM Configuration Write Register * This register allows write access to the configuration in the PCIe core, but is for * legacy application use. PEM()_PF()_CS()_PFCFG() and PEM()_PF()_VF()_VFCFG() should * typically be used instead. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_cfg_wr { uint64_t u; struct bdk_pemx_cfg_wr_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data : 32; /**< [ 63: 32](R/W/H) Data to write. A write to this register starts a write operation. */ uint64_t addr : 32; /**< [ 31: 0](R/W/H) Address to write. A write to this register starts a write operation. Following are the sub-fields of the ADDR field. \<31\> When set, asserts dbi_cs2 at PCIe core. \<11:0\> The offset of the PCIe core CFG register being accessed. */ #else /* Word 0 - Little Endian */ uint64_t addr : 32; /**< [ 31: 0](R/W/H) Address to write. A write to this register starts a write operation. Following are the sub-fields of the ADDR field. \<31\> When set, asserts dbi_cs2 at PCIe core. \<11:0\> The offset of the PCIe core CFG register being accessed. */ uint64_t data : 32; /**< [ 63: 32](R/W/H) Data to write. A write to this register starts a write operation. */ #endif /* Word 0 - End */ } s; struct bdk_pemx_cfg_wr_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. A write to this register starts a write operation. */ uint64_t addr : 32; /**< [ 31: 0](R/W) Address to write. A write to this register starts a write operation. Following are the subfields of [ADDR]. \<31:30\> = Reserved. Must be zero. \<29:22\> = The selected virtual function. Must be zero when \<17\> is clear. Must be zero in RC mode. \<21:18\> = The selected physical function. Must be zero in RC mode. \<17\> = When clear, the write accesses the physical function. When set, the write accesses the virtual function selected by \<29:22\>. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. \<16\> = When clear, the write is the same as a config space write received from external. When set, the write can modify more fields than an external write could (i.e. configuration mask register). Corresponds to the CS2 field in Byte2 of the EEPROM. \<15\> = Must be 1. \<14:12\> = Reserved. Must be zero. \<11:0\> = Selects the PCIe config space register being written in the function. Internal: \<16\> = asserts dbi_cs2 at PCIe core. \<17\> = dbi_vfunc_active to the core. \<29:22\> = dbi_vfunc_num to the core. */ #else /* Word 0 - Little Endian */ uint64_t addr : 32; /**< [ 31: 0](R/W) Address to write. A write to this register starts a write operation. Following are the subfields of [ADDR]. \<31:30\> = Reserved. Must be zero. \<29:22\> = The selected virtual function. Must be zero when \<17\> is clear. Must be zero in RC mode. \<21:18\> = The selected physical function. Must be zero in RC mode. \<17\> = When clear, the write accesses the physical function. When set, the write accesses the virtual function selected by \<29:22\>. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. \<16\> = When clear, the write is the same as a config space write received from external. When set, the write can modify more fields than an external write could (i.e. configuration mask register). Corresponds to the CS2 field in Byte2 of the EEPROM. \<15\> = Must be 1. \<14:12\> = Reserved. Must be zero. \<11:0\> = Selects the PCIe config space register being written in the function. Internal: \<16\> = asserts dbi_cs2 at PCIe core. \<17\> = dbi_vfunc_active to the core. \<29:22\> = dbi_vfunc_num to the core. */ uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. A write to this register starts a write operation. */ #endif /* Word 0 - End */ } cn9; /* struct bdk_pemx_cfg_wr_s cn81xx; */ /* struct bdk_pemx_cfg_wr_s cn88xx; */ struct bdk_pemx_cfg_wr_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. A write to this register starts a write operation. */ uint64_t addr : 32; /**< [ 31: 0](R/W) Address to write. A write to this register starts a write operation. Following are the subfields of the ADDR field. \<31\> = When clear, the write is the same as a config space write received from external. When set, the write can modify more fields than an external write could (i.e. configuration mask register). Corresponds to the CS2 field in Byte2 of the EEPROM. \<30:24\> = Reserved. Must be zero. \<23\> = When clear, the write accesses the physical function. When set, the write accesses the virtual function selected by \<22:12\>. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. \<22:18\> = Reserved. Must be zero. \<17:12\> = The selected virtual function. Must be zero when \<23\> is clear. Must be zero in RC mode. \<11:0\> = Selects the PCIe config space register being written in the function. Internal: \<31\> = asserts dbi_cs2 at PCIe core. \<23\> = dbi_vfunc_active to the core. \<22:12\> = dbi_vfunc_num to the core. */ #else /* Word 0 - Little Endian */ uint64_t addr : 32; /**< [ 31: 0](R/W) Address to write. A write to this register starts a write operation. Following are the subfields of the ADDR field. \<31\> = When clear, the write is the same as a config space write received from external. When set, the write can modify more fields than an external write could (i.e. configuration mask register). Corresponds to the CS2 field in Byte2 of the EEPROM. \<30:24\> = Reserved. Must be zero. \<23\> = When clear, the write accesses the physical function. When set, the write accesses the virtual function selected by \<22:12\>. Must be zero when SR-IOV is not used in the physical function. Must be zero in RC mode. \<22:18\> = Reserved. Must be zero. \<17:12\> = The selected virtual function. Must be zero when \<23\> is clear. Must be zero in RC mode. \<11:0\> = Selects the PCIe config space register being written in the function. Internal: \<31\> = asserts dbi_cs2 at PCIe core. \<23\> = dbi_vfunc_active to the core. \<22:12\> = dbi_vfunc_num to the core. */ uint64_t data : 32; /**< [ 63: 32](R/W) Data to write. A write to this register starts a write operation. */ #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_cfg_wr bdk_pemx_cfg_wr_t; static inline uint64_t BDK_PEMX_CFG_WR(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CFG_WR(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000028ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000028ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000028ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000018ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CFG_WR", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CFG_WR(a) bdk_pemx_cfg_wr_t #define bustype_BDK_PEMX_CFG_WR(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CFG_WR(a) "PEMX_CFG_WR" #define device_bar_BDK_PEMX_CFG_WR(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CFG_WR(a) (a) #define arguments_BDK_PEMX_CFG_WR(a) (a),-1,-1,-1 /** * Register (NCB) pem#_clk_en * * PEM Clock Enable Register * This register contains the clock enable for CSCLK and PCE_CLK. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on cold reset. */ union bdk_pemx_clk_en { uint64_t u; struct bdk_pemx_clk_en_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_5_63 : 59; uint64_t pemc_pceclkx_force : 1; /**< [ 4: 4](R/W) When set, the pclk is forced on at all times to the PEM core MAC memories. When clear, the pclk to the PEM core MAC memories can be gated in hardware. */ uint64_t pemc_macclk_force : 1; /**< [ 3: 3](R/W) When set, aux_clk & radm_clk are forced on at all times to the PEM core MAC. When clear, aux_clk & radm_clk can be gated by the PEM core MAC. */ uint64_t reserved_0_2 : 3; #else /* Word 0 - Little Endian */ uint64_t reserved_0_2 : 3; uint64_t pemc_macclk_force : 1; /**< [ 3: 3](R/W) When set, aux_clk & radm_clk are forced on at all times to the PEM core MAC. When clear, aux_clk & radm_clk can be gated by the PEM core MAC. */ uint64_t pemc_pceclkx_force : 1; /**< [ 4: 4](R/W) When set, the pclk is forced on at all times to the PEM core MAC memories. When clear, the pclk to the PEM core MAC memories can be gated in hardware. */ uint64_t reserved_5_63 : 59; #endif /* Word 0 - End */ } s; struct bdk_pemx_clk_en_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_5_63 : 59; uint64_t pemc_pceclkx_force : 1; /**< [ 4: 4](R/W) When set, the pclk is forced on at all times to the PEM core MAC memories. When clear, the pclk to the PEM core MAC memories can be gated in hardware. */ uint64_t pemc_macclk_force : 1; /**< [ 3: 3](R/W) When set, aux_clk & radm_clk are forced on at all times to the PEM core MAC. When clear, aux_clk & radm_clk can be gated by the PEM core MAC. */ uint64_t pceclk_gate : 1; /**< [ 2: 2](R/W) When set, PCE_CLK is gated off in PEM core. When clear, PCE_CLK is enabled in PEM core. */ uint64_t pemc_csclk_gate : 1; /**< [ 1: 1](R/W) When set, SCLK is gated off in PEM core. When clear, SCLK is enabled in PEM core. */ uint64_t pemm_csclk_force : 1; /**< [ 0: 0](R/W) When set, CSCLK is forced on at all times in PEM main. When clear, CSCLK gating in PEM main is controlled by hardware. */ #else /* Word 0 - Little Endian */ uint64_t pemm_csclk_force : 1; /**< [ 0: 0](R/W) When set, CSCLK is forced on at all times in PEM main. When clear, CSCLK gating in PEM main is controlled by hardware. */ uint64_t pemc_csclk_gate : 1; /**< [ 1: 1](R/W) When set, SCLK is gated off in PEM core. When clear, SCLK is enabled in PEM core. */ uint64_t pceclk_gate : 1; /**< [ 2: 2](R/W) When set, PCE_CLK is gated off in PEM core. When clear, PCE_CLK is enabled in PEM core. */ uint64_t pemc_macclk_force : 1; /**< [ 3: 3](R/W) When set, aux_clk & radm_clk are forced on at all times to the PEM core MAC. When clear, aux_clk & radm_clk can be gated by the PEM core MAC. */ uint64_t pemc_pceclkx_force : 1; /**< [ 4: 4](R/W) When set, the pclk is forced on at all times to the PEM core MAC memories. When clear, the pclk to the PEM core MAC memories can be gated in hardware. */ uint64_t reserved_5_63 : 59; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_clk_en_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_2_63 : 62; uint64_t pceclk_gate : 1; /**< [ 1: 1](R/W/H) When set, PCE_CLK is gated off. When clear, PCE_CLK is enabled. Software should set this bit when the PEM is in reset or otherwise not being used in order to reduce power. */ uint64_t csclk_gate : 1; /**< [ 0: 0](R/W/H) When set, CSCLK is gated off. When clear, CSCLK is enabled. Software should set this bit when the PEM is in reset or otherwise not being used in order to reduce power. */ #else /* Word 0 - Little Endian */ uint64_t csclk_gate : 1; /**< [ 0: 0](R/W/H) When set, CSCLK is gated off. When clear, CSCLK is enabled. Software should set this bit when the PEM is in reset or otherwise not being used in order to reduce power. */ uint64_t pceclk_gate : 1; /**< [ 1: 1](R/W/H) When set, PCE_CLK is gated off. When clear, PCE_CLK is enabled. Software should set this bit when the PEM is in reset or otherwise not being used in order to reduce power. */ uint64_t reserved_2_63 : 62; #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_clk_en_cn81xx cn88xx; */ struct bdk_pemx_clk_en_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_2_63 : 62; uint64_t pceclk_gate : 1; /**< [ 1: 1](R/W/H) When set, PCE_CLK is gated off. When clear, PCE_CLK is enabled. PEM0 & PEM2 will come up with clocks disabled when configured as an RC i.e. PEM()_STRAP[PIMODE] set to 0x3. PEM1 & PEM3 always come up with clocks disabled. */ uint64_t csclk_gate : 1; /**< [ 0: 0](R/W/H) When set, ECLK is gated off. When clear, ECLK is enabled. PEM0 & PEM2 will come up with clocks disabled when configured as an RC i.e. PEM()_STRAP[PIMODE] set to 0x3. PEM1 & PEM3 always come up with clocks disabled. */ #else /* Word 0 - Little Endian */ uint64_t csclk_gate : 1; /**< [ 0: 0](R/W/H) When set, ECLK is gated off. When clear, ECLK is enabled. PEM0 & PEM2 will come up with clocks disabled when configured as an RC i.e. PEM()_STRAP[PIMODE] set to 0x3. PEM1 & PEM3 always come up with clocks disabled. */ uint64_t pceclk_gate : 1; /**< [ 1: 1](R/W/H) When set, PCE_CLK is gated off. When clear, PCE_CLK is enabled. PEM0 & PEM2 will come up with clocks disabled when configured as an RC i.e. PEM()_STRAP[PIMODE] set to 0x3. PEM1 & PEM3 always come up with clocks disabled. */ uint64_t reserved_2_63 : 62; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_clk_en bdk_pemx_clk_en_t; static inline uint64_t BDK_PEMX_CLK_EN(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CLK_EN(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000400ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000400ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000400ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000b8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CLK_EN", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CLK_EN(a) bdk_pemx_clk_en_t #define bustype_BDK_PEMX_CLK_EN(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CLK_EN(a) "PEMX_CLK_EN" #define device_bar_BDK_PEMX_CLK_EN(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CLK_EN(a) (a) #define arguments_BDK_PEMX_CLK_EN(a) (a),-1,-1,-1 /** * Register (NCB) pem#_cmerge_merged_pc * * PEM Merge Completions Merged Performance Counter Register * This register is a performance counter of how many completions merged within the * outbound completion merge units. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_cmerge_merged_pc { uint64_t u; struct bdk_pemx_cmerge_merged_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t cmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO completion operation that merges with a previous read will increment this count. */ #else /* Word 0 - Little Endian */ uint64_t cmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO completion operation that merges with a previous read will increment this count. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_cmerge_merged_pc_s cn; */ }; typedef union bdk_pemx_cmerge_merged_pc bdk_pemx_cmerge_merged_pc_t; static inline uint64_t BDK_PEMX_CMERGE_MERGED_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CMERGE_MERGED_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001a8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CMERGE_MERGED_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CMERGE_MERGED_PC(a) bdk_pemx_cmerge_merged_pc_t #define bustype_BDK_PEMX_CMERGE_MERGED_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CMERGE_MERGED_PC(a) "PEMX_CMERGE_MERGED_PC" #define device_bar_BDK_PEMX_CMERGE_MERGED_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CMERGE_MERGED_PC(a) (a) #define arguments_BDK_PEMX_CMERGE_MERGED_PC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_cmerge_received_pc * * PEM Merge Completions Received Performance Counter Register * This register reports the number of reads that enter the outbound read merge unit. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_cmerge_received_pc { uint64_t u; struct bdk_pemx_cmerge_received_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t cmerge_reads : 64; /**< [ 63: 0](R/W/H) Each NCBO completion operation increments this count. */ #else /* Word 0 - Little Endian */ uint64_t cmerge_reads : 64; /**< [ 63: 0](R/W/H) Each NCBO completion operation increments this count. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_cmerge_received_pc_s cn; */ }; typedef union bdk_pemx_cmerge_received_pc bdk_pemx_cmerge_received_pc_t; static inline uint64_t BDK_PEMX_CMERGE_RECEIVED_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CMERGE_RECEIVED_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001a0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CMERGE_RECEIVED_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CMERGE_RECEIVED_PC(a) bdk_pemx_cmerge_received_pc_t #define bustype_BDK_PEMX_CMERGE_RECEIVED_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CMERGE_RECEIVED_PC(a) "PEMX_CMERGE_RECEIVED_PC" #define device_bar_BDK_PEMX_CMERGE_RECEIVED_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CMERGE_RECEIVED_PC(a) (a) #define arguments_BDK_PEMX_CMERGE_RECEIVED_PC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_const_acc * * PEM Constant ACC Register * Contains contant attributes related to the PEM ACC tables. */ union bdk_pemx_const_acc { uint64_t u; struct bdk_pemx_const_acc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t bits_huge : 16; /**< [ 63: 48](RO) Number of bits in the address aperture for a huge-sized ACC table entry. See PEM()_REG_HUGE()_ACC. */ uint64_t num_huge : 16; /**< [ 47: 32](RO) Number of huge-sized ACC table entries. See PEM()_REG_HUGE()_ACC. */ uint64_t bits_norm : 16; /**< [ 31: 16](RO) Number of bits in the address aperture for a normal-sized ACC table entry. See PEM()_REG_NORM()_ACC. */ uint64_t num_norm : 16; /**< [ 15: 0](RO) Number of normal-sized ACC table entries. See PEM()_REG_NORM()_ACC. */ #else /* Word 0 - Little Endian */ uint64_t num_norm : 16; /**< [ 15: 0](RO) Number of normal-sized ACC table entries. See PEM()_REG_NORM()_ACC. */ uint64_t bits_norm : 16; /**< [ 31: 16](RO) Number of bits in the address aperture for a normal-sized ACC table entry. See PEM()_REG_NORM()_ACC. */ uint64_t num_huge : 16; /**< [ 47: 32](RO) Number of huge-sized ACC table entries. See PEM()_REG_HUGE()_ACC. */ uint64_t bits_huge : 16; /**< [ 63: 48](RO) Number of bits in the address aperture for a huge-sized ACC table entry. See PEM()_REG_HUGE()_ACC. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_const_acc_s cn; */ }; typedef union bdk_pemx_const_acc bdk_pemx_const_acc_t; static inline uint64_t BDK_PEMX_CONST_ACC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CONST_ACC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000210ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CONST_ACC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CONST_ACC(a) bdk_pemx_const_acc_t #define bustype_BDK_PEMX_CONST_ACC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CONST_ACC(a) "PEMX_CONST_ACC" #define device_bar_BDK_PEMX_CONST_ACC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CONST_ACC(a) (a) #define arguments_BDK_PEMX_CONST_ACC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_cpl_lut_valid * * PEM Completion Lookup Table Valid Register * This register specifies how many tags are outstanding for reads. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_cpl_lut_valid { uint64_t u; struct bdk_pemx_cpl_lut_valid_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t tag : 64; /**< [ 63: 0](RO/H) Bit vector set corresponds to an outstanding tag. */ #else /* Word 0 - Little Endian */ uint64_t tag : 64; /**< [ 63: 0](RO/H) Bit vector set corresponds to an outstanding tag. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_cpl_lut_valid_s cn8; */ struct bdk_pemx_cpl_lut_valid_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_10_63 : 54; uint64_t tag : 10; /**< [ 9: 0](RO/H) Number of read tags outstanding for outbound reads on PCIe. */ #else /* Word 0 - Little Endian */ uint64_t tag : 10; /**< [ 9: 0](RO/H) Number of read tags outstanding for outbound reads on PCIe. */ uint64_t reserved_10_63 : 54; #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_cpl_lut_valid bdk_pemx_cpl_lut_valid_t; static inline uint64_t BDK_PEMX_CPL_LUT_VALID(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CPL_LUT_VALID(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000098ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000098ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000098ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000038ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CPL_LUT_VALID", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CPL_LUT_VALID(a) bdk_pemx_cpl_lut_valid_t #define bustype_BDK_PEMX_CPL_LUT_VALID(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CPL_LUT_VALID(a) "PEMX_CPL_LUT_VALID" #define device_bar_BDK_PEMX_CPL_LUT_VALID(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CPL_LUT_VALID(a) (a) #define arguments_BDK_PEMX_CPL_LUT_VALID(a) (a),-1,-1,-1 /** * Register (NCB) pem#_csclk_active_pc * * PEM Conditional Coprocessor Clock Counter Register * This register counts conditional clocks for power management. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_csclk_active_pc { uint64_t u; struct bdk_pemx_csclk_active_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t count : 64; /**< [ 63: 0](R/W/H) Count of conditional coprocessor-clock cycles since reset. */ #else /* Word 0 - Little Endian */ uint64_t count : 64; /**< [ 63: 0](R/W/H) Count of conditional coprocessor-clock cycles since reset. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_csclk_active_pc_s cn; */ }; typedef union bdk_pemx_csclk_active_pc bdk_pemx_csclk_active_pc_t; static inline uint64_t BDK_PEMX_CSCLK_ACTIVE_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CSCLK_ACTIVE_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000050ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CSCLK_ACTIVE_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CSCLK_ACTIVE_PC(a) bdk_pemx_csclk_active_pc_t #define bustype_BDK_PEMX_CSCLK_ACTIVE_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CSCLK_ACTIVE_PC(a) "PEMX_CSCLK_ACTIVE_PC" #define device_bar_BDK_PEMX_CSCLK_ACTIVE_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CSCLK_ACTIVE_PC(a) (a) #define arguments_BDK_PEMX_CSCLK_ACTIVE_PC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ctl_status * * PEM Control Status Register * This is a general control and status register of the PEM. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC cold reset. Note this differs from PEM()_CTL_STATUS2's reset. */ union bdk_pemx_ctl_status { uint64_t u; struct bdk_pemx_ctl_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_55_63 : 9; uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM. */ uint64_t rd_flt : 1; /**< [ 51: 51](RO) Read fault. 0 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will return to the NCB/cores all-ones and non-fault. This is compatible with CN88XX pass 1.0. 1 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will return to the NCB/cores all-ones and fault. In the case of a read by a core, this fault will cause a synchronous external abort in the core. Config reads which are terminated by PCIe with an error (UR, etc), or config reads when the PEM is disabled or link is down, will return to the NCB/cores all-ones and non-fault regardless of this bit. */ uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM block to force a parity error when it is later read. */ uint64_t reserved_32_49 : 18; uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t reserved_12_15 : 4; uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t pm_xpme : 1; /**< [ 10: 10](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_pme port. EP mode. */ uint64_t ob_p_cmd : 1; /**< [ 9: 9](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core outband_pwrup_cmd port. EP mode. */ uint64_t clk_req_n : 1; /**< [ 8: 8](R/W) Indicates that the application logic is ready to have reference clock removed. The application should set this signal when it is ready to have reference clock removed trhough either L1 PM Sub-states or L1 CPM. If the application does not want to remove reference clock it should set this clear this bit. Internal: Controls app_clk_req_n input to the DW core. */ uint64_t rdy_entr_l23 : 1; /**< [ 7: 7](R/W) Application ready to enter L23. Indication that the application is ready to enter the L23 state. This provides control of the L23 entry (in case certain tasks must be performed before going into L23). The Mac delays sending PM_Enter_L23 (in response to PM_Turn_Off) until this signal becomes active. When this signal has been asserted by the application, it must be kept asserted until L2 entry has completed Internal: Controls app_ready_entr_l23 input to the DW core. */ uint64_t reserved_5_6 : 2; uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t reserved_3 : 1; uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ #else /* Word 0 - Little Endian */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t reserved_3 : 1; uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t reserved_5_6 : 2; uint64_t rdy_entr_l23 : 1; /**< [ 7: 7](R/W) Application ready to enter L23. Indication that the application is ready to enter the L23 state. This provides control of the L23 entry (in case certain tasks must be performed before going into L23). The Mac delays sending PM_Enter_L23 (in response to PM_Turn_Off) until this signal becomes active. When this signal has been asserted by the application, it must be kept asserted until L2 entry has completed Internal: Controls app_ready_entr_l23 input to the DW core. */ uint64_t clk_req_n : 1; /**< [ 8: 8](R/W) Indicates that the application logic is ready to have reference clock removed. The application should set this signal when it is ready to have reference clock removed trhough either L1 PM Sub-states or L1 CPM. If the application does not want to remove reference clock it should set this clear this bit. Internal: Controls app_clk_req_n input to the DW core. */ uint64_t ob_p_cmd : 1; /**< [ 9: 9](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core outband_pwrup_cmd port. EP mode. */ uint64_t pm_xpme : 1; /**< [ 10: 10](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_pme port. EP mode. */ uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t reserved_12_15 : 4; uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t reserved_32_49 : 18; uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM block to force a parity error when it is later read. */ uint64_t rd_flt : 1; /**< [ 51: 51](RO) Read fault. 0 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will return to the NCB/cores all-ones and non-fault. This is compatible with CN88XX pass 1.0. 1 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will return to the NCB/cores all-ones and fault. In the case of a read by a core, this fault will cause a synchronous external abort in the core. Config reads which are terminated by PCIe with an error (UR, etc), or config reads when the PEM is disabled or link is down, will return to the NCB/cores all-ones and non-fault regardless of this bit. */ uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM. */ uint64_t reserved_55_63 : 9; #endif /* Word 0 - End */ } s; struct bdk_pemx_ctl_status_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_52_63 : 12; uint64_t rd_flt : 1; /**< [ 51: 51](RO) Read fault. 0 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will return to the NCB/cores all-ones and non-fault. This is compatible with CN88XX pass 1.0. 1 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will return to the NCB/cores all-ones and fault. In the case of a read by a core, this fault will cause a synchronous external abort in the core. Config reads which are terminated by PCIe with an error (UR, etc), or config reads when the PEM is disabled or link is down, will return to the NCB/cores all-ones and non-fault regardless of this bit. */ uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM block to force a parity error when it is later read. */ uint64_t reserved_48_49 : 2; uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */ uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */ uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */ uint64_t reserved_32_33 : 2; uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */ uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t reserved_6_10 : 5; uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ #else /* Word 0 - Little Endian */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */ uint64_t reserved_6_10 : 5; uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */ uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t reserved_32_33 : 2; uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */ uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */ uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */ uint64_t reserved_48_49 : 2; uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM block to force a parity error when it is later read. */ uint64_t rd_flt : 1; /**< [ 51: 51](RO) Read fault. 0 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will return to the NCB/cores all-ones and non-fault. This is compatible with CN88XX pass 1.0. 1 = A PCIe non-config read which is terminated by PCIe with an error (UR, etc) will return to the NCB/cores all-ones and fault. In the case of a read by a core, this fault will cause a synchronous external abort in the core. Config reads which are terminated by PCIe with an error (UR, etc), or config reads when the PEM is disabled or link is down, will return to the NCB/cores all-ones and non-fault regardless of this bit. */ uint64_t reserved_52_63 : 12; #endif /* Word 0 - End */ } cn88xxp1; struct bdk_pemx_ctl_status_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_46_63 : 18; uint64_t auto_sd : 1; /**< [ 45: 45](RO/H) Link hardware autonomous speed disable. */ uint64_t dnum : 5; /**< [ 44: 40](RO/H) Primary bus device number. */ uint64_t pbus : 8; /**< [ 39: 32](RO/H) Primary bus number. */ uint64_t reserved_16_31 : 16; uint64_t spares : 3; /**< [ 15: 13](R/W) Spare flops. */ uint64_t scr_done : 1; /**< [ 12: 12](R/W) The ROM script (if present) can test this bit to see if the ROM script has already run. Typical usage is for the ROM script to test [SCR_DONE] and exit if true, else at the end of the ROM script, the script sets this bit. */ uint64_t pm_xtoff : 1; /**< [ 11: 11](WO) When written with one, a single cycle pulse to request from application to generate a PM_Turn_Off message. RC mode. Internal: Controls apps_pm_xmt_turnoff input to the DW core. */ uint64_t reserved_9_10 : 2; uint64_t clk_req_n : 1; /**< [ 8: 8](R/W) Indicates that the application logic is ready to have reference clock removed. The application should set this signal when it is ready to have reference clock removed trhough either L1 PM Sub-states or L1 CPM. If the application does not want to remove reference clock it should set this clear this bit. Internal: Controls app_clk_req_n input to the DW core. */ uint64_t rdy_entr_l23 : 1; /**< [ 7: 7](R/W) Application ready to enter L23. Indication that the application is ready to enter the L23 state. This provides control of the L23 entry (in case certain tasks must be performed before going into L23). The Mac delays sending PM_Enter_L23 (in response to PM_Turn_Off) until this signal becomes active. When this signal has been asserted by the application, it must be kept asserted until L2 entry has completed Internal: Controls app_ready_entr_l23 input to the DW core. */ uint64_t margin_rdy : 1; /**< [ 6: 6](R/W) Margining ready. Indicates when the PHY ready to accept margining commands. This signal is reflected in PCIEEP_MRG_PORT_CAP_STAT[M_RDY] / PCIERC_MRG_PORT_CAP_STAT[M_RDY]. Internal: Controls app_margining_ready input to the DW core. */ uint64_t frc_retry : 1; /**< [ 5: 5](R/W) When set, forces CRS status to be returned for any config access. Internal: Controls app_req_retry_en input to the DW core. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear the link is disabled. Once set, can only be cleared by a MAC power reset. Internal: Controls app_ltssm_en input to the DW core. */ uint64_t l1_exit : 1; /**< [ 3: 3](R/W) L1 exit control. 0 = Hardware is allowed to enter L1 power state and will only exit when woken up by the remote link partner or traffic arrives on NCBO or EBO busses. 1 = Entry into L1 state is disabled and if already in L1 state, will force an exit. Internal: Controls app_req_exit_l1 input high to the DW core. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. Internal: Controls diag_ctrl_bus[2] input to the DW core. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. Internal: Controls diag_ctrl_bus[1] input to the DW core. */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. Internal: Controls diag_ctrl_bus[0] input to the DW core. */ #else /* Word 0 - Little Endian */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. Internal: Controls diag_ctrl_bus[0] input to the DW core. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. Internal: Controls diag_ctrl_bus[1] input to the DW core. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. Internal: Controls diag_ctrl_bus[2] input to the DW core. */ uint64_t l1_exit : 1; /**< [ 3: 3](R/W) L1 exit control. 0 = Hardware is allowed to enter L1 power state and will only exit when woken up by the remote link partner or traffic arrives on NCBO or EBO busses. 1 = Entry into L1 state is disabled and if already in L1 state, will force an exit. Internal: Controls app_req_exit_l1 input high to the DW core. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear the link is disabled. Once set, can only be cleared by a MAC power reset. Internal: Controls app_ltssm_en input to the DW core. */ uint64_t frc_retry : 1; /**< [ 5: 5](R/W) When set, forces CRS status to be returned for any config access. Internal: Controls app_req_retry_en input to the DW core. */ uint64_t margin_rdy : 1; /**< [ 6: 6](R/W) Margining ready. Indicates when the PHY ready to accept margining commands. This signal is reflected in PCIEEP_MRG_PORT_CAP_STAT[M_RDY] / PCIERC_MRG_PORT_CAP_STAT[M_RDY]. Internal: Controls app_margining_ready input to the DW core. */ uint64_t rdy_entr_l23 : 1; /**< [ 7: 7](R/W) Application ready to enter L23. Indication that the application is ready to enter the L23 state. This provides control of the L23 entry (in case certain tasks must be performed before going into L23). The Mac delays sending PM_Enter_L23 (in response to PM_Turn_Off) until this signal becomes active. When this signal has been asserted by the application, it must be kept asserted until L2 entry has completed Internal: Controls app_ready_entr_l23 input to the DW core. */ uint64_t clk_req_n : 1; /**< [ 8: 8](R/W) Indicates that the application logic is ready to have reference clock removed. The application should set this signal when it is ready to have reference clock removed trhough either L1 PM Sub-states or L1 CPM. If the application does not want to remove reference clock it should set this clear this bit. Internal: Controls app_clk_req_n input to the DW core. */ uint64_t reserved_9_10 : 2; uint64_t pm_xtoff : 1; /**< [ 11: 11](WO) When written with one, a single cycle pulse to request from application to generate a PM_Turn_Off message. RC mode. Internal: Controls apps_pm_xmt_turnoff input to the DW core. */ uint64_t scr_done : 1; /**< [ 12: 12](R/W) The ROM script (if present) can test this bit to see if the ROM script has already run. Typical usage is for the ROM script to test [SCR_DONE] and exit if true, else at the end of the ROM script, the script sets this bit. */ uint64_t spares : 3; /**< [ 15: 13](R/W) Spare flops. */ uint64_t reserved_16_31 : 16; uint64_t pbus : 8; /**< [ 39: 32](RO/H) Primary bus number. */ uint64_t dnum : 5; /**< [ 44: 40](RO/H) Primary bus device number. */ uint64_t auto_sd : 1; /**< [ 45: 45](RO/H) Link hardware autonomous speed disable. */ uint64_t reserved_46_63 : 18; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_ctl_status_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_55_63 : 9; uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM.to improve small TLP performance. */ uint64_t reserved_51 : 1; uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM block to force a parity error when it is later read. */ uint64_t reserved_48_49 : 2; uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */ uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */ uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */ uint64_t reserved_32_33 : 2; uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */ uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t reserved_6_10 : 5; uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ #else /* Word 0 - Little Endian */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */ uint64_t reserved_6_10 : 5; uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */ uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t reserved_32_33 : 2; uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */ uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */ uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */ uint64_t reserved_48_49 : 2; uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM block to force a parity error when it is later read. */ uint64_t reserved_51 : 1; uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM.to improve small TLP performance. */ uint64_t reserved_55_63 : 9; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_ctl_status_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_48_63 : 16; uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */ uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */ uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */ uint64_t reserved_32_33 : 2; uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */ uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t pm_xpme : 1; /**< [ 10: 10](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_pme port. EP mode. */ uint64_t ob_p_cmd : 1; /**< [ 9: 9](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core outband_pwrup_cmd port. EP mode. */ uint64_t reserved_8 : 1; uint64_t reserved_7 : 1; uint64_t nf_ecrc : 1; /**< [ 6: 6](R/W) Do not forward peer-to-peer ECRC TLPs. */ uint64_t reserved_5 : 1; uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ #else /* Word 0 - Little Endian */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t reserved_5 : 1; uint64_t nf_ecrc : 1; /**< [ 6: 6](R/W) Do not forward peer-to-peer ECRC TLPs. */ uint64_t reserved_7 : 1; uint64_t reserved_8 : 1; uint64_t ob_p_cmd : 1; /**< [ 9: 9](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core outband_pwrup_cmd port. EP mode. */ uint64_t pm_xpme : 1; /**< [ 10: 10](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_pme port. EP mode. */ uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */ uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t reserved_32_33 : 2; uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */ uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */ uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */ uint64_t reserved_48_63 : 16; #endif /* Word 0 - End */ } cn83xx; struct bdk_pemx_ctl_status_cn88xxp2 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_55_63 : 9; uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM. */ uint64_t reserved_51 : 1; uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM block to force a parity error when it is later read. */ uint64_t reserved_48_49 : 2; uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */ uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */ uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */ uint64_t reserved_32_33 : 2; uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */ uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t reserved_6_10 : 5; uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ #else /* Word 0 - Little Endian */ uint64_t inv_lcrc : 1; /**< [ 0: 0](R/W) When set, causes the LSB of the LCRC to be inverted. */ uint64_t inv_ecrc : 1; /**< [ 1: 1](R/W) When set, causes the LSB of the ECRC to be inverted. */ uint64_t fast_lm : 1; /**< [ 2: 2](R/W) When set, forces fast link mode. */ uint64_t ro_ctlp : 1; /**< [ 3: 3](R/W) When set, C-TLPs that have the RO bit set will not wait for P-TLPs that are normally sent first. */ uint64_t lnk_enb : 1; /**< [ 4: 4](R/W) When set, the link is enabled; when clear (0) the link is disabled. This bit only is active when in RC mode. */ uint64_t dly_one : 1; /**< [ 5: 5](R/W/H) When set the output client state machines will wait one cycle before starting a new TLP out. */ uint64_t reserved_6_10 : 5; uint64_t pm_xtoff : 1; /**< [ 11: 11](R/W/H) When written with one, a single cycle pulse is sent to the PCIe core pm_xmt_turnoff port. RC mode. */ uint64_t spares : 4; /**< [ 15: 12](R/W) Spare flops. */ uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 0x10000 in coprocessor clocks to wait for a CPL to a configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of 0 disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200ms or less, although the PCI Express Base Specification allows up to 900ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t reserved_32_33 : 2; uint64_t pbus : 8; /**< [ 41: 34](RO/H) Primary bus number. */ uint64_t dnum : 5; /**< [ 46: 42](RO/H) Primary bus device number. */ uint64_t auto_sd : 1; /**< [ 47: 47](RO/H) Link hardware autonomous speed disable. */ uint64_t reserved_48_49 : 2; uint64_t inv_dpar : 1; /**< [ 50: 50](R/W) Invert the generated parity to be written into the most significant data queue buffer RAM block to force a parity error when it is later read. */ uint64_t reserved_51 : 1; uint64_t inb_grant_limit : 3; /**< [ 54: 52](R/W) The number of inbound TLPs allowed in flight in PEM. */ uint64_t reserved_55_63 : 9; #endif /* Word 0 - End */ } cn88xxp2; }; typedef union bdk_pemx_ctl_status bdk_pemx_ctl_status_t; static inline uint64_t BDK_PEMX_CTL_STATUS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CTL_STATUS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000000ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000000ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000000ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000000ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CTL_STATUS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CTL_STATUS(a) bdk_pemx_ctl_status_t #define bustype_BDK_PEMX_CTL_STATUS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CTL_STATUS(a) "PEMX_CTL_STATUS" #define device_bar_BDK_PEMX_CTL_STATUS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CTL_STATUS(a) (a) #define arguments_BDK_PEMX_CTL_STATUS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ctl_status2 * * PEM Control Status 2 Register * This register contains additional general control and status of the PEM. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. Note this differs from PEM()_CTL_STATUS's reset. */ union bdk_pemx_ctl_status2 { uint64_t u; struct bdk_pemx_ctl_status2_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_33_63 : 31; uint64_t trgt1_ecc_cor_dis : 1; /**< [ 32: 32](R/W) Disable correction of single bit ECC errors on TRGT1 data from PEMC to PEMM. */ uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 655,360 ns clocks to wait for a CPL to an outbound configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of zero disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200 ms or less, although the PCI express base specification allows up to 900 ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time * 0x10000 in core clocks to wait for the TLP FIFOs to be able to unload an entry. If there is no forward progress, such that the timeout occurs, credits are returned to the SLI and an interrupt (if enabled) is asserted. Any more TLPs received are dropped on the floor and the credits associated with those TLPs are returned as well. Note that 0xFFFF is a reserved value that will put the PEM in the 'forward progress stopped' state immediately. This state holds until a MAC reset is received. */ #else /* Word 0 - Little Endian */ uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time * 0x10000 in core clocks to wait for the TLP FIFOs to be able to unload an entry. If there is no forward progress, such that the timeout occurs, credits are returned to the SLI and an interrupt (if enabled) is asserted. Any more TLPs received are dropped on the floor and the credits associated with those TLPs are returned as well. Note that 0xFFFF is a reserved value that will put the PEM in the 'forward progress stopped' state immediately. This state holds until a MAC reset is received. */ uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 655,360 ns clocks to wait for a CPL to an outbound configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of zero disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200 ms or less, although the PCI express base specification allows up to 900 ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t trgt1_ecc_cor_dis : 1; /**< [ 32: 32](R/W) Disable correction of single bit ECC errors on TRGT1 data from PEMC to PEMM. */ uint64_t reserved_33_63 : 31; #endif /* Word 0 - End */ } s; struct bdk_pemx_ctl_status2_cn8 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time * 0x10000 in core clocks to wait for the TLP FIFOs to be able to unload an entry. If there is no forward progress, such that the timeout occurs, credits are returned to the SLI and an interrupt (if enabled) is asserted. Any more TLPs received are dropped on the floor and the credits associated with those TLPs are returned as well. Note that 0xFFFF is a reserved value that will put the PEM in the 'forward progress stopped' state immediately. This state holds until a MAC reset is received. */ #else /* Word 0 - Little Endian */ uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time * 0x10000 in core clocks to wait for the TLP FIFOs to be able to unload an entry. If there is no forward progress, such that the timeout occurs, credits are returned to the SLI and an interrupt (if enabled) is asserted. Any more TLPs received are dropped on the floor and the credits associated with those TLPs are returned as well. Note that 0xFFFF is a reserved value that will put the PEM in the 'forward progress stopped' state immediately. This state holds until a MAC reset is received. */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } cn8; struct bdk_pemx_ctl_status2_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_33_63 : 31; uint64_t trgt1_ecc_cor_dis : 1; /**< [ 32: 32](R/W) Disable correction of single bit ECC errors on TRGT1 data from PEMC to PEMM. */ uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 655,360 ns clocks to wait for a CPL to an outbound configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of zero disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200 ms or less, although the PCI express base specification allows up to 900 ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time in units of 655,360 ns clocks to wait for the TLP FIFOs to be able to unload an outbound entry. If there is no forward progress, such that the timeout occurs, credits are returned to the originating bus and an interrupt (if enabled) is asserted. Further TLPs received are dropped on the floor and the credits associated with those TLPs are returned as well. Non-Posted are dropped with a completion returned (all 1's if config else completion with fault). Note that 0x0000 will block detection of no forward progress. Note that 0xFFFF is a reserved value that will immediately place the PEM into the 'forward progress stopped' state. This state holds until a MAC reset is received. */ #else /* Word 0 - Little Endian */ uint64_t no_fwd_prg : 16; /**< [ 15: 0](R/W) The time in units of 655,360 ns clocks to wait for the TLP FIFOs to be able to unload an outbound entry. If there is no forward progress, such that the timeout occurs, credits are returned to the originating bus and an interrupt (if enabled) is asserted. Further TLPs received are dropped on the floor and the credits associated with those TLPs are returned as well. Non-Posted are dropped with a completion returned (all 1's if config else completion with fault). Note that 0x0000 will block detection of no forward progress. Note that 0xFFFF is a reserved value that will immediately place the PEM into the 'forward progress stopped' state. This state holds until a MAC reset is received. */ uint64_t cfg_rtry : 16; /**< [ 31: 16](R/W) The time in units of 655,360 ns clocks to wait for a CPL to an outbound configuration read that does not carry a retry status. Until such time that the timeout occurs and retry status is received for a configuration read, the read will be resent. A value of zero disables retries and treats a CPL retry as a CPL UR. To use, it is recommended [CFG_RTRY] be set value corresponding to 200 ms or less, although the PCI express base specification allows up to 900 ms for a device to send a successful completion. When enabled, only one CFG RD may be issued until either successful completion or CPL UR. */ uint64_t trgt1_ecc_cor_dis : 1; /**< [ 32: 32](R/W) Disable correction of single bit ECC errors on TRGT1 data from PEMC to PEMM. */ uint64_t reserved_33_63 : 31; #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_ctl_status2 bdk_pemx_ctl_status2_t; static inline uint64_t BDK_PEMX_CTL_STATUS2(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CTL_STATUS2(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000008ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000008ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000008ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000120ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CTL_STATUS2", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CTL_STATUS2(a) bdk_pemx_ctl_status2_t #define bustype_BDK_PEMX_CTL_STATUS2(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_CTL_STATUS2(a) "PEMX_CTL_STATUS2" #define device_bar_BDK_PEMX_CTL_STATUS2(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CTL_STATUS2(a) (a) #define arguments_BDK_PEMX_CTL_STATUS2(a) (a),-1,-1,-1 /** * Register (RSL) pem#_ctl_stream * * PEM EP Mode Stream Register * This register is used to generate the SMMU stream ID when in endpoint mode. */ union bdk_pemx_ctl_stream { uint64_t u; struct bdk_pemx_ctl_stream_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_32_63 : 32; uint64_t epsbmax : 16; /**< [ 31: 16](R/W) The maximum SSU stream ID that will be generated by inbound endpoint transactions. See [EPSBBASE]. Resets to PCC_DEV_CON_E::PCIERC({a}) where {a} is the PEM number. */ uint64_t epsbbase : 16; /**< [ 15: 0](R/W) The base SMMU stream ID that will be generated by inbound endpoint transactions. Resets to PCC_DEV_CON_E::PCIERC({a}) where {a} is the PEM number. When in EP mode: _ stream id = min( (PCI_stream_id\<15:0\> + [EPSBBASE]), [EPSBMAX]). When [EPSBBASE]/[EPSBMAX] are changed from the reset values then: * Different endpoint requestors will map to different SMMU streams, enabling the possibility of having different SMMU translations for each endpoint requestor. * Software must ensure that [EPSBBASE]...[EPSBMAX] are non-overlapping between all endpoint PEMs and non-overlapping with existing PCC devices. * IOBN()_SLITAG()_CONTROL[BITS_DIS] must be set. */ #else /* Word 0 - Little Endian */ uint64_t epsbbase : 16; /**< [ 15: 0](R/W) The base SMMU stream ID that will be generated by inbound endpoint transactions. Resets to PCC_DEV_CON_E::PCIERC({a}) where {a} is the PEM number. When in EP mode: _ stream id = min( (PCI_stream_id\<15:0\> + [EPSBBASE]), [EPSBMAX]). When [EPSBBASE]/[EPSBMAX] are changed from the reset values then: * Different endpoint requestors will map to different SMMU streams, enabling the possibility of having different SMMU translations for each endpoint requestor. * Software must ensure that [EPSBBASE]...[EPSBMAX] are non-overlapping between all endpoint PEMs and non-overlapping with existing PCC devices. * IOBN()_SLITAG()_CONTROL[BITS_DIS] must be set. */ uint64_t epsbmax : 16; /**< [ 31: 16](R/W) The maximum SSU stream ID that will be generated by inbound endpoint transactions. See [EPSBBASE]. Resets to PCC_DEV_CON_E::PCIERC({a}) where {a} is the PEM number. */ uint64_t reserved_32_63 : 32; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ctl_stream_s cn; */ }; typedef union bdk_pemx_ctl_stream bdk_pemx_ctl_stream_t; static inline uint64_t BDK_PEMX_CTL_STREAM(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_CTL_STREAM(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c00004d0ll + 0x1000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_CTL_STREAM", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_CTL_STREAM(a) bdk_pemx_ctl_stream_t #define bustype_BDK_PEMX_CTL_STREAM(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_CTL_STREAM(a) "PEMX_CTL_STREAM" #define device_bar_BDK_PEMX_CTL_STREAM(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_CTL_STREAM(a) (a) #define arguments_BDK_PEMX_CTL_STREAM(a) (a),-1,-1,-1 /** * Register (RSL) pem#_dbg_ena_w1c * * PEM Debug Information Enable Clear Register * This register clears interrupt enable bits. */ union bdk_pemx_dbg_ena_w1c { uint64_t u; struct bdk_pemx_dbg_ena_w1c_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t reserved_51_55 : 5; uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t reserved_32 : 1; uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t reserved_32 : 1; uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t reserved_51_55 : 5; uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } s; struct bdk_pemx_dbg_ena_w1c_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_57_63 : 7; uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t reserved_57_63 : 7; #endif /* Word 0 - End */ } cn88xxp1; struct bdk_pemx_dbg_ena_w1c_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..2)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_dbg_ena_w1c_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_56_63 : 8; uint64_t rasdp : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RASDP]. */ uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_D_DBE]. */ uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_D_SBE]. */ uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_C_DBE]. */ uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D0_SBE]. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[BMD_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[SPOISON]. */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[SPOISON]. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[LOFP]. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[BMD_E]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[C_C_DBE]. */ uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_C_SBE]. */ uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_C_DBE]. */ uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_D_SBE]. */ uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[M2S_D_DBE]. */ uint64_t rasdp : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..3)_DBG_INFO[RASDP]. */ uint64_t reserved_56_63 : 8; #endif /* Word 0 - End */ } cn83xx; struct bdk_pemx_dbg_ena_w1c_cn88xxp2 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Reads or clears enable for PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } cn88xxp2; }; typedef union bdk_pemx_dbg_ena_w1c bdk_pemx_dbg_ena_w1c_t; static inline uint64_t BDK_PEMX_DBG_ENA_W1C(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_DBG_ENA_W1C(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000458ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000458ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000458ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_DBG_ENA_W1C", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_DBG_ENA_W1C(a) bdk_pemx_dbg_ena_w1c_t #define bustype_BDK_PEMX_DBG_ENA_W1C(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_DBG_ENA_W1C(a) "PEMX_DBG_ENA_W1C" #define device_bar_BDK_PEMX_DBG_ENA_W1C(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_DBG_ENA_W1C(a) (a) #define arguments_BDK_PEMX_DBG_ENA_W1C(a) (a),-1,-1,-1 /** * Register (RSL) pem#_dbg_ena_w1s * * PEM Debug Information Enable Set Register * This register sets interrupt enable bits. */ union bdk_pemx_dbg_ena_w1s { uint64_t u; struct bdk_pemx_dbg_ena_w1s_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t reserved_51_55 : 5; uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t reserved_32 : 1; uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t reserved_32 : 1; uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t reserved_51_55 : 5; uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } s; struct bdk_pemx_dbg_ena_w1s_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_57_63 : 7; uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t reserved_57_63 : 7; #endif /* Word 0 - End */ } cn88xxp1; struct bdk_pemx_dbg_ena_w1s_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..2)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_dbg_ena_w1s_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_56_63 : 8; uint64_t rasdp : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RASDP]. */ uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_D_DBE]. */ uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_D_SBE]. */ uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_C_DBE]. */ uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D0_SBE]. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[BMD_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[SPOISON]. */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[SPOISON]. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[LOFP]. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[BMD_E]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[C_C_DBE]. */ uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_C_SBE]. */ uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_C_DBE]. */ uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_D_SBE]. */ uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[M2S_D_DBE]. */ uint64_t rasdp : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..3)_DBG_INFO[RASDP]. */ uint64_t reserved_56_63 : 8; #endif /* Word 0 - End */ } cn83xx; struct bdk_pemx_dbg_ena_w1s_cn88xxp2 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets enable for PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } cn88xxp2; }; typedef union bdk_pemx_dbg_ena_w1s bdk_pemx_dbg_ena_w1s_t; static inline uint64_t BDK_PEMX_DBG_ENA_W1S(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_DBG_ENA_W1S(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000460ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000460ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000460ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_DBG_ENA_W1S", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_DBG_ENA_W1S(a) bdk_pemx_dbg_ena_w1s_t #define bustype_BDK_PEMX_DBG_ENA_W1S(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_DBG_ENA_W1S(a) "PEMX_DBG_ENA_W1S" #define device_bar_BDK_PEMX_DBG_ENA_W1S(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_DBG_ENA_W1S(a) (a) #define arguments_BDK_PEMX_DBG_ENA_W1S(a) (a),-1,-1,-1 /** * Register (NCB) pem#_dbg_info * * PEM Debug Information Register * This is a debug information register of the PEM. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_dbg_info { uint64_t u; struct bdk_pemx_dbg_info_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Detected a M2S FIFO parity error. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */ uint64_t reserved_32_55 : 24; uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only). Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL is set. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only). Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only). Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only). Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only). Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL is set. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only). Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t reserved_32_55 : 24; uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Detected a M2S FIFO parity error. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } s; struct bdk_pemx_dbg_info_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_57_63 : 7; uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Detected a core header queue bank1 single-bit error. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a core header queue bank0 double-bit error. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a core header queue bank0 single-bit error. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a core retry RAM double-bit error. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a core retry RAM single-bit error. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Detected a data queue RAM parity error. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL is set. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only). Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only). Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only). Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only). Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL is set. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Detected a data queue RAM parity error. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a core retry RAM single-bit error. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a core retry RAM double-bit error. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a core header queue bank0 single-bit error. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a core header queue bank0 double-bit error. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Detected a core header queue bank1 single-bit error. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */ uint64_t reserved_57_63 : 7; #endif /* Word 0 - End */ } cn88xxp1; struct bdk_pemx_dbg_info_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_34_63 : 30; uint64_t rasdp : 1; /**< [ 33: 33](R/W1C/H) Core entered RAS data protection error mode. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) A NP or P TLP was seen in the outbound path, but it was not allowed to master the bus. If a PF TLP and the PCIEEP_CMD[ME] is not set. For VF TLP, either the PCIEEP_CMD[ME]/PCIEEPVF_CMD[ME] are not set. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the replay timer expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only). Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message. This bit is set when a message with ERR_FATAL is received. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP not to be forwarded to the peer. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or vendor message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. This legacy interrupt is deprecated and is never set. */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. This legacy interrupt is deprecated and is never set. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or vendor message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP not to be forwarded to the peer. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message. This bit is set when a message with ERR_FATAL is received. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only). Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the replay timer expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) A NP or P TLP was seen in the outbound path, but it was not allowed to master the bus. If a PF TLP and the PCIEEP_CMD[ME] is not set. For VF TLP, either the PCIEEP_CMD[ME]/PCIEEPVF_CMD[ME] are not set. */ uint64_t rasdp : 1; /**< [ 33: 33](R/W1C/H) Core entered RAS data protection error mode. */ uint64_t reserved_34_63 : 30; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_dbg_info_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Detected a M2S FIFO parity error. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Detected a core header queue bank1 single-bit error. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a core header queue bank0 double-bit error. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a core header queue bank0 single-bit error. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a core retry RAM double-bit error. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a core retry RAM single-bit error. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Detected a data queue RAM parity error. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL is set. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only). Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only). Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message (RC mode only). Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message (RC mode only). Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message (RC mode only). This bit is set when a message with ERR_FATAL is set. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1C/H) Detected a data queue RAM parity error. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a core retry RAM single-bit error. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a core retry RAM double-bit error. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a core header queue bank0 single-bit error. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a core header queue bank0 double-bit error. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1C/H) Detected a core header queue bank1 single-bit error. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1C/H) Detected a core header queue bank1 double-bit error. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1C/H) Detected a M2S FIFO parity error. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_dbg_info_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_56_63 : 8; uint64_t rasdp : 1; /**< [ 55: 55](R/W1C/H) Core entered RAS data protection error mode. */ uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a M2S data fifo double bit error. */ uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a M2S data fifo single bit error. */ uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a M2S data fifo double bit error. */ uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a M2S control fifo single bit error. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) A NP or P TLP was seen in the outbound path, but it was not allowed to master the bus. If a PF TLP and the PCIEEP()_CFG001[ME] is not set. For VF TLP, either the PCIEEP()_CFG001[ME]/PCIEEPVF()_CFG001[ME] are not set. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only). Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message. This bit is set when a message with ERR_FATAL is set. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP not to be forwarded to the peer. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. This legacy interrupt is deprecated and is never set. */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1C/H) Poisoned TLP sent. This legacy interrupt is deprecated and is never set. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1C/H) Received TLP is malformed or a message. If the core receives a MSG (or Vendor Message) or if a received AtomicOp violates address/length rules, this bit is set as well. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1C/H) Received TLP has link layer error. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1C/H) Received ECRC error. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1C/H) Received poisoned TLP not to be forwarded to the peer. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1C/H) Received correctable error message. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1C/H) Received nonfatal error message. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1C/H) Received fatal-error message. This bit is set when a message with ERR_FATAL is set. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1C/H) Received PME message (RC mode only). Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1C/H) Received PME turnoff acknowledge message (RC mode only). Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1C/H) Received unlock message (EP mode only). Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1C/H) Received vendor-defined message. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1C/H) A completion timeout occurred. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1C/H) Replay timer expired. This bit is set when the REPLAY_TIMER expires in the PCIe core. The probability of this bit being set increases with the traffic load. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1C/H) Maximum number of retries exceeded. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1C/H) Received DLLP with datalink layer error. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1C/H) Received TLP with datalink layer error. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1C/H) DLLP protocol error (out of sequence DLLP). Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1C/H) Flow control protocol violation (watchdog timer). Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1C/H) PHY reported an 8 B/10 B decode error (RxStatus = 0x4) or disparity error (RxStatus = 0x7). Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1C/H) Flow control update violation. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1C/H) Receive queue overflow. Normally happens only when flow control advertisements are ignored. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1C/H) Received an unexpected completion. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1C/H) Received a completion with UR status. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1C/H) Received a completion with CA status. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1C/H) Completer aborted a request. This bit is never set because CNXXXX does not generate completer aborts. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1C/H) Received a request which device does not support. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1C/H) Received a malformed TLP. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1C/H) Received a completion with poisoned payload. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1C/H) Received a write with poisoned payload. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1C/H) Received an ECRC error. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1C/H) Lack of forward progress at TLP FIFOs timeout occurred. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1C/H) A NP or P TLP was seen in the outbound path, but it was not allowed to master the bus. If a PF TLP and the PCIEEP()_CFG001[ME] is not set. For VF TLP, either the PCIEEP()_CFG001[ME]/PCIEEPVF()_CFG001[ME] are not set. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1C/H) Detected a TLP posted FIFO data0 single-bit error. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1C/H) Detected a TLP posted FIFO data0 double-bit error. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1C/H) Detected a TLP posted FIFO data1 single-bit error. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1C/H) Detected a TLP posted FIFO data1 double-bit error. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1C/H) Detected a TLP posted FIFO control single-bit error. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1C/H) Detected a TLP posted FIFO control double-bit error. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1C/H) Detected a TLP NP FIFO data0 single-bit error. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1C/H) Detected a TLP NP FIFO data0 double-bit error. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1C/H) Detected a TLP NP FIFO data1 single-bit error. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1C/H) Detected a TLP NP FIFO data1 double-bit error. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1C/H) Detected a TLP NP FIFO control single-bit error. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1C/H) Detected a TLP NP FIFO control double-bit error. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1C/H) Detected a TLP CPL FIFO data0 single-bit error. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1C/H) Detected a TLP CPL FIFO data0 double-bit error. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1C/H) Detected a TLP CPL FIFO data1 single-bit error. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1C/H) Detected a TLP CPL FIFO data1 double-bit error. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1C/H) Detected a TLP CPL FIFO control single-bit error. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1C/H) Detected a TLP CPL FIFO control double-bit error. */ uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1C/H) Detected a M2S control fifo single bit error. */ uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1C/H) Detected a M2S data fifo double bit error. */ uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1C/H) Detected a M2S data fifo single bit error. */ uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1C/H) Detected a M2S data fifo double bit error. */ uint64_t rasdp : 1; /**< [ 55: 55](R/W1C/H) Core entered RAS data protection error mode. */ uint64_t reserved_56_63 : 8; #endif /* Word 0 - End */ } cn83xx; /* struct bdk_pemx_dbg_info_cn81xx cn88xxp2; */ }; typedef union bdk_pemx_dbg_info bdk_pemx_dbg_info_t; static inline uint64_t BDK_PEMX_DBG_INFO(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_DBG_INFO(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000448ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000448ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000448ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000f8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_DBG_INFO", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_DBG_INFO(a) bdk_pemx_dbg_info_t #define bustype_BDK_PEMX_DBG_INFO(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_DBG_INFO(a) "PEMX_DBG_INFO" #define device_bar_BDK_PEMX_DBG_INFO(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_DBG_INFO(a) (a) #define arguments_BDK_PEMX_DBG_INFO(a) (a),-1,-1,-1 /** * Register (RSL) pem#_dbg_info_w1s * * PEM Debug Information Set Register * This register sets interrupt bits. */ union bdk_pemx_dbg_info_w1s { uint64_t u; struct bdk_pemx_dbg_info_w1s_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t reserved_51_55 : 5; uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t reserved_32 : 1; uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t reserved_32 : 1; uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t reserved_51_55 : 5; uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } s; struct bdk_pemx_dbg_info_w1s_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_57_63 : 7; uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t reserved_57_63 : 7; #endif /* Word 0 - End */ } cn88xxp1; struct bdk_pemx_dbg_info_w1s_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..2)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_dbg_info_w1s_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_56_63 : 8; uint64_t rasdp : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RASDP]. */ uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_D_DBE]. */ uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_D_SBE]. */ uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_C_DBE]. */ uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D0_SBE]. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[BMD_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[SPOISON]. */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[SPOISON]. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rumep : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RUMEP]. Internal: pedc_radm_msg_unlock. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[LOFP]. */ uint64_t bmd_e : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[BMD_E]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[C_C_DBE]. */ uint64_t m2s_c_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_C_SBE]. */ uint64_t m2s_c_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_C_DBE]. */ uint64_t m2s_d_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_D_SBE]. */ uint64_t m2s_d_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[M2S_D_DBE]. */ uint64_t rasdp : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..3)_DBG_INFO[RASDP]. */ uint64_t reserved_56_63 : 8; #endif /* Word 0 - End */ } cn83xx; struct bdk_pemx_dbg_info_w1s_cn88xxp2 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_58_63 : 6; uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t reserved_10 : 1; uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ #else /* Word 0 - Little Endian */ uint64_t spoison : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[SPOISON]. Internal: peai__client0_tlp_ep & peai__client0_tlp_hv or peai__client1_tlp_ep & peai__client1_tlp_hv (atomic_op). */ uint64_t rtlpmal : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPMAL]. Internal: pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot. */ uint64_t rtlplle : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTLPLLE]. Internal: pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot. */ uint64_t recrce : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RECRCE]. Internal: pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot. */ uint64_t rpoison : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPOISON]. Internal: pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv. */ uint64_t rcemrc : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RCEMRC]. Internal: pedc_radm_correctable_err. */ uint64_t rnfemrc : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RNFEMRC]. Internal: pedc_radm_nonfatal_err. */ uint64_t rfemrc : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RFEMRC]. Internal: pedc_radm_fatal_err. */ uint64_t rpmerc : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPMERC]. Internal: pedc_radm_pm_pme. */ uint64_t rptamrc : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPTAMRC]. Internal: pedc_radm_pm_to_ack. */ uint64_t reserved_10 : 1; uint64_t rvdm : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RVDM]. Internal: pedc_radm_vendor_msg. */ uint64_t acto : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ACTO]. Internal: pedc_radm_cpl_timeout. */ uint64_t rte : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTE]. Internal: xdlh_replay_timeout_err. */ uint64_t mre : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[MRE]. Internal: xdlh_replay_num_rlover_err. */ uint64_t rdwdle : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RDWDLE]. Internal: rdlh_bad_dllp_err. */ uint64_t rtwdle : 1; /**< [ 16: 16](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTWDLE]. Internal: rdlh_bad_tlp_err. */ uint64_t dpeoosd : 1; /**< [ 17: 17](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DPEOOSD]. Internal: rdlh_prot_err. */ uint64_t fcpvwt : 1; /**< [ 18: 18](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCPVWT]. Internal: rtlh_fc_prot_err. */ uint64_t rpe : 1; /**< [ 19: 19](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RPE]. Internal: rmlh_rcvd_err. */ uint64_t fcuv : 1; /**< [ 20: 20](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[FCUV]. Internal: (opt. checks) int_xadm_fc_prot_err. */ uint64_t rqo : 1; /**< [ 21: 21](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RQO]. Internal: radm_qoverflow. */ uint64_t rauc : 1; /**< [ 22: 22](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAUC]. Internal: radm_unexp_cpl_err. */ uint64_t racur : 1; /**< [ 23: 23](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACUR]. Internal: radm_rcvd_cpl_ur. */ uint64_t racca : 1; /**< [ 24: 24](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACCA]. Internal: radm_rcvd_cpl_ca. */ uint64_t caar : 1; /**< [ 25: 25](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[CAAR]. */ uint64_t rarwdns : 1; /**< [ 26: 26](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RARWDNS]. Internal: radm_rcvd_ur_req. */ uint64_t ramtlp : 1; /**< [ 27: 27](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAMTLP]. Internal: radm_mlf_tlp_err. */ uint64_t racpp : 1; /**< [ 28: 28](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RACPP]. Internal: radm_rcvd_cpl_poisoned. */ uint64_t rawwpp : 1; /**< [ 29: 29](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RAWWPP]. Internal: radm_rcvd_wreq_poisoned. */ uint64_t ecrc_e : 1; /**< [ 30: 30](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[ECRC_E]. */ uint64_t lofp : 1; /**< [ 31: 31](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[LOFP]. */ uint64_t datq_pe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[DATQ_PE]. */ uint64_t p_d0_sbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_SBE]. */ uint64_t p_d0_dbe : 1; /**< [ 34: 34](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D0_DBE]. */ uint64_t p_d1_sbe : 1; /**< [ 35: 35](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_SBE]. */ uint64_t p_d1_dbe : 1; /**< [ 36: 36](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_D1_DBE]. */ uint64_t p_c_sbe : 1; /**< [ 37: 37](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_SBE]. */ uint64_t p_c_dbe : 1; /**< [ 38: 38](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[P_C_DBE]. */ uint64_t n_d0_sbe : 1; /**< [ 39: 39](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_SBE]. */ uint64_t n_d0_dbe : 1; /**< [ 40: 40](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D0_DBE]. */ uint64_t n_d1_sbe : 1; /**< [ 41: 41](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_SBE]. */ uint64_t n_d1_dbe : 1; /**< [ 42: 42](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_D1_DBE]. */ uint64_t n_c_sbe : 1; /**< [ 43: 43](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_SBE]. */ uint64_t n_c_dbe : 1; /**< [ 44: 44](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[N_C_DBE]. */ uint64_t c_d0_sbe : 1; /**< [ 45: 45](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_SBE]. */ uint64_t c_d0_dbe : 1; /**< [ 46: 46](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D0_DBE]. */ uint64_t c_d1_sbe : 1; /**< [ 47: 47](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_SBE]. */ uint64_t c_d1_dbe : 1; /**< [ 48: 48](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_D1_DBE]. */ uint64_t c_c_sbe : 1; /**< [ 49: 49](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_SBE]. */ uint64_t c_c_dbe : 1; /**< [ 50: 50](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[C_C_DBE]. */ uint64_t rtry_sbe : 1; /**< [ 51: 51](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_SBE]. */ uint64_t rtry_dbe : 1; /**< [ 52: 52](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[RTRY_DBE]. */ uint64_t qhdr_b0_sbe : 1; /**< [ 53: 53](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_SBE]. */ uint64_t qhdr_b0_dbe : 1; /**< [ 54: 54](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B0_DBE]. */ uint64_t qhdr_b1_sbe : 1; /**< [ 55: 55](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_SBE]. */ uint64_t qhdr_b1_dbe : 1; /**< [ 56: 56](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[QHDR_B1_DBE]. */ uint64_t m2s_pe : 1; /**< [ 57: 57](R/W1S/H) Reads or sets PEM(0..5)_DBG_INFO[M2S_PE]. */ uint64_t reserved_58_63 : 6; #endif /* Word 0 - End */ } cn88xxp2; }; typedef union bdk_pemx_dbg_info_w1s bdk_pemx_dbg_info_w1s_t; static inline uint64_t BDK_PEMX_DBG_INFO_W1S(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_DBG_INFO_W1S(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000450ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000450ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000450ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_DBG_INFO_W1S", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_DBG_INFO_W1S(a) bdk_pemx_dbg_info_w1s_t #define bustype_BDK_PEMX_DBG_INFO_W1S(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_DBG_INFO_W1S(a) "PEMX_DBG_INFO_W1S" #define device_bar_BDK_PEMX_DBG_INFO_W1S(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_DBG_INFO_W1S(a) (a) #define arguments_BDK_PEMX_DBG_INFO_W1S(a) (a),-1,-1,-1 /** * Register (NCB) pem#_debug * * PEM Debug Register * This register contains status of level interrupts for debugging purposes. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on cold reset. */ union bdk_pemx_debug { uint64_t u; struct bdk_pemx_debug_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_40_63 : 24; uint64_t n_tlp_cnt : 8; /**< [ 39: 32](RO/H) The current count (depth) of the outbound NP TLP FIFO. The value represents the number of used credits out of a total of 32. */ uint64_t reserved_31 : 1; uint64_t c_tlp_cnt : 11; /**< [ 30: 20](RO/H) The current count (depth) of the outbound C TLP FIFO. The value represents the number of used credits out of a total of 244. */ uint64_t reserved_19 : 1; uint64_t p_tlp_cnt : 11; /**< [ 18: 8](RO/H) The current count (depth) of the outbound P TLP FIFO. The value represents the number of used credits out of a total of 244. */ uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO to force a parity error when it is later read. */ uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ #else /* Word 0 - Little Endian */ uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO to force a parity error when it is later read. */ uint64_t p_tlp_cnt : 11; /**< [ 18: 8](RO/H) The current count (depth) of the outbound P TLP FIFO. The value represents the number of used credits out of a total of 244. */ uint64_t reserved_19 : 1; uint64_t c_tlp_cnt : 11; /**< [ 30: 20](RO/H) The current count (depth) of the outbound C TLP FIFO. The value represents the number of used credits out of a total of 244. */ uint64_t reserved_31 : 1; uint64_t n_tlp_cnt : 8; /**< [ 39: 32](RO/H) The current count (depth) of the outbound NP TLP FIFO. The value represents the number of used credits out of a total of 32. */ uint64_t reserved_40_63 : 24; #endif /* Word 0 - End */ } s; struct bdk_pemx_debug_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_7_63 : 57; uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ #else /* Word 0 - Little Endian */ uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ uint64_t reserved_7_63 : 57; #endif /* Word 0 - End */ } cn88xxp1; struct bdk_pemx_debug_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_6_63 : 58; uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ #else /* Word 0 - Little Endian */ uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ uint64_t reserved_6_63 : 58; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_debug_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_8_63 : 56; uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO to force a parity error when it is later read. */ uint64_t reserved_6 : 1; uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, HP_PMEI, and AERI interrupts. */ #else /* Word 0 - Little Endian */ uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, HP_PMEI, and AERI interrupts. */ uint64_t reserved_6 : 1; uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO to force a parity error when it is later read. */ uint64_t reserved_8_63 : 56; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_debug_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_40_63 : 24; uint64_t n_tlp_cnt : 8; /**< [ 39: 32](RO/H) The current count (depth) of the outbound NP TLP FIFO. The value represents the number of used credits out of a total of 32. */ uint64_t reserved_31 : 1; uint64_t c_tlp_cnt : 11; /**< [ 30: 20](RO/H) The current count (depth) of the outbound C TLP FIFO. The value represents the number of used credits out of a total of 244. */ uint64_t reserved_19 : 1; uint64_t p_tlp_cnt : 11; /**< [ 18: 8](RO/H) The current count (depth) of the outbound P TLP FIFO. The value represents the number of used credits out of a total of 244. */ uint64_t reserved_6_7 : 2; uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ #else /* Word 0 - Little Endian */ uint64_t intval : 6; /**< [ 5: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ uint64_t reserved_6_7 : 2; uint64_t p_tlp_cnt : 11; /**< [ 18: 8](RO/H) The current count (depth) of the outbound P TLP FIFO. The value represents the number of used credits out of a total of 244. */ uint64_t reserved_19 : 1; uint64_t c_tlp_cnt : 11; /**< [ 30: 20](RO/H) The current count (depth) of the outbound C TLP FIFO. The value represents the number of used credits out of a total of 244. */ uint64_t reserved_31 : 1; uint64_t n_tlp_cnt : 8; /**< [ 39: 32](RO/H) The current count (depth) of the outbound NP TLP FIFO. The value represents the number of used credits out of a total of 32. */ uint64_t reserved_40_63 : 24; #endif /* Word 0 - End */ } cn83xx; struct bdk_pemx_debug_cn88xxp2 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_8_63 : 56; uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO to force a parity error when it is later read. */ uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ #else /* Word 0 - Little Endian */ uint64_t intval : 7; /**< [ 6: 0](RO/H) Status of INTX, PMEI, and AERI interrupts. */ uint64_t inv_m2s_par : 1; /**< [ 7: 7](R/W) Invert the generated parity to be written into the M2S FIFO to force a parity error when it is later read. */ uint64_t reserved_8_63 : 56; #endif /* Word 0 - End */ } cn88xxp2; }; typedef union bdk_pemx_debug bdk_pemx_debug_t; static inline uint64_t BDK_PEMX_DEBUG(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_DEBUG(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000480ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000480ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000480ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000100ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_DEBUG", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_DEBUG(a) bdk_pemx_debug_t #define bustype_BDK_PEMX_DEBUG(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_DEBUG(a) "PEMX_DEBUG" #define device_bar_BDK_PEMX_DEBUG(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_DEBUG(a) (a) #define arguments_BDK_PEMX_DEBUG(a) (a),-1,-1,-1 /** * Register (NCB) pem#_diag_status * * PEM Diagnostic Status Register * This register contains selection control for the core diagnostic bus. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_diag_status { uint64_t u; struct bdk_pemx_diag_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_0_63 : 64; #else /* Word 0 - Little Endian */ uint64_t reserved_0_63 : 64; #endif /* Word 0 - End */ } s; struct bdk_pemx_diag_status_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_10_63 : 54; uint64_t ltssm : 6; /**< [ 9: 4](RO/H) Current smlh_ltssm_state. */ uint64_t pwrdwn : 4; /**< [ 3: 0](RO/H) Current mac_phy_powerdown state. 0x0 = D0. 0x1 = D1. 0x2 = D2. 0x3 = D3. 0x4 - 0x7: Reserved. */ #else /* Word 0 - Little Endian */ uint64_t pwrdwn : 4; /**< [ 3: 0](RO/H) Current mac_phy_powerdown state. 0x0 = D0. 0x1 = D1. 0x2 = D2. 0x3 = D3. 0x4 - 0x7: Reserved. */ uint64_t ltssm : 6; /**< [ 9: 4](RO/H) Current smlh_ltssm_state. */ uint64_t reserved_10_63 : 54; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_diag_status_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_9_63 : 55; uint64_t pwrdwn : 3; /**< [ 8: 6](RO/H) Current mac_phy_powerdown state. */ uint64_t pm_dst : 3; /**< [ 5: 3](RO/H) Current power management DSTATE. */ uint64_t pm_stat : 1; /**< [ 2: 2](RO) Power management status. */ uint64_t pm_en : 1; /**< [ 1: 1](RO) Power management event enable. */ uint64_t aux_en : 1; /**< [ 0: 0](RO) Auxiliary power enable. Always read as zero as auxiliary power is not supported. */ #else /* Word 0 - Little Endian */ uint64_t aux_en : 1; /**< [ 0: 0](RO) Auxiliary power enable. Always read as zero as auxiliary power is not supported. */ uint64_t pm_en : 1; /**< [ 1: 1](RO) Power management event enable. */ uint64_t pm_stat : 1; /**< [ 2: 2](RO) Power management status. */ uint64_t pm_dst : 3; /**< [ 5: 3](RO/H) Current power management DSTATE. */ uint64_t pwrdwn : 3; /**< [ 8: 6](RO/H) Current mac_phy_powerdown state. */ uint64_t reserved_9_63 : 55; #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_diag_status_cn81xx cn88xx; */ struct bdk_pemx_diag_status_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_9_63 : 55; uint64_t pwrdwn : 3; /**< [ 8: 6](RO/H) Current mac_phy_powerdown state. */ uint64_t pm_dst : 3; /**< [ 5: 3](RO/H) Current power management DSTATE. */ uint64_t pm_stat : 1; /**< [ 2: 2](RO/H) Power management status. */ uint64_t pm_en : 1; /**< [ 1: 1](RO/H) Power management event enable. */ uint64_t aux_en : 1; /**< [ 0: 0](RO/H) Auxiliary power enable. */ #else /* Word 0 - Little Endian */ uint64_t aux_en : 1; /**< [ 0: 0](RO/H) Auxiliary power enable. */ uint64_t pm_en : 1; /**< [ 1: 1](RO/H) Power management event enable. */ uint64_t pm_stat : 1; /**< [ 2: 2](RO/H) Power management status. */ uint64_t pm_dst : 3; /**< [ 5: 3](RO/H) Current power management DSTATE. */ uint64_t pwrdwn : 3; /**< [ 8: 6](RO/H) Current mac_phy_powerdown state. */ uint64_t reserved_9_63 : 55; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_diag_status bdk_pemx_diag_status_t; static inline uint64_t BDK_PEMX_DIAG_STATUS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_DIAG_STATUS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000020ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000020ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000020ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000010ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_DIAG_STATUS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_DIAG_STATUS(a) bdk_pemx_diag_status_t #define bustype_BDK_PEMX_DIAG_STATUS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_DIAG_STATUS(a) "PEMX_DIAG_STATUS" #define device_bar_BDK_PEMX_DIAG_STATUS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_DIAG_STATUS(a) (a) #define arguments_BDK_PEMX_DIAG_STATUS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_dis_port * * PEM Disable Port Register * This register controls whether traffic is allowed to be sent out the PCIe link. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_dis_port { uint64_t u; struct bdk_pemx_dis_port_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_1_63 : 63; uint64_t dis_port : 1; /**< [ 0: 0](R/W1C/H) When set, outbound read and writes are disabled (dropped) and reads will return completion with fault over NCBI or EBUS. Software must clear this bit after power-on reset to start normal activity. Further, this bit will be set by hardware when either MAC reset or core reset completes an assertion phase. Writing a one to this location clears the bit and will allow outbound operations to be sent to the MAC at the beginning of the next transfer. This bit cannot be set while PEM()_ON[PEMOOR] is set. */ #else /* Word 0 - Little Endian */ uint64_t dis_port : 1; /**< [ 0: 0](R/W1C/H) When set, outbound read and writes are disabled (dropped) and reads will return completion with fault over NCBI or EBUS. Software must clear this bit after power-on reset to start normal activity. Further, this bit will be set by hardware when either MAC reset or core reset completes an assertion phase. Writing a one to this location clears the bit and will allow outbound operations to be sent to the MAC at the beginning of the next transfer. This bit cannot be set while PEM()_ON[PEMOOR] is set. */ uint64_t reserved_1_63 : 63; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_dis_port_s cn; */ }; typedef union bdk_pemx_dis_port bdk_pemx_dis_port_t; static inline uint64_t BDK_PEMX_DIS_PORT(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_DIS_PORT(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000048ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_DIS_PORT", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_DIS_PORT(a) bdk_pemx_dis_port_t #define bustype_BDK_PEMX_DIS_PORT(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_DIS_PORT(a) "PEMX_DIS_PORT" #define device_bar_BDK_PEMX_DIS_PORT(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_DIS_PORT(a) (a) #define arguments_BDK_PEMX_DIS_PORT(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ebi_tlp_credits * * PEM EBUS TLP Credits Register * This register specifies the number of credits for use in moving TLPs. When this register is * written, the credit values are reset to the register value. This register is for diagnostic * use only, and should only be written when PEM()_CTL_STATUS[LNK_ENB] is clear. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_ebi_tlp_credits { uint64_t u; struct bdk_pemx_ebi_tlp_credits_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_32_63 : 32; uint64_t ebi_cpl : 11; /**< [ 31: 21](R/W) TLP 32 B credits for completion TLPs in the PEMs inbound EBUS buffers. Legal values are 0x21 to 0x100. */ uint64_t ebi_np : 10; /**< [ 20: 11](R/W) TLP headers for non-posted TLPs in the PEMs inbound EBUS buffers. Legal values are 0x1 to 0x20. */ uint64_t ebi_p : 11; /**< [ 10: 0](R/W) TLP 32 B credits for posted TLPs in the PEMs inbound EBUS buffers. Legal values are 0x21 to 0x100. */ #else /* Word 0 - Little Endian */ uint64_t ebi_p : 11; /**< [ 10: 0](R/W) TLP 32 B credits for posted TLPs in the PEMs inbound EBUS buffers. Legal values are 0x21 to 0x100. */ uint64_t ebi_np : 10; /**< [ 20: 11](R/W) TLP headers for non-posted TLPs in the PEMs inbound EBUS buffers. Legal values are 0x1 to 0x20. */ uint64_t ebi_cpl : 11; /**< [ 31: 21](R/W) TLP 32 B credits for completion TLPs in the PEMs inbound EBUS buffers. Legal values are 0x21 to 0x100. */ uint64_t reserved_32_63 : 32; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ebi_tlp_credits_s cn; */ }; typedef union bdk_pemx_ebi_tlp_credits bdk_pemx_ebi_tlp_credits_t; static inline uint64_t BDK_PEMX_EBI_TLP_CREDITS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_EBI_TLP_CREDITS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000028ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_EBI_TLP_CREDITS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_EBI_TLP_CREDITS(a) bdk_pemx_ebi_tlp_credits_t #define bustype_BDK_PEMX_EBI_TLP_CREDITS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_EBI_TLP_CREDITS(a) "PEMX_EBI_TLP_CREDITS" #define device_bar_BDK_PEMX_EBI_TLP_CREDITS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_EBI_TLP_CREDITS(a) (a) #define arguments_BDK_PEMX_EBI_TLP_CREDITS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ebo_fifo_status * * PEM EBO Offloading FIFO Status Register * This register contains status about the PEM EBO offloading FIFOs. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_ebo_fifo_status { uint64_t u; struct bdk_pemx_ebo_fifo_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_54_63 : 10; uint64_t c_cmd_volume : 6; /**< [ 53: 48](RO/H) Reports the number of valid EBO completion data beats currently held in the EBO completion buffer. Each entry represents a beat of the EBO bus related to a completion operation and the value read can range from 0x0 to a maximum of 0x20 which would represent completely full. For diagnostic use only. */ uint64_t reserved_46_47 : 2; uint64_t n_cmd_volume : 6; /**< [ 45: 40](RO/H) Reports the number of valid entries currently held in the EBO non-posted offloading FIFO. Each entry represents a beat of the EBO bus related to a Non-Posted operation and the value read can range from 0x0 to a maximum of 0x20 which would represent completely full. For diagnostic use only. */ uint64_t reserved_38_39 : 2; uint64_t p_cmd_volume : 6; /**< [ 37: 32](RO/H) Reports the number of valid entries currently held in the EBO posted offloading FIFO. Each entry represents a beat of the EBO bus related to a memory store and the value read can range from 0x0 to a maximum of 0x20 which would represent completely full. For diagnostic use only. */ uint64_t c_data_volume : 8; /**< [ 31: 24](RO/H) Reports the number of valid EBO completion data beats currently held in the EBO completion buffer. Each entry represents a beat of the EBO bus related to a completion operation and the value read can range from 0x0 to a maximum of 0x40 which would represent completely full. For diagnostic use only. Internal: Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */ uint64_t reserved_20_23 : 4; uint64_t n_data_volume : 8; /**< [ 19: 12](RO/H) Reports the number of valid entries currently held in the EBO non-posted offloading FIFO. Each entry represents a beat of the EBO bus related to a Non-Posted operation and the value read can range from 0x0 to a maximum of 0x40 which would represent completely full. For diagnostic use only. Internal: Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */ uint64_t reserved_8_11 : 4; uint64_t p_data_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the EBO posted offloading FIFO. Each entry represents a beat of the EBO bus related to a memory store and the value read can range from 0x0 to a maximum of 0x40 which would represent completely full. For diagnostic use only. Internal: Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */ #else /* Word 0 - Little Endian */ uint64_t p_data_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the EBO posted offloading FIFO. Each entry represents a beat of the EBO bus related to a memory store and the value read can range from 0x0 to a maximum of 0x40 which would represent completely full. For diagnostic use only. Internal: Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */ uint64_t reserved_8_11 : 4; uint64_t n_data_volume : 8; /**< [ 19: 12](RO/H) Reports the number of valid entries currently held in the EBO non-posted offloading FIFO. Each entry represents a beat of the EBO bus related to a Non-Posted operation and the value read can range from 0x0 to a maximum of 0x40 which would represent completely full. For diagnostic use only. Internal: Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */ uint64_t reserved_20_23 : 4; uint64_t c_data_volume : 8; /**< [ 31: 24](RO/H) Reports the number of valid EBO completion data beats currently held in the EBO completion buffer. Each entry represents a beat of the EBO bus related to a completion operation and the value read can range from 0x0 to a maximum of 0x40 which would represent completely full. For diagnostic use only. Internal: Maximum is 32 for 512b EBUS, 64 for 256b EBUS, 128 for 128b EBUS. */ uint64_t p_cmd_volume : 6; /**< [ 37: 32](RO/H) Reports the number of valid entries currently held in the EBO posted offloading FIFO. Each entry represents a beat of the EBO bus related to a memory store and the value read can range from 0x0 to a maximum of 0x20 which would represent completely full. For diagnostic use only. */ uint64_t reserved_38_39 : 2; uint64_t n_cmd_volume : 6; /**< [ 45: 40](RO/H) Reports the number of valid entries currently held in the EBO non-posted offloading FIFO. Each entry represents a beat of the EBO bus related to a Non-Posted operation and the value read can range from 0x0 to a maximum of 0x20 which would represent completely full. For diagnostic use only. */ uint64_t reserved_46_47 : 2; uint64_t c_cmd_volume : 6; /**< [ 53: 48](RO/H) Reports the number of valid EBO completion data beats currently held in the EBO completion buffer. Each entry represents a beat of the EBO bus related to a completion operation and the value read can range from 0x0 to a maximum of 0x20 which would represent completely full. For diagnostic use only. */ uint64_t reserved_54_63 : 10; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ebo_fifo_status_s cn; */ }; typedef union bdk_pemx_ebo_fifo_status bdk_pemx_ebo_fifo_status_t; static inline uint64_t BDK_PEMX_EBO_FIFO_STATUS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_EBO_FIFO_STATUS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000130ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_EBO_FIFO_STATUS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_EBO_FIFO_STATUS(a) bdk_pemx_ebo_fifo_status_t #define bustype_BDK_PEMX_EBO_FIFO_STATUS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_EBO_FIFO_STATUS(a) "PEMX_EBO_FIFO_STATUS" #define device_bar_BDK_PEMX_EBO_FIFO_STATUS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_EBO_FIFO_STATUS(a) (a) #define arguments_BDK_PEMX_EBO_FIFO_STATUS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ebus_ctl * * PEM EBUS Control Register * This register contains EBUS related control bits. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_ebus_ctl { uint64_t u; struct bdk_pemx_ebus_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_33_63 : 31; uint64_t ebo_stf : 1; /**< [ 32: 32](R/W) If set, force store and forward mode for offloading FIFOs on outbound EBUS. This might be useful in a system with an EBUS which cannot keep up with the PCIe link bandwidth (e.g. 128B EBUS or many idle cycles on EBUS) where idle cycles introduced in the packet stream could interfere with NCBO performance. In general it should not be set. */ uint64_t reserved_16_31 : 16; uint64_t clken_force : 1; /**< [ 15: 15](R/W) Force clock enable on inbound EBUS to be always asserted. For diagnostic use only. */ uint64_t erom_sel : 1; /**< [ 14: 14](R/W) If set, inbound PF EROM BAR accesses are directed to EBUS instead of NCB. This must be clear when the PEM is configured for RC mode. For CNXXXX this bit must be clear. */ uint64_t vf_bar2_sel : 1; /**< [ 13: 13](RO) If set, inbound VF BAR2 accesses are directed to EBUS instead of NCB. This bit is hard-coded to 1. */ uint64_t vf_bar4_sel : 1; /**< [ 12: 12](RO) If set, inbound VF BAR4 accesses are directed to EBUS instead of NCB. This bit is hard-coded to 1. */ uint64_t vf_bar0_sel : 1; /**< [ 11: 11](RO) If set, inbound VF BAR0 accesses are directed to EBUS instead of NCB. This bit is hard-coded to 1. */ uint64_t pf_bar2_sel : 1; /**< [ 10: 10](R/W) If set, inbound PF BAR2 accesses are directed to EBUS instead of NCB. In RC mode, registers PEM()_P2N_BAR2_START / PEM()_BAR_CTL[BAR2_SIZ] are used to determine a BAR2 hit rather than standard PCIe config registers. For CNXXXX this bit must be clear. */ uint64_t pf_bar4_sel : 1; /**< [ 9: 9](R/W) If set, inbound PF BAR4 accesses are directed to EBUS instead of NCB. In RC mode, registers PEM()_P2N_BAR4_START / PEM()_BAR_CTL[BAR4_SIZ] are used to determine a BAR4 hit rather than standard PCIe config registers. For CNXXXX this bit must be clear. */ uint64_t pf_bar0_sel : 1; /**< [ 8: 8](R/W) If set, inbound PF BAR0 accesses are directed to EBUS instead of NCB. In RC mode, registers PEM()_P2N_BAR0_START / PEM()_BAR_CTL[BAR0_SIZ] are used to determine a BAR0 hit rather than standard PCIe config registers. For CNXXXX this bit must be set. */ uint64_t reserved_6_7 : 2; uint64_t ntlp_ro_dis : 1; /**< [ 5: 5](R/W) Relaxed ordering disable for non-posted TLPs. Forces relaxed ordering bit off when incoming non-posted TLPs arrive targeting EBUS. */ uint64_t inv_par : 1; /**< [ 4: 4](R/W) When set, causes the parity bit on inbound EBUS to be inverted. This bit is for debug only. */ uint64_t atomic_dis : 1; /**< [ 3: 3](R/W) If set, incoming atomics targeting EBUS are discarded and a completion with status of unsupported request is returned to the sender. This bit must be set. */ uint64_t ctlp_ro_dis : 1; /**< [ 2: 2](R/W) Relaxed ordering disable for completion TLPs. Forces relaxed ordering bit off when incoming completion TLPs arrive targeting EBUS. */ uint64_t ptlp_ro_dis : 1; /**< [ 1: 1](R/W) Relaxed ordering disable for posted TLPs. Forces relaxed ordering bit off when incoming posted TLPs arrive targeting EBUS. */ uint64_t vdm_dis : 1; /**< [ 0: 0](R/W) If set, incoming vendor defined messages from PCIe will be discarded rather than forwarded on EBUS. For CNXXXX this bit must be set. */ #else /* Word 0 - Little Endian */ uint64_t vdm_dis : 1; /**< [ 0: 0](R/W) If set, incoming vendor defined messages from PCIe will be discarded rather than forwarded on EBUS. For CNXXXX this bit must be set. */ uint64_t ptlp_ro_dis : 1; /**< [ 1: 1](R/W) Relaxed ordering disable for posted TLPs. Forces relaxed ordering bit off when incoming posted TLPs arrive targeting EBUS. */ uint64_t ctlp_ro_dis : 1; /**< [ 2: 2](R/W) Relaxed ordering disable for completion TLPs. Forces relaxed ordering bit off when incoming completion TLPs arrive targeting EBUS. */ uint64_t atomic_dis : 1; /**< [ 3: 3](R/W) If set, incoming atomics targeting EBUS are discarded and a completion with status of unsupported request is returned to the sender. This bit must be set. */ uint64_t inv_par : 1; /**< [ 4: 4](R/W) When set, causes the parity bit on inbound EBUS to be inverted. This bit is for debug only. */ uint64_t ntlp_ro_dis : 1; /**< [ 5: 5](R/W) Relaxed ordering disable for non-posted TLPs. Forces relaxed ordering bit off when incoming non-posted TLPs arrive targeting EBUS. */ uint64_t reserved_6_7 : 2; uint64_t pf_bar0_sel : 1; /**< [ 8: 8](R/W) If set, inbound PF BAR0 accesses are directed to EBUS instead of NCB. In RC mode, registers PEM()_P2N_BAR0_START / PEM()_BAR_CTL[BAR0_SIZ] are used to determine a BAR0 hit rather than standard PCIe config registers. For CNXXXX this bit must be set. */ uint64_t pf_bar4_sel : 1; /**< [ 9: 9](R/W) If set, inbound PF BAR4 accesses are directed to EBUS instead of NCB. In RC mode, registers PEM()_P2N_BAR4_START / PEM()_BAR_CTL[BAR4_SIZ] are used to determine a BAR4 hit rather than standard PCIe config registers. For CNXXXX this bit must be clear. */ uint64_t pf_bar2_sel : 1; /**< [ 10: 10](R/W) If set, inbound PF BAR2 accesses are directed to EBUS instead of NCB. In RC mode, registers PEM()_P2N_BAR2_START / PEM()_BAR_CTL[BAR2_SIZ] are used to determine a BAR2 hit rather than standard PCIe config registers. For CNXXXX this bit must be clear. */ uint64_t vf_bar0_sel : 1; /**< [ 11: 11](RO) If set, inbound VF BAR0 accesses are directed to EBUS instead of NCB. This bit is hard-coded to 1. */ uint64_t vf_bar4_sel : 1; /**< [ 12: 12](RO) If set, inbound VF BAR4 accesses are directed to EBUS instead of NCB. This bit is hard-coded to 1. */ uint64_t vf_bar2_sel : 1; /**< [ 13: 13](RO) If set, inbound VF BAR2 accesses are directed to EBUS instead of NCB. This bit is hard-coded to 1. */ uint64_t erom_sel : 1; /**< [ 14: 14](R/W) If set, inbound PF EROM BAR accesses are directed to EBUS instead of NCB. This must be clear when the PEM is configured for RC mode. For CNXXXX this bit must be clear. */ uint64_t clken_force : 1; /**< [ 15: 15](R/W) Force clock enable on inbound EBUS to be always asserted. For diagnostic use only. */ uint64_t reserved_16_31 : 16; uint64_t ebo_stf : 1; /**< [ 32: 32](R/W) If set, force store and forward mode for offloading FIFOs on outbound EBUS. This might be useful in a system with an EBUS which cannot keep up with the PCIe link bandwidth (e.g. 128B EBUS or many idle cycles on EBUS) where idle cycles introduced in the packet stream could interfere with NCBO performance. In general it should not be set. */ uint64_t reserved_33_63 : 31; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ebus_ctl_s cn; */ }; typedef union bdk_pemx_ebus_ctl bdk_pemx_ebus_ctl_t; static inline uint64_t BDK_PEMX_EBUS_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_EBUS_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000078ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_EBUS_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_EBUS_CTL(a) bdk_pemx_ebus_ctl_t #define bustype_BDK_PEMX_EBUS_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_EBUS_CTL(a) "PEMX_EBUS_CTL" #define device_bar_BDK_PEMX_EBUS_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_EBUS_CTL(a) (a) #define arguments_BDK_PEMX_EBUS_CTL(a) (a),-1,-1,-1 /** * Register (RSL) pem#_ecc_ena * * PEM ECC Enable Register * Contains enables for TLP FIFO ECC RAMs. */ union bdk_pemx_ecc_ena { uint64_t u; struct bdk_pemx_ecc_ena_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_35_63 : 29; uint64_t qhdr_b1_ena : 1; /**< [ 34: 34](R/W) ECC enable for Core's Q HDR Bank1 RAM. */ uint64_t qhdr_b0_ena : 1; /**< [ 33: 33](R/W) ECC enable for Core's Q HDR Bank0 RAM. */ uint64_t rtry_ena : 1; /**< [ 32: 32](R/W) ECC enable for Core's RETRY RA. */ uint64_t reserved_11_31 : 21; uint64_t m2s_c_ena : 1; /**< [ 10: 10](R/W) ECC enable for M2S Control FIFO. */ uint64_t m2s_d_ena : 1; /**< [ 9: 9](R/W) ECC enable for M2S Data FIFO. */ uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */ uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */ uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */ uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */ uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */ uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */ uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */ uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */ uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */ #else /* Word 0 - Little Endian */ uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */ uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */ uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */ uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */ uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */ uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */ uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */ uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */ uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */ uint64_t m2s_d_ena : 1; /**< [ 9: 9](R/W) ECC enable for M2S Data FIFO. */ uint64_t m2s_c_ena : 1; /**< [ 10: 10](R/W) ECC enable for M2S Control FIFO. */ uint64_t reserved_11_31 : 21; uint64_t rtry_ena : 1; /**< [ 32: 32](R/W) ECC enable for Core's RETRY RA. */ uint64_t qhdr_b0_ena : 1; /**< [ 33: 33](R/W) ECC enable for Core's Q HDR Bank0 RAM. */ uint64_t qhdr_b1_ena : 1; /**< [ 34: 34](R/W) ECC enable for Core's Q HDR Bank1 RAM. */ uint64_t reserved_35_63 : 29; #endif /* Word 0 - End */ } s; struct bdk_pemx_ecc_ena_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_35_63 : 29; uint64_t qhdr_b1_ena : 1; /**< [ 34: 34](R/W) ECC enable for Core's Q HDR Bank1 RAM. */ uint64_t qhdr_b0_ena : 1; /**< [ 33: 33](R/W) ECC enable for Core's Q HDR Bank0 RAM. */ uint64_t rtry_ena : 1; /**< [ 32: 32](R/W) ECC enable for Core's RETRY RA. */ uint64_t reserved_9_31 : 23; uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */ uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */ uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */ uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */ uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */ uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */ uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */ uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */ uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */ #else /* Word 0 - Little Endian */ uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */ uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */ uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */ uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */ uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */ uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */ uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */ uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */ uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */ uint64_t reserved_9_31 : 23; uint64_t rtry_ena : 1; /**< [ 32: 32](R/W) ECC enable for Core's RETRY RA. */ uint64_t qhdr_b0_ena : 1; /**< [ 33: 33](R/W) ECC enable for Core's Q HDR Bank0 RAM. */ uint64_t qhdr_b1_ena : 1; /**< [ 34: 34](R/W) ECC enable for Core's Q HDR Bank1 RAM. */ uint64_t reserved_35_63 : 29; #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_ecc_ena_cn81xx cn88xx; */ struct bdk_pemx_ecc_ena_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_11_63 : 53; uint64_t m2s_c_ena : 1; /**< [ 10: 10](R/W) ECC enable for M2S Control FIFO. */ uint64_t m2s_d_ena : 1; /**< [ 9: 9](R/W) ECC enable for M2S Data FIFO. */ uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */ uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */ uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */ uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */ uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */ uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */ uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */ uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */ uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */ #else /* Word 0 - Little Endian */ uint64_t p_d0_ena : 1; /**< [ 0: 0](R/W) ECC enable for TLP posted data0 FIFO. */ uint64_t p_d1_ena : 1; /**< [ 1: 1](R/W) ECC enable for TLP posted data1 FIFO. */ uint64_t p_c_ena : 1; /**< [ 2: 2](R/W) ECC enable for TLP posted control FIFO. */ uint64_t n_d0_ena : 1; /**< [ 3: 3](R/W) ECC enable for TLP NP data0 FIFO. */ uint64_t n_d1_ena : 1; /**< [ 4: 4](R/W) ECC enable for TLP NP data1 FIFO. */ uint64_t n_c_ena : 1; /**< [ 5: 5](R/W) ECC enable for TLP NP control FIFO. */ uint64_t c_d0_ena : 1; /**< [ 6: 6](R/W) ECC enable for TLP CPL data0 FIFO. */ uint64_t c_d1_ena : 1; /**< [ 7: 7](R/W) ECC enable for TLP CPL data1 FIFO. */ uint64_t c_c_ena : 1; /**< [ 8: 8](R/W) ECC enable for TLP CPL control FIFO. */ uint64_t m2s_d_ena : 1; /**< [ 9: 9](R/W) ECC enable for M2S Data FIFO. */ uint64_t m2s_c_ena : 1; /**< [ 10: 10](R/W) ECC enable for M2S Control FIFO. */ uint64_t reserved_11_63 : 53; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_ecc_ena bdk_pemx_ecc_ena_t; static inline uint64_t BDK_PEMX_ECC_ENA(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_ECC_ENA(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000470ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000470ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000470ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_ECC_ENA", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_ECC_ENA(a) bdk_pemx_ecc_ena_t #define bustype_BDK_PEMX_ECC_ENA(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_ECC_ENA(a) "PEMX_ECC_ENA" #define device_bar_BDK_PEMX_ECC_ENA(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_ECC_ENA(a) (a) #define arguments_BDK_PEMX_ECC_ENA(a) (a),-1,-1,-1 /** * Register (RSL) pem#_ecc_synd_ctrl * * PEM ECC Syndrome Control Register * This register contains syndrome control for TLP FIFO ECC RAMs. */ union bdk_pemx_ecc_synd_ctrl { uint64_t u; struct bdk_pemx_ecc_synd_ctrl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_38_63 : 26; uint64_t qhdr_b1_syn : 2; /**< [ 37: 36](R/W) Syndrome flip bits for Core's Q HDR Bank1 RAM. */ uint64_t qhdr_b0_syn : 2; /**< [ 35: 34](R/W) Syndrome flip bits for Core's Q HDR Bank0 RAM. */ uint64_t rtry_syn : 2; /**< [ 33: 32](R/W) Syndrome flip bits for Core's RETRY RAM. */ uint64_t reserved_22_31 : 10; uint64_t m2s_c_syn : 2; /**< [ 21: 20](R/W) Syndrome flip bits for M2S Control FIFO. */ uint64_t m2s_d_syn : 2; /**< [ 19: 18](R/W) Syndrome flip bits for M2S Data FIFO. */ uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */ uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */ uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */ uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */ uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */ uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */ uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */ uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */ uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */ #else /* Word 0 - Little Endian */ uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */ uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */ uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */ uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */ uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */ uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */ uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */ uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */ uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */ uint64_t m2s_d_syn : 2; /**< [ 19: 18](R/W) Syndrome flip bits for M2S Data FIFO. */ uint64_t m2s_c_syn : 2; /**< [ 21: 20](R/W) Syndrome flip bits for M2S Control FIFO. */ uint64_t reserved_22_31 : 10; uint64_t rtry_syn : 2; /**< [ 33: 32](R/W) Syndrome flip bits for Core's RETRY RAM. */ uint64_t qhdr_b0_syn : 2; /**< [ 35: 34](R/W) Syndrome flip bits for Core's Q HDR Bank0 RAM. */ uint64_t qhdr_b1_syn : 2; /**< [ 37: 36](R/W) Syndrome flip bits for Core's Q HDR Bank1 RAM. */ uint64_t reserved_38_63 : 26; #endif /* Word 0 - End */ } s; struct bdk_pemx_ecc_synd_ctrl_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_38_63 : 26; uint64_t qhdr_b1_syn : 2; /**< [ 37: 36](R/W) Syndrome flip bits for Core's Q HDR Bank1 RAM. */ uint64_t qhdr_b0_syn : 2; /**< [ 35: 34](R/W) Syndrome flip bits for Core's Q HDR Bank0 RAM. */ uint64_t rtry_syn : 2; /**< [ 33: 32](R/W) Syndrome flip bits for Core's RETRY RAM. */ uint64_t reserved_18_31 : 14; uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */ uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */ uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */ uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */ uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */ uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */ uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */ uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */ uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */ #else /* Word 0 - Little Endian */ uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */ uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */ uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */ uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */ uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */ uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */ uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */ uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */ uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */ uint64_t reserved_18_31 : 14; uint64_t rtry_syn : 2; /**< [ 33: 32](R/W) Syndrome flip bits for Core's RETRY RAM. */ uint64_t qhdr_b0_syn : 2; /**< [ 35: 34](R/W) Syndrome flip bits for Core's Q HDR Bank0 RAM. */ uint64_t qhdr_b1_syn : 2; /**< [ 37: 36](R/W) Syndrome flip bits for Core's Q HDR Bank1 RAM. */ uint64_t reserved_38_63 : 26; #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_ecc_synd_ctrl_cn81xx cn88xx; */ struct bdk_pemx_ecc_synd_ctrl_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_22_63 : 42; uint64_t m2s_c_syn : 2; /**< [ 21: 20](R/W) Syndrome flip bits for M2S Control FIFO. */ uint64_t m2s_d_syn : 2; /**< [ 19: 18](R/W) Syndrome flip bits for M2S Data FIFO. */ uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */ uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */ uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */ uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */ uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */ uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */ uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */ uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */ uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */ #else /* Word 0 - Little Endian */ uint64_t p_d0_syn : 2; /**< [ 1: 0](R/W) Syndrome flip bits for TLP posted data0 FIFO. */ uint64_t p_d1_syn : 2; /**< [ 3: 2](R/W) Syndrome flip bits for TLP posted data1 FIFO. */ uint64_t p_c_syn : 2; /**< [ 5: 4](R/W) Syndrome flip bits for TLP posted control FIFO. */ uint64_t n_d0_syn : 2; /**< [ 7: 6](R/W) Syndrome flip bits for TLP NP data0 FIFO. */ uint64_t n_d1_syn : 2; /**< [ 9: 8](R/W) Syndrome flip bits for TLP NP data1 FIFO. */ uint64_t n_c_syn : 2; /**< [ 11: 10](R/W) Syndrome flip bits for TLP NP control FIFO. */ uint64_t c_d0_syn : 2; /**< [ 13: 12](R/W) Syndrome flip bits for TLP CPL data0 FIFO. */ uint64_t c_d1_syn : 2; /**< [ 15: 14](R/W) Syndrome flip bits for TLP CPL data1 FIFO. */ uint64_t c_c_syn : 2; /**< [ 17: 16](R/W) Syndrome flip bits for TLP CPL control FIFO. */ uint64_t m2s_d_syn : 2; /**< [ 19: 18](R/W) Syndrome flip bits for M2S Data FIFO. */ uint64_t m2s_c_syn : 2; /**< [ 21: 20](R/W) Syndrome flip bits for M2S Control FIFO. */ uint64_t reserved_22_63 : 42; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_ecc_synd_ctrl bdk_pemx_ecc_synd_ctrl_t; static inline uint64_t BDK_PEMX_ECC_SYND_CTRL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_ECC_SYND_CTRL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000478ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000478ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000478ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_ECC_SYND_CTRL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_ECC_SYND_CTRL(a) bdk_pemx_ecc_synd_ctrl_t #define bustype_BDK_PEMX_ECC_SYND_CTRL(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_ECC_SYND_CTRL(a) "PEMX_ECC_SYND_CTRL" #define device_bar_BDK_PEMX_ECC_SYND_CTRL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_ECC_SYND_CTRL(a) (a) #define arguments_BDK_PEMX_ECC_SYND_CTRL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_eco * * INTERNAL: PEM ECO Register * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_eco { uint64_t u; struct bdk_pemx_eco_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_8_63 : 56; uint64_t eco_rw : 8; /**< [ 7: 0](R/W) Internal: Reserved for ECO usage. */ #else /* Word 0 - Little Endian */ uint64_t eco_rw : 8; /**< [ 7: 0](R/W) Internal: Reserved for ECO usage. */ uint64_t reserved_8_63 : 56; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_eco_s cn; */ }; typedef union bdk_pemx_eco bdk_pemx_eco_t; static inline uint64_t BDK_PEMX_ECO(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_ECO(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000010ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000008ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_ECO", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_ECO(a) bdk_pemx_eco_t #define bustype_BDK_PEMX_ECO(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_ECO(a) "PEMX_ECO" #define device_bar_BDK_PEMX_ECO(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_ECO(a) (a) #define arguments_BDK_PEMX_ECO(a) (a),-1,-1,-1 /** * Register (NCB) pem#_end_merge * * PEM End Merge Register * Any access (read or write) to this register over NCBO will create a merging barrier * for both the write and read streams within PEM outbound pipelines such that no NCBO * reads or writes received after this register's access will merge with any NCBO accesses * that occurred prior to this register's access. Note that RSL accesses to this register * will have no effect on merging. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_end_merge { uint64_t u; struct bdk_pemx_end_merge_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_0_63 : 64; #else /* Word 0 - Little Endian */ uint64_t reserved_0_63 : 64; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_end_merge_s cn; */ }; typedef union bdk_pemx_end_merge bdk_pemx_end_merge_t; static inline uint64_t BDK_PEMX_END_MERGE(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_END_MERGE(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000178ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_END_MERGE", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_END_MERGE(a) bdk_pemx_end_merge_t #define bustype_BDK_PEMX_END_MERGE(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_END_MERGE(a) "PEMX_END_MERGE" #define device_bar_BDK_PEMX_END_MERGE(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_END_MERGE(a) (a) #define arguments_BDK_PEMX_END_MERGE(a) (a),-1,-1,-1 /** * Register (RSL) pem#_erom# * * PEM Expansion ROM Registers * This register accesses the external EEPROM. */ union bdk_pemx_eromx { uint64_t u; struct bdk_pemx_eromx_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t erom : 64; /**< [ 63: 0](R/W/H) PCIe express read transactions to BAR3 (through PCIEEP()_CFG012) will appear as 8-byte RSL reads to this register. Although 512 KB is advertised from PCIEEP()_CFG012, only the first 448 KB is actually accessible, and reads above 448 KB will return zeros, writes are NOP. Accessible through PEM2 if EP PEM0 is an RC, otherwise accessible through PEM0. Access from a PEM that doesn't own the EEPROM will return fault. */ #else /* Word 0 - Little Endian */ uint64_t erom : 64; /**< [ 63: 0](R/W/H) PCIe express read transactions to BAR3 (through PCIEEP()_CFG012) will appear as 8-byte RSL reads to this register. Although 512 KB is advertised from PCIEEP()_CFG012, only the first 448 KB is actually accessible, and reads above 448 KB will return zeros, writes are NOP. Accessible through PEM2 if EP PEM0 is an RC, otherwise accessible through PEM0. Access from a PEM that doesn't own the EEPROM will return fault. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_eromx_s cn; */ }; typedef union bdk_pemx_eromx bdk_pemx_eromx_t; static inline uint64_t BDK_PEMX_EROMX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_EROMX(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=65535))) return 0x87e0c0080000ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0xffff); __bdk_csr_fatal("PEMX_EROMX", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_EROMX(a,b) bdk_pemx_eromx_t #define bustype_BDK_PEMX_EROMX(a,b) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_EROMX(a,b) "PEMX_EROMX" #define device_bar_BDK_PEMX_EROMX(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_EROMX(a,b) (a) #define arguments_BDK_PEMX_EROMX(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_erom_bar_addr * * PEM EROM BAR Address Register * This register configures PEM EROM BAR accesses targeted at NCBI. * Fields in this register are only used when PEM()_EBUS_CTL[EROM_SEL] * is clear and the PEM is configured for EP mode. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_erom_bar_addr { uint64_t u; struct bdk_pemx_erom_bar_addr_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t wvirt : 1; /**< [ 63: 63](R/W) Virtual: 0 = [RD_ADDR] is a physical addresses. 1 = [RD_ADDR] is a virtual address. */ uint64_t pspi_en : 1; /**< [ 62: 62](R/W) If PEM()_EBUS_CTL[EROM_SEL] is clear, PEM is configured for EP mode, and [PSPI_EN] is set, this bit directs EROM BAR hits to a private bus connected to the PSPI interface in MIO rather than NCB. */ uint64_t reserved_53_61 : 9; uint64_t rd_addr : 37; /**< [ 52: 16](R/W) Base address for PEM EROM BAR transactions that is appended to the offset. This field is only used when PEM()_EBUS_CTL[EROM_SEL] is clear, and PEM is configured for EP mode. */ uint64_t reserved_0_15 : 16; #else /* Word 0 - Little Endian */ uint64_t reserved_0_15 : 16; uint64_t rd_addr : 37; /**< [ 52: 16](R/W) Base address for PEM EROM BAR transactions that is appended to the offset. This field is only used when PEM()_EBUS_CTL[EROM_SEL] is clear, and PEM is configured for EP mode. */ uint64_t reserved_53_61 : 9; uint64_t pspi_en : 1; /**< [ 62: 62](R/W) If PEM()_EBUS_CTL[EROM_SEL] is clear, PEM is configured for EP mode, and [PSPI_EN] is set, this bit directs EROM BAR hits to a private bus connected to the PSPI interface in MIO rather than NCB. */ uint64_t wvirt : 1; /**< [ 63: 63](R/W) Virtual: 0 = [RD_ADDR] is a physical addresses. 1 = [RD_ADDR] is a virtual address. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_erom_bar_addr_s cn; */ }; typedef union bdk_pemx_erom_bar_addr bdk_pemx_erom_bar_addr_t; static inline uint64_t BDK_PEMX_EROM_BAR_ADDR(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_EROM_BAR_ADDR(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000150ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_EROM_BAR_ADDR", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_EROM_BAR_ADDR(a) bdk_pemx_erom_bar_addr_t #define bustype_BDK_PEMX_EROM_BAR_ADDR(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_EROM_BAR_ADDR(a) "PEMX_EROM_BAR_ADDR" #define device_bar_BDK_PEMX_EROM_BAR_ADDR(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_EROM_BAR_ADDR(a) (a) #define arguments_BDK_PEMX_EROM_BAR_ADDR(a) (a),-1,-1,-1 /** * Register (NCB) pem#_flr_ctl * * PEM FLR Control Register * This register provides function level reset controls. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC cold reset. */ union bdk_pemx_flr_ctl { uint64_t u; struct bdk_pemx_flr_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_6_63 : 58; uint64_t chge : 1; /**< [ 5: 5](R/W) When set, the default 25 ms expiration of the function level reset global counter can be changed. */ uint64_t inc : 1; /**< [ 4: 4](R/W) When [CHGE] is set, this bit determines if the 25 ms expiration of the function level reset global counter will be increased (set) or decreased (not set). */ uint64_t delta : 2; /**< [ 3: 2](R/W) When [CHGE] is set, this field determines the delta time to increase/decrease the 25 ms expiration of the function level reset global counter. 0x0 = 1 ms. 0x1 = 2 ms. 0x2 = 4 ms. 0x3 = 8 ms. */ uint64_t timer_ctl : 2; /**< [ 1: 0](R/W) Each FLR indication can be cleared within 66-99 ms by use of a timer. Controls how FLR indication is cleared: 0x0 = PEM()_FLR_REQ* can be used to clear the FLR indication, if not written before timer expires, the timer will auto-clear FLR. 0x1 = PEM()_FLR_REQ* must be used to clear the FLR indication, timers are not used. 0x2 = Only timers are used, PEM()_FLR_REQ* is ignored. 0x3 = Reserved. */ #else /* Word 0 - Little Endian */ uint64_t timer_ctl : 2; /**< [ 1: 0](R/W) Each FLR indication can be cleared within 66-99 ms by use of a timer. Controls how FLR indication is cleared: 0x0 = PEM()_FLR_REQ* can be used to clear the FLR indication, if not written before timer expires, the timer will auto-clear FLR. 0x1 = PEM()_FLR_REQ* must be used to clear the FLR indication, timers are not used. 0x2 = Only timers are used, PEM()_FLR_REQ* is ignored. 0x3 = Reserved. */ uint64_t delta : 2; /**< [ 3: 2](R/W) When [CHGE] is set, this field determines the delta time to increase/decrease the 25 ms expiration of the function level reset global counter. 0x0 = 1 ms. 0x1 = 2 ms. 0x2 = 4 ms. 0x3 = 8 ms. */ uint64_t inc : 1; /**< [ 4: 4](R/W) When [CHGE] is set, this bit determines if the 25 ms expiration of the function level reset global counter will be increased (set) or decreased (not set). */ uint64_t chge : 1; /**< [ 5: 5](R/W) When set, the default 25 ms expiration of the function level reset global counter can be changed. */ uint64_t reserved_6_63 : 58; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_flr_ctl_s cn; */ }; typedef union bdk_pemx_flr_ctl bdk_pemx_flr_ctl_t; static inline uint64_t BDK_PEMX_FLR_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_FLR_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000068ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_FLR_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_FLR_CTL(a) bdk_pemx_flr_ctl_t #define bustype_BDK_PEMX_FLR_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_FLR_CTL(a) "PEMX_FLR_CTL" #define device_bar_BDK_PEMX_FLR_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_FLR_CTL(a) (a) #define arguments_BDK_PEMX_FLR_CTL(a) (a),-1,-1,-1 /** * Register (RSL) pem#_flr_glblcnt_ctl * * PEM FLR Global Count Control Register * Function level reset global counter control. */ union bdk_pemx_flr_glblcnt_ctl { uint64_t u; struct bdk_pemx_flr_glblcnt_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_4_63 : 60; uint64_t chge : 1; /**< [ 3: 3](R/W) When set, the default 25ms expiration of the function level reset global counter can be changed. */ uint64_t inc : 1; /**< [ 2: 2](R/W) When CHGE is set, this bit determines if the 25ms expiration of the function level reset global counter will be increased (set) or decreased (not set). */ uint64_t delta : 2; /**< [ 1: 0](R/W) When CHGE is set, this field determines the delta time to increase/decrease the 25 ms expiration of the function level reset global counter. 0x0 = 1 ms. 0x1 = 2 ms. 0x2 = 4 ms. 0x3 = 8 ms. */ #else /* Word 0 - Little Endian */ uint64_t delta : 2; /**< [ 1: 0](R/W) When CHGE is set, this field determines the delta time to increase/decrease the 25 ms expiration of the function level reset global counter. 0x0 = 1 ms. 0x1 = 2 ms. 0x2 = 4 ms. 0x3 = 8 ms. */ uint64_t inc : 1; /**< [ 2: 2](R/W) When CHGE is set, this bit determines if the 25ms expiration of the function level reset global counter will be increased (set) or decreased (not set). */ uint64_t chge : 1; /**< [ 3: 3](R/W) When set, the default 25ms expiration of the function level reset global counter can be changed. */ uint64_t reserved_4_63 : 60; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_flr_glblcnt_ctl_s cn; */ }; typedef union bdk_pemx_flr_glblcnt_ctl bdk_pemx_flr_glblcnt_ctl_t; static inline uint64_t BDK_PEMX_FLR_GLBLCNT_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_FLR_GLBLCNT_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000210ll + 0x1000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_FLR_GLBLCNT_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_FLR_GLBLCNT_CTL(a) bdk_pemx_flr_glblcnt_ctl_t #define bustype_BDK_PEMX_FLR_GLBLCNT_CTL(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_FLR_GLBLCNT_CTL(a) "PEMX_FLR_GLBLCNT_CTL" #define device_bar_BDK_PEMX_FLR_GLBLCNT_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_FLR_GLBLCNT_CTL(a) (a) #define arguments_BDK_PEMX_FLR_GLBLCNT_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_flr_pf#_stopreq * * PEM PF Stop Request Register * PF function level reset stop outbound requests register. * Hardware automatically sets the STOPREQ bit for the PF when it enters a * function level reset (FLR). Software is responsible for clearing the STOPREQ * bit but must not do so prior to hardware taking down the FLR, which could be * as long as 100 ms. It may be appropriate for software to wait longer before clearing * STOPREQ, software may need to drain deep DPI queues for example. * Whenever PEM receives a PF or child VF request mastered by {ProductLine} over NCBO/EBUS * (i.e. P or NP), when STOPREQ is set for the function, PEM will discard the outgoing request * before sending it to the PCIe core. If a NP, PEM will schedule an immediate completion * with error for the request - no timeout is required. STOPREQ mimics the behavior of * PCIEEP_CMD[ME] for outbound requests that will master the PCIe bus (P and NP). * * STOPREQ has no effect on NCBI/incoming EBUS traffic. * * STOPREQ will have no effect on completions returned by CNXXXX over NCBO/EBUS. * * When a PEM()_FLR_PF()_STOPREQ is set, none of the associated * PEM()_FLR_VF()_STOPREQ[VF_STOPREQ] will be set. * * STOPREQ is reset when the MAC is reset, and is not reset after a chip soft reset. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_flr_pfx_stopreq { uint64_t u; struct bdk_pemx_flr_pfx_stopreq_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_1_63 : 63; uint64_t pf_stopreq : 1; /**< [ 0: 0](R/W1C/H) PF STOPREQ bit. */ #else /* Word 0 - Little Endian */ uint64_t pf_stopreq : 1; /**< [ 0: 0](R/W1C/H) PF STOPREQ bit. */ uint64_t reserved_1_63 : 63; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_flr_pfx_stopreq_s cn; */ }; typedef union bdk_pemx_flr_pfx_stopreq bdk_pemx_flr_pfx_stopreq_t; static inline uint64_t BDK_PEMX_FLR_PFX_STOPREQ(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_FLR_PFX_STOPREQ(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15))) return 0x8e0000000c00ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf); __bdk_csr_fatal("PEMX_FLR_PFX_STOPREQ", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_FLR_PFX_STOPREQ(a,b) bdk_pemx_flr_pfx_stopreq_t #define bustype_BDK_PEMX_FLR_PFX_STOPREQ(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_FLR_PFX_STOPREQ(a,b) "PEMX_FLR_PFX_STOPREQ" #define device_bar_BDK_PEMX_FLR_PFX_STOPREQ(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_FLR_PFX_STOPREQ(a,b) (a) #define arguments_BDK_PEMX_FLR_PFX_STOPREQ(a,b) (a),(b),-1,-1 /** * Register (RSL) pem#_flr_pf0_vf_stopreq * * PEM PF0 Virtual Function Stop Request Lower Register * PF0 virtual function level reset stop outbound requests register. * Hardware automatically sets the STOPREQ bit for the VF when it enters a * function level reset (FLR). Software is responsible for clearing the STOPREQ * bit but must not do so prior to hardware taking down the FLR, which could be * as long as 100 ms. It may be appropriate for software to wait longer before clearing * STOPREQ, software may need to drain deep DPI queues for example. * * Whenever PEM receives a request mastered by {ProductLine} over S2M (i.e. P or NP), * when STOPREQ is set for the function, PEM will discard the outgoing request * before sending it to the PCIe core. If a NP, PEM will schedule an immediate * SWI_RSP_ERROR completion for the request - no timeout is required. * In both cases, the PEM()_INT_SUM[BMD_E] bit will be set and a error * interrupt is generated. * * STOPREQ mimics the behavior of PCIEEPVF()_CFG001.ME for outbound requests that will * master the PCIe bus (P and NP). * * Note that STOPREQ will have no effect on completions returned by {ProductLine} over the S2M. * * Note that STOPREQ will have no effect on M2S traffic. */ union bdk_pemx_flr_pf0_vf_stopreq { uint64_t u; struct bdk_pemx_flr_pf0_vf_stopreq_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t vf_stopreq_lo : 64; /**< [ 63: 0](R/W1C/H) STOPREQ for the 64 VFs in PF0. */ #else /* Word 0 - Little Endian */ uint64_t vf_stopreq_lo : 64; /**< [ 63: 0](R/W1C/H) STOPREQ for the 64 VFs in PF0. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_flr_pf0_vf_stopreq_s cn; */ }; typedef union bdk_pemx_flr_pf0_vf_stopreq bdk_pemx_flr_pf0_vf_stopreq_t; static inline uint64_t BDK_PEMX_FLR_PF0_VF_STOPREQ(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_FLR_PF0_VF_STOPREQ(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000220ll + 0x1000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_FLR_PF0_VF_STOPREQ", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) bdk_pemx_flr_pf0_vf_stopreq_t #define bustype_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) "PEMX_FLR_PF0_VF_STOPREQ" #define device_bar_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) (a) #define arguments_BDK_PEMX_FLR_PF0_VF_STOPREQ(a) (a),-1,-1,-1 /** * Register (RSL) pem#_flr_pf_stopreq * * PEM PF Stop Request Register * PF function level reset stop outbound requests register. * Hardware automatically sets the STOPREQ bit for the PF when it enters a * function level reset (FLR). Software is responsible for clearing the STOPREQ * bit but must not do so prior to hardware taking down the FLR, which could be * as long as 100 ms. It may be appropriate for software to wait longer before clearing * STOPREQ, software may need to drain deep DPI queues for example. * Whenever PEM receives a PF or child VF request mastered by {ProductLine} over S2M (i.e. P or * NP), * when STOPREQ is set for the function, PEM will discard the outgoing request * before sending it to the PCIe core. If a NP, PEM will schedule an immediate * SWI_RSP_ERROR completion for the request - no timeout is required. * In both cases, the PEM(0..3)_INT_SUM[PBMD_E] bit will be set and a error * interrupt is generated. * STOPREQ mimics the behavior of PCIEEP()_CFG001.ME for outbound requests that will * master the PCIe bus (P and NP). * * STOPREQ has no effect on M2S traffic. * * STOPREQ will have no effect on completions returned by CNXXXX over the S2M. * * When a PF()_STOPREQ is set, none of the associated * PEM()_FLR_PF0_VF_STOPREQ[VF_STOPREQ] will be set. * * STOPREQ is reset when the MAC is reset, and is not reset after a chip soft reset. */ union bdk_pemx_flr_pf_stopreq { uint64_t u; struct bdk_pemx_flr_pf_stopreq_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_1_63 : 63; uint64_t pf0_stopreq : 1; /**< [ 0: 0](R/W1C/H) PF0 STOPREQ bit. */ #else /* Word 0 - Little Endian */ uint64_t pf0_stopreq : 1; /**< [ 0: 0](R/W1C/H) PF0 STOPREQ bit. */ uint64_t reserved_1_63 : 63; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_flr_pf_stopreq_s cn; */ }; typedef union bdk_pemx_flr_pf_stopreq bdk_pemx_flr_pf_stopreq_t; static inline uint64_t BDK_PEMX_FLR_PF_STOPREQ(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_FLR_PF_STOPREQ(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000218ll + 0x1000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_FLR_PF_STOPREQ", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_FLR_PF_STOPREQ(a) bdk_pemx_flr_pf_stopreq_t #define bustype_BDK_PEMX_FLR_PF_STOPREQ(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_FLR_PF_STOPREQ(a) "PEMX_FLR_PF_STOPREQ" #define device_bar_BDK_PEMX_FLR_PF_STOPREQ(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_FLR_PF_STOPREQ(a) (a) #define arguments_BDK_PEMX_FLR_PF_STOPREQ(a) (a),-1,-1,-1 /** * Register (NCB) pem#_flr_stopreq_ctl * * PEM FLR Global Count Control Register * Function level reset STOPREQ control register. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC cold reset. */ union bdk_pemx_flr_stopreq_ctl { uint64_t u; struct bdk_pemx_flr_stopreq_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_1_63 : 63; uint64_t stopreqclr : 1; /**< [ 0: 0](R/W) When [STOPREQCLR] is clear, only software (and reset) can clear PEM()_FLR_PF_STOPREQ[STOPREQ] and PEM()_FLR_PF0_VF_STOPREQ[STOPREQ] bits. When STOPREQCLR is set, PEM hardware also clears the STOPREQ bit when PEM completes an FLR to the PCIe core. In the case of a VF, only one STOPREQ bit gets cleared upon each FLR ack when STOPREQCLR mode bit is set. The srst will assert upon a PF FLR, and srst could be used to reset all STOPREQ bits regardless of STOPREQCLR. Otherwise (e.g. {ProductLine}), where a PF FLR does not assert srst. */ #else /* Word 0 - Little Endian */ uint64_t stopreqclr : 1; /**< [ 0: 0](R/W) When [STOPREQCLR] is clear, only software (and reset) can clear PEM()_FLR_PF_STOPREQ[STOPREQ] and PEM()_FLR_PF0_VF_STOPREQ[STOPREQ] bits. When STOPREQCLR is set, PEM hardware also clears the STOPREQ bit when PEM completes an FLR to the PCIe core. In the case of a VF, only one STOPREQ bit gets cleared upon each FLR ack when STOPREQCLR mode bit is set. The srst will assert upon a PF FLR, and srst could be used to reset all STOPREQ bits regardless of STOPREQCLR. Otherwise (e.g. {ProductLine}), where a PF FLR does not assert srst. */ uint64_t reserved_1_63 : 63; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_flr_stopreq_ctl_s cn8; */ struct bdk_pemx_flr_stopreq_ctl_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_1_63 : 63; uint64_t stopreqclr : 1; /**< [ 0: 0](R/W) Stop request clear behavior. 0 = Only software (and reset) can clear PEM()_FLR_PF()_STOPREQ[PF_STOPREQ] and PEM()_FLR_VF()_STOPREQ[VF_STOPREQ] bits. 1 = PEM hardware also clears the STOPREQ bit when PEM completes an FLR to the PCIe core. In the case of a VF, only one STOPREQ bit gets cleared upon each FLR ack when [STOPREQCLR] is set. The srst will assert upon a PF FLR, and srst could be used to reset all STOPREQ bits regardless of [STOPREQCLR]. Otherwise, a PF FLR does not assert srst. */ #else /* Word 0 - Little Endian */ uint64_t stopreqclr : 1; /**< [ 0: 0](R/W) Stop request clear behavior. 0 = Only software (and reset) can clear PEM()_FLR_PF()_STOPREQ[PF_STOPREQ] and PEM()_FLR_VF()_STOPREQ[VF_STOPREQ] bits. 1 = PEM hardware also clears the STOPREQ bit when PEM completes an FLR to the PCIe core. In the case of a VF, only one STOPREQ bit gets cleared upon each FLR ack when [STOPREQCLR] is set. The srst will assert upon a PF FLR, and srst could be used to reset all STOPREQ bits regardless of [STOPREQCLR]. Otherwise, a PF FLR does not assert srst. */ uint64_t reserved_1_63 : 63; #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_flr_stopreq_ctl bdk_pemx_flr_stopreq_ctl_t; static inline uint64_t BDK_PEMX_FLR_STOPREQ_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_FLR_STOPREQ_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000238ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000070ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_FLR_STOPREQ_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_FLR_STOPREQ_CTL(a) bdk_pemx_flr_stopreq_ctl_t #define bustype_BDK_PEMX_FLR_STOPREQ_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_FLR_STOPREQ_CTL(a) "PEMX_FLR_STOPREQ_CTL" #define device_bar_BDK_PEMX_FLR_STOPREQ_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_FLR_STOPREQ_CTL(a) (a) #define arguments_BDK_PEMX_FLR_STOPREQ_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_flr_vf#_stopreq * * PEM VF Stop Request Register * VFI 0-239 virtual function level reset stop outbound requests register. * Hardware automatically sets the STOPREQ bit for the VF when it enters a * function level reset (FLR). Software is responsible for clearing the STOPREQ * bit but must not do so prior to hardware taking down the FLR, which could be * as long as 100 ms. It may be appropriate for software to wait longer before clearing * STOPREQ, software may need to drain deep DPI queues for example. * * Whenever PEM receives a request mastered by {ProductLine} over NCBO/EBUS (i.e. P or NP), * when STOPREQ is set for the function, PEM will discard the outgoing request * before sending it to the PCIe core. If a NP, PEM will schedule an immediate * cpl w/error for the request - no timeout is required. * In both cases, the PEM()_DBG_INFO[BMD_E] bit will be set. * * The index into this array is referred to as a "VFI" and will need to be calculated * by software based on the number of VFs assigned to each PF. {PF0,VF0} is VFI0 and * for this VF, bit [0] would be used. {PF1,VF0} is PCIEEP_SRIOV_VFS[IVF] for PF0. * In general, {PFx,VFy} is determined by SUM(PF0..PF(x-1))(PCIEEP_SRIOV_VFS[IVF]) + y. * * STOPREQ mimics the behavior of PCIEEPVF_CMD[ME] for outbound requests that will * master the PCIe bus (P and NP). * * Note that STOPREQ will have no effect on completions returned by {ProductLine} over the NCBO/EBUS. * * Note that STOPREQ will have no effect on NCBI or incoming EBUS traffic. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_flr_vfx_stopreq { uint64_t u; struct bdk_pemx_flr_vfx_stopreq_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t vf_stopreq : 64; /**< [ 63: 0](R/W1C/H) STOPREQ for the pool of 240 VFs in shared by the 16 PFs. Each bit corresponds to one of the NVF virtual functions. */ #else /* Word 0 - Little Endian */ uint64_t vf_stopreq : 64; /**< [ 63: 0](R/W1C/H) STOPREQ for the pool of 240 VFs in shared by the 16 PFs. Each bit corresponds to one of the NVF virtual functions. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_flr_vfx_stopreq_s cn; */ }; typedef union bdk_pemx_flr_vfx_stopreq bdk_pemx_flr_vfx_stopreq_t; static inline uint64_t BDK_PEMX_FLR_VFX_STOPREQ(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_FLR_VFX_STOPREQ(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=3))) return 0x8e0000000e00ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0x3); __bdk_csr_fatal("PEMX_FLR_VFX_STOPREQ", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_FLR_VFX_STOPREQ(a,b) bdk_pemx_flr_vfx_stopreq_t #define bustype_BDK_PEMX_FLR_VFX_STOPREQ(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_FLR_VFX_STOPREQ(a,b) "PEMX_FLR_VFX_STOPREQ" #define device_bar_BDK_PEMX_FLR_VFX_STOPREQ(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_FLR_VFX_STOPREQ(a,b) (a) #define arguments_BDK_PEMX_FLR_VFX_STOPREQ(a,b) (a),(b),-1,-1 /** * Register (RSL) pem#_flr_zombie_ctl * * PEM FLR Global Count Control Register * Function level reset global zombie counter control register. */ union bdk_pemx_flr_zombie_ctl { uint64_t u; struct bdk_pemx_flr_zombie_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_10_63 : 54; uint64_t exp : 10; /**< [ 9: 0](R/W) The expiration value for the inbound shared global zombie counter. The global zombie counter continuously counts the number of cycles where the PCIe core was allowed to send either a posted request or a completion to the PEM. When the global zombie counter reaches expiration (EXP), it resets to zero and all the nonzero per PCIe tag zombie counters are decremented. When a per PCIe tag zombie counter decrements to zero, a SWI_RSP_ERROR is sent to the M2S bus and its associated PCIe tag is returned to the pool. This field allows software programmability control of the zombie counter expiration. */ #else /* Word 0 - Little Endian */ uint64_t exp : 10; /**< [ 9: 0](R/W) The expiration value for the inbound shared global zombie counter. The global zombie counter continuously counts the number of cycles where the PCIe core was allowed to send either a posted request or a completion to the PEM. When the global zombie counter reaches expiration (EXP), it resets to zero and all the nonzero per PCIe tag zombie counters are decremented. When a per PCIe tag zombie counter decrements to zero, a SWI_RSP_ERROR is sent to the M2S bus and its associated PCIe tag is returned to the pool. This field allows software programmability control of the zombie counter expiration. */ uint64_t reserved_10_63 : 54; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_flr_zombie_ctl_s cn; */ }; typedef union bdk_pemx_flr_zombie_ctl bdk_pemx_flr_zombie_ctl_t; static inline uint64_t BDK_PEMX_FLR_ZOMBIE_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_FLR_ZOMBIE_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000230ll + 0x1000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_FLR_ZOMBIE_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_FLR_ZOMBIE_CTL(a) bdk_pemx_flr_zombie_ctl_t #define bustype_BDK_PEMX_FLR_ZOMBIE_CTL(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_FLR_ZOMBIE_CTL(a) "PEMX_FLR_ZOMBIE_CTL" #define device_bar_BDK_PEMX_FLR_ZOMBIE_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_FLR_ZOMBIE_CTL(a) (a) #define arguments_BDK_PEMX_FLR_ZOMBIE_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ib_merge_timer_ctl * * PEM NCBI Merge Timer Control Register * This register controls the merging timer for inbound NCB writes. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_ib_merge_timer_ctl { uint64_t u; struct bdk_pemx_ib_merge_timer_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_11_63 : 53; uint64_t wmerge_dis : 1; /**< [ 10: 10](R/W) For diagnostic use only. If set, will disable inbound write merging. */ uint64_t wmerge_total_timer : 10; /**< [ 9: 0](R/W) Write merge encapsulation timer. When PEM accepts a NCBI write which begins a write merging process, [WMERGE_TOTAL_TIMER] specifies the maximum wait, in coprocessor-clock cycles, to merge additional write operations into one larger write. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ #else /* Word 0 - Little Endian */ uint64_t wmerge_total_timer : 10; /**< [ 9: 0](R/W) Write merge encapsulation timer. When PEM accepts a NCBI write which begins a write merging process, [WMERGE_TOTAL_TIMER] specifies the maximum wait, in coprocessor-clock cycles, to merge additional write operations into one larger write. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t wmerge_dis : 1; /**< [ 10: 10](R/W) For diagnostic use only. If set, will disable inbound write merging. */ uint64_t reserved_11_63 : 53; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ib_merge_timer_ctl_s cn; */ }; typedef union bdk_pemx_ib_merge_timer_ctl bdk_pemx_ib_merge_timer_ctl_t; static inline uint64_t BDK_PEMX_IB_MERGE_TIMER_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_IB_MERGE_TIMER_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001b0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_IB_MERGE_TIMER_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_IB_MERGE_TIMER_CTL(a) bdk_pemx_ib_merge_timer_ctl_t #define bustype_BDK_PEMX_IB_MERGE_TIMER_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_IB_MERGE_TIMER_CTL(a) "PEMX_IB_MERGE_TIMER_CTL" #define device_bar_BDK_PEMX_IB_MERGE_TIMER_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_IB_MERGE_TIMER_CTL(a) (a) #define arguments_BDK_PEMX_IB_MERGE_TIMER_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ib_wmerge_merged_pc * * PEM Inbound Merge Writes Merged Performance Counter Register * This register reports how many writes merged within the inbound write merge unit. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_ib_wmerge_merged_pc { uint64_t u; struct bdk_pemx_ib_wmerge_merged_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t wmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBI write operation mapped to MEM that merges with a previous write will increment this count. */ #else /* Word 0 - Little Endian */ uint64_t wmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBI write operation mapped to MEM that merges with a previous write will increment this count. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ib_wmerge_merged_pc_s cn; */ }; typedef union bdk_pemx_ib_wmerge_merged_pc bdk_pemx_ib_wmerge_merged_pc_t; static inline uint64_t BDK_PEMX_IB_WMERGE_MERGED_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_IB_WMERGE_MERGED_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001c0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_IB_WMERGE_MERGED_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_IB_WMERGE_MERGED_PC(a) bdk_pemx_ib_wmerge_merged_pc_t #define bustype_BDK_PEMX_IB_WMERGE_MERGED_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_IB_WMERGE_MERGED_PC(a) "PEMX_IB_WMERGE_MERGED_PC" #define device_bar_BDK_PEMX_IB_WMERGE_MERGED_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_IB_WMERGE_MERGED_PC(a) (a) #define arguments_BDK_PEMX_IB_WMERGE_MERGED_PC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ib_wmerge_received_pc * * PEM Inbound Merge Writes Received Performance Counter Register * This register reports the number of writes that enter the inbound write merge unit. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_ib_wmerge_received_pc { uint64_t u; struct bdk_pemx_ib_wmerge_received_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t wmerge_writes : 64; /**< [ 63: 0](R/W/H) Each NCBI write operation mapped to MEM type will increment this count. */ #else /* Word 0 - Little Endian */ uint64_t wmerge_writes : 64; /**< [ 63: 0](R/W/H) Each NCBI write operation mapped to MEM type will increment this count. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ib_wmerge_received_pc_s cn; */ }; typedef union bdk_pemx_ib_wmerge_received_pc bdk_pemx_ib_wmerge_received_pc_t; static inline uint64_t BDK_PEMX_IB_WMERGE_RECEIVED_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_IB_WMERGE_RECEIVED_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001b8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_IB_WMERGE_RECEIVED_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) bdk_pemx_ib_wmerge_received_pc_t #define bustype_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) "PEMX_IB_WMERGE_RECEIVED_PC" #define device_bar_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) (a) #define arguments_BDK_PEMX_IB_WMERGE_RECEIVED_PC(a) (a),-1,-1,-1 /** * Register (RSL) pem#_inb_read_credits * * PEM In-flight Read Credits Register * This register contains the number of in-flight read operations from PCIe core to SLI. */ union bdk_pemx_inb_read_credits { uint64_t u; struct bdk_pemx_inb_read_credits_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_7_63 : 57; uint64_t num : 7; /**< [ 6: 0](R/W) The number of reads that may be in flight from the PCIe core to the SLI. Minimum number is 6; maximum number is 64. */ #else /* Word 0 - Little Endian */ uint64_t num : 7; /**< [ 6: 0](R/W) The number of reads that may be in flight from the PCIe core to the SLI. Minimum number is 6; maximum number is 64. */ uint64_t reserved_7_63 : 57; #endif /* Word 0 - End */ } s; struct bdk_pemx_inb_read_credits_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_7_63 : 57; uint64_t num : 7; /**< [ 6: 0](R/W) The number of reads that may be in flight from the PCIe core to the SLI. Minimum number is 2; maximum number is 64. */ #else /* Word 0 - Little Endian */ uint64_t num : 7; /**< [ 6: 0](R/W) The number of reads that may be in flight from the PCIe core to the SLI. Minimum number is 2; maximum number is 64. */ uint64_t reserved_7_63 : 57; #endif /* Word 0 - End */ } cn88xxp1; /* struct bdk_pemx_inb_read_credits_s cn81xx; */ /* struct bdk_pemx_inb_read_credits_s cn83xx; */ /* struct bdk_pemx_inb_read_credits_s cn88xxp2; */ }; typedef union bdk_pemx_inb_read_credits bdk_pemx_inb_read_credits_t; static inline uint64_t BDK_PEMX_INB_READ_CREDITS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_INB_READ_CREDITS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c00000b8ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c00000b8ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c00000b8ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_INB_READ_CREDITS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_INB_READ_CREDITS(a) bdk_pemx_inb_read_credits_t #define bustype_BDK_PEMX_INB_READ_CREDITS(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_INB_READ_CREDITS(a) "PEMX_INB_READ_CREDITS" #define device_bar_BDK_PEMX_INB_READ_CREDITS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_INB_READ_CREDITS(a) (a) #define arguments_BDK_PEMX_INB_READ_CREDITS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_int_ena_w1c * * PEM Interrupt Enable Clear Register * This register clears interrupt enable bits. */ union bdk_pemx_int_ena_w1c { uint64_t u; struct bdk_pemx_int_ena_w1c_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_0_14 : 15; #else /* Word 0 - Little Endian */ uint64_t reserved_0_14 : 15; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } s; struct bdk_pemx_int_ena_w1c_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t un_b0 : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B0]. */ uint64_t up_b0 : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B0]. */ uint64_t surp_down : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CFG_INF]. */ uint64_t crs_dr : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[RDLK]. */ uint64_t un_bx : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_b4 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B4]. */ uint64_t up_bx : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_b4 : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B4]. */ uint64_t up_b3 : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t se : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ #else /* Word 0 - Little Endian */ uint64_t se : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t up_b3 : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t up_b4 : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B4]. */ uint64_t up_b2 : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t un_b4 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B4]. */ uint64_t un_b2 : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t rdlk : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CFG_INF]. */ uint64_t surp_down : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t up_b0 : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B0]. */ uint64_t un_b0 : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B0]. */ uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_int_ena_w1c_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_14_63 : 50; uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_B1]. */ uint64_t reserved_2_3 : 2; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2_3 : 2; uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..2)_INT_SUM[CRS_DR]. */ uint64_t reserved_14_63 : 50; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_int_ena_w1c_cn88xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_14_63 : 50; uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_B1]. */ uint64_t reserved_2_3 : 2; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2_3 : 2; uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..5)_INT_SUM[CRS_DR]. */ uint64_t reserved_14_63 : 50; #endif /* Word 0 - End */ } cn88xx; struct bdk_pemx_int_ena_w1c_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_15_63 : 49; uint64_t surp_down : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B1]. */ uint64_t up_b3 : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t reserved_2 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2 : 1; uint64_t up_b3 : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t surp_down : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t reserved_15_63 : 49; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_int_ena_w1c bdk_pemx_int_ena_w1c_t; static inline uint64_t BDK_PEMX_INT_ENA_W1C(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_INT_ENA_W1C(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000438ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000438ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000438ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000e8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_INT_ENA_W1C", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_INT_ENA_W1C(a) bdk_pemx_int_ena_w1c_t #define bustype_BDK_PEMX_INT_ENA_W1C(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_INT_ENA_W1C(a) "PEMX_INT_ENA_W1C" #define device_bar_BDK_PEMX_INT_ENA_W1C(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_INT_ENA_W1C(a) (a) #define arguments_BDK_PEMX_INT_ENA_W1C(a) (a),-1,-1,-1 /** * Register (NCB) pem#_int_ena_w1s * * PEM Interrupt Enable Set Register * This register sets interrupt enable bits. */ union bdk_pemx_int_ena_w1s { uint64_t u; struct bdk_pemx_int_ena_w1s_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_0_14 : 15; #else /* Word 0 - Little Endian */ uint64_t reserved_0_14 : 15; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } s; struct bdk_pemx_int_ena_w1s_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t un_b0 : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B0]. */ uint64_t up_b0 : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B0]. */ uint64_t surp_down : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CFG_INF]. */ uint64_t crs_dr : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[RDLK]. */ uint64_t un_bx : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_b4 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B4]. */ uint64_t up_bx : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_b4 : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B4]. */ uint64_t up_b3 : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t se : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ #else /* Word 0 - Little Endian */ uint64_t se : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t up_b3 : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t up_b4 : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B4]. */ uint64_t up_b2 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t un_b4 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B4]. */ uint64_t un_b2 : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t rdlk : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CFG_INF]. */ uint64_t surp_down : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t up_b0 : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B0]. */ uint64_t un_b0 : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B0]. */ uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_int_ena_w1s_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_14_63 : 50; uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_B1]. */ uint64_t reserved_2_3 : 2; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2_3 : 2; uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..2)_INT_SUM[CRS_DR]. */ uint64_t reserved_14_63 : 50; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_int_ena_w1s_cn88xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_14_63 : 50; uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_B1]. */ uint64_t reserved_2_3 : 2; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2_3 : 2; uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..5)_INT_SUM[CRS_DR]. */ uint64_t reserved_14_63 : 50; #endif /* Word 0 - End */ } cn88xx; struct bdk_pemx_int_ena_w1s_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_15_63 : 49; uint64_t surp_down : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B1]. */ uint64_t up_b3 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t reserved_2 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2 : 1; uint64_t up_b3 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t surp_down : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t reserved_15_63 : 49; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_int_ena_w1s bdk_pemx_int_ena_w1s_t; static inline uint64_t BDK_PEMX_INT_ENA_W1S(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_INT_ENA_W1S(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000440ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000440ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000440ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000f0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_INT_ENA_W1S", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_INT_ENA_W1S(a) bdk_pemx_int_ena_w1s_t #define bustype_BDK_PEMX_INT_ENA_W1S(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_INT_ENA_W1S(a) "PEMX_INT_ENA_W1S" #define device_bar_BDK_PEMX_INT_ENA_W1S(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_INT_ENA_W1S(a) (a) #define arguments_BDK_PEMX_INT_ENA_W1S(a) (a),-1,-1,-1 /** * Register (NCB) pem#_int_sum * * PEM Interrupt Summary Register * This register contains the different interrupt summary bits of the PEM. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_int_sum { uint64_t u; struct bdk_pemx_int_sum_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) PTM Root is ready to have to context validated. The Mac PTM logic does not have a permenantly valid context. Currently the core invalidates the responder context on two conditions * aux_clk_active (is asserted when link in L1 states) * Link speed changes To clear this interrupt, The host programs PCIERC_PTM_RES_LOCAL_MSB and PCIERC_PTM_RES_LOCAL_LSB and then sets the context valid bit (PCIERC_PTM_RES_CTL[PRES_CTX_VLD]). */ uint64_t reserved_0_14 : 15; #else /* Word 0 - Little Endian */ uint64_t reserved_0_14 : 15; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) PTM Root is ready to have to context validated. The Mac PTM logic does not have a permenantly valid context. Currently the core invalidates the responder context on two conditions * aux_clk_active (is asserted when link in L1 states) * Link speed changes To clear this interrupt, The host programs PCIERC_PTM_RES_LOCAL_MSB and PCIERC_PTM_RES_LOCAL_LSB and then sets the context valid bit (PCIERC_PTM_RES_CTL[PRES_CTX_VLD]). */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } s; struct bdk_pemx_int_sum_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) PTM Root is ready to have to context validated. The Mac PTM logic does not have a permenantly valid context. Currently the core invalidates the responder context on two conditions * aux_clk_active (is asserted when link in L1 states) * Link speed changes To clear this interrupt, The host programs PCIERC_PTM_RES_LOCAL_MSB and PCIERC_PTM_RES_LOCAL_LSB and then sets the context valid bit (PCIERC_PTM_RES_CTL[PRES_CTX_VLD]). */ uint64_t un_b0 : 1; /**< [ 14: 14](R/W1C/H) Received N-TLP for BAR0 when BAR0 is disabled. */ uint64_t up_b0 : 1; /**< [ 13: 13](R/W1C/H) Received P-TLP for BAR0 when BAR0 is disabled. */ uint64_t surp_down : 1; /**< [ 12: 12](R/W1C/H) Indicates that a surprise down event is occuring in the controller. */ uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1C/H) AP cores sent a second config read while a current config read was still inflight */ uint64_t crs_dr : 1; /**< [ 10: 10](R/W1C/H) Had a CRS timeout when retries were disabled. */ uint64_t crs_er : 1; /**< [ 9: 9](R/W1C/H) Had a CRS timeout when retries were enabled. */ uint64_t rdlk : 1; /**< [ 8: 8](R/W1C/H) Received read lock TLP. */ uint64_t un_bx : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for unknown BAR. */ uint64_t un_b2 : 1; /**< [ 6: 6](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */ uint64_t un_b4 : 1; /**< [ 5: 5](R/W1C/H) Received N-TLP for BAR4 when BAR4 index valid is not set. */ uint64_t up_bx : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for an unknown BAR. */ uint64_t up_b2 : 1; /**< [ 3: 3](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */ uint64_t up_b4 : 1; /**< [ 2: 2](R/W1C/H) Received P-TLP for BAR4 when BAR4 index valid is not set. */ uint64_t up_b3 : 1; /**< [ 1: 1](R/W1C/H) Received P-TLP for Expansion ROM. */ uint64_t se : 1; /**< [ 0: 0](R/W1C/H) System error, RC mode only. Internal: cfg_sys_err_rc. */ #else /* Word 0 - Little Endian */ uint64_t se : 1; /**< [ 0: 0](R/W1C/H) System error, RC mode only. Internal: cfg_sys_err_rc. */ uint64_t up_b3 : 1; /**< [ 1: 1](R/W1C/H) Received P-TLP for Expansion ROM. */ uint64_t up_b4 : 1; /**< [ 2: 2](R/W1C/H) Received P-TLP for BAR4 when BAR4 index valid is not set. */ uint64_t up_b2 : 1; /**< [ 3: 3](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */ uint64_t up_bx : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for an unknown BAR. */ uint64_t un_b4 : 1; /**< [ 5: 5](R/W1C/H) Received N-TLP for BAR4 when BAR4 index valid is not set. */ uint64_t un_b2 : 1; /**< [ 6: 6](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */ uint64_t un_bx : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for unknown BAR. */ uint64_t rdlk : 1; /**< [ 8: 8](R/W1C/H) Received read lock TLP. */ uint64_t crs_er : 1; /**< [ 9: 9](R/W1C/H) Had a CRS timeout when retries were enabled. */ uint64_t crs_dr : 1; /**< [ 10: 10](R/W1C/H) Had a CRS timeout when retries were disabled. */ uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1C/H) AP cores sent a second config read while a current config read was still inflight */ uint64_t surp_down : 1; /**< [ 12: 12](R/W1C/H) Indicates that a surprise down event is occuring in the controller. */ uint64_t up_b0 : 1; /**< [ 13: 13](R/W1C/H) Received P-TLP for BAR0 when BAR0 is disabled. */ uint64_t un_b0 : 1; /**< [ 14: 14](R/W1C/H) Received N-TLP for BAR0 when BAR0 is disabled. */ uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1C/H) PTM Root is ready to have to context validated. The Mac PTM logic does not have a permenantly valid context. Currently the core invalidates the responder context on two conditions * aux_clk_active (is asserted when link in L1 states) * Link speed changes To clear this interrupt, The host programs PCIERC_PTM_RES_LOCAL_MSB and PCIERC_PTM_RES_LOCAL_LSB and then sets the context valid bit (PCIERC_PTM_RES_CTL[PRES_CTX_VLD]). */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_int_sum_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_14_63 : 50; uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Had a CRS timeout when retries were disabled. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Had a CRS timeout when retries were enabled. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Received read lock TLP. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Received N-TLP for unknown BAR. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for BAR1 when BAR1 index valid is not set. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Received P-TLP for an unknown BAR. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for BAR1 when BAR1 index valid is not set. */ uint64_t reserved_2_3 : 2; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) System error, RC mode only. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) System error, RC mode only. Internal: cfg_sys_err_rc. */ uint64_t reserved_2_3 : 2; uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for BAR1 when BAR1 index valid is not set. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Received P-TLP for an unknown BAR. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for BAR1 when BAR1 index valid is not set. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Received N-TLP for unknown BAR. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Received read lock TLP. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Had a CRS timeout when retries were enabled. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Had a CRS timeout when retries were disabled. */ uint64_t reserved_14_63 : 50; #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_int_sum_cn81xx cn88xx; */ struct bdk_pemx_int_sum_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_15_63 : 49; uint64_t surp_down : 1; /**< [ 14: 14](R/W1C/H) Indicates that a surprise down event is occuring in the controller. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Had a CRS timeout when retries were disabled. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Had a CRS timeout when retries were enabled. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Received read lock TLP. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Received N-TLP for unknown BAR. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for BAR1 when BAR1 index valid is not set. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Received P-TLP for an unknown BAR. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for BAR1 when BAR1 index valid is not set. */ uint64_t up_b3 : 1; /**< [ 3: 3](R/W1C/H) Received P-TLP for Expansion ROM (BAR3 EP Mode). */ uint64_t reserved_2 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) System error, RC mode only. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1C/H) System error, RC mode only. Internal: cfg_sys_err_rc. */ uint64_t reserved_2 : 1; uint64_t up_b3 : 1; /**< [ 3: 3](R/W1C/H) Received P-TLP for Expansion ROM (BAR3 EP Mode). */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1C/H) Received P-TLP for BAR1 when BAR1 index valid is not set. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1C/H) Received P-TLP for BAR2 when BAR2 is disabled. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1C/H) Received P-TLP for an unknown BAR. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1C/H) Received N-TLP for BAR1 when BAR1 index valid is not set. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1C/H) Received N-TLP for BAR2 when BAR2 is disabled. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1C/H) Received N-TLP for unknown BAR. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1C/H) Received read lock TLP. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1C/H) Had a CRS timeout when retries were enabled. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1C/H) Had a CRS timeout when retries were disabled. */ uint64_t surp_down : 1; /**< [ 14: 14](R/W1C/H) Indicates that a surprise down event is occuring in the controller. */ uint64_t reserved_15_63 : 49; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_int_sum bdk_pemx_int_sum_t; static inline uint64_t BDK_PEMX_INT_SUM(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_INT_SUM(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000428ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000428ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000428ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000d8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_INT_SUM", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_INT_SUM(a) bdk_pemx_int_sum_t #define bustype_BDK_PEMX_INT_SUM(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_INT_SUM(a) "PEMX_INT_SUM" #define device_bar_BDK_PEMX_INT_SUM(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_INT_SUM(a) (a) #define arguments_BDK_PEMX_INT_SUM(a) (a),-1,-1,-1 /** * Register (NCB) pem#_int_sum_w1s * * PEM Interrupt Summary Register * This register sets interrupt bits. */ union bdk_pemx_int_sum_w1s { uint64_t u; struct bdk_pemx_int_sum_w1s_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_0_14 : 15; #else /* Word 0 - Little Endian */ uint64_t reserved_0_14 : 15; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } s; struct bdk_pemx_int_sum_w1s_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_16_63 : 48; uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t un_b0 : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B0]. */ uint64_t up_b0 : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B0]. */ uint64_t surp_down : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CFG_INF]. */ uint64_t crs_dr : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[RDLK]. */ uint64_t un_bx : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_b4 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B4]. */ uint64_t up_bx : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_b4 : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B4]. */ uint64_t up_b3 : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t se : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ #else /* Word 0 - Little Endian */ uint64_t se : 1; /**< [ 0: 0](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t up_b3 : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t up_b4 : 1; /**< [ 2: 2](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B4]. */ uint64_t up_b2 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t un_b4 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B4]. */ uint64_t un_b2 : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t rdlk : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 10: 10](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t cfg_inf : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CFG_INF]. */ uint64_t surp_down : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t up_b0 : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B0]. */ uint64_t un_b0 : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B0]. */ uint64_t ptm_rdy_val : 1; /**< [ 15: 15](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[PTM_RDY_VAL]. */ uint64_t reserved_16_63 : 48; #endif /* Word 0 - End */ } cn9; struct bdk_pemx_int_sum_w1s_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_14_63 : 50; uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_B1]. */ uint64_t reserved_2_3 : 2; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2_3 : 2; uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..2)_INT_SUM[CRS_DR]. */ uint64_t reserved_14_63 : 50; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_int_sum_w1s_cn88xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_14_63 : 50; uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_B1]. */ uint64_t reserved_2_3 : 2; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2_3 : 2; uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..5)_INT_SUM[CRS_DR]. */ uint64_t reserved_14_63 : 50; #endif /* Word 0 - End */ } cn88xx; struct bdk_pemx_int_sum_w1s_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_15_63 : 49; uint64_t surp_down : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[RDLK]. */ uint64_t reserved_10 : 1; uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B1]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B1]. */ uint64_t up_b3 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t reserved_2 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_0 : 1; #else /* Word 0 - Little Endian */ uint64_t reserved_0 : 1; uint64_t se : 1; /**< [ 1: 1](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SE]. Internal: cfg_sys_err_rc. */ uint64_t reserved_2 : 1; uint64_t up_b3 : 1; /**< [ 3: 3](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B3]. */ uint64_t up_b1 : 1; /**< [ 4: 4](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B1]. */ uint64_t up_b2 : 1; /**< [ 5: 5](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_B2]. */ uint64_t up_bx : 1; /**< [ 6: 6](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UP_BX]. */ uint64_t un_b1 : 1; /**< [ 7: 7](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B1]. */ uint64_t un_b2 : 1; /**< [ 8: 8](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_B2]. */ uint64_t un_bx : 1; /**< [ 9: 9](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[UN_BX]. */ uint64_t reserved_10 : 1; uint64_t rdlk : 1; /**< [ 11: 11](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[RDLK]. */ uint64_t crs_er : 1; /**< [ 12: 12](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_ER]. */ uint64_t crs_dr : 1; /**< [ 13: 13](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[CRS_DR]. */ uint64_t surp_down : 1; /**< [ 14: 14](R/W1S/H) Reads or sets PEM(0..3)_INT_SUM[SURP_DOWN]. */ uint64_t reserved_15_63 : 49; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_int_sum_w1s bdk_pemx_int_sum_w1s_t; static inline uint64_t BDK_PEMX_INT_SUM_W1S(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_INT_SUM_W1S(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000430ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000430ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000430ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000e0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_INT_SUM_W1S", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_INT_SUM_W1S(a) bdk_pemx_int_sum_w1s_t #define bustype_BDK_PEMX_INT_SUM_W1S(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_INT_SUM_W1S(a) "PEMX_INT_SUM_W1S" #define device_bar_BDK_PEMX_INT_SUM_W1S(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_INT_SUM_W1S(a) (a) #define arguments_BDK_PEMX_INT_SUM_W1S(a) (a),-1,-1,-1 /** * Register (NCB) pem#_latency_pc * * PEM Latency Count Register * This register contains read latency count for debugging purposes. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_latency_pc { uint64_t u; struct bdk_pemx_latency_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t latency : 64; /**< [ 63: 0](RO/H) Total read latency count in units of coprocessor-clocks measured from SLI read request until first data is returned from remote memory aggregated across all non-masked SWI tags. */ #else /* Word 0 - Little Endian */ uint64_t latency : 64; /**< [ 63: 0](RO/H) Total read latency count in units of coprocessor-clocks measured from SLI read request until first data is returned from remote memory aggregated across all non-masked SWI tags. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_latency_pc_s cn8; */ struct bdk_pemx_latency_pc_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t latency : 64; /**< [ 63: 0](R/W/H) Total read latency count in 10 ns units measured from an internal point in PEM after coming from either NCBO (but prior to any merging logic) or EBO, to an internal point in PEM where the corresponding completion is sent to the NCBI or EBI interface logic. PEM()_LATENCY_PC_CTL[EBO_SEL] controls which outbound bus has its reads latency tracked. This register can only be written by software when PEM()_LATENCY_PC_CTL[ACTIVE] is clear. */ #else /* Word 0 - Little Endian */ uint64_t latency : 64; /**< [ 63: 0](R/W/H) Total read latency count in 10 ns units measured from an internal point in PEM after coming from either NCBO (but prior to any merging logic) or EBO, to an internal point in PEM where the corresponding completion is sent to the NCBI or EBI interface logic. PEM()_LATENCY_PC_CTL[EBO_SEL] controls which outbound bus has its reads latency tracked. This register can only be written by software when PEM()_LATENCY_PC_CTL[ACTIVE] is clear. */ #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_latency_pc bdk_pemx_latency_pc_t; static inline uint64_t BDK_PEMX_LATENCY_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_LATENCY_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000490ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000108ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_LATENCY_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_LATENCY_PC(a) bdk_pemx_latency_pc_t #define bustype_BDK_PEMX_LATENCY_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_LATENCY_PC(a) "PEMX_LATENCY_PC" #define device_bar_BDK_PEMX_LATENCY_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_LATENCY_PC(a) (a) #define arguments_BDK_PEMX_LATENCY_PC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_latency_pc_ctl * * PEM Latency Control Register * This register controls read latency monitoring for debugging purposes. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_latency_pc_ctl { uint64_t u; struct bdk_pemx_latency_pc_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_3_63 : 61; uint64_t ebo_sel : 1; /**< [ 2: 2](R/W) If set, latency will be measured on EBO reads instead of NCBO reads. */ uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this bit. Later, when software clears [ACTIVE], hardware will wait for all outstanding reads to get their first data returned and then set this bit to indicate that measurement operations are completed. */ uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on this bit, PEM will begin a measurement which will include PEM clearing PEM()_LATENCY_PC and PEM()_READS_PC to reset all counting as well as PEM clearing PEM()_LATENCY_CTL[COMPLETE]. Only SLI SWI reads that occur after this rising edge will be considered. When software wants to halt measurement, it can clear this bit which will block further reads from being considered. When software reads PEM()_LATENCY_CTL[COMPLETE] as set, it can know that all measurement is completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate and stable set of values. */ #else /* Word 0 - Little Endian */ uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on this bit, PEM will begin a measurement which will include PEM clearing PEM()_LATENCY_PC and PEM()_READS_PC to reset all counting as well as PEM clearing PEM()_LATENCY_CTL[COMPLETE]. Only SLI SWI reads that occur after this rising edge will be considered. When software wants to halt measurement, it can clear this bit which will block further reads from being considered. When software reads PEM()_LATENCY_CTL[COMPLETE] as set, it can know that all measurement is completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate and stable set of values. */ uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this bit. Later, when software clears [ACTIVE], hardware will wait for all outstanding reads to get their first data returned and then set this bit to indicate that measurement operations are completed. */ uint64_t ebo_sel : 1; /**< [ 2: 2](R/W) If set, latency will be measured on EBO reads instead of NCBO reads. */ uint64_t reserved_3_63 : 61; #endif /* Word 0 - End */ } s; struct bdk_pemx_latency_pc_ctl_cn8 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_2_63 : 62; uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this bit. Later, when software clears [ACTIVE], hardware will wait for all outstanding reads to get their first data returned and then set this bit to indicate that measurement operations are completed. */ uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on this bit, PEM will begin a measurement which will include PEM clearing PEM()_LATENCY_PC and PEM()_READS_PC to reset all counting as well as PEM clearing PEM()_LATENCY_CTL[COMPLETE]. Only SLI SWI reads that occur after this rising edge will be considered. When software wants to halt measurement, it can clear this bit which will block further reads from being considered. When software reads PEM()_LATENCY_CTL[COMPLETE] as set, it can know that all measurement is completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate and stable set of values. */ #else /* Word 0 - Little Endian */ uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on this bit, PEM will begin a measurement which will include PEM clearing PEM()_LATENCY_PC and PEM()_READS_PC to reset all counting as well as PEM clearing PEM()_LATENCY_CTL[COMPLETE]. Only SLI SWI reads that occur after this rising edge will be considered. When software wants to halt measurement, it can clear this bit which will block further reads from being considered. When software reads PEM()_LATENCY_CTL[COMPLETE] as set, it can know that all measurement is completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate and stable set of values. */ uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this bit. Later, when software clears [ACTIVE], hardware will wait for all outstanding reads to get their first data returned and then set this bit to indicate that measurement operations are completed. */ uint64_t reserved_2_63 : 62; #endif /* Word 0 - End */ } cn8; struct bdk_pemx_latency_pc_ctl_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_3_63 : 61; uint64_t ebo_sel : 1; /**< [ 2: 2](R/W) If set, latency will be measured on EBO reads instead of NCBO reads. */ uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this bit. Later, when software clears [ACTIVE], hardware will wait for all outstanding reads to get their first data returned and then set this bit to indicate that measurement operations are completed. */ uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on [ACTIVE], PEM will begin a measurement using existing values for PEM()_LATENCY_PC and PEM()_READS_PC as well as clear [COMPLETE]. Only NCBO reads that occur after this rising edge will be added into the results. When software wants to halt measurement, it can clear this bit which will block further reads from being considered. When software reads [COMPLETE] as set, it can know that all measurement is completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate and stable set of values. Note that [ACTIVE] does not need to be cleared in order to read PEM()_LATENCY_PC and PEM()_READS_PC to calcuate average latency during active processing, but there will be some small error. Note that because software can write PEM()_LATENCY_PC and PEM()_READS_PC, PEM will not clear these values when a software write causes a rising edge on [ACTIVE]. Instead, software must initialize these two registers (probably both to 0) prior to starting a measurement. */ #else /* Word 0 - Little Endian */ uint64_t active : 1; /**< [ 0: 0](R/W) When a software write causes a rising edge on [ACTIVE], PEM will begin a measurement using existing values for PEM()_LATENCY_PC and PEM()_READS_PC as well as clear [COMPLETE]. Only NCBO reads that occur after this rising edge will be added into the results. When software wants to halt measurement, it can clear this bit which will block further reads from being considered. When software reads [COMPLETE] as set, it can know that all measurement is completed and PEM()_LATENCY_PC and PEM()_READS_PC reflect a completely accurate and stable set of values. Note that [ACTIVE] does not need to be cleared in order to read PEM()_LATENCY_PC and PEM()_READS_PC to calcuate average latency during active processing, but there will be some small error. Note that because software can write PEM()_LATENCY_PC and PEM()_READS_PC, PEM will not clear these values when a software write causes a rising edge on [ACTIVE]. Instead, software must initialize these two registers (probably both to 0) prior to starting a measurement. */ uint64_t complete : 1; /**< [ 1: 1](RO/H) When software causes a rising edge on [ACTIVE], hardware will clear this bit. Later, when software clears [ACTIVE], hardware will wait for all outstanding reads to get their first data returned and then set this bit to indicate that measurement operations are completed. */ uint64_t ebo_sel : 1; /**< [ 2: 2](R/W) If set, latency will be measured on EBO reads instead of NCBO reads. */ uint64_t reserved_3_63 : 61; #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_latency_pc_ctl bdk_pemx_latency_pc_ctl_t; static inline uint64_t BDK_PEMX_LATENCY_PC_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_LATENCY_PC_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c00004c0ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000118ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_LATENCY_PC_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_LATENCY_PC_CTL(a) bdk_pemx_latency_pc_ctl_t #define bustype_BDK_PEMX_LATENCY_PC_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_LATENCY_PC_CTL(a) "PEMX_LATENCY_PC_CTL" #define device_bar_BDK_PEMX_LATENCY_PC_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_LATENCY_PC_CTL(a) (a) #define arguments_BDK_PEMX_LATENCY_PC_CTL(a) (a),-1,-1,-1 /** * Register (RSL) pem#_latency_pc_mask# * * PEM Latency Counts Low Register * This register contains read latency masking for debugging purposes. */ union bdk_pemx_latency_pc_maskx { uint64_t u; struct bdk_pemx_latency_pc_maskx_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t mask : 64; /**< [ 63: 0](R/W) Each bit of MASK corresponds to one SWI tag value. PEM()_LATENCY_PC_MASK(0) corresponds to SWI tags [63:0], PEM()_LATENCY_PC_MASK(1) corresponds to SWI tags [127:64]. If a bit of [MASK] is set, then its SWI tag will NOT be included in the values reported in PEM()_LATENCY_PC and PEM()_READS_PC. */ #else /* Word 0 - Little Endian */ uint64_t mask : 64; /**< [ 63: 0](R/W) Each bit of MASK corresponds to one SWI tag value. PEM()_LATENCY_PC_MASK(0) corresponds to SWI tags [63:0], PEM()_LATENCY_PC_MASK(1) corresponds to SWI tags [127:64]. If a bit of [MASK] is set, then its SWI tag will NOT be included in the values reported in PEM()_LATENCY_PC and PEM()_READS_PC. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_latency_pc_maskx_s cn; */ }; typedef union bdk_pemx_latency_pc_maskx bdk_pemx_latency_pc_maskx_t; static inline uint64_t BDK_PEMX_LATENCY_PC_MASKX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_LATENCY_PC_MASKX(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=1))) return 0x87e0c00004a0ll + 0x1000000ll * ((a) & 0x3) + 0x100ll * ((b) & 0x1); __bdk_csr_fatal("PEMX_LATENCY_PC_MASKX", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_LATENCY_PC_MASKX(a,b) bdk_pemx_latency_pc_maskx_t #define bustype_BDK_PEMX_LATENCY_PC_MASKX(a,b) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_LATENCY_PC_MASKX(a,b) "PEMX_LATENCY_PC_MASKX" #define device_bar_BDK_PEMX_LATENCY_PC_MASKX(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_LATENCY_PC_MASKX(a,b) (a) #define arguments_BDK_PEMX_LATENCY_PC_MASKX(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_ltr_latency * * PEM Latency Tolerance Reporting Register * This register contains the current LTR values reported and in-use * by the downstream device. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_ltr_latency { uint64_t u; struct bdk_pemx_ltr_latency_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_32_63 : 32; uint64_t latency : 32; /**< [ 31: 0](RO/H) Reflects the captured LTR values from received LTR message in RC mode. */ #else /* Word 0 - Little Endian */ uint64_t latency : 32; /**< [ 31: 0](RO/H) Reflects the captured LTR values from received LTR message in RC mode. */ uint64_t reserved_32_63 : 32; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ltr_latency_s cn; */ }; typedef union bdk_pemx_ltr_latency bdk_pemx_ltr_latency_t; static inline uint64_t BDK_PEMX_LTR_LATENCY(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_LTR_LATENCY(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000b0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_LTR_LATENCY", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_LTR_LATENCY(a) bdk_pemx_ltr_latency_t #define bustype_BDK_PEMX_LTR_LATENCY(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_LTR_LATENCY(a) "PEMX_LTR_LATENCY" #define device_bar_BDK_PEMX_LTR_LATENCY(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_LTR_LATENCY(a) (a) #define arguments_BDK_PEMX_LTR_LATENCY(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ltr_val# * * PEM Latency Tolerance Reporting Register * This register contains the values to put into the latency tolerance reporting (LTM) message * when triggered by hardware. EP Mode. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_ltr_valx { uint64_t u; struct bdk_pemx_ltr_valx_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_32_63 : 32; uint64_t ns_lat : 16; /**< [ 31: 16](R/W) No-snoop latency value to put into LTM message when triggered by hardware. */ uint64_t snoop_lat : 16; /**< [ 15: 0](R/W) Snoop latency value to put into LTM message when triggered by hardware. */ #else /* Word 0 - Little Endian */ uint64_t snoop_lat : 16; /**< [ 15: 0](R/W) Snoop latency value to put into LTM message when triggered by hardware. */ uint64_t ns_lat : 16; /**< [ 31: 16](R/W) No-snoop latency value to put into LTM message when triggered by hardware. */ uint64_t reserved_32_63 : 32; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ltr_valx_s cn; */ }; typedef union bdk_pemx_ltr_valx bdk_pemx_ltr_valx_t; static inline uint64_t BDK_PEMX_LTR_VALX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_LTR_VALX(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=1))) return 0x8e00000000a0ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0x1); __bdk_csr_fatal("PEMX_LTR_VALX", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_LTR_VALX(a,b) bdk_pemx_ltr_valx_t #define bustype_BDK_PEMX_LTR_VALX(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_LTR_VALX(a,b) "PEMX_LTR_VALX" #define device_bar_BDK_PEMX_LTR_VALX(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_LTR_VALX(a,b) (a) #define arguments_BDK_PEMX_LTR_VALX(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_mac_lane#_eq * * PEM MAC Lane RX/TX Equalization Info Register * This register specifies the per lane RX/TX Equalization values advertised * by the link partner. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_mac_lanex_eq { uint64_t u; struct bdk_pemx_mac_lanex_eq_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_50_63 : 14; uint64_t pset_coef : 18; /**< [ 49: 32](RO/H) Presets and coefficients chosen by the PEM. */ uint64_t reserved_15_31 : 17; uint64_t rxphint : 3; /**< [ 14: 12](RO/H) Represents the RX equalization preset hint for the receiver. */ uint64_t lf : 6; /**< [ 11: 6](RO/H) Represents the low frequency value of the remote transmitter captured in Recovery.Equalization Phase 1. */ uint64_t fs : 6; /**< [ 5: 0](RO/H) Represents the full swing value of the remote transmitter captured in Recovery.Equalization Phase 1. */ #else /* Word 0 - Little Endian */ uint64_t fs : 6; /**< [ 5: 0](RO/H) Represents the full swing value of the remote transmitter captured in Recovery.Equalization Phase 1. */ uint64_t lf : 6; /**< [ 11: 6](RO/H) Represents the low frequency value of the remote transmitter captured in Recovery.Equalization Phase 1. */ uint64_t rxphint : 3; /**< [ 14: 12](RO/H) Represents the RX equalization preset hint for the receiver. */ uint64_t reserved_15_31 : 17; uint64_t pset_coef : 18; /**< [ 49: 32](RO/H) Presets and coefficients chosen by the PEM. */ uint64_t reserved_50_63 : 14; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_mac_lanex_eq_s cn; */ }; typedef union bdk_pemx_mac_lanex_eq bdk_pemx_mac_lanex_eq_t; static inline uint64_t BDK_PEMX_MAC_LANEX_EQ(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_MAC_LANEX_EQ(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15))) return 0x8e0000000780ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf); __bdk_csr_fatal("PEMX_MAC_LANEX_EQ", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_MAC_LANEX_EQ(a,b) bdk_pemx_mac_lanex_eq_t #define bustype_BDK_PEMX_MAC_LANEX_EQ(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_MAC_LANEX_EQ(a,b) "PEMX_MAC_LANEX_EQ" #define device_bar_BDK_PEMX_MAC_LANEX_EQ(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_MAC_LANEX_EQ(a,b) (a) #define arguments_BDK_PEMX_MAC_LANEX_EQ(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_merge_timer_ctl * * PEM Merge Timer Control Register * This register controls merging timers and overrides for maximum merging size * for outbound reads, writes, and completions. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_merge_timer_ctl { uint64_t u; struct bdk_pemx_merge_timer_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t cmerge_dis : 1; /**< [ 63: 63](R/W) For diagnostic use only. If set, will disable outbound completion merging. */ uint64_t cmerge_mps_limit : 3; /**< [ 62: 60](R/W) Completion merge maximum payload size limit value. Software can use this value to reduce the maximum size of a merged completion operation to a level below the MPS value coming from the PCIe core. A value of 0x0 limits to 128 bytes with each increase in value doubling the limit. The hardware is controlled by the lower of [CMERGE_MPS_LIMIT] and the MPS value coming from the PCIe core. Resets to a value guaranteed to be at least as large as any legal value for MPS coming from the PCIe core. */ uint64_t cmerge_total_timer : 7; /**< [ 59: 53](R/W) Completion merge encapsulation timer. When PEM accepts an outbound completion which begins a completion merging process, [CMERGE_TOTAL_TIMER] specifies the maximum wait, in units of (coprocessor-clock cycles * 64), to merge additional completion transfers into one larger overall completion. The values for this field range from 1 to 127, with 0x0 used for diagnostics only and treated as never expire. This translates into a range of 64 to 8128 in units of co-processor-clock cycles. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t cmerge_segment_timer : 7; /**< [ 52: 46](R/W) Completion merge segment timer. The maximum wait, in coprocessor-clock cycles, to wait between each segment of the overall merge operation. Each iterative completion transfer added to the overall merge restarts this timer. The values for this field range from 1 to 127, with 0x0 used for diagnostics only and treated as never expire. This translates into a range of 64 to 8128 in units of co-processor-clock cycles. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t wmerge_mps_limit : 3; /**< [ 45: 43](R/W) Write merge maximum payload size limit value. Software can use this value to reduce the maximum size of a merged write operation to a level below the MPS value coming from the PCIe core. A value of 0 limits to 128 bytes with each increase in value doubling the limit. The hardware will be controlled by the LOWER of [WMERGE_MPS_LIMIT] and the MPS value coming from the PCIe core. Resets to a value guaranteed to be at least as large as any legal value for MPS coming from the PCIe core. */ uint64_t wmerge_total_timer : 10; /**< [ 42: 33](R/W) Write merge encapsulation timer. When PEM accepts an outbound write which begins a write merging process, [WMERGE_TOTAL_TIMER] specifies the maximum wait, in coprocessor-clock cycles, to merge additional write operations into one larger write. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t wmerge_segment_timer : 10; /**< [ 32: 23](R/W) Write merge segment timer. The maximum wait, in coprocessor-clock cycles, to wait between each segment of the overall merge operation. Each iterative write operation added to the overall merge restarts this timer. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t rmerge_mrrs_limit : 3; /**< [ 22: 20](R/W) Read merge maximum read request size limit value. Software can use this value to reduce the maximum size of a merged read operation to a level below the MRRS value coming from the PCIe core. A value of 0x0 limits to 128 bytes with each increase in value doubling the limit. The hardware will be controlled by the LOWER of [RMERGE_MRRS_LIMIT] and the MRRS value coming from the PCIe core. Resets to a value guaranteed to be at least as large as any legal value for MRRS coming from the PCIe core. */ uint64_t rmerge_total_timer : 10; /**< [ 19: 10](R/W) Read merge encapsulation timer. When PEM accepts an outbound read which begins a read merging process, [RMERGE_TOTAL_TIMER] specifies the maximum wait, in coprocessor-clock cycles, to merge additional read operations into one larger read. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t rmerge_segment_timer : 10; /**< [ 9: 0](R/W) Read merge segment timer. specifies the maximum wait, in coprocessor-clock cycles, to wait between each segment of the overall merge operation. Each iterative read operation added to the overall merge restarts this timer. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ #else /* Word 0 - Little Endian */ uint64_t rmerge_segment_timer : 10; /**< [ 9: 0](R/W) Read merge segment timer. specifies the maximum wait, in coprocessor-clock cycles, to wait between each segment of the overall merge operation. Each iterative read operation added to the overall merge restarts this timer. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t rmerge_total_timer : 10; /**< [ 19: 10](R/W) Read merge encapsulation timer. When PEM accepts an outbound read which begins a read merging process, [RMERGE_TOTAL_TIMER] specifies the maximum wait, in coprocessor-clock cycles, to merge additional read operations into one larger read. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t rmerge_mrrs_limit : 3; /**< [ 22: 20](R/W) Read merge maximum read request size limit value. Software can use this value to reduce the maximum size of a merged read operation to a level below the MRRS value coming from the PCIe core. A value of 0x0 limits to 128 bytes with each increase in value doubling the limit. The hardware will be controlled by the LOWER of [RMERGE_MRRS_LIMIT] and the MRRS value coming from the PCIe core. Resets to a value guaranteed to be at least as large as any legal value for MRRS coming from the PCIe core. */ uint64_t wmerge_segment_timer : 10; /**< [ 32: 23](R/W) Write merge segment timer. The maximum wait, in coprocessor-clock cycles, to wait between each segment of the overall merge operation. Each iterative write operation added to the overall merge restarts this timer. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t wmerge_total_timer : 10; /**< [ 42: 33](R/W) Write merge encapsulation timer. When PEM accepts an outbound write which begins a write merging process, [WMERGE_TOTAL_TIMER] specifies the maximum wait, in coprocessor-clock cycles, to merge additional write operations into one larger write. The values for this field range from 1 to 1023, with 0x0 used for diagnostics only and treated as never expire. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t wmerge_mps_limit : 3; /**< [ 45: 43](R/W) Write merge maximum payload size limit value. Software can use this value to reduce the maximum size of a merged write operation to a level below the MPS value coming from the PCIe core. A value of 0 limits to 128 bytes with each increase in value doubling the limit. The hardware will be controlled by the LOWER of [WMERGE_MPS_LIMIT] and the MPS value coming from the PCIe core. Resets to a value guaranteed to be at least as large as any legal value for MPS coming from the PCIe core. */ uint64_t cmerge_segment_timer : 7; /**< [ 52: 46](R/W) Completion merge segment timer. The maximum wait, in coprocessor-clock cycles, to wait between each segment of the overall merge operation. Each iterative completion transfer added to the overall merge restarts this timer. The values for this field range from 1 to 127, with 0x0 used for diagnostics only and treated as never expire. This translates into a range of 64 to 8128 in units of co-processor-clock cycles. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t cmerge_total_timer : 7; /**< [ 59: 53](R/W) Completion merge encapsulation timer. When PEM accepts an outbound completion which begins a completion merging process, [CMERGE_TOTAL_TIMER] specifies the maximum wait, in units of (coprocessor-clock cycles * 64), to merge additional completion transfers into one larger overall completion. The values for this field range from 1 to 127, with 0x0 used for diagnostics only and treated as never expire. This translates into a range of 64 to 8128 in units of co-processor-clock cycles. Internal: If, during diagnostics, a timer value of 0x0 causes final transactions to be stuck within the pipeline, those transactions can be released by changing the timer to a non-zero value. */ uint64_t cmerge_mps_limit : 3; /**< [ 62: 60](R/W) Completion merge maximum payload size limit value. Software can use this value to reduce the maximum size of a merged completion operation to a level below the MPS value coming from the PCIe core. A value of 0x0 limits to 128 bytes with each increase in value doubling the limit. The hardware is controlled by the lower of [CMERGE_MPS_LIMIT] and the MPS value coming from the PCIe core. Resets to a value guaranteed to be at least as large as any legal value for MPS coming from the PCIe core. */ uint64_t cmerge_dis : 1; /**< [ 63: 63](R/W) For diagnostic use only. If set, will disable outbound completion merging. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_merge_timer_ctl_s cn; */ }; typedef union bdk_pemx_merge_timer_ctl bdk_pemx_merge_timer_ctl_t; static inline uint64_t BDK_PEMX_MERGE_TIMER_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_MERGE_TIMER_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000170ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_MERGE_TIMER_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_MERGE_TIMER_CTL(a) bdk_pemx_merge_timer_ctl_t #define bustype_BDK_PEMX_MERGE_TIMER_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_MERGE_TIMER_CTL(a) "PEMX_MERGE_TIMER_CTL" #define device_bar_BDK_PEMX_MERGE_TIMER_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_MERGE_TIMER_CTL(a) (a) #define arguments_BDK_PEMX_MERGE_TIMER_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_msix_pba# * * PEM MSI-X Pending Bit Array Registers * This register is the MSI-X PBA table, the bit number is indexed by the PEM_INT_VEC_E enumeration. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_msix_pbax { uint64_t u; struct bdk_pemx_msix_pbax_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message for the associated PEM_MSIX_VEC()_CTL, enumerated by PEM_INT_VEC_E. Bits that have no associated PEM_INT_VEC_E are zero. */ #else /* Word 0 - Little Endian */ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message for the associated PEM_MSIX_VEC()_CTL, enumerated by PEM_INT_VEC_E. Bits that have no associated PEM_INT_VEC_E are zero. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_msix_pbax_s cn; */ }; typedef union bdk_pemx_msix_pbax bdk_pemx_msix_pbax_t; static inline uint64_t BDK_PEMX_MSIX_PBAX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_MSIX_PBAX(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a<=2) && (b==0))) return 0x87e0c0ff0000ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0x0); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b==0))) return 0x87e0c0ff0000ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0x0); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && ((a<=5) && (b==0))) return 0x87e0c0ff0000ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0x0); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b==0))) return 0x8e0f000f0000ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0x0); __bdk_csr_fatal("PEMX_MSIX_PBAX", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_MSIX_PBAX(a,b) bdk_pemx_msix_pbax_t #define bustype_BDK_PEMX_MSIX_PBAX(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_MSIX_PBAX(a,b) "PEMX_MSIX_PBAX" #define device_bar_BDK_PEMX_MSIX_PBAX(a,b) 0x4 /* PF_BAR4 */ #define busnum_BDK_PEMX_MSIX_PBAX(a,b) (a) #define arguments_BDK_PEMX_MSIX_PBAX(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_msix_vec#_addr * * PEM MSI-X Vector Table Address Registers * This register is the MSI-X vector table, indexed by the PEM_INT_VEC_E enumeration. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_msix_vecx_addr { uint64_t u; struct bdk_pemx_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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM(0..5)_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function 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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM(0..5)_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function 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_pemx_msix_vecx_addr_cn9 { #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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM()_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function 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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM()_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function 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 */ } cn9; struct bdk_pemx_msix_vecx_addr_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_49_63 : 15; uint64_t addr : 47; /**< [ 48: 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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM(0..2)_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function 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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM(0..2)_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function as if [SECVEC] was set. */ uint64_t reserved_1 : 1; uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */ uint64_t reserved_49_63 : 15; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_msix_vecx_addr_cn88xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_49_63 : 15; uint64_t addr : 47; /**< [ 48: 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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM(0..5)_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function 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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM(0..5)_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function as if [SECVEC] was set. */ uint64_t reserved_1 : 1; uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */ uint64_t reserved_49_63 : 15; #endif /* Word 0 - End */ } cn88xx; struct bdk_pemx_msix_vecx_addr_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_49_63 : 15; uint64_t addr : 47; /**< [ 48: 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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM(0..3)_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function 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 PEM()_MSIX_VEC()_ADDR, PEM()_MSIX_VEC()_CTL, and corresponding bit of PEM()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed by the nonsecure world. If PCCPF_PEM(0..3)_VSEC_SCTL[MSIX_SEC] (for documentation, see PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is set, all vectors are secure and function as if [SECVEC] was set. */ uint64_t reserved_1 : 1; uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */ uint64_t reserved_49_63 : 15; #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_msix_vecx_addr bdk_pemx_msix_vecx_addr_t; static inline uint64_t BDK_PEMX_MSIX_VECX_ADDR(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_MSIX_VECX_ADDR(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a<=2) && (b<=11))) return 0x87e0c0f00000ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=11))) return 0x87e0c0f00000ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS1_X) && ((a<=5) && (b<=13))) return 0x87e0c0f00000ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X) && ((a<=5) && (b<=15))) return 0x87e0c0f00000ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=8))) return 0x8e0f00000000ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf); __bdk_csr_fatal("PEMX_MSIX_VECX_ADDR", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_MSIX_VECX_ADDR(a,b) bdk_pemx_msix_vecx_addr_t #define bustype_BDK_PEMX_MSIX_VECX_ADDR(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_MSIX_VECX_ADDR(a,b) "PEMX_MSIX_VECX_ADDR" #define device_bar_BDK_PEMX_MSIX_VECX_ADDR(a,b) 0x4 /* PF_BAR4 */ #define busnum_BDK_PEMX_MSIX_VECX_ADDR(a,b) (a) #define arguments_BDK_PEMX_MSIX_VECX_ADDR(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_msix_vec#_ctl * * PEM MSI-X Vector Table Control and Data Registers * This register is the MSI-X vector table, indexed by the PEM_INT_VEC_E enumeration. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_msix_vecx_ctl { uint64_t u; struct bdk_pemx_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 will be 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 will be sent to this vector. */ uint64_t reserved_33_63 : 31; #endif /* Word 0 - End */ } s; struct bdk_pemx_msix_vecx_ctl_cn8 { #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 will be sent to this vector. */ uint64_t reserved_20_31 : 12; uint64_t data : 20; /**< [ 19: 0](R/W) Data to use for MSI-X delivery of this vector. */ #else /* Word 0 - Little Endian */ uint64_t data : 20; /**< [ 19: 0](R/W) Data to use for MSI-X delivery of this vector. */ uint64_t reserved_20_31 : 12; uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts will be sent to this vector. */ uint64_t reserved_33_63 : 31; #endif /* Word 0 - End */ } cn8; /* struct bdk_pemx_msix_vecx_ctl_s cn9; */ }; typedef union bdk_pemx_msix_vecx_ctl bdk_pemx_msix_vecx_ctl_t; static inline uint64_t BDK_PEMX_MSIX_VECX_CTL(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_MSIX_VECX_CTL(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a<=2) && (b<=11))) return 0x87e0c0f00008ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=11))) return 0x87e0c0f00008ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS1_X) && ((a<=5) && (b<=13))) return 0x87e0c0f00008ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X) && ((a<=5) && (b<=15))) return 0x87e0c0f00008ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0xf); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=8))) return 0x8e0f00000008ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xf); __bdk_csr_fatal("PEMX_MSIX_VECX_CTL", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_MSIX_VECX_CTL(a,b) bdk_pemx_msix_vecx_ctl_t #define bustype_BDK_PEMX_MSIX_VECX_CTL(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_MSIX_VECX_CTL(a,b) "PEMX_MSIX_VECX_CTL" #define device_bar_BDK_PEMX_MSIX_VECX_CTL(a,b) 0x4 /* PF_BAR4 */ #define busnum_BDK_PEMX_MSIX_VECX_CTL(a,b) (a) #define arguments_BDK_PEMX_MSIX_VECX_CTL(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_ncbi_ctl * * PEM Inbound NCBI Control Register * This register contains control bits for memory accesses targeting the NCBI bus. * This register is ignored when PEM()_EBUS_CTL[PF_BAR*_SEL] is set. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_ncbi_ctl { uint64_t u; struct bdk_pemx_ncbi_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_21_63 : 43; uint64_t bige : 1; /**< [ 20: 20](R/W) Atomics sent on NCBI will be marked as big endian. If the link partner is big-endian and the processors are big-endian, this allows exchange of big-endian atomics without byte swapping. */ uint64_t reserved_11_19 : 9; uint64_t clken_force : 1; /**< [ 10: 10](R/W) Force clock enable on NCBI bus to always enabled. For diagnostic use only. */ uint64_t ntlp_ro_dis : 1; /**< [ 9: 9](R/W) Relaxed ordering disable for non-posted TLPs. Will force relaxed ordering bit off when non-posted TLPs are forwarded to IOB over NCBI. */ uint64_t ctlp_ro_dis : 1; /**< [ 8: 8](R/W) Relaxed ordering disable for completion TLPs. Will force relaxed ordering bit off when completion TLPs are forwarded to IOB over NCBI. */ uint64_t ptlp_ro_dis : 1; /**< [ 7: 7](R/W) Relaxed ordering disable for posted TLPs. Will force relaxed ordering bit off when posted TLPs are forwarded to IOB over NCBI. */ uint64_t reserved_3_6 : 4; uint64_t ld_cmd : 2; /**< [ 2: 1](R/W) When PEM issues a load command over NCBI to the LLC that is to be cached, this field selects the type of load command to use. Un-cached loads will use LDT: 0x0 = LDD. 0x1 = LDI. 0x2 = LDE. 0x3 = LDY. */ uint64_t wait_com : 1; /**< [ 0: 0](R/W) Wait for commit. For diagnostic use only. When set, replaces the default automatic store-store ordering with a more conservative and lower performing rule. This causes the PEM to wait for a store done from the NCB before sending additional stores to the NCB from the MAC. The PEM requests a commit on the last store if more than one STORE operation is required on NCBI. When set, inbound write merging must be disabled (PEM()_IB_MERGE_TIMER_CTL[WMERGE_DIS] = 1). */ #else /* Word 0 - Little Endian */ uint64_t wait_com : 1; /**< [ 0: 0](R/W) Wait for commit. For diagnostic use only. When set, replaces the default automatic store-store ordering with a more conservative and lower performing rule. This causes the PEM to wait for a store done from the NCB before sending additional stores to the NCB from the MAC. The PEM requests a commit on the last store if more than one STORE operation is required on NCBI. When set, inbound write merging must be disabled (PEM()_IB_MERGE_TIMER_CTL[WMERGE_DIS] = 1). */ uint64_t ld_cmd : 2; /**< [ 2: 1](R/W) When PEM issues a load command over NCBI to the LLC that is to be cached, this field selects the type of load command to use. Un-cached loads will use LDT: 0x0 = LDD. 0x1 = LDI. 0x2 = LDE. 0x3 = LDY. */ uint64_t reserved_3_6 : 4; uint64_t ptlp_ro_dis : 1; /**< [ 7: 7](R/W) Relaxed ordering disable for posted TLPs. Will force relaxed ordering bit off when posted TLPs are forwarded to IOB over NCBI. */ uint64_t ctlp_ro_dis : 1; /**< [ 8: 8](R/W) Relaxed ordering disable for completion TLPs. Will force relaxed ordering bit off when completion TLPs are forwarded to IOB over NCBI. */ uint64_t ntlp_ro_dis : 1; /**< [ 9: 9](R/W) Relaxed ordering disable for non-posted TLPs. Will force relaxed ordering bit off when non-posted TLPs are forwarded to IOB over NCBI. */ uint64_t clken_force : 1; /**< [ 10: 10](R/W) Force clock enable on NCBI bus to always enabled. For diagnostic use only. */ uint64_t reserved_11_19 : 9; uint64_t bige : 1; /**< [ 20: 20](R/W) Atomics sent on NCBI will be marked as big endian. If the link partner is big-endian and the processors are big-endian, this allows exchange of big-endian atomics without byte swapping. */ uint64_t reserved_21_63 : 43; #endif /* Word 0 - End */ } s; struct bdk_pemx_ncbi_ctl_cn { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_21_63 : 43; uint64_t bige : 1; /**< [ 20: 20](R/W) Atomics sent on NCBI will be marked as big endian. If the link partner is big-endian and the processors are big-endian, this allows exchange of big-endian atomics without byte swapping. */ uint64_t reserved_11_19 : 9; uint64_t clken_force : 1; /**< [ 10: 10](R/W) Force clock enable on NCBI bus to always enabled. For diagnostic use only. */ uint64_t ntlp_ro_dis : 1; /**< [ 9: 9](R/W) Relaxed ordering disable for non-posted TLPs. Will force relaxed ordering bit off when non-posted TLPs are forwarded to IOB over NCBI. */ uint64_t ctlp_ro_dis : 1; /**< [ 8: 8](R/W) Relaxed ordering disable for completion TLPs. Will force relaxed ordering bit off when completion TLPs are forwarded to IOB over NCBI. */ uint64_t ptlp_ro_dis : 1; /**< [ 7: 7](R/W) Relaxed ordering disable for posted TLPs. Will force relaxed ordering bit off when posted TLPs are forwarded to IOB over NCBI. */ uint64_t reserved_5_6 : 2; uint64_t reserved_4 : 1; uint64_t reserved_3 : 1; uint64_t ld_cmd : 2; /**< [ 2: 1](R/W) When PEM issues a load command over NCBI to the LLC that is to be cached, this field selects the type of load command to use. Un-cached loads will use LDT: 0x0 = LDD. 0x1 = LDI. 0x2 = LDE. 0x3 = LDY. */ uint64_t wait_com : 1; /**< [ 0: 0](R/W) Wait for commit. For diagnostic use only. When set, replaces the default automatic store-store ordering with a more conservative and lower performing rule. This causes the PEM to wait for a store done from the NCB before sending additional stores to the NCB from the MAC. The PEM requests a commit on the last store if more than one STORE operation is required on NCBI. When set, inbound write merging must be disabled (PEM()_IB_MERGE_TIMER_CTL[WMERGE_DIS] = 1). */ #else /* Word 0 - Little Endian */ uint64_t wait_com : 1; /**< [ 0: 0](R/W) Wait for commit. For diagnostic use only. When set, replaces the default automatic store-store ordering with a more conservative and lower performing rule. This causes the PEM to wait for a store done from the NCB before sending additional stores to the NCB from the MAC. The PEM requests a commit on the last store if more than one STORE operation is required on NCBI. When set, inbound write merging must be disabled (PEM()_IB_MERGE_TIMER_CTL[WMERGE_DIS] = 1). */ uint64_t ld_cmd : 2; /**< [ 2: 1](R/W) When PEM issues a load command over NCBI to the LLC that is to be cached, this field selects the type of load command to use. Un-cached loads will use LDT: 0x0 = LDD. 0x1 = LDI. 0x2 = LDE. 0x3 = LDY. */ uint64_t reserved_3 : 1; uint64_t reserved_4 : 1; uint64_t reserved_5_6 : 2; uint64_t ptlp_ro_dis : 1; /**< [ 7: 7](R/W) Relaxed ordering disable for posted TLPs. Will force relaxed ordering bit off when posted TLPs are forwarded to IOB over NCBI. */ uint64_t ctlp_ro_dis : 1; /**< [ 8: 8](R/W) Relaxed ordering disable for completion TLPs. Will force relaxed ordering bit off when completion TLPs are forwarded to IOB over NCBI. */ uint64_t ntlp_ro_dis : 1; /**< [ 9: 9](R/W) Relaxed ordering disable for non-posted TLPs. Will force relaxed ordering bit off when non-posted TLPs are forwarded to IOB over NCBI. */ uint64_t clken_force : 1; /**< [ 10: 10](R/W) Force clock enable on NCBI bus to always enabled. For diagnostic use only. */ uint64_t reserved_11_19 : 9; uint64_t bige : 1; /**< [ 20: 20](R/W) Atomics sent on NCBI will be marked as big endian. If the link partner is big-endian and the processors are big-endian, this allows exchange of big-endian atomics without byte swapping. */ uint64_t reserved_21_63 : 43; #endif /* Word 0 - End */ } cn; }; typedef union bdk_pemx_ncbi_ctl bdk_pemx_ncbi_ctl_t; static inline uint64_t BDK_PEMX_NCBI_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_NCBI_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000168ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_NCBI_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_NCBI_CTL(a) bdk_pemx_ncbi_ctl_t #define bustype_BDK_PEMX_NCBI_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_NCBI_CTL(a) "PEMX_NCBI_CTL" #define device_bar_BDK_PEMX_NCBI_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_NCBI_CTL(a) (a) #define arguments_BDK_PEMX_NCBI_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ncbi_tlp_credits * * PEM NCB Inbound TLP Credits Register * This register specifies the number of credits for use in moving TLPs. When this register is * written, the credit values are reset to the register value. This register is for diagnostic * use only, and should only be written when PEM()_CTL_STATUS[LNK_ENB] is clear. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_ncbi_tlp_credits { uint64_t u; struct bdk_pemx_ncbi_tlp_credits_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_32_63 : 32; uint64_t ncbi_cpl : 11; /**< [ 31: 21](R/W) TLP 32 B credits for completion TLPs in the PEMs NCBI buffers. Legal values are 0x21 to 0x100. */ uint64_t ncbi_np : 10; /**< [ 20: 11](R/W) TLP headers for non-posted TLPs in the PEMs NCBI buffers. Legal values are 0x20 to 0x100. */ uint64_t ncbi_p : 11; /**< [ 10: 0](R/W) TLP 32 B credits for posted TLPs in the PEMs NCBI buffers. Legal values are 0x21 to 0x100. */ #else /* Word 0 - Little Endian */ uint64_t ncbi_p : 11; /**< [ 10: 0](R/W) TLP 32 B credits for posted TLPs in the PEMs NCBI buffers. Legal values are 0x21 to 0x100. */ uint64_t ncbi_np : 10; /**< [ 20: 11](R/W) TLP headers for non-posted TLPs in the PEMs NCBI buffers. Legal values are 0x20 to 0x100. */ uint64_t ncbi_cpl : 11; /**< [ 31: 21](R/W) TLP 32 B credits for completion TLPs in the PEMs NCBI buffers. Legal values are 0x21 to 0x100. */ uint64_t reserved_32_63 : 32; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ncbi_tlp_credits_s cn; */ }; typedef union bdk_pemx_ncbi_tlp_credits bdk_pemx_ncbi_tlp_credits_t; static inline uint64_t BDK_PEMX_NCBI_TLP_CREDITS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_NCBI_TLP_CREDITS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000030ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_NCBI_TLP_CREDITS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_NCBI_TLP_CREDITS(a) bdk_pemx_ncbi_tlp_credits_t #define bustype_BDK_PEMX_NCBI_TLP_CREDITS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_NCBI_TLP_CREDITS(a) "PEMX_NCBI_TLP_CREDITS" #define device_bar_BDK_PEMX_NCBI_TLP_CREDITS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_NCBI_TLP_CREDITS(a) (a) #define arguments_BDK_PEMX_NCBI_TLP_CREDITS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ncbo_fifo_status * * PEM NCBO Offloading FIFO Status Register * This register contains status about the PEM NCBO offloading FIFOs. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_ncbo_fifo_status { uint64_t u; struct bdk_pemx_ncbo_fifo_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_24_63 : 40; uint64_t csr_volume : 8; /**< [ 23: 16](RO/H) Reports the number of valid entries currently held in the NCBO CSR offloading FIFO. Each entry represents an NCBO-based CSR access and the value read can range from 0x0 to a maximum of 128 which would represent completely full. For diagnostic use only. */ uint64_t reserved_15 : 1; uint64_t n_volume : 7; /**< [ 14: 8](RO/H) Reports the number of valid entries currently held in the NCBO nonposted offloading FIFO. Each entry represents a beat of the NCBO bus related to a nonposted operation and the value read can range from 0x0 to a maximum of 64 which would represent completely full. For diagnostic use only. */ uint64_t p_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the NCBO posted offloading FIFO. Each entry represents a beat of the NCBO bus related to a memory store and the value read can range from 0x0 to a maximum of 128 which would represent completely full. For diagnostic use only. */ #else /* Word 0 - Little Endian */ uint64_t p_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the NCBO posted offloading FIFO. Each entry represents a beat of the NCBO bus related to a memory store and the value read can range from 0x0 to a maximum of 128 which would represent completely full. For diagnostic use only. */ uint64_t n_volume : 7; /**< [ 14: 8](RO/H) Reports the number of valid entries currently held in the NCBO nonposted offloading FIFO. Each entry represents a beat of the NCBO bus related to a nonposted operation and the value read can range from 0x0 to a maximum of 64 which would represent completely full. For diagnostic use only. */ uint64_t reserved_15 : 1; uint64_t csr_volume : 8; /**< [ 23: 16](RO/H) Reports the number of valid entries currently held in the NCBO CSR offloading FIFO. Each entry represents an NCBO-based CSR access and the value read can range from 0x0 to a maximum of 128 which would represent completely full. For diagnostic use only. */ uint64_t reserved_24_63 : 40; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ncbo_fifo_status_s cn; */ }; typedef union bdk_pemx_ncbo_fifo_status bdk_pemx_ncbo_fifo_status_t; static inline uint64_t BDK_PEMX_NCBO_FIFO_STATUS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_NCBO_FIFO_STATUS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000128ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_NCBO_FIFO_STATUS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_NCBO_FIFO_STATUS(a) bdk_pemx_ncbo_fifo_status_t #define bustype_BDK_PEMX_NCBO_FIFO_STATUS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_NCBO_FIFO_STATUS(a) "PEMX_NCBO_FIFO_STATUS" #define device_bar_BDK_PEMX_NCBO_FIFO_STATUS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_NCBO_FIFO_STATUS(a) (a) #define arguments_BDK_PEMX_NCBO_FIFO_STATUS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ob_cpl_fifo_status * * PEM Outbound Completion FIFO Status Register * This register contains status about the PEM Outbound Completion FIFOs. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_ob_cpl_fifo_status { uint64_t u; struct bdk_pemx_ob_cpl_fifo_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_26_63 : 38; uint64_t ncbo_c_volume : 10; /**< [ 25: 16](RO/H) Reports the number of valid entries currently held in the NCBO completion FIFO. Each entry represents a 256-bit beat of data. The value read can range from 0x0 to a maximum of 512 which would represent completely full. For diagnostic use only. */ uint64_t ebo_c_volume : 8; /**< [ 15: 8](RO/H) Reports the number of valid entries currently held in the EBO completion FIFO which is downstream and separate from the EBO completion offloading FIFO. Each entry represents a 256-bit beat of data. The value read can range from 0x0 to a maximum of 128 which would represent completely full. For diagnostic use only. */ uint64_t pspi_c_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the PSPI completion FIFO. Each entry represents a 256-bit beat of data. The value read can range from 0x0 to a maximum of 128 which would represent completely full. For diagnostic use only. */ #else /* Word 0 - Little Endian */ uint64_t pspi_c_volume : 8; /**< [ 7: 0](RO/H) Reports the number of valid entries currently held in the PSPI completion FIFO. Each entry represents a 256-bit beat of data. The value read can range from 0x0 to a maximum of 128 which would represent completely full. For diagnostic use only. */ uint64_t ebo_c_volume : 8; /**< [ 15: 8](RO/H) Reports the number of valid entries currently held in the EBO completion FIFO which is downstream and separate from the EBO completion offloading FIFO. Each entry represents a 256-bit beat of data. The value read can range from 0x0 to a maximum of 128 which would represent completely full. For diagnostic use only. */ uint64_t ncbo_c_volume : 10; /**< [ 25: 16](RO/H) Reports the number of valid entries currently held in the NCBO completion FIFO. Each entry represents a 256-bit beat of data. The value read can range from 0x0 to a maximum of 512 which would represent completely full. For diagnostic use only. */ uint64_t reserved_26_63 : 38; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ob_cpl_fifo_status_s cn; */ }; typedef union bdk_pemx_ob_cpl_fifo_status bdk_pemx_ob_cpl_fifo_status_t; static inline uint64_t BDK_PEMX_OB_CPL_FIFO_STATUS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_OB_CPL_FIFO_STATUS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000160ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_OB_CPL_FIFO_STATUS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_OB_CPL_FIFO_STATUS(a) bdk_pemx_ob_cpl_fifo_status_t #define bustype_BDK_PEMX_OB_CPL_FIFO_STATUS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_OB_CPL_FIFO_STATUS(a) "PEMX_OB_CPL_FIFO_STATUS" #define device_bar_BDK_PEMX_OB_CPL_FIFO_STATUS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_OB_CPL_FIFO_STATUS(a) (a) #define arguments_BDK_PEMX_OB_CPL_FIFO_STATUS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_obff_ctl_status * * PEM Optimized Buffer Flush/Fill Control/Status Register * This register is used for EP mode OFF debug. * * This register is reset on MAC reset. */ union bdk_pemx_obff_ctl_status { uint64_t u; struct bdk_pemx_obff_ctl_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_5_63 : 59; uint64_t dec_err : 1; /**< [ 4: 4](R/W1C) Wake decoder recieved a invalid WAKE pattern. When a invalid WAKE pattern is detected, the OBFF wake decoder is forced into the CPU_ACT state. */ uint64_t dec_state : 4; /**< [ 3: 0](RO/H) The current FSM state of the OBFF wake decoder. EP mode only. For debug purposes only. 0x0 = IDLE (RC mode). 0x1 = IDLE to OBFF. 0x3 = IDLE to CPU. 0x4 = OBFF to IDLE. 0x5 = OBFF. 0x6 = OBFF to CPU 1, inactive pulse. 0xa = CPU_IDLE. 0xb = CPU_ACT (default state in EP mode). 0xe = OBFF to CPU 1, inactive pulse. All other FSM states are undefined. */ #else /* Word 0 - Little Endian */ uint64_t dec_state : 4; /**< [ 3: 0](RO/H) The current FSM state of the OBFF wake decoder. EP mode only. For debug purposes only. 0x0 = IDLE (RC mode). 0x1 = IDLE to OBFF. 0x3 = IDLE to CPU. 0x4 = OBFF to IDLE. 0x5 = OBFF. 0x6 = OBFF to CPU 1, inactive pulse. 0xa = CPU_IDLE. 0xb = CPU_ACT (default state in EP mode). 0xe = OBFF to CPU 1, inactive pulse. All other FSM states are undefined. */ uint64_t dec_err : 1; /**< [ 4: 4](R/W1C) Wake decoder recieved a invalid WAKE pattern. When a invalid WAKE pattern is detected, the OBFF wake decoder is forced into the CPU_ACT state. */ uint64_t reserved_5_63 : 59; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_obff_ctl_status_s cn; */ }; typedef union bdk_pemx_obff_ctl_status bdk_pemx_obff_ctl_status_t; static inline uint64_t BDK_PEMX_OBFF_CTL_STATUS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_OBFF_CTL_STATUS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000080ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_OBFF_CTL_STATUS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_OBFF_CTL_STATUS(a) bdk_pemx_obff_ctl_status_t #define bustype_BDK_PEMX_OBFF_CTL_STATUS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_OBFF_CTL_STATUS(a) "PEMX_OBFF_CTL_STATUS" #define device_bar_BDK_PEMX_OBFF_CTL_STATUS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_OBFF_CTL_STATUS(a) (a) #define arguments_BDK_PEMX_OBFF_CTL_STATUS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_obff_wake_cfg * * PEM Optimized Buffer Flush/Fill Wake Configuration Register * This configures wake configuration. * * This register is reset on MAC cold reset. */ union bdk_pemx_obff_wake_cfg { uint64_t u; struct bdk_pemx_obff_wake_cfg_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_32_63 : 32; uint64_t max_pls : 8; /**< [ 31: 24](R/W) Max pulse width for active-inactive-active pulse. Twake_tx_max_pulse = [MAX_PLS] * Tck_period (10ns). */ uint64_t min_pls : 8; /**< [ 23: 16](R/W) Min pulse width for active-inactive pulse. Twake_tx_min_pulse = [MIN_PLS] * Tck_period (10ns). */ uint64_t max_f2f : 8; /**< [ 15: 8](R/W) Max falling to falling edge width. Twake_fall_fall_cpu_active (max) = [MAX_F2F] * Tck_period (10ns). */ uint64_t min_f2f : 8; /**< [ 7: 0](R/W) Min falling to falling edge width. Twake_fall_fall_cpu_active (min) = [MIN_F2F] * Tck_period (10ns). */ #else /* Word 0 - Little Endian */ uint64_t min_f2f : 8; /**< [ 7: 0](R/W) Min falling to falling edge width. Twake_fall_fall_cpu_active (min) = [MIN_F2F] * Tck_period (10ns). */ uint64_t max_f2f : 8; /**< [ 15: 8](R/W) Max falling to falling edge width. Twake_fall_fall_cpu_active (max) = [MAX_F2F] * Tck_period (10ns). */ uint64_t min_pls : 8; /**< [ 23: 16](R/W) Min pulse width for active-inactive pulse. Twake_tx_min_pulse = [MIN_PLS] * Tck_period (10ns). */ uint64_t max_pls : 8; /**< [ 31: 24](R/W) Max pulse width for active-inactive-active pulse. Twake_tx_max_pulse = [MAX_PLS] * Tck_period (10ns). */ uint64_t reserved_32_63 : 32; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_obff_wake_cfg_s cn; */ }; typedef union bdk_pemx_obff_wake_cfg bdk_pemx_obff_wake_cfg_t; static inline uint64_t BDK_PEMX_OBFF_WAKE_CFG(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_OBFF_WAKE_CFG(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000088ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_OBFF_WAKE_CFG", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_OBFF_WAKE_CFG(a) bdk_pemx_obff_wake_cfg_t #define bustype_BDK_PEMX_OBFF_WAKE_CFG(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_OBFF_WAKE_CFG(a) "PEMX_OBFF_WAKE_CFG" #define device_bar_BDK_PEMX_OBFF_WAKE_CFG(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_OBFF_WAKE_CFG(a) (a) #define arguments_BDK_PEMX_OBFF_WAKE_CFG(a) (a),-1,-1,-1 /** * Register (NCB) pem#_on * * PEM On Status Register * This register indicates that PEM is configured and ready. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on cold reset. */ union bdk_pemx_on { uint64_t u; struct bdk_pemx_on_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_3_63 : 61; uint64_t aclr : 1; /**< [ 2: 2](R/W) When this bit is set, [PEMON] will auto-clear on PEM domain reset, in addition to being reset on cold reset. [ACLR] should be 0 in an EP configuration where it is desired to leave the link operational while resetting the chip core. It should normally be 1 in root complex mode. */ uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of reset (i.e. BIST is done) and it is safe to configure core CSRs. */ uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the GSER that the PEM is out of reset, configured, and ready to send/receive traffic. Setting this bit takes the configured PIPE out of reset. */ #else /* Word 0 - Little Endian */ uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the GSER that the PEM is out of reset, configured, and ready to send/receive traffic. Setting this bit takes the configured PIPE out of reset. */ uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of reset (i.e. BIST is done) and it is safe to configure core CSRs. */ uint64_t aclr : 1; /**< [ 2: 2](R/W) When this bit is set, [PEMON] will auto-clear on PEM domain reset, in addition to being reset on cold reset. [ACLR] should be 0 in an EP configuration where it is desired to leave the link operational while resetting the chip core. It should normally be 1 in root complex mode. */ uint64_t reserved_3_63 : 61; #endif /* Word 0 - End */ } s; struct bdk_pemx_on_cn8 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_2_63 : 62; uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of reset (i.e. BIST is done) and it is safe to configure core CSRs. */ uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the GSER that the PEM is out of reset, configured, and ready to send/receive traffic. Setting this bit takes the configured PIPE out of reset. */ #else /* Word 0 - Little Endian */ uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the GSER that the PEM is out of reset, configured, and ready to send/receive traffic. Setting this bit takes the configured PIPE out of reset. */ uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of reset (i.e. BIST is done) and it is safe to configure core CSRs. */ uint64_t reserved_2_63 : 62; #endif /* Word 0 - End */ } cn8; struct bdk_pemx_on_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_3_63 : 61; uint64_t aclr : 1; /**< [ 2: 2](R/W) When this bit is set, [PEMON] will auto-clear on PEM domain reset, in addition to being reset on cold reset. [ACLR] should be 0 in an EP configuration where it is desired to leave the link operational while resetting the chip core. It should normally be 1 in root complex mode. */ uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of MAC reset and it is safe to configure CSRs marked as being on MAC reset, as well as all PCIe configuration registers. */ uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the centralized reset block that the PEM is out of domain reset, and PEM()_CLK_EN and PEM()_CFG have been configured. Setting this bit will allow the configured PIPE to be taken out of reset and MAC reset to be deasserted. This bit is set as part of the initialization/boot sequence for PCIe. */ #else /* Word 0 - Little Endian */ uint64_t pemon : 1; /**< [ 0: 0](R/W/H) Indication to the centralized reset block that the PEM is out of domain reset, and PEM()_CLK_EN and PEM()_CFG have been configured. Setting this bit will allow the configured PIPE to be taken out of reset and MAC reset to be deasserted. This bit is set as part of the initialization/boot sequence for PCIe. */ uint64_t pemoor : 1; /**< [ 1: 1](RO/H) Indication to software that the PEM has been taken out of MAC reset and it is safe to configure CSRs marked as being on MAC reset, as well as all PCIe configuration registers. */ uint64_t aclr : 1; /**< [ 2: 2](R/W) When this bit is set, [PEMON] will auto-clear on PEM domain reset, in addition to being reset on cold reset. [ACLR] should be 0 in an EP configuration where it is desired to leave the link operational while resetting the chip core. It should normally be 1 in root complex mode. */ uint64_t reserved_3_63 : 61; #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_on bdk_pemx_on_t; static inline uint64_t BDK_PEMX_ON(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_ON(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000420ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000420ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000420ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000d0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_ON", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_ON(a) bdk_pemx_on_t #define bustype_BDK_PEMX_ON(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_ON(a) "PEMX_ON" #define device_bar_BDK_PEMX_ON(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_ON(a) (a) #define arguments_BDK_PEMX_ON(a) (a),-1,-1,-1 /** * Register (NCB) pem#_p2n_bar0_start * * PEM PCIe RC BAR0 Start Register * This register specifies the starting address for memory requests that are to be forwarded to * NCB/EBUS in RC mode. In EP mode, the standard PCIe config space BAR registers are used, and * this register is ignored. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_p2n_bar0_start { uint64_t u; struct bdk_pemx_p2n_bar0_start_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_0_63 : 64; #else /* Word 0 - Little Endian */ uint64_t reserved_0_63 : 64; #endif /* Word 0 - End */ } s; struct bdk_pemx_p2n_bar0_start_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 48; /**< [ 63: 16](R/W) The starting address of the BAR0 address space, sized as configured by the PEM()_BAR_CTL[BAR0_SIZ] which defaults to ADDR\<63:23\> and used to determine a RC BAR0 hit. */ 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) The starting address of the BAR0 address space, sized as configured by the PEM()_BAR_CTL[BAR0_SIZ] which defaults to ADDR\<63:23\> and used to determine a RC BAR0 hit. */ #endif /* Word 0 - End */ } cn9; struct bdk_pemx_p2n_bar0_start_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 50; /**< [ 63: 14](R/W) The starting address of the 16KB BAR0 address space. */ uint64_t reserved_0_13 : 14; #else /* Word 0 - Little Endian */ uint64_t reserved_0_13 : 14; uint64_t addr : 50; /**< [ 63: 14](R/W) The starting address of the 16KB BAR0 address space. */ #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_p2n_bar0_start_cn81xx cn88xx; */ struct bdk_pemx_p2n_bar0_start_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 41; /**< [ 63: 23](R/W) The starting address of the 8 MB BAR0 address space. */ uint64_t reserved_0_22 : 23; #else /* Word 0 - Little Endian */ uint64_t reserved_0_22 : 23; uint64_t addr : 41; /**< [ 63: 23](R/W) The starting address of the 8 MB BAR0 address space. */ #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_p2n_bar0_start bdk_pemx_p2n_bar0_start_t; static inline uint64_t BDK_PEMX_P2N_BAR0_START(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_P2N_BAR0_START(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000080ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000080ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000080ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000148ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_P2N_BAR0_START", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_P2N_BAR0_START(a) bdk_pemx_p2n_bar0_start_t #define bustype_BDK_PEMX_P2N_BAR0_START(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_P2N_BAR0_START(a) "PEMX_P2N_BAR0_START" #define device_bar_BDK_PEMX_P2N_BAR0_START(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_P2N_BAR0_START(a) (a) #define arguments_BDK_PEMX_P2N_BAR0_START(a) (a),-1,-1,-1 /** * Register (RSL) pem#_p2n_bar1_start * * PEM PCIe to SLI BAR1 Start Register * This register specifies the starting address for memory requests that are to be forwarded to * the SLI in RC mode. */ union bdk_pemx_p2n_bar1_start { uint64_t u; struct bdk_pemx_p2n_bar1_start_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 38; /**< [ 63: 26](R/W) The starting address of the 64 MB BAR1 address space. */ uint64_t reserved_0_25 : 26; #else /* Word 0 - Little Endian */ uint64_t reserved_0_25 : 26; uint64_t addr : 38; /**< [ 63: 26](R/W) The starting address of the 64 MB BAR1 address space. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_p2n_bar1_start_s cn; */ }; typedef union bdk_pemx_p2n_bar1_start bdk_pemx_p2n_bar1_start_t; static inline uint64_t BDK_PEMX_P2N_BAR1_START(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_P2N_BAR1_START(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000088ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000088ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000088ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_P2N_BAR1_START", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_P2N_BAR1_START(a) bdk_pemx_p2n_bar1_start_t #define bustype_BDK_PEMX_P2N_BAR1_START(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_P2N_BAR1_START(a) "PEMX_P2N_BAR1_START" #define device_bar_BDK_PEMX_P2N_BAR1_START(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_P2N_BAR1_START(a) (a) #define arguments_BDK_PEMX_P2N_BAR1_START(a) (a),-1,-1,-1 /** * Register (NCB) pem#_p2n_bar2_start * * PEM PCIe RC BAR2 Start Register * This register specifies the starting address for memory requests that are to be forwarded to * NCB/EBUS in RC mode. In EP mode, the standard PCIe config space BAR registers are used, and * this register is ignored. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_p2n_bar2_start { uint64_t u; struct bdk_pemx_p2n_bar2_start_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_0_63 : 64; #else /* Word 0 - Little Endian */ uint64_t reserved_0_63 : 64; #endif /* Word 0 - End */ } s; struct bdk_pemx_p2n_bar2_start_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 44; /**< [ 63: 20](R/W) The starting address of the BAR2 address space, sized as configured by the PEM()_BAR_CTL[BAR2_SIZ] which defaults to ADDR\<63:50\> and used to determine a RC BAR2 hit. */ uint64_t reserved_0_19 : 20; #else /* Word 0 - Little Endian */ uint64_t reserved_0_19 : 20; uint64_t addr : 44; /**< [ 63: 20](R/W) The starting address of the BAR2 address space, sized as configured by the PEM()_BAR_CTL[BAR2_SIZ] which defaults to ADDR\<63:50\> and used to determine a RC BAR2 hit. */ #endif /* Word 0 - End */ } cn9; struct bdk_pemx_p2n_bar2_start_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 14; /**< [ 63: 50](R/W) The starting address of the 2^50 address space that is the BAR2 address space. */ uint64_t spares : 2; /**< [ 49: 48](R/W) Spare flops. */ uint64_t reserved_0_47 : 48; #else /* Word 0 - Little Endian */ uint64_t reserved_0_47 : 48; uint64_t spares : 2; /**< [ 49: 48](R/W) Spare flops. */ uint64_t addr : 14; /**< [ 63: 50](R/W) The starting address of the 2^50 address space that is the BAR2 address space. */ #endif /* Word 0 - End */ } cn81xx; /* struct bdk_pemx_p2n_bar2_start_cn81xx cn88xx; */ struct bdk_pemx_p2n_bar2_start_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 44; /**< [ 63: 20](R/W) The starting address of the BAR2 address space, sized as configured by the PEM()_BAR_CTL[BAR2_SIZ] which defaults to ADDR\<63:50\> and used to determine a RC bar2 hit. */ uint64_t reserved_0_19 : 20; #else /* Word 0 - Little Endian */ uint64_t reserved_0_19 : 20; uint64_t addr : 44; /**< [ 63: 20](R/W) The starting address of the BAR2 address space, sized as configured by the PEM()_BAR_CTL[BAR2_SIZ] which defaults to ADDR\<63:50\> and used to determine a RC bar2 hit. */ #endif /* Word 0 - End */ } cn83xx; }; typedef union bdk_pemx_p2n_bar2_start bdk_pemx_p2n_bar2_start_t; static inline uint64_t BDK_PEMX_P2N_BAR2_START(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_P2N_BAR2_START(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000090ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000090ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000090ll + 0x1000000ll * ((a) & 0x7); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000140ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_P2N_BAR2_START", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_P2N_BAR2_START(a) bdk_pemx_p2n_bar2_start_t #define bustype_BDK_PEMX_P2N_BAR2_START(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_P2N_BAR2_START(a) "PEMX_P2N_BAR2_START" #define device_bar_BDK_PEMX_P2N_BAR2_START(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_P2N_BAR2_START(a) (a) #define arguments_BDK_PEMX_P2N_BAR2_START(a) (a),-1,-1,-1 /** * Register (NCB) pem#_p2n_bar4_start * * PEM PCIe RC BAR4 Start Register * This register specifies the starting address for memory requests that are to be forwarded to * NCB/EBUS in RC mode. In EP mode, the standard PCIe config space BAR registers are used, and * this register is ignored. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_p2n_bar4_start { uint64_t u; struct bdk_pemx_p2n_bar4_start_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 38; /**< [ 63: 26](R/W) The starting address of BAR4 address space. */ uint64_t reserved_0_25 : 26; #else /* Word 0 - Little Endian */ uint64_t reserved_0_25 : 26; uint64_t addr : 38; /**< [ 63: 26](R/W) The starting address of BAR4 address space. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_p2n_bar4_start_s cn; */ }; typedef union bdk_pemx_p2n_bar4_start bdk_pemx_p2n_bar4_start_t; static inline uint64_t BDK_PEMX_P2N_BAR4_START(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_P2N_BAR4_START(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000138ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_P2N_BAR4_START", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_P2N_BAR4_START(a) bdk_pemx_p2n_bar4_start_t #define bustype_BDK_PEMX_P2N_BAR4_START(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_P2N_BAR4_START(a) "PEMX_P2N_BAR4_START" #define device_bar_BDK_PEMX_P2N_BAR4_START(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_P2N_BAR4_START(a) (a) #define arguments_BDK_PEMX_P2N_BAR4_START(a) (a),-1,-1,-1 /** * Register (RSL) pem#_p2p_bar#_end * * PEM Peer-to-Peer BAR0 End Register * This register specifies the ending address for memory requests that are to be forwarded to the * PCIe peer port. */ union bdk_pemx_p2p_barx_end { uint64_t u; struct bdk_pemx_p2p_barx_end_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 52; /**< [ 63: 12](R/W) The ending address of the address window created by this field and the PEM_P2P_BAR0_START[63:12] field. The full 64 bits of the address are created by: {ADDR[63:12], 12'b0}. */ uint64_t reserved_0_11 : 12; #else /* Word 0 - Little Endian */ uint64_t reserved_0_11 : 12; uint64_t addr : 52; /**< [ 63: 12](R/W) The ending address of the address window created by this field and the PEM_P2P_BAR0_START[63:12] field. The full 64 bits of the address are created by: {ADDR[63:12], 12'b0}. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_p2p_barx_end_s cn; */ }; typedef union bdk_pemx_p2p_barx_end bdk_pemx_p2p_barx_end_t; static inline uint64_t BDK_PEMX_P2P_BARX_END(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_P2P_BARX_END(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=3))) return 0x87e0c0000048ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0x3); __bdk_csr_fatal("PEMX_P2P_BARX_END", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_P2P_BARX_END(a,b) bdk_pemx_p2p_barx_end_t #define bustype_BDK_PEMX_P2P_BARX_END(a,b) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_P2P_BARX_END(a,b) "PEMX_P2P_BARX_END" #define device_bar_BDK_PEMX_P2P_BARX_END(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_P2P_BARX_END(a,b) (a) #define arguments_BDK_PEMX_P2P_BARX_END(a,b) (a),(b),-1,-1 /** * Register (RSL) pem#_p2p_bar#_start * * PEM Peer-to-Peer BAR0 Start Register * This register specifies the starting address for memory requests that are to be forwarded to * the PCIe peer port. */ union bdk_pemx_p2p_barx_start { uint64_t u; struct bdk_pemx_p2p_barx_start_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t addr : 52; /**< [ 63: 12](R/W) The starting address of the address window created by this field and the PEM_P2P_BAR0_END[63:12] field. The full 64-bits of the address are created by: {ADDR[63:12], 12'b0}. */ uint64_t reserved_2_11 : 10; uint64_t dst : 2; /**< [ 1: 0](R/W) The destination peer of the address window created by this field and the PEM_P2P_BAR0_END[63:12] field. It is illegal to configure the destination peer to match the source. */ #else /* Word 0 - Little Endian */ uint64_t dst : 2; /**< [ 1: 0](R/W) The destination peer of the address window created by this field and the PEM_P2P_BAR0_END[63:12] field. It is illegal to configure the destination peer to match the source. */ uint64_t reserved_2_11 : 10; uint64_t addr : 52; /**< [ 63: 12](R/W) The starting address of the address window created by this field and the PEM_P2P_BAR0_END[63:12] field. The full 64-bits of the address are created by: {ADDR[63:12], 12'b0}. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_p2p_barx_start_s cn; */ }; typedef union bdk_pemx_p2p_barx_start bdk_pemx_p2p_barx_start_t; static inline uint64_t BDK_PEMX_P2P_BARX_START(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_P2P_BARX_START(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b<=3))) return 0x87e0c0000040ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0x3); __bdk_csr_fatal("PEMX_P2P_BARX_START", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_P2P_BARX_START(a,b) bdk_pemx_p2p_barx_start_t #define bustype_BDK_PEMX_P2P_BARX_START(a,b) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_P2P_BARX_START(a,b) "PEMX_P2P_BARX_START" #define device_bar_BDK_PEMX_P2P_BARX_START(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_P2P_BARX_START(a,b) (a) #define arguments_BDK_PEMX_P2P_BARX_START(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_perr_status * * PEM Parity Error Status Register * This register contains indications of parity errors detected inside PEM. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_perr_status { uint64_t u; struct bdk_pemx_perr_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_7_63 : 57; uint64_t mac_rx_perr : 1; /**< [ 6: 6](R/W1C/H) Set when the MAC core has detected a parity error in the receive datapath. Corresponds to app_parity_errs[2] output from MAC core. */ uint64_t mac_txbe_perr : 1; /**< [ 5: 5](R/W1C/H) Set when the MAC core has detected a parity error in the back end of the transmit datapath. Corresponds to app_parity_errs[1] output from MAC core. */ uint64_t mac_txfe_perr : 1; /**< [ 4: 4](R/W1C/H) Set when the MAC core has detected a parity error in the front end of the transmit datapath. Corresponds to app_parity_errs[0] output from MAC core. */ uint64_t rasdp : 1; /**< [ 3: 3](R/W1C/H) Set when the MAC core has entered RASDP mode due to an uncorrectable error. */ uint64_t dbe : 1; /**< [ 2: 2](R/W1C/H) Set when an uncorrectable (double-bit) error was detected in a RAM inside PEM. */ uint64_t rx_perr : 1; /**< [ 1: 1](R/W1C/H) Set when a parity error was detected in the receive datapath. */ uint64_t tx_perr : 1; /**< [ 0: 0](R/W1C/H) Set when a parity error was detected in the transmit datapath (only applies to traffic originating on EBO). */ #else /* Word 0 - Little Endian */ uint64_t tx_perr : 1; /**< [ 0: 0](R/W1C/H) Set when a parity error was detected in the transmit datapath (only applies to traffic originating on EBO). */ uint64_t rx_perr : 1; /**< [ 1: 1](R/W1C/H) Set when a parity error was detected in the receive datapath. */ uint64_t dbe : 1; /**< [ 2: 2](R/W1C/H) Set when an uncorrectable (double-bit) error was detected in a RAM inside PEM. */ uint64_t rasdp : 1; /**< [ 3: 3](R/W1C/H) Set when the MAC core has entered RASDP mode due to an uncorrectable error. */ uint64_t mac_txfe_perr : 1; /**< [ 4: 4](R/W1C/H) Set when the MAC core has detected a parity error in the front end of the transmit datapath. Corresponds to app_parity_errs[0] output from MAC core. */ uint64_t mac_txbe_perr : 1; /**< [ 5: 5](R/W1C/H) Set when the MAC core has detected a parity error in the back end of the transmit datapath. Corresponds to app_parity_errs[1] output from MAC core. */ uint64_t mac_rx_perr : 1; /**< [ 6: 6](R/W1C/H) Set when the MAC core has detected a parity error in the receive datapath. Corresponds to app_parity_errs[2] output from MAC core. */ uint64_t reserved_7_63 : 57; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_perr_status_s cn; */ }; typedef union bdk_pemx_perr_status bdk_pemx_perr_status_t; static inline uint64_t BDK_PEMX_PERR_STATUS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_PERR_STATUS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000001c8ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_PERR_STATUS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_PERR_STATUS(a) bdk_pemx_perr_status_t #define bustype_BDK_PEMX_PERR_STATUS(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_PERR_STATUS(a) "PEMX_PERR_STATUS" #define device_bar_BDK_PEMX_PERR_STATUS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_PERR_STATUS(a) (a) #define arguments_BDK_PEMX_PERR_STATUS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_pf#_clr_flr_req * * PEM PF Clear FLR Request Register * This register provides clear request for PCIe PF function level reset (FLR). * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_pfx_clr_flr_req { uint64_t u; struct bdk_pemx_pfx_clr_flr_req_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_1_63 : 63; uint64_t clr : 1; /**< [ 0: 0](R/W1C/H) When written with a 1, will cause hardware to clear the FLR condition. This bit always reads as a zero. */ #else /* Word 0 - Little Endian */ uint64_t clr : 1; /**< [ 0: 0](R/W1C/H) When written with a 1, will cause hardware to clear the FLR condition. This bit always reads as a zero. */ uint64_t reserved_1_63 : 63; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_pfx_clr_flr_req_s cn; */ }; typedef union bdk_pemx_pfx_clr_flr_req bdk_pemx_pfx_clr_flr_req_t; static inline uint64_t BDK_PEMX_PFX_CLR_FLR_REQ(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_PFX_CLR_FLR_REQ(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15))) return 0x8e0000000a00ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf); __bdk_csr_fatal("PEMX_PFX_CLR_FLR_REQ", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) bdk_pemx_pfx_clr_flr_req_t #define bustype_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) "PEMX_PFX_CLR_FLR_REQ" #define device_bar_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) (a) #define arguments_BDK_PEMX_PFX_CLR_FLR_REQ(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_pf#_cs#_pfcfg# * * PEM PCIe Direct Config PF Registers * This register is used to modify PF configuration space. It can only be accessed * using 32-bit instructions (either [DATA_LO] or [DATA_HI] but not both * simultaneously.) * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_pfx_csx_pfcfgx { uint64_t u; struct bdk_pemx_pfx_csx_pfcfgx_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data_hi : 32; /**< [ 63: 32](R/W/H) Data bits to write to high config register, or bits read from selected config register. */ uint64_t data_lo : 32; /**< [ 31: 0](R/W/H) Data bits to write to low config register, or bits read from selected config register. */ #else /* Word 0 - Little Endian */ uint64_t data_lo : 32; /**< [ 31: 0](R/W/H) Data bits to write to low config register, or bits read from selected config register. */ uint64_t data_hi : 32; /**< [ 63: 32](R/W/H) Data bits to write to high config register, or bits read from selected config register. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_pfx_csx_pfcfgx_s cn; */ }; typedef union bdk_pemx_pfx_csx_pfcfgx bdk_pemx_pfx_csx_pfcfgx_t; static inline uint64_t BDK_PEMX_PFX_CSX_PFCFGX(unsigned long a, unsigned long b, unsigned long c, unsigned long d) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_PFX_CSX_PFCFGX(unsigned long a, unsigned long b, unsigned long c, unsigned long d) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15) && (c<=1) && (d<=511))) return 0x8e0000008000ll + 0x1000000000ll * ((a) & 0x3) + 0x40000ll * ((b) & 0xf) + 0x10000ll * ((c) & 0x1) + 8ll * ((d) & 0x1ff); __bdk_csr_fatal("PEMX_PFX_CSX_PFCFGX", 4, a, b, c, d); } #define typedef_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) bdk_pemx_pfx_csx_pfcfgx_t #define bustype_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) "PEMX_PFX_CSX_PFCFGX" #define device_bar_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) (a) #define arguments_BDK_PEMX_PFX_CSX_PFCFGX(a,b,c,d) (a),(b),(c),(d) /** * Register (NCB) pem#_pf#_ctl_status * * PEM PF Control Status Register * This is a general PF control and status register of the PEM. * There is a register for each PF. * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_pfx_ctl_status { uint64_t u; struct bdk_pemx_pfx_ctl_status_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_5_63 : 59; uint64_t ob_p_cmd : 1; /**< [ 4: 4](WO) Wake up. Writing to a one to set this bit creates a pulse in the application to wake up the PMC state machine from a D1, D2 or D3 power state. This bit will always read a zero. Upon wake-up, the controller sends a PM_PME message. EP mode. Internal: Controls outband_pwrup_cmd input to the DW core. */ uint64_t pf_flr_en : 1; /**< [ 3: 3](R/W) When a PF-FLR occurs, an indication will be sent to the central reset controller. The reset controller can decide whether to reset the chip core based on this indication. These bits control which PFs can notify of the reset controller. Bit [16] corresponds to PF0, Bit [17] corresponds to PF1, etc. If the corresponding bit is set, the PF-FLR will be forwarded to the reset controller. Internal: Indication is on pem__rst_intf.pf_flr */ uint64_t pm_dst : 3; /**< [ 2: 0](RO/H) Current power management DSTATE. There are 3 bits of D-state for each function. 0x0 = D0. 0x1 = D1. 0x2 = D2. 0x3 = D3. 0x4 = Uninitialized. 0x5 - 0x7 = Reserved. */ #else /* Word 0 - Little Endian */ uint64_t pm_dst : 3; /**< [ 2: 0](RO/H) Current power management DSTATE. There are 3 bits of D-state for each function. 0x0 = D0. 0x1 = D1. 0x2 = D2. 0x3 = D3. 0x4 = Uninitialized. 0x5 - 0x7 = Reserved. */ uint64_t pf_flr_en : 1; /**< [ 3: 3](R/W) When a PF-FLR occurs, an indication will be sent to the central reset controller. The reset controller can decide whether to reset the chip core based on this indication. These bits control which PFs can notify of the reset controller. Bit [16] corresponds to PF0, Bit [17] corresponds to PF1, etc. If the corresponding bit is set, the PF-FLR will be forwarded to the reset controller. Internal: Indication is on pem__rst_intf.pf_flr */ uint64_t ob_p_cmd : 1; /**< [ 4: 4](WO) Wake up. Writing to a one to set this bit creates a pulse in the application to wake up the PMC state machine from a D1, D2 or D3 power state. This bit will always read a zero. Upon wake-up, the controller sends a PM_PME message. EP mode. Internal: Controls outband_pwrup_cmd input to the DW core. */ uint64_t reserved_5_63 : 59; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_pfx_ctl_status_s cn; */ }; typedef union bdk_pemx_pfx_ctl_status bdk_pemx_pfx_ctl_status_t; static inline uint64_t BDK_PEMX_PFX_CTL_STATUS(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_PFX_CTL_STATUS(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15))) return 0x8e0000000800ll + 0x1000000000ll * ((a) & 0x3) + 8ll * ((b) & 0xf); __bdk_csr_fatal("PEMX_PFX_CTL_STATUS", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_PFX_CTL_STATUS(a,b) bdk_pemx_pfx_ctl_status_t #define bustype_BDK_PEMX_PFX_CTL_STATUS(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_PFX_CTL_STATUS(a,b) "PEMX_PFX_CTL_STATUS" #define device_bar_BDK_PEMX_PFX_CTL_STATUS(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_PFX_CTL_STATUS(a,b) (a) #define arguments_BDK_PEMX_PFX_CTL_STATUS(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_pf#_vf#_vfcfg# * * PEM PCIe Direct Config VF Registers * This register is used to modify VF configuration space. It can only be accessed * using 32-bit instructions (either [DATA_LO] or [DATA_HI] but not both * simultaneously.) * * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_pfx_vfx_vfcfgx { uint64_t u; struct bdk_pemx_pfx_vfx_vfcfgx_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t data_hi : 32; /**< [ 63: 32](R/W/H) Data bits to write to high config register, or bits read from selected config register. */ uint64_t data_lo : 32; /**< [ 31: 0](R/W/H) Data bits to write to low config register, or bits read from selected config register. */ #else /* Word 0 - Little Endian */ uint64_t data_lo : 32; /**< [ 31: 0](R/W/H) Data bits to write to low config register, or bits read from selected config register. */ uint64_t data_hi : 32; /**< [ 63: 32](R/W/H) Data bits to write to high config register, or bits read from selected config register. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_pfx_vfx_vfcfgx_s cn; */ }; typedef union bdk_pemx_pfx_vfx_vfcfgx bdk_pemx_pfx_vfx_vfcfgx_t; static inline uint64_t BDK_PEMX_PFX_VFX_VFCFGX(unsigned long a, unsigned long b, unsigned long c, unsigned long d) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_PFX_VFX_VFCFGX(unsigned long a, unsigned long b, unsigned long c, unsigned long d) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=15) && (c<=239) && (d<=511))) return 0x8e0000028000ll + 0x1000000000ll * ((a) & 0x3) + 0x40000ll * ((b) & 0xf) + 0x400000ll * ((c) & 0xff) + 8ll * ((d) & 0x1ff); __bdk_csr_fatal("PEMX_PFX_VFX_VFCFGX", 4, a, b, c, d); } #define typedef_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) bdk_pemx_pfx_vfx_vfcfgx_t #define bustype_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) "PEMX_PFX_VFX_VFCFGX" #define device_bar_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) (a) #define arguments_BDK_PEMX_PFX_VFX_VFCFGX(a,b,c,d) (a),(b),(c),(d) /** * Register (NCB) pem#_ptm_ctl * * PEM Miscellaneous Control Register * This register contains precision timer control bits. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC cold reset. */ union bdk_pemx_ptm_ctl { uint64_t u; struct bdk_pemx_ptm_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_10_63 : 54; uint64_t ptm_lcl_cap : 1; /**< [ 9: 9](WO) When set, causes the precision time management local value to be captured in PEM()_PTM_LCL_TIME. */ uint64_t ptm_mstr_sel : 1; /**< [ 8: 8](R/W) When configured as a root complex, precision time management protocol which master clock input to use. If configured as an endpoint, this bit is ignored. 0 = Master clock from PTP timestamp. 1 = Master clock from GTI_CC_CNTCV. */ uint64_t ptm_mstr_adj : 8; /**< [ 7: 0](R/W) This value (in ns) is added to the selected ([PTM_MSTR_SEL]) master time input to account for insertion (including clock domain crossing) delays, before being presented to the MAC. To calculate an accurate delay: [PTM_MSTR_ADJ] = 2 sclk cycles (does not include TBD channel flops) + 3.5 core_clk cycles. The default value assumes the MAC is operating at GEN1, and there are 2 channel flops on the master time inputs. */ #else /* Word 0 - Little Endian */ uint64_t ptm_mstr_adj : 8; /**< [ 7: 0](R/W) This value (in ns) is added to the selected ([PTM_MSTR_SEL]) master time input to account for insertion (including clock domain crossing) delays, before being presented to the MAC. To calculate an accurate delay: [PTM_MSTR_ADJ] = 2 sclk cycles (does not include TBD channel flops) + 3.5 core_clk cycles. The default value assumes the MAC is operating at GEN1, and there are 2 channel flops on the master time inputs. */ uint64_t ptm_mstr_sel : 1; /**< [ 8: 8](R/W) When configured as a root complex, precision time management protocol which master clock input to use. If configured as an endpoint, this bit is ignored. 0 = Master clock from PTP timestamp. 1 = Master clock from GTI_CC_CNTCV. */ uint64_t ptm_lcl_cap : 1; /**< [ 9: 9](WO) When set, causes the precision time management local value to be captured in PEM()_PTM_LCL_TIME. */ uint64_t reserved_10_63 : 54; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ptm_ctl_s cn; */ }; typedef union bdk_pemx_ptm_ctl bdk_pemx_ptm_ctl_t; static inline uint64_t BDK_PEMX_PTM_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_PTM_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000090ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_PTM_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_PTM_CTL(a) bdk_pemx_ptm_ctl_t #define bustype_BDK_PEMX_PTM_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_PTM_CTL(a) "PEMX_PTM_CTL" #define device_bar_BDK_PEMX_PTM_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_PTM_CTL(a) (a) #define arguments_BDK_PEMX_PTM_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ptm_lcl_time * * PEM PTM Time Register * This register contains the PTM synchronized local time value. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_ptm_lcl_time { uint64_t u; struct bdk_pemx_ptm_lcl_time_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t val : 64; /**< [ 63: 0](RO/H) When an external hardware trigger occurs, or CSR bit PEM()_PTM_CTL[PTM_LCL_CAP] is written, the local time as tracked by the precision time management protocol is captured to this register. */ #else /* Word 0 - Little Endian */ uint64_t val : 64; /**< [ 63: 0](RO/H) When an external hardware trigger occurs, or CSR bit PEM()_PTM_CTL[PTM_LCL_CAP] is written, the local time as tracked by the precision time management protocol is captured to this register. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ptm_lcl_time_s cn; */ }; typedef union bdk_pemx_ptm_lcl_time bdk_pemx_ptm_lcl_time_t; static inline uint64_t BDK_PEMX_PTM_LCL_TIME(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_PTM_LCL_TIME(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000098ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_PTM_LCL_TIME", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_PTM_LCL_TIME(a) bdk_pemx_ptm_lcl_time_t #define bustype_BDK_PEMX_PTM_LCL_TIME(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_PTM_LCL_TIME(a) "PEMX_PTM_LCL_TIME" #define device_bar_BDK_PEMX_PTM_LCL_TIME(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_PTM_LCL_TIME(a) (a) #define arguments_BDK_PEMX_PTM_LCL_TIME(a) (a),-1,-1,-1 /** * Register (RSL) pem#_qlm * * PEM QLM Configuration Register * This register configures the PEM QLM. */ union bdk_pemx_qlm { uint64_t u; struct bdk_pemx_qlm_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_1_63 : 63; uint64_t pem_bdlm : 1; /**< [ 0: 0](R/W/H) This bit can only be set for PEM2/PEM3, for all other PEMs it has no function. PEM2: when set, will be configured to send/receive traffic to DLM4. when clear, will be configured to send/receive traffic to QLM2/QLM3. PEM3: when set, will be configured to send/receive traffic to DLM5/DLM6. when clear, will be configured to send/receive traffic to QLM3. Note that this bit must only be set when both the associated PHYs and PEM2/PEM3 are in reset. These conditions can be assured by setting the PEM(2/3)_ON[PEMON] bit after setting this bit. */ #else /* Word 0 - Little Endian */ uint64_t pem_bdlm : 1; /**< [ 0: 0](R/W/H) This bit can only be set for PEM2/PEM3, for all other PEMs it has no function. PEM2: when set, will be configured to send/receive traffic to DLM4. when clear, will be configured to send/receive traffic to QLM2/QLM3. PEM3: when set, will be configured to send/receive traffic to DLM5/DLM6. when clear, will be configured to send/receive traffic to QLM3. Note that this bit must only be set when both the associated PHYs and PEM2/PEM3 are in reset. These conditions can be assured by setting the PEM(2/3)_ON[PEMON] bit after setting this bit. */ uint64_t reserved_1_63 : 63; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_qlm_s cn; */ }; typedef union bdk_pemx_qlm bdk_pemx_qlm_t; static inline uint64_t BDK_PEMX_QLM(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_QLM(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000418ll + 0x1000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_QLM", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_QLM(a) bdk_pemx_qlm_t #define bustype_BDK_PEMX_QLM(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_QLM(a) "PEMX_QLM" #define device_bar_BDK_PEMX_QLM(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_QLM(a) (a) #define arguments_BDK_PEMX_QLM(a) (a),-1,-1,-1 /** * Register (NCB) pem#_ras_tba_ctl * * PEM RAS Time Based Analysis Control Register * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_ras_tba_ctl { uint64_t u; struct bdk_pemx_ras_tba_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_2_63 : 62; uint64_t tba_ctrl : 2; /**< [ 1: 0](WO) Controls the start/end of time based analysis (TBA) in the core. Note that TBA can also be controlled by setting the contents of PCIEEP()_CFG114/RC()_CFG114, and that TBA_CTRL will also affect the contents of PCIEEP()_CFG114/RC()_CFG114[TIMER_START]. 0x0 = No action. 0x1 = Start time based analysis. 0x2 = End time based analysis. Only used if PCIEEP()_CFG114/RC()_CFG114[TBASE_DUR_SEL] is set to manual control, otherwise it is ignored. 0x3 = Reserved. */ #else /* Word 0 - Little Endian */ uint64_t tba_ctrl : 2; /**< [ 1: 0](WO) Controls the start/end of time based analysis (TBA) in the core. Note that TBA can also be controlled by setting the contents of PCIEEP()_CFG114/RC()_CFG114, and that TBA_CTRL will also affect the contents of PCIEEP()_CFG114/RC()_CFG114[TIMER_START]. 0x0 = No action. 0x1 = Start time based analysis. 0x2 = End time based analysis. Only used if PCIEEP()_CFG114/RC()_CFG114[TBASE_DUR_SEL] is set to manual control, otherwise it is ignored. 0x3 = Reserved. */ uint64_t reserved_2_63 : 62; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_ras_tba_ctl_s cn8; */ struct bdk_pemx_ras_tba_ctl_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_2_63 : 62; uint64_t tba_ctrl : 2; /**< [ 1: 0](WO) Controls the start/end of time based analysis (TBA) in the core. Note that TBA can also be controlled by setting the contents of PCIERC_RAS_TBA_CTL, and that will also affect the contents of PCIERC_RAS_TBA_CTL[TIMER_START]. 0x0 = No action. 0x1 = Start time based analysis. 0x2 = End time based analysis. Only used if PCIERC_RAS_TBA_CTL[TBASE_DUR_SEL] is set to manual control, otherwise it is ignored. 0x3 = Reserved. */ #else /* Word 0 - Little Endian */ uint64_t tba_ctrl : 2; /**< [ 1: 0](WO) Controls the start/end of time based analysis (TBA) in the core. Note that TBA can also be controlled by setting the contents of PCIERC_RAS_TBA_CTL, and that will also affect the contents of PCIERC_RAS_TBA_CTL[TIMER_START]. 0x0 = No action. 0x1 = Start time based analysis. 0x2 = End time based analysis. Only used if PCIERC_RAS_TBA_CTL[TBASE_DUR_SEL] is set to manual control, otherwise it is ignored. 0x3 = Reserved. */ uint64_t reserved_2_63 : 62; #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_ras_tba_ctl bdk_pemx_ras_tba_ctl_t; static inline uint64_t BDK_PEMX_RAS_TBA_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_RAS_TBA_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000240ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000060ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_RAS_TBA_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_RAS_TBA_CTL(a) bdk_pemx_ras_tba_ctl_t #define bustype_BDK_PEMX_RAS_TBA_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_RAS_TBA_CTL(a) "PEMX_RAS_TBA_CTL" #define device_bar_BDK_PEMX_RAS_TBA_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_RAS_TBA_CTL(a) (a) #define arguments_BDK_PEMX_RAS_TBA_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_reads_pc * * PEM Read Count Register * This register contains read count for debugging purposes. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_reads_pc { uint64_t u; struct bdk_pemx_reads_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reads : 64; /**< [ 63: 0](RO/H) Total number of SLI reads from remote memory aggregated across all non-masked SWI tags. Software can calculate the average read latency to first data per SLI read request by dividing PEM()_LATENCY_PC[LATENCY] by PEM()_READS_PC[READS]. */ #else /* Word 0 - Little Endian */ uint64_t reads : 64; /**< [ 63: 0](RO/H) Total number of SLI reads from remote memory aggregated across all non-masked SWI tags. Software can calculate the average read latency to first data per SLI read request by dividing PEM()_LATENCY_PC[LATENCY] by PEM()_READS_PC[READS]. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_reads_pc_s cn8; */ struct bdk_pemx_reads_pc_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reads : 64; /**< [ 63: 0](R/W/H) Total number of NCBO or EBO reads from remote memory since latency tracking logic was enabled. PEM()_LATENCY_PC_CTL[EBO_SEL] controls which outbound bus has its reads latency tracked. This register can only be written by software when PEM()_LATENCY_PC_CTL[ACTIVE] is clear. Software can calculate the average read latency through PEM and external PCIe interface with the following calculation: * Average Latency = PEM()_LATENCY_PC[LATENCY] / PEM()_READS_PC[READS] * 10 ns This calculation can be done at any time while PEM()_LATENCY_PC_CTL[ACTIVE] is set, but will only be fully accurate by following the control flow outlined in the PEM()_LATENCY_PC_CTL[ACTIVE] description. */ #else /* Word 0 - Little Endian */ uint64_t reads : 64; /**< [ 63: 0](R/W/H) Total number of NCBO or EBO reads from remote memory since latency tracking logic was enabled. PEM()_LATENCY_PC_CTL[EBO_SEL] controls which outbound bus has its reads latency tracked. This register can only be written by software when PEM()_LATENCY_PC_CTL[ACTIVE] is clear. Software can calculate the average read latency through PEM and external PCIe interface with the following calculation: * Average Latency = PEM()_LATENCY_PC[LATENCY] / PEM()_READS_PC[READS] * 10 ns This calculation can be done at any time while PEM()_LATENCY_PC_CTL[ACTIVE] is set, but will only be fully accurate by following the control flow outlined in the PEM()_LATENCY_PC_CTL[ACTIVE] description. */ #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_reads_pc bdk_pemx_reads_pc_t; static inline uint64_t BDK_PEMX_READS_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_READS_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000498ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000110ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_READS_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_READS_PC(a) bdk_pemx_reads_pc_t #define bustype_BDK_PEMX_READS_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_READS_PC(a) "PEMX_READS_PC" #define device_bar_BDK_PEMX_READS_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_READS_PC(a) (a) #define arguments_BDK_PEMX_READS_PC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_reg_ctl * * PEM CSR Control Register * This register contains control for register accesses. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_reg_ctl { uint64_t u; struct bdk_pemx_reg_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_6_63 : 58; uint64_t gia_timeout : 6; /**< [ 5: 0](R/W) GIA timeout (2^[GIA_TIMEOUT] clock cycles). Timeout for MSI-X commits. When zero, wait for commits is disabled. */ #else /* Word 0 - Little Endian */ uint64_t gia_timeout : 6; /**< [ 5: 0](R/W) GIA timeout (2^[GIA_TIMEOUT] clock cycles). Timeout for MSI-X commits. When zero, wait for commits is disabled. */ uint64_t reserved_6_63 : 58; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_reg_ctl_s cn; */ }; typedef union bdk_pemx_reg_ctl bdk_pemx_reg_ctl_t; static inline uint64_t BDK_PEMX_REG_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_REG_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000058ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_REG_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_REG_CTL(a) bdk_pemx_reg_ctl_t #define bustype_BDK_PEMX_REG_CTL(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_REG_CTL(a) "PEMX_REG_CTL" #define device_bar_BDK_PEMX_REG_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_REG_CTL(a) (a) #define arguments_BDK_PEMX_REG_CTL(a) (a),-1,-1,-1 /** * Register (NCB) pem#_reg_huge#_acc * * PEM Huge Region Access Registers * These registers contains address index and control bits for access to memory from cores. * Indexed using NCBO address\<45:38\>. * * For discovery of the size of this register and fields, see PEM()_CONST_ACC. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_reg_hugex_acc { uint64_t u; struct bdk_pemx_reg_hugex_acc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_62_63 : 2; uint64_t vf : 8; /**< [ 61: 54](R/W) Virtual function number associated with this access. In RC mode, this field must be zero. */ uint64_t vf_active : 1; /**< [ 53: 53](R/W) Access is to virtual function if set. Access is to physical function if clear. */ uint64_t reserved_50_52 : 3; uint64_t pf : 4; /**< [ 49: 46](R/W) Physical function number associated with this access. In RC mode, this field must be zero. */ uint64_t ctype : 2; /**< [ 45: 44](R/W) The command type to be generated: 0x0 = PCI memory. 0x1 = PCI configuration. Only operations that access bytes within a single aligned dword are supported. Note normally the ECAM would be used in place of this CTYPE. 0x2 = PCI I/O. Only operations that access bytes within a single aligned dword are supported. 0x3 = Reserved. */ uint64_t zero : 1; /**< [ 43: 43](R/W) Causes load operations that are eight bytes or less and stay within a single aligned quadword to become zero-length read operations which will return zeros to the EXEC for all read data. Load operations that do not meet the size/alignment requirements above and have [ZERO] set will have unpredictable behavior. Internal: When hardware encounters an improperly formed load operation with [ZERO] set, it will drop the load internally and form up a properly sized completion with fault over NCBI to attempt to indicate an error condition. */ uint64_t wnmerge : 1; /**< [ 42: 42](R/W) When set, no write merging is allowed in this window. */ uint64_t rnmerge : 1; /**< [ 41: 41](R/W) When set, no read merging is allowed in this window. */ uint64_t wtype : 3; /**< [ 40: 38](R/W) Write type. ADDRTYPE\<2:0\> for write operations to this region. ADDRTYPE\<0\> is the relaxed-order attribute. ADDRTYPE\<1\> is the no-snoop attribute. ADDRTYPE\<2\> is the id-based ordering attribute. */ uint64_t rtype : 3; /**< [ 37: 35](R/W) Read type. ADDRTYPE\<2:0\> for read operations to this region. ADDRTYPE\<0\> is the relaxed-order attribute. ADDRTYPE\<1\> is the no-snoop attribute. ADDRTYPE\<2\> is the id-based ordering attribute. */ uint64_t reserved_26_34 : 9; uint64_t ba : 26; /**< [ 25: 0](R/W) Bus address. Address bits\<63:38\> for read/write operations that use this region. */ #else /* Word 0 - Little Endian */ uint64_t ba : 26; /**< [ 25: 0](R/W) Bus address. Address bits\<63:38\> for read/write operations that use this region. */ uint64_t reserved_26_34 : 9; uint64_t rtype : 3; /**< [ 37: 35](R/W) Read type. ADDRTYPE\<2:0\> for read operations to this region. ADDRTYPE\<0\> is the relaxed-order attribute. ADDRTYPE\<1\> is the no-snoop attribute. ADDRTYPE\<2\> is the id-based ordering attribute. */ uint64_t wtype : 3; /**< [ 40: 38](R/W) Write type. ADDRTYPE\<2:0\> for write operations to this region. ADDRTYPE\<0\> is the relaxed-order attribute. ADDRTYPE\<1\> is the no-snoop attribute. ADDRTYPE\<2\> is the id-based ordering attribute. */ uint64_t rnmerge : 1; /**< [ 41: 41](R/W) When set, no read merging is allowed in this window. */ uint64_t wnmerge : 1; /**< [ 42: 42](R/W) When set, no write merging is allowed in this window. */ uint64_t zero : 1; /**< [ 43: 43](R/W) Causes load operations that are eight bytes or less and stay within a single aligned quadword to become zero-length read operations which will return zeros to the EXEC for all read data. Load operations that do not meet the size/alignment requirements above and have [ZERO] set will have unpredictable behavior. Internal: When hardware encounters an improperly formed load operation with [ZERO] set, it will drop the load internally and form up a properly sized completion with fault over NCBI to attempt to indicate an error condition. */ uint64_t ctype : 2; /**< [ 45: 44](R/W) The command type to be generated: 0x0 = PCI memory. 0x1 = PCI configuration. Only operations that access bytes within a single aligned dword are supported. Note normally the ECAM would be used in place of this CTYPE. 0x2 = PCI I/O. Only operations that access bytes within a single aligned dword are supported. 0x3 = Reserved. */ uint64_t pf : 4; /**< [ 49: 46](R/W) Physical function number associated with this access. In RC mode, this field must be zero. */ uint64_t reserved_50_52 : 3; uint64_t vf_active : 1; /**< [ 53: 53](R/W) Access is to virtual function if set. Access is to physical function if clear. */ uint64_t vf : 8; /**< [ 61: 54](R/W) Virtual function number associated with this access. In RC mode, this field must be zero. */ uint64_t reserved_62_63 : 2; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_reg_hugex_acc_s cn; */ }; typedef union bdk_pemx_reg_hugex_acc bdk_pemx_reg_hugex_acc_t; static inline uint64_t BDK_PEMX_REG_HUGEX_ACC(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_REG_HUGEX_ACC(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=255))) return 0x8e0000006000ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xff); __bdk_csr_fatal("PEMX_REG_HUGEX_ACC", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_REG_HUGEX_ACC(a,b) bdk_pemx_reg_hugex_acc_t #define bustype_BDK_PEMX_REG_HUGEX_ACC(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_REG_HUGEX_ACC(a,b) "PEMX_REG_HUGEX_ACC" #define device_bar_BDK_PEMX_REG_HUGEX_ACC(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_REG_HUGEX_ACC(a,b) (a) #define arguments_BDK_PEMX_REG_HUGEX_ACC(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_reg_huge#_acc2 * * PEM Huge Region Access 2 Registers * These registers contains address index and control bits for access to memory from cores. * Indexed using NCBO address\<45:38\>. * * For discovery of the size of this register and fields, see PEM()_CONST_ACC. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_reg_hugex_acc2 { uint64_t u; struct bdk_pemx_reg_hugex_acc2_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_0_63 : 64; #else /* Word 0 - Little Endian */ uint64_t reserved_0_63 : 64; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_reg_hugex_acc2_s cn; */ }; typedef union bdk_pemx_reg_hugex_acc2 bdk_pemx_reg_hugex_acc2_t; static inline uint64_t BDK_PEMX_REG_HUGEX_ACC2(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_REG_HUGEX_ACC2(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=255))) return 0x8e0000006008ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xff); __bdk_csr_fatal("PEMX_REG_HUGEX_ACC2", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_REG_HUGEX_ACC2(a,b) bdk_pemx_reg_hugex_acc2_t #define bustype_BDK_PEMX_REG_HUGEX_ACC2(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_REG_HUGEX_ACC2(a,b) "PEMX_REG_HUGEX_ACC2" #define device_bar_BDK_PEMX_REG_HUGEX_ACC2(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_REG_HUGEX_ACC2(a,b) (a) #define arguments_BDK_PEMX_REG_HUGEX_ACC2(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_reg_norm#_acc * * PEM Normal Region Access Registers * These registers contains address index and control bits for access to memory from cores. * Indexed using NCBO address\<38:31\>. * * See PEM()_CONST_ACC. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_reg_normx_acc { uint64_t u; struct bdk_pemx_reg_normx_acc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_62_63 : 2; uint64_t vf : 8; /**< [ 61: 54](R/W) Virtual function number associated with this access. In RC mode, this field must be zero. */ uint64_t vf_active : 1; /**< [ 53: 53](R/W) Access is to virtual function if set. Access is to physical function if clear. */ uint64_t reserved_50_52 : 3; uint64_t pf : 4; /**< [ 49: 46](R/W) Physical function number associated with this access. In RC mode, this field must be zero. */ uint64_t ctype : 2; /**< [ 45: 44](R/W) The command type to be generated: 0x0 = PCI memory. 0x1 = PCI configuration. Only operations that access bytes within a single aligned dword are supported. Note normally the ECAM would be used in place of this CTYPE. 0x2 = PCI I/O. Only operations that access bytes within a single aligned dword are supported. 0x3 = Reserved. */ uint64_t zero : 1; /**< [ 43: 43](R/W) Causes load operations that are eight bytes or less and stay within a single aligned quadword to become zero-length read operations which will return zeros to the EXEC for all read data. Load operations that do not meet the size/alignment requirements above and have [ZERO] set will have unpredictable behavior. Internal: When hardware encounters an improperly formed load operation with [ZERO] set, it will drop the load internally and form up a properly sized completion with fault over NCBI to attempt to indicate an error condition. */ uint64_t wnmerge : 1; /**< [ 42: 42](R/W) When set, no write merging (aka write combining) is allowed in this window. Write combining may result in higher performance. Write combining is legal and typically used in endpoints, or embedded applications. Write combining is not technically permitted in standard operating system root complexes, but typically functions correctly. */ uint64_t rnmerge : 1; /**< [ 41: 41](R/W) When set, no read merging (aka read combining) is allowed in this window. Read combining may result in higher performance. Read combining is typically used in endpoints, or embedded applications. Read combining is not typically used in standard operating system root complexes. */ uint64_t wtype : 3; /**< [ 40: 38](R/W) Write type. ADDRTYPE\<2:0\> for write operations to this region. ADDRTYPE\<0\> is the relaxed-order attribute. ADDRTYPE\<1\> is the no-snoop attribute. ADDRTYPE\<2\> is the id-based ordering attribute. */ uint64_t rtype : 3; /**< [ 37: 35](R/W) Read type. ADDRTYPE\<2:0\> for read operations to this region. ADDRTYPE\<0\> is the relaxed-order attribute. ADDRTYPE\<1\> is the no-snoop attribute. ADDRTYPE\<2\> is the id-based ordering attribute. */ uint64_t reserved_33_34 : 2; uint64_t ba : 33; /**< [ 32: 0](R/W) Bus address. Address bits\<63:31\> for read/write operations that use this region. */ #else /* Word 0 - Little Endian */ uint64_t ba : 33; /**< [ 32: 0](R/W) Bus address. Address bits\<63:31\> for read/write operations that use this region. */ uint64_t reserved_33_34 : 2; uint64_t rtype : 3; /**< [ 37: 35](R/W) Read type. ADDRTYPE\<2:0\> for read operations to this region. ADDRTYPE\<0\> is the relaxed-order attribute. ADDRTYPE\<1\> is the no-snoop attribute. ADDRTYPE\<2\> is the id-based ordering attribute. */ uint64_t wtype : 3; /**< [ 40: 38](R/W) Write type. ADDRTYPE\<2:0\> for write operations to this region. ADDRTYPE\<0\> is the relaxed-order attribute. ADDRTYPE\<1\> is the no-snoop attribute. ADDRTYPE\<2\> is the id-based ordering attribute. */ uint64_t rnmerge : 1; /**< [ 41: 41](R/W) When set, no read merging (aka read combining) is allowed in this window. Read combining may result in higher performance. Read combining is typically used in endpoints, or embedded applications. Read combining is not typically used in standard operating system root complexes. */ uint64_t wnmerge : 1; /**< [ 42: 42](R/W) When set, no write merging (aka write combining) is allowed in this window. Write combining may result in higher performance. Write combining is legal and typically used in endpoints, or embedded applications. Write combining is not technically permitted in standard operating system root complexes, but typically functions correctly. */ uint64_t zero : 1; /**< [ 43: 43](R/W) Causes load operations that are eight bytes or less and stay within a single aligned quadword to become zero-length read operations which will return zeros to the EXEC for all read data. Load operations that do not meet the size/alignment requirements above and have [ZERO] set will have unpredictable behavior. Internal: When hardware encounters an improperly formed load operation with [ZERO] set, it will drop the load internally and form up a properly sized completion with fault over NCBI to attempt to indicate an error condition. */ uint64_t ctype : 2; /**< [ 45: 44](R/W) The command type to be generated: 0x0 = PCI memory. 0x1 = PCI configuration. Only operations that access bytes within a single aligned dword are supported. Note normally the ECAM would be used in place of this CTYPE. 0x2 = PCI I/O. Only operations that access bytes within a single aligned dword are supported. 0x3 = Reserved. */ uint64_t pf : 4; /**< [ 49: 46](R/W) Physical function number associated with this access. In RC mode, this field must be zero. */ uint64_t reserved_50_52 : 3; uint64_t vf_active : 1; /**< [ 53: 53](R/W) Access is to virtual function if set. Access is to physical function if clear. */ uint64_t vf : 8; /**< [ 61: 54](R/W) Virtual function number associated with this access. In RC mode, this field must be zero. */ uint64_t reserved_62_63 : 2; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_reg_normx_acc_s cn; */ }; typedef union bdk_pemx_reg_normx_acc bdk_pemx_reg_normx_acc_t; static inline uint64_t BDK_PEMX_REG_NORMX_ACC(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_REG_NORMX_ACC(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=255))) return 0x8e0000004000ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xff); __bdk_csr_fatal("PEMX_REG_NORMX_ACC", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_REG_NORMX_ACC(a,b) bdk_pemx_reg_normx_acc_t #define bustype_BDK_PEMX_REG_NORMX_ACC(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_REG_NORMX_ACC(a,b) "PEMX_REG_NORMX_ACC" #define device_bar_BDK_PEMX_REG_NORMX_ACC(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_REG_NORMX_ACC(a,b) (a) #define arguments_BDK_PEMX_REG_NORMX_ACC(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_reg_norm#_acc2 * * PEM Normal Region Access 2 Registers * See PEM()_CONST_ACC. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_reg_normx_acc2 { uint64_t u; struct bdk_pemx_reg_normx_acc2_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_0_63 : 64; #else /* Word 0 - Little Endian */ uint64_t reserved_0_63 : 64; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_reg_normx_acc2_s cn; */ }; typedef union bdk_pemx_reg_normx_acc2 bdk_pemx_reg_normx_acc2_t; static inline uint64_t BDK_PEMX_REG_NORMX_ACC2(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_REG_NORMX_ACC2(unsigned long a, unsigned long b) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a<=3) && (b<=255))) return 0x8e0000004008ll + 0x1000000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0xff); __bdk_csr_fatal("PEMX_REG_NORMX_ACC2", 2, a, b, 0, 0); } #define typedef_BDK_PEMX_REG_NORMX_ACC2(a,b) bdk_pemx_reg_normx_acc2_t #define bustype_BDK_PEMX_REG_NORMX_ACC2(a,b) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_REG_NORMX_ACC2(a,b) "PEMX_REG_NORMX_ACC2" #define device_bar_BDK_PEMX_REG_NORMX_ACC2(a,b) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_REG_NORMX_ACC2(a,b) (a) #define arguments_BDK_PEMX_REG_NORMX_ACC2(a,b) (a),(b),-1,-1 /** * Register (NCB) pem#_rmerge_merged_pc * * PEM Merge Reads Merged Performance Counter Register * This register reports how many reads merged within the outbound read merge unit. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_rmerge_merged_pc { uint64_t u; struct bdk_pemx_rmerge_merged_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t rmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO read operation mapped to MEM type by the ACC table that merges with a previous read will increment this count. */ #else /* Word 0 - Little Endian */ uint64_t rmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO read operation mapped to MEM type by the ACC table that merges with a previous read will increment this count. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_rmerge_merged_pc_s cn; */ }; typedef union bdk_pemx_rmerge_merged_pc bdk_pemx_rmerge_merged_pc_t; static inline uint64_t BDK_PEMX_RMERGE_MERGED_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_RMERGE_MERGED_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000198ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_RMERGE_MERGED_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_RMERGE_MERGED_PC(a) bdk_pemx_rmerge_merged_pc_t #define bustype_BDK_PEMX_RMERGE_MERGED_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_RMERGE_MERGED_PC(a) "PEMX_RMERGE_MERGED_PC" #define device_bar_BDK_PEMX_RMERGE_MERGED_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_RMERGE_MERGED_PC(a) (a) #define arguments_BDK_PEMX_RMERGE_MERGED_PC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_rmerge_received_pc * * PEM Merge Reads Received Performance Counter Register * This register reports the number of reads that enter the outbound read merge unit. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_rmerge_received_pc { uint64_t u; struct bdk_pemx_rmerge_received_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t rmerge_reads : 64; /**< [ 63: 0](R/W/H) Each NCBO read operation mapped to MEM type by the ACC table will increment this count. */ #else /* Word 0 - Little Endian */ uint64_t rmerge_reads : 64; /**< [ 63: 0](R/W/H) Each NCBO read operation mapped to MEM type by the ACC table will increment this count. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_rmerge_received_pc_s cn; */ }; typedef union bdk_pemx_rmerge_received_pc bdk_pemx_rmerge_received_pc_t; static inline uint64_t BDK_PEMX_RMERGE_RECEIVED_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_RMERGE_RECEIVED_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000190ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_RMERGE_RECEIVED_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_RMERGE_RECEIVED_PC(a) bdk_pemx_rmerge_received_pc_t #define bustype_BDK_PEMX_RMERGE_RECEIVED_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_RMERGE_RECEIVED_PC(a) "PEMX_RMERGE_RECEIVED_PC" #define device_bar_BDK_PEMX_RMERGE_RECEIVED_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_RMERGE_RECEIVED_PC(a) (a) #define arguments_BDK_PEMX_RMERGE_RECEIVED_PC(a) (a),-1,-1,-1 /** * Register (RSL) pem#_spi_ctl * * PEM SPI Control Register */ union bdk_pemx_spi_ctl { uint64_t u; struct bdk_pemx_spi_ctl_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_34_63 : 30; uint64_t start_busy : 1; /**< [ 33: 33](R/W/H) Start/busy status. Starts SPI xctn when written; reads 1 when EEPROM busy, 0 when complete. */ uint64_t tvalid : 1; /**< [ 32: 32](R/W/H) Reads 1 if at least one valid entry was read from EEPROM and written to a CSR. Write to clear status. */ uint64_t cmd : 8; /**< [ 31: 24](R/W/H) SPI command to be passed to the flash memory. This field will clear when command is complete. Examples of some commonly used commands: 0x1 = WRSR: Write status register. A single-byte write of corresponding PEM()_SPI_DATA[DATA\<7:0\>] to the register. 0x2 = PAGE PROGRAM/WRITE: An eight-byte page-mode write of the 64-bits of corresponding PEM()_SPI_DATA to the memory array. Can only be issued to Sector 0. Note, most devices require BULK or SECTOR ERASE to set bits first. 0x3 = READ: An eight-byte page-mode read access from the memory array with result in the 64-bits of corresponding PEM()_SPI_DATA. Can only be issued to sector 0. 0x4 = WRDI: Clear the write-enable latch (i.e. write protect the device). 0x5 = RDSR: Read status register. A single-byte read access from the register with result in corresponding PEM()_SPI_DATA[DATA]\<7:0\>. 0x6 = WREN: set the write-enable latch (i.e. allow writes to occur). 0xB = READ DATA HIGHER SPEED: Not supported. 0xAB = WAKE: Release from deep power-down. 0xB9 = SLEEP: Deep power-down. 0xC7 = BULK ERASE: Sets all bits to 1. 0xD8 = SECTOR ERASE: Sets to 1 all bits to the chosen sector (pointed to by [ADR]\<18:15\>). 0x9F = READ ID: a two-byte read access to get device identification with result in the 64-bits of corresponding PEM()_SPI_DATA. */ uint64_t reserved_19_23 : 5; uint64_t adr : 19; /**< [ 18: 0](R/W/H) EEPROM CMD byte address. For READ and PAGE PROGRAM commands, forced to a 8-byte aligned entry in sector 0, so \<18:16\> and \<2:0\> are forced to zero. For all other commands, the entire ADR is passed. This field will clear when command is complete. */ #else /* Word 0 - Little Endian */ uint64_t adr : 19; /**< [ 18: 0](R/W/H) EEPROM CMD byte address. For READ and PAGE PROGRAM commands, forced to a 8-byte aligned entry in sector 0, so \<18:16\> and \<2:0\> are forced to zero. For all other commands, the entire ADR is passed. This field will clear when command is complete. */ uint64_t reserved_19_23 : 5; uint64_t cmd : 8; /**< [ 31: 24](R/W/H) SPI command to be passed to the flash memory. This field will clear when command is complete. Examples of some commonly used commands: 0x1 = WRSR: Write status register. A single-byte write of corresponding PEM()_SPI_DATA[DATA\<7:0\>] to the register. 0x2 = PAGE PROGRAM/WRITE: An eight-byte page-mode write of the 64-bits of corresponding PEM()_SPI_DATA to the memory array. Can only be issued to Sector 0. Note, most devices require BULK or SECTOR ERASE to set bits first. 0x3 = READ: An eight-byte page-mode read access from the memory array with result in the 64-bits of corresponding PEM()_SPI_DATA. Can only be issued to sector 0. 0x4 = WRDI: Clear the write-enable latch (i.e. write protect the device). 0x5 = RDSR: Read status register. A single-byte read access from the register with result in corresponding PEM()_SPI_DATA[DATA]\<7:0\>. 0x6 = WREN: set the write-enable latch (i.e. allow writes to occur). 0xB = READ DATA HIGHER SPEED: Not supported. 0xAB = WAKE: Release from deep power-down. 0xB9 = SLEEP: Deep power-down. 0xC7 = BULK ERASE: Sets all bits to 1. 0xD8 = SECTOR ERASE: Sets to 1 all bits to the chosen sector (pointed to by [ADR]\<18:15\>). 0x9F = READ ID: a two-byte read access to get device identification with result in the 64-bits of corresponding PEM()_SPI_DATA. */ uint64_t tvalid : 1; /**< [ 32: 32](R/W/H) Reads 1 if at least one valid entry was read from EEPROM and written to a CSR. Write to clear status. */ uint64_t start_busy : 1; /**< [ 33: 33](R/W/H) Start/busy status. Starts SPI xctn when written; reads 1 when EEPROM busy, 0 when complete. */ uint64_t reserved_34_63 : 30; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_spi_ctl_s cn; */ }; typedef union bdk_pemx_spi_ctl bdk_pemx_spi_ctl_t; static inline uint64_t BDK_PEMX_SPI_CTL(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_SPI_CTL(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000180ll + 0x1000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_SPI_CTL", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_SPI_CTL(a) bdk_pemx_spi_ctl_t #define bustype_BDK_PEMX_SPI_CTL(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_SPI_CTL(a) "PEMX_SPI_CTL" #define device_bar_BDK_PEMX_SPI_CTL(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_SPI_CTL(a) (a) #define arguments_BDK_PEMX_SPI_CTL(a) (a),-1,-1,-1 /** * Register (RSL) pem#_spi_data * * PEM SPI Data Register * This register contains the most recently read or written SPI data and is unpredictable upon * power-up. */ union bdk_pemx_spi_data { uint64_t u; struct bdk_pemx_spi_data_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t preamble : 16; /**< [ 63: 48](R/W/H) EEPROM PREAMBLE read or write data. */ uint64_t spi_rsvd : 3; /**< [ 47: 45](R/W/H) Reserved. */ uint64_t cs2 : 1; /**< [ 44: 44](R/W/H) EEPROM CS2 read or write data bit. */ uint64_t adr : 12; /**< [ 43: 32](R/W/H) EEPROM CFG ADR read or write data. */ uint64_t data : 32; /**< [ 31: 0](R/W/H) EEPROM DATA read or write data. */ #else /* Word 0 - Little Endian */ uint64_t data : 32; /**< [ 31: 0](R/W/H) EEPROM DATA read or write data. */ uint64_t adr : 12; /**< [ 43: 32](R/W/H) EEPROM CFG ADR read or write data. */ uint64_t cs2 : 1; /**< [ 44: 44](R/W/H) EEPROM CS2 read or write data bit. */ uint64_t spi_rsvd : 3; /**< [ 47: 45](R/W/H) Reserved. */ uint64_t preamble : 16; /**< [ 63: 48](R/W/H) EEPROM PREAMBLE read or write data. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_spi_data_s cn; */ }; typedef union bdk_pemx_spi_data bdk_pemx_spi_data_t; static inline uint64_t BDK_PEMX_SPI_DATA(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_SPI_DATA(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000188ll + 0x1000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_SPI_DATA", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_SPI_DATA(a) bdk_pemx_spi_data_t #define bustype_BDK_PEMX_SPI_DATA(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_SPI_DATA(a) "PEMX_SPI_DATA" #define device_bar_BDK_PEMX_SPI_DATA(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_SPI_DATA(a) (a) #define arguments_BDK_PEMX_SPI_DATA(a) (a),-1,-1,-1 /** * Register (NCB) pem#_strap * * PEM Pin Strapping Register * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on cold reset. */ union bdk_pemx_strap { uint64_t u; struct bdk_pemx_strap_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_4_63 : 60; uint64_t pilaneswap : 1; /**< [ 3: 3](RO/H) The value of PCIE_REV_LANES, which is captured on chip cold reset. It is not affected by any other reset. When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t pilanes8 : 1; /**< [ 2: 2](RO/H) The value of bit \<2\> of PCIE*_MODE\<2:0\>, which is captured on chip cold reset. It is not affected by any other reset. When set, the PEM is configured for a maximum of 8-lanes, When clear, the PEM is configured for a maximum of 4-lanes. */ uint64_t reserved_0_1 : 2; #else /* Word 0 - Little Endian */ uint64_t reserved_0_1 : 2; uint64_t pilanes8 : 1; /**< [ 2: 2](RO/H) The value of bit \<2\> of PCIE*_MODE\<2:0\>, which is captured on chip cold reset. It is not affected by any other reset. When set, the PEM is configured for a maximum of 8-lanes, When clear, the PEM is configured for a maximum of 4-lanes. */ uint64_t pilaneswap : 1; /**< [ 3: 3](RO/H) The value of PCIE_REV_LANES, which is captured on chip cold reset. It is not affected by any other reset. When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t reserved_4_63 : 60; #endif /* Word 0 - End */ } s; struct bdk_pemx_strap_cn8 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_4_63 : 60; uint64_t pilaneswap : 1; /**< [ 3: 3](RO/H) The value of PCIE_REV_LANES, which is captured on chip cold reset. It is not affected by any other reset. When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t pilanes8 : 1; /**< [ 2: 2](RO/H) The value of bit \<2\> of PCIE*_MODE\<2:0\>, which is captured on chip cold reset. It is not affected by any other reset. When set, the PEM is configured for a maximum of 8-lanes, When clear, the PEM is configured for a maximum of 4-lanes. */ uint64_t pimode : 2; /**< [ 1: 0](RO/H) The value of PCIE_MODE\<1:0\>, which are captured on chip cold reset. They are not affected by any other reset. 0x0 = EP mode, Gen1 speed. 0x1 = EP mode, Gen2 speed. 0x2 = EP mode, Gen3 speed. 0x3 = RC mode, defaults to Gen3 speed. */ #else /* Word 0 - Little Endian */ uint64_t pimode : 2; /**< [ 1: 0](RO/H) The value of PCIE_MODE\<1:0\>, which are captured on chip cold reset. They are not affected by any other reset. 0x0 = EP mode, Gen1 speed. 0x1 = EP mode, Gen2 speed. 0x2 = EP mode, Gen3 speed. 0x3 = RC mode, defaults to Gen3 speed. */ uint64_t pilanes8 : 1; /**< [ 2: 2](RO/H) The value of bit \<2\> of PCIE*_MODE\<2:0\>, which is captured on chip cold reset. It is not affected by any other reset. When set, the PEM is configured for a maximum of 8-lanes, When clear, the PEM is configured for a maximum of 4-lanes. */ uint64_t pilaneswap : 1; /**< [ 3: 3](RO/H) The value of PCIE_REV_LANES, which is captured on chip cold reset. It is not affected by any other reset. When set, lane swapping is performed to/from the SerDes. When clear, no lane swapping is performed. */ uint64_t reserved_4_63 : 60; #endif /* Word 0 - End */ } cn8; struct bdk_pemx_strap_cn9 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_1_63 : 63; uint64_t pirc : 1; /**< [ 0: 0](RO/H) The inverted value of the endpoint strap (GPIO_STRAP_PIN_E::PCIE0_EP_MODE, GPIO_STRAP_PIN_E::PCIE2_EP_MODE, 1 for other PEMs) which is captured on chip cold reset. It is not affected by any other reset. When set, PEM defaults to root complex mode. When clear, PEM defaults to endpoint mode. */ #else /* Word 0 - Little Endian */ uint64_t pirc : 1; /**< [ 0: 0](RO/H) The inverted value of the endpoint strap (GPIO_STRAP_PIN_E::PCIE0_EP_MODE, GPIO_STRAP_PIN_E::PCIE2_EP_MODE, 1 for other PEMs) which is captured on chip cold reset. It is not affected by any other reset. When set, PEM defaults to root complex mode. When clear, PEM defaults to endpoint mode. */ uint64_t reserved_1_63 : 63; #endif /* Word 0 - End */ } cn9; }; typedef union bdk_pemx_strap bdk_pemx_strap_t; static inline uint64_t BDK_PEMX_STRAP(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_STRAP(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000408ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e00000000c0ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_STRAP", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_STRAP(a) bdk_pemx_strap_t #define bustype_BDK_PEMX_STRAP(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_STRAP(a) "PEMX_STRAP" #define device_bar_BDK_PEMX_STRAP(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_STRAP(a) (a) #define arguments_BDK_PEMX_STRAP(a) (a),-1,-1,-1 /** * Register (RSL) pem#_tlp_credits * * PEM TLP Credits Register * This register specifies the number of credits for use in moving TLPs. When this register is * written, the credit values are reset to the register value. A write to this register should * take place before traffic flow starts. */ union bdk_pemx_tlp_credits { uint64_t u; struct bdk_pemx_tlp_credits_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t pem_cpl : 12; /**< [ 63: 52](R/W) TLP 16 B credits for completion TLPs in the peer. Legal values are 0x42 to 0x104. */ uint64_t pem_np : 8; /**< [ 51: 44](R/W) TLP 16 B credits for nonposted TLPs in the peer. Legal values are 0x4 to 0x20. */ uint64_t pem_p : 12; /**< [ 43: 32](R/W) TLP 16 B credits for posted TLPs in the peer. Legal values are 0x42 to 0x104. */ uint64_t reserved_0_31 : 32; #else /* Word 0 - Little Endian */ uint64_t reserved_0_31 : 32; uint64_t pem_p : 12; /**< [ 43: 32](R/W) TLP 16 B credits for posted TLPs in the peer. Legal values are 0x42 to 0x104. */ uint64_t pem_np : 8; /**< [ 51: 44](R/W) TLP 16 B credits for nonposted TLPs in the peer. Legal values are 0x4 to 0x20. */ uint64_t pem_cpl : 12; /**< [ 63: 52](R/W) TLP 16 B credits for completion TLPs in the peer. Legal values are 0x42 to 0x104. */ #endif /* Word 0 - End */ } s; struct bdk_pemx_tlp_credits_cn88xxp1 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_24_63 : 40; uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0x80 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x4 to 0x10 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Posted TLPs in the SLI. Legal values are 0x24 to 0x80 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ #else /* Word 0 - Little Endian */ uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Posted TLPs in the SLI. Legal values are 0x24 to 0x80 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x4 to 0x10 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0x80 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t reserved_24_63 : 40; #endif /* Word 0 - End */ } cn88xxp1; struct bdk_pemx_tlp_credits_cn81xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_24_63 : 40; uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0x4F and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x8 to 0x17 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x24 to 0x4F and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ #else /* Word 0 - Little Endian */ uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x24 to 0x4F and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x8 to 0x17 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0x4F and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t reserved_24_63 : 40; #endif /* Word 0 - End */ } cn81xx; struct bdk_pemx_tlp_credits_cn83xx { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t pem_cpl : 12; /**< [ 63: 52](R/W) TLP 16 B credits for completion TLPs in the peer. Legal values are 0x42 to 0x104. */ uint64_t pem_np : 8; /**< [ 51: 44](R/W) TLP 16 B credits for nonposted TLPs in the peer. Legal values are 0x4 to 0x20. */ uint64_t pem_p : 12; /**< [ 43: 32](R/W) TLP 16 B credits for posted TLPs in the peer. Legal values are 0x42 to 0x104. */ uint64_t sli_cpl : 12; /**< [ 31: 20](R/W) TLP 16 B credits for completion TLPs in the SLI. Legal values are 0x41 to 0x104 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_np : 8; /**< [ 19: 12](R/W) TLP 16 B credits for non-posted TLPs in the SLI. Legal values are 0x3 to 0x20 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_p : 12; /**< [ 11: 0](R/W) TLP 16 B credits for posted TLPs in the SLI. Legal values are 0x41 to 0x104 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ #else /* Word 0 - Little Endian */ uint64_t sli_p : 12; /**< [ 11: 0](R/W) TLP 16 B credits for posted TLPs in the SLI. Legal values are 0x41 to 0x104 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_np : 8; /**< [ 19: 12](R/W) TLP 16 B credits for non-posted TLPs in the SLI. Legal values are 0x3 to 0x20 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_cpl : 12; /**< [ 31: 20](R/W) TLP 16 B credits for completion TLPs in the SLI. Legal values are 0x41 to 0x104 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t pem_p : 12; /**< [ 43: 32](R/W) TLP 16 B credits for posted TLPs in the peer. Legal values are 0x42 to 0x104. */ uint64_t pem_np : 8; /**< [ 51: 44](R/W) TLP 16 B credits for nonposted TLPs in the peer. Legal values are 0x4 to 0x20. */ uint64_t pem_cpl : 12; /**< [ 63: 52](R/W) TLP 16 B credits for completion TLPs in the peer. Legal values are 0x42 to 0x104. */ #endif /* Word 0 - End */ } cn83xx; struct bdk_pemx_tlp_credits_cn88xxp2 { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_24_63 : 40; uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0xff and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16 B credits for non-posted TLPs in the SLI. Legal values are 0x4 to 0x20 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x24 to 0xff and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ #else /* Word 0 - Little Endian */ uint64_t sli_p : 8; /**< [ 7: 0](R/W) TLP 16B credits for Non-Posted TLPs in the SLI. Legal values are 0x24 to 0xff and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_np : 8; /**< [ 15: 8](R/W) TLP 16 B credits for non-posted TLPs in the SLI. Legal values are 0x4 to 0x20 and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t sli_cpl : 8; /**< [ 23: 16](R/W) TLP 16B credits for Completion TLPs in the SLI. Legal values are 0x24 to 0xff and this value is not dependent of the number of PEMS wire-OR'd together. Software should reprogram this register for performance reasons. */ uint64_t reserved_24_63 : 40; #endif /* Word 0 - End */ } cn88xxp2; }; typedef union bdk_pemx_tlp_credits bdk_pemx_tlp_credits_t; static inline uint64_t BDK_PEMX_TLP_CREDITS(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_TLP_CREDITS(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2)) return 0x87e0c0000038ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3)) return 0x87e0c0000038ll + 0x1000000ll * ((a) & 0x3); if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5)) return 0x87e0c0000038ll + 0x1000000ll * ((a) & 0x7); __bdk_csr_fatal("PEMX_TLP_CREDITS", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_TLP_CREDITS(a) bdk_pemx_tlp_credits_t #define bustype_BDK_PEMX_TLP_CREDITS(a) BDK_CSR_TYPE_RSL #define basename_BDK_PEMX_TLP_CREDITS(a) "PEMX_TLP_CREDITS" #define device_bar_BDK_PEMX_TLP_CREDITS(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_TLP_CREDITS(a) (a) #define arguments_BDK_PEMX_TLP_CREDITS(a) (a),-1,-1,-1 /** * Register (NCB) pem#_vf_clr_flr_req * * PEM FLR Request VF Clear Register * This register provides clear request for PCIe PF function level reset (FLR). * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on MAC reset. */ union bdk_pemx_vf_clr_flr_req { uint64_t u; struct bdk_pemx_vf_clr_flr_req_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t reserved_8_63 : 56; uint64_t vf_num : 8; /**< [ 7: 0](R/W/H) When written, will cause hardware to clear one of the 240 VF FLR conditions indexed by [VF_NUM]. This field always reads as zero. */ #else /* Word 0 - Little Endian */ uint64_t vf_num : 8; /**< [ 7: 0](R/W/H) When written, will cause hardware to clear one of the 240 VF FLR conditions indexed by [VF_NUM]. This field always reads as zero. */ uint64_t reserved_8_63 : 56; #endif /* Word 0 - End */ } s; /* struct bdk_pemx_vf_clr_flr_req_s cn; */ }; typedef union bdk_pemx_vf_clr_flr_req bdk_pemx_vf_clr_flr_req_t; static inline uint64_t BDK_PEMX_VF_CLR_FLR_REQ(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_VF_CLR_FLR_REQ(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000220ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_VF_CLR_FLR_REQ", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_VF_CLR_FLR_REQ(a) bdk_pemx_vf_clr_flr_req_t #define bustype_BDK_PEMX_VF_CLR_FLR_REQ(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_VF_CLR_FLR_REQ(a) "PEMX_VF_CLR_FLR_REQ" #define device_bar_BDK_PEMX_VF_CLR_FLR_REQ(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_VF_CLR_FLR_REQ(a) (a) #define arguments_BDK_PEMX_VF_CLR_FLR_REQ(a) (a),-1,-1,-1 /** * Register (NCB) pem#_wmerge_merged_pc * * PEM Merge Writes Merged Performance Counter Register * This register reports how many writes merged within the outbound write merge unit. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_wmerge_merged_pc { uint64_t u; struct bdk_pemx_wmerge_merged_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t wmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO write operation mapped to MEM type by the ACC table that merges with a previous write will increment this count. */ #else /* Word 0 - Little Endian */ uint64_t wmerge_merged : 64; /**< [ 63: 0](R/W/H) Each NCBO write operation mapped to MEM type by the ACC table that merges with a previous write will increment this count. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_wmerge_merged_pc_s cn; */ }; typedef union bdk_pemx_wmerge_merged_pc bdk_pemx_wmerge_merged_pc_t; static inline uint64_t BDK_PEMX_WMERGE_MERGED_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_WMERGE_MERGED_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000188ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_WMERGE_MERGED_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_WMERGE_MERGED_PC(a) bdk_pemx_wmerge_merged_pc_t #define bustype_BDK_PEMX_WMERGE_MERGED_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_WMERGE_MERGED_PC(a) "PEMX_WMERGE_MERGED_PC" #define device_bar_BDK_PEMX_WMERGE_MERGED_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_WMERGE_MERGED_PC(a) (a) #define arguments_BDK_PEMX_WMERGE_MERGED_PC(a) (a),-1,-1,-1 /** * Register (NCB) pem#_wmerge_received_pc * * PEM Merge Writes Received Performance Counter Register * This register reports the number of writes that enter the outbound write merge unit. * * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR]. * * This register is reset on PEM domain reset. */ union bdk_pemx_wmerge_received_pc { uint64_t u; struct bdk_pemx_wmerge_received_pc_s { #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */ uint64_t wmerge_writes : 64; /**< [ 63: 0](R/W/H) Each NCBO write operation mapped to MEM type by the ACC table will increment this count. */ #else /* Word 0 - Little Endian */ uint64_t wmerge_writes : 64; /**< [ 63: 0](R/W/H) Each NCBO write operation mapped to MEM type by the ACC table will increment this count. */ #endif /* Word 0 - End */ } s; /* struct bdk_pemx_wmerge_received_pc_s cn; */ }; typedef union bdk_pemx_wmerge_received_pc bdk_pemx_wmerge_received_pc_t; static inline uint64_t BDK_PEMX_WMERGE_RECEIVED_PC(unsigned long a) __attribute__ ((pure, always_inline)); static inline uint64_t BDK_PEMX_WMERGE_RECEIVED_PC(unsigned long a) { if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3)) return 0x8e0000000180ll + 0x1000000000ll * ((a) & 0x3); __bdk_csr_fatal("PEMX_WMERGE_RECEIVED_PC", 1, a, 0, 0, 0); } #define typedef_BDK_PEMX_WMERGE_RECEIVED_PC(a) bdk_pemx_wmerge_received_pc_t #define bustype_BDK_PEMX_WMERGE_RECEIVED_PC(a) BDK_CSR_TYPE_NCB #define basename_BDK_PEMX_WMERGE_RECEIVED_PC(a) "PEMX_WMERGE_RECEIVED_PC" #define device_bar_BDK_PEMX_WMERGE_RECEIVED_PC(a) 0x0 /* PF_BAR0 */ #define busnum_BDK_PEMX_WMERGE_RECEIVED_PC(a) (a) #define arguments_BDK_PEMX_WMERGE_RECEIVED_PC(a) (a),-1,-1,-1 #endif /* __BDK_CSRS_PEM_H__ */