aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rst.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rst.h')
-rw-r--r--src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rst.h6117
1 files changed, 6117 insertions, 0 deletions
diff --git a/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rst.h b/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rst.h
new file mode 100644
index 0000000000..86f0358a96
--- /dev/null
+++ b/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-rst.h
@@ -0,0 +1,6117 @@
+#ifndef __BDK_CSRS_RST_H__
+#define __BDK_CSRS_RST_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 RST.
+ *
+ * This file is auto generated. Do not edit.
+ *
+ */
+
+/**
+ * Enumeration rst_bar_e
+ *
+ * RST Base Address Register Enumeration
+ * Enumerates the base address registers.
+ */
+#define BDK_RST_BAR_E_RST_PF_BAR0_CN8 (0x87e006000000ll)
+#define BDK_RST_BAR_E_RST_PF_BAR0_CN8_SIZE 0x800000ull
+#define BDK_RST_BAR_E_RST_PF_BAR0_CN9 (0x87e006000000ll)
+#define BDK_RST_BAR_E_RST_PF_BAR0_CN9_SIZE 0x10000ull
+#define BDK_RST_BAR_E_RST_PF_BAR2 (0x87e00a000000ll)
+#define BDK_RST_BAR_E_RST_PF_BAR2_SIZE 0x10000ull
+#define BDK_RST_BAR_E_RST_PF_BAR4 (0x87e006f00000ll)
+#define BDK_RST_BAR_E_RST_PF_BAR4_SIZE 0x100000ull
+
+/**
+ * Enumeration rst_boot_fail_e
+ *
+ * RST Boot Failure Code Enumeration
+ * Enumerates the reasons for boot failure, returned to post-boot code
+ * in argument register 0 and blinked on GPIO\<11\>.
+ */
+#define BDK_RST_BOOT_FAIL_E_AUTH (6)
+#define BDK_RST_BOOT_FAIL_E_BUS_ERROR (0xb)
+#define BDK_RST_BOOT_FAIL_E_DEVICE (3)
+#define BDK_RST_BOOT_FAIL_E_GOOD_CN8 (0)
+#define BDK_RST_BOOT_FAIL_E_GOOD_CN9 (1)
+#define BDK_RST_BOOT_FAIL_E_HASH (8)
+#define BDK_RST_BOOT_FAIL_E_KEY (7)
+#define BDK_RST_BOOT_FAIL_E_MAGIC (4)
+#define BDK_RST_BOOT_FAIL_E_MCORE (5)
+#define BDK_RST_BOOT_FAIL_E_METH (2)
+#define BDK_RST_BOOT_FAIL_E_SCRIPT_ACC_ERROR (0xa)
+#define BDK_RST_BOOT_FAIL_E_SCRIPT_INVALID (9)
+#define BDK_RST_BOOT_FAIL_E_UNINIT (0)
+
+/**
+ * Enumeration rst_boot_method_e
+ *
+ * RST Primary Boot-strap Method Enumeration
+ * Enumerates the primary (first choice) and secondary (second choice) boot
+ * device. Primary boot method is selected with the straps
+ * GPIO_STRAP_PIN_E::BOOT_METHOD2..0, and secondary is selected with the straps
+ * GPIO_STRAP_PIN_E::BOOT_METHOD5..3.
+ *
+ * To disable the secondary method, use ::REMOTE.
+ */
+#define BDK_RST_BOOT_METHOD_E_CCPI0 (9)
+#define BDK_RST_BOOT_METHOD_E_CCPI1 (0xa)
+#define BDK_RST_BOOT_METHOD_E_CCPI2 (0xb)
+#define BDK_RST_BOOT_METHOD_E_EMMC_CS0 (0)
+#define BDK_RST_BOOT_METHOD_E_EMMC_CS1 (1)
+#define BDK_RST_BOOT_METHOD_E_EMMC_LS (3)
+#define BDK_RST_BOOT_METHOD_E_EMMC_SS (2)
+#define BDK_RST_BOOT_METHOD_E_PCIE0 (0xc)
+#define BDK_RST_BOOT_METHOD_E_PCIE2 (0xd)
+#define BDK_RST_BOOT_METHOD_E_REMOTE_CN8 (8)
+#define BDK_RST_BOOT_METHOD_E_REMOTE_CN9 (7)
+#define BDK_RST_BOOT_METHOD_E_SPI0_CS0 (2)
+#define BDK_RST_BOOT_METHOD_E_SPI0_CS1 (3)
+#define BDK_RST_BOOT_METHOD_E_SPI1_CS0 (4)
+#define BDK_RST_BOOT_METHOD_E_SPI1_CS1 (5)
+#define BDK_RST_BOOT_METHOD_E_SPI24 (5)
+#define BDK_RST_BOOT_METHOD_E_SPI32 (6)
+
+/**
+ * Enumeration rst_dev_e
+ *
+ * Programmable Reset Device Enumeration
+ * Enumerates devices that have programmable reset domains, and index {a} of RST_DEV_MAP().
+ */
+#define BDK_RST_DEV_E_AVS (1)
+#define BDK_RST_DEV_E_CGXX(a) (0x12 + (a))
+#define BDK_RST_DEV_E_EMMC (0x19)
+#define BDK_RST_DEV_E_GSERX(a) (0x1a + (a))
+#define BDK_RST_DEV_E_MPIX(a) (2 + (a))
+#define BDK_RST_DEV_E_NCSI (0)
+#define BDK_RST_DEV_E_PEMX(a) (0x28 + (a))
+#define BDK_RST_DEV_E_ROC_OCLA (0x18)
+#define BDK_RST_DEV_E_SGPIO (0x17)
+#define BDK_RST_DEV_E_SMI (0x16)
+#define BDK_RST_DEV_E_TWSX(a) (4 + (a))
+#define BDK_RST_DEV_E_UAAX(a) (0xa + (a))
+
+/**
+ * Enumeration rst_domain_e
+ *
+ * RST Domain Enumeration
+ * This enumerates the values of RST_DEV_MAP()[DMN].
+ */
+#define BDK_RST_DOMAIN_E_CHIP (0)
+#define BDK_RST_DOMAIN_E_CORE (1)
+#define BDK_RST_DOMAIN_E_MCP (2)
+#define BDK_RST_DOMAIN_E_OFF (4)
+#define BDK_RST_DOMAIN_E_SCP (3)
+
+/**
+ * Enumeration rst_int_vec_e
+ *
+ * RST MSI-X Vector Enumeration
+ * Enumerates the MSI-X interrupt vectors.
+ */
+#define BDK_RST_INT_VEC_E_INTS (0)
+
+/**
+ * Enumeration rst_source_e
+ *
+ * RST Cause Enumeration
+ * Enumerates the reset sources for both reset domain mapping and cause of last reset,
+ * corresponding to the bit numbers of RST_LBOOT.
+ */
+#define BDK_RST_SOURCE_E_CHIPKILL (4)
+#define BDK_RST_SOURCE_E_CHIP_RESET_PIN (2)
+#define BDK_RST_SOURCE_E_CHIP_SOFT (3)
+#define BDK_RST_SOURCE_E_COLD_SOFT (1)
+#define BDK_RST_SOURCE_E_CORE_RESET_PIN (0xb)
+#define BDK_RST_SOURCE_E_CORE_SOFT (0xc)
+#define BDK_RST_SOURCE_E_CORE_WDOG (0xd)
+#define BDK_RST_SOURCE_E_DCOK_PIN (0)
+#define BDK_RST_SOURCE_E_MCP_RESET_PIN (8)
+#define BDK_RST_SOURCE_E_MCP_SOFT (9)
+#define BDK_RST_SOURCE_E_MCP_WDOG (0xa)
+#define BDK_RST_SOURCE_E_OCX (0xe)
+#define BDK_RST_SOURCE_E_PEM_LINKDOWNX(a) (0x12 + 4 * (a))
+#define BDK_RST_SOURCE_E_PEM_PFFLRX(a) (0x13 + 4 * (a))
+#define BDK_RST_SOURCE_E_PERST_PINX(a) (0x11 + 4 * (a))
+#define BDK_RST_SOURCE_E_PERST_SOFTX(a) (0x10 + 4 * (a))
+#define BDK_RST_SOURCE_E_RSVD_F (0xf)
+#define BDK_RST_SOURCE_E_SCP_RESET_PIN (5)
+#define BDK_RST_SOURCE_E_SCP_SOFT (6)
+#define BDK_RST_SOURCE_E_SCP_WDOG (7)
+
+/**
+ * Structure rst_boot_stat_s
+ *
+ * BOOT_STATUS field Structure
+ * The rom boot code stores this data in the RST_BOOT_STATUS register, once per each boot attempt.
+ */
+union bdk_rst_boot_stat_s
+{
+ uint32_t u;
+ struct bdk_rst_boot_stat_s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint32_t reserved_16_31 : 16;
+ uint32_t trusted : 1; /**< [ 15: 15] This was a trusted-mode boot. */
+ uint32_t primary : 1; /**< [ 14: 14] This was a boot from the primary device. */
+ uint32_t scr_done : 1; /**< [ 13: 13] The ROM script ran to completion on this boot. */
+ uint32_t reserved_7_12 : 6;
+ uint32_t boot_method : 3; /**< [ 6: 4] The boot method for this boot attempt RST_BOOT_METHOD_E. */
+ uint32_t fail : 4; /**< [ 3: 0] The failure code for this boot attempt RST_BOOT_FAIL_E. */
+#else /* Word 0 - Little Endian */
+ uint32_t fail : 4; /**< [ 3: 0] The failure code for this boot attempt RST_BOOT_FAIL_E. */
+ uint32_t boot_method : 3; /**< [ 6: 4] The boot method for this boot attempt RST_BOOT_METHOD_E. */
+ uint32_t reserved_7_12 : 6;
+ uint32_t scr_done : 1; /**< [ 13: 13] The ROM script ran to completion on this boot. */
+ uint32_t primary : 1; /**< [ 14: 14] This was a boot from the primary device. */
+ uint32_t trusted : 1; /**< [ 15: 15] This was a trusted-mode boot. */
+ uint32_t reserved_16_31 : 16;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_boot_stat_s_s cn; */
+};
+
+/**
+ * Structure rst_pp_pwr_s
+ *
+ * INTERNAL: Core Reset Power Delivery Structure
+ *
+ * This structure specifies the layout of RTL reset and power delivery. It is not visible to software.
+ */
+union bdk_rst_pp_pwr_s
+{
+ uint32_t u;
+ struct bdk_rst_pp_pwr_s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint32_t reserved_10_31 : 22;
+ uint32_t valid : 1; /**< [ 9: 9] Data transmitted on interface is valid.. */
+ uint32_t ppvid : 6; /**< [ 8: 3] Virtual core number. */
+ uint32_t dbg_rst : 1; /**< [ 2: 2] Reset control for the core specified by PPVID. */
+ uint32_t pwrdwn : 1; /**< [ 1: 1] Core does not require power. */
+ uint32_t rst : 1; /**< [ 0: 0] Reset control for the core specified by PPVID. */
+#else /* Word 0 - Little Endian */
+ uint32_t rst : 1; /**< [ 0: 0] Reset control for the core specified by PPVID. */
+ uint32_t pwrdwn : 1; /**< [ 1: 1] Core does not require power. */
+ uint32_t dbg_rst : 1; /**< [ 2: 2] Reset control for the core specified by PPVID. */
+ uint32_t ppvid : 6; /**< [ 8: 3] Virtual core number. */
+ uint32_t valid : 1; /**< [ 9: 9] Data transmitted on interface is valid.. */
+ uint32_t reserved_10_31 : 22;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_pp_pwr_s_s cn; */
+};
+
+/**
+ * Register (RSL) rst_ap#_affinity_const
+ *
+ * RST Virtual AP Affinity Map Register
+ * This register indicates the processor affinity identification and logical core
+ * number mapping to physical core numbers. This is indexed by logical core number.
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_apx_affinity_const
+{
+ uint64_t u;
+ struct bdk_rst_apx_affinity_const_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_56_63 : 8;
+ uint64_t core : 8; /**< [ 55: 48](RO) Physical core number. */
+ uint64_t reserved_44_47 : 4;
+ uint64_t phy_clu : 4; /**< [ 43: 40](RO) Physical cluster number. */
+ uint64_t reserved_36_39 : 4;
+ uint64_t phy_core : 4; /**< [ 35: 32](RO) Physical core-within-cluster number. */
+ uint64_t fov : 1; /**< [ 31: 31](RO) Set to indicate if the fields are valid. */
+ uint64_t u : 1; /**< [ 30: 30](RO) Set to indicate processors are part of a multprocessor system. */
+ uint64_t reserved_25_29 : 5;
+ uint64_t mt : 1; /**< [ 24: 24](RO) Set to indicate multithreaded and [AFF0] is thread number in core. */
+ uint64_t aff2 : 8; /**< [ 23: 16](RO/H) Affinity 2 for this logical core number. In CNXXXX, the node id. */
+ uint64_t aff1 : 8; /**< [ 15: 8](RO/H) Affinity 1 for this logical core number. In CNXXXX, the logical cluster id. */
+ uint64_t aff0 : 8; /**< [ 7: 0](RO/H) Affinity 0 for this logical core number. In CNXXXX, the logical core number within a cluster. */
+#else /* Word 0 - Little Endian */
+ uint64_t aff0 : 8; /**< [ 7: 0](RO/H) Affinity 0 for this logical core number. In CNXXXX, the logical core number within a cluster. */
+ uint64_t aff1 : 8; /**< [ 15: 8](RO/H) Affinity 1 for this logical core number. In CNXXXX, the logical cluster id. */
+ uint64_t aff2 : 8; /**< [ 23: 16](RO/H) Affinity 2 for this logical core number. In CNXXXX, the node id. */
+ uint64_t mt : 1; /**< [ 24: 24](RO) Set to indicate multithreaded and [AFF0] is thread number in core. */
+ uint64_t reserved_25_29 : 5;
+ uint64_t u : 1; /**< [ 30: 30](RO) Set to indicate processors are part of a multprocessor system. */
+ uint64_t fov : 1; /**< [ 31: 31](RO) Set to indicate if the fields are valid. */
+ uint64_t phy_core : 4; /**< [ 35: 32](RO) Physical core-within-cluster number. */
+ uint64_t reserved_36_39 : 4;
+ uint64_t phy_clu : 4; /**< [ 43: 40](RO) Physical cluster number. */
+ uint64_t reserved_44_47 : 4;
+ uint64_t core : 8; /**< [ 55: 48](RO) Physical core number. */
+ uint64_t reserved_56_63 : 8;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_apx_affinity_const_s cn; */
+};
+typedef union bdk_rst_apx_affinity_const bdk_rst_apx_affinity_const_t;
+
+static inline uint64_t BDK_RST_APX_AFFINITY_CONST(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_APX_AFFINITY_CONST(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=23))
+ return 0x87e006001000ll + 8ll * ((a) & 0x1f);
+ __bdk_csr_fatal("RST_APX_AFFINITY_CONST", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_APX_AFFINITY_CONST(a) bdk_rst_apx_affinity_const_t
+#define bustype_BDK_RST_APX_AFFINITY_CONST(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_APX_AFFINITY_CONST(a) "RST_APX_AFFINITY_CONST"
+#define device_bar_BDK_RST_APX_AFFINITY_CONST(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_APX_AFFINITY_CONST(a) (a)
+#define arguments_BDK_RST_APX_AFFINITY_CONST(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) rst_bist_active
+ *
+ * RST BIST Active Status Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_bist_active
+{
+ uint64_t u;
+ struct bdk_rst_bist_active_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_6_63 : 58;
+ uint64_t ap : 1; /**< [ 5: 5](RO/H) BIST in progress due to AP cores being put into reset. When set, memories
+ accociated with this group are being tested. */
+ uint64_t csr : 1; /**< [ 4: 4](RO/H) BIST in progress due to access to RST_DEV_MAP(). When set, memories
+ accociated with this access are being tested. */
+ uint64_t scp : 1; /**< [ 3: 3](RO/H) SCP domain BIST in progress. When set, memories accociated with
+ the SCP domain are being tested. */
+ uint64_t mcp : 1; /**< [ 2: 2](RO/H) MCP domain BIST in progress. When set, memories accociated with
+ the MCP domain are being tested. */
+ uint64_t core : 1; /**< [ 1: 1](RO/H) Core domain BIST in progress. When set, memories accociated with
+ the core domain are being tested. */
+ uint64_t reserved_0 : 1;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0 : 1;
+ uint64_t core : 1; /**< [ 1: 1](RO/H) Core domain BIST in progress. When set, memories accociated with
+ the core domain are being tested. */
+ uint64_t mcp : 1; /**< [ 2: 2](RO/H) MCP domain BIST in progress. When set, memories accociated with
+ the MCP domain are being tested. */
+ uint64_t scp : 1; /**< [ 3: 3](RO/H) SCP domain BIST in progress. When set, memories accociated with
+ the SCP domain are being tested. */
+ uint64_t csr : 1; /**< [ 4: 4](RO/H) BIST in progress due to access to RST_DEV_MAP(). When set, memories
+ accociated with this access are being tested. */
+ uint64_t ap : 1; /**< [ 5: 5](RO/H) BIST in progress due to AP cores being put into reset. When set, memories
+ accociated with this group are being tested. */
+ uint64_t reserved_6_63 : 58;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_bist_active_s cn; */
+};
+typedef union bdk_rst_bist_active bdk_rst_bist_active_t;
+
+#define BDK_RST_BIST_ACTIVE BDK_RST_BIST_ACTIVE_FUNC()
+static inline uint64_t BDK_RST_BIST_ACTIVE_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_BIST_ACTIVE_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001890ll;
+ __bdk_csr_fatal("RST_BIST_ACTIVE", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_BIST_ACTIVE bdk_rst_bist_active_t
+#define bustype_BDK_RST_BIST_ACTIVE BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_BIST_ACTIVE "RST_BIST_ACTIVE"
+#define device_bar_BDK_RST_BIST_ACTIVE 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_BIST_ACTIVE 0
+#define arguments_BDK_RST_BIST_ACTIVE -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_bist_timer
+ *
+ * INTERNAL: RST BIST Timer Register
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_bist_timer
+{
+ uint64_t u;
+ struct bdk_rst_bist_timer_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_29_63 : 35;
+ uint64_t count : 29; /**< [ 28: 0](RO) Number of 50 MHz reference clocks that have elapsed during BIST and repair during the last
+ reset.
+ If MSB is set the BIST chain did not complete as expected. */
+#else /* Word 0 - Little Endian */
+ uint64_t count : 29; /**< [ 28: 0](RO) Number of 50 MHz reference clocks that have elapsed during BIST and repair during the last
+ reset.
+ If MSB is set the BIST chain did not complete as expected. */
+ uint64_t reserved_29_63 : 35;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_bist_timer_s cn8; */
+ struct bdk_rst_bist_timer_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_29_63 : 35;
+ uint64_t count : 29; /**< [ 28: 0](RO/H) Number of 100 MHz reference clocks that have elapsed during the
+ last BIST operation. If MSB is set the BIST did not
+ complete as expected. */
+#else /* Word 0 - Little Endian */
+ uint64_t count : 29; /**< [ 28: 0](RO/H) Number of 100 MHz reference clocks that have elapsed during the
+ last BIST operation. If MSB is set the BIST did not
+ complete as expected. */
+ uint64_t reserved_29_63 : 35;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_bist_timer bdk_rst_bist_timer_t;
+
+#define BDK_RST_BIST_TIMER BDK_RST_BIST_TIMER_FUNC()
+static inline uint64_t BDK_RST_BIST_TIMER_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_BIST_TIMER_FUNC(void)
+{
+ return 0x87e006001760ll;
+}
+
+#define typedef_BDK_RST_BIST_TIMER bdk_rst_bist_timer_t
+#define bustype_BDK_RST_BIST_TIMER BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_BIST_TIMER "RST_BIST_TIMER"
+#define device_bar_BDK_RST_BIST_TIMER 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_BIST_TIMER 0
+#define arguments_BDK_RST_BIST_TIMER -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_boot
+ *
+ * RST Boot Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_boot
+{
+ uint64_t u;
+ struct bdk_rst_boot_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A 0-to-1 transition of CHIPKILL starts the CHIPKILL timer. When CHIPKILL=1 and the timer
+ expires, chip reset is asserted internally. The CHIPKILL timer can be stopped only by
+ a reset (cold, warm, soft). The length of the CHIPKILL timer is specified by
+ RST_CKILL[TIMER]. This feature is effectively a delayed warm reset. */
+ uint64_t reserved_61_62 : 2;
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO) When set, chip is operating as a trusted device. This bit is asserted when
+ either MIO_FUS_DAT2[TRUSTZONE_EN], FUSF_CTL[TZ_FORCE2], or the trusted-mode
+ strap GPIO_STRAP\<10\> are set. */
+ uint64_t ckill_ppdis : 1; /**< [ 59: 59](R/W) Chipkill core disable. When set to 1, cores other than core 0 will immediately
+ be disabled when RST_BOOT[CHIPKILL] is set. Writes have no effect when
+ RST_BOOT[CHIPKILL]=1. */
+ uint64_t jt_tstmode : 1; /**< [ 58: 58](RO) JTAG test mode. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](RO) Reserved. */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to (!trusted_mode && FUSF_CTL[FJ_DIS_HUK]).
+
+ Software must write a one to this bit when the chain of trust is broken. */
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When written to 1, and FUSF_CTL[ROT_LCK] = 1, reads as 1 and scan is not
+ allowed in the part.
+ This state persists across soft and warm resets.
+
+ Internal:
+ This state will persist across a simulation */
+ uint64_t mcp_jtagdis : 1; /**< [ 54: 54](R/W/H) MCP JTAG debugger disable. When set, the MCP Debug interface of
+ the EJTAG TAP controller will be disabled. This field does not
+ control the SCP EJTAG interface (See EJTAGDIS).
+ This field resets to one in trusted mode otherwise it is cleared.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t gpio_ejtag : 1; /**< [ 53: 53](R/W/H) Use GPIO pins for EJTAG. When set, the EJTAG chain consisting
+ of MCP and SCP devices is routed directly to GPIO pins. When
+ cleared these devices are included in the standard JTAG chain.
+ The specific GPIO pins are selected with GPIO_BIT_CFG()[PIN_SEL].
+ This field is reinitialized with a cold domain reset.
+ Reset value is determined by GPIO strap pin number
+ GPIO_STRAP_PIN_E::MCP_DBG_ON_GPIO. */
+ uint64_t reserved_47_52 : 6;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Core-clock multiplier. [C_MUL] = (core-clock speed) / (ref-clock speed). The value
+ ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [C_MUL] is set from the pi_pll_mul pins plus 6 and is limited by a set of
+ fuses[127:123]. If the fuse value is \> 0, it is compared with the pi_pll_mul[5:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_39 : 1;
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Coprocessor-clock multiplier. [PNR_MUL] = (coprocessor-clock speed) /(ref-clock speed).
+ The value ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [PNR_MUL] is set from the pi_pnr_pll_mul pins plus 6 and is limited by a set of
+ fuses[122:119]. If the fuse value is \> 0, it is compared with the pi_pnr_pll_mul[4:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_24_32 : 9;
+ uint64_t lboot_ext45 : 6; /**< [ 23: 18](R/W1C/H) Last boot cause mask for PEM5 and PEM4; resets only with PLL_DC_OK.
+ \<23\> = Warm reset due to Cntl5 link-down or hot-reset.
+ \<22\> = Warm reset due to Cntl4 link-down or hot-reset.
+ \<21\> = Cntl5 reset due to PERST5_L pin.
+ \<20\> = Cntl4 reset due to PERST4_L pin.
+ \<19\> = Warm reset due to PERST5_L pin.
+ \<18\> = Warm reset due to PERST4_L pin. */
+ uint64_t lboot_ext23 : 6; /**< [ 17: 12](R/W1C/H) Last boot cause mask for PEM3 and PEM2; resets only with PLL_DC_OK.
+ \<17\> = Warm reset due to Cntl3 link-down or hot-reset.
+ \<16\> = Warm reset due to Cntl2 link-down or hot-reset.
+ \<15\> = Cntl3 reset due to PERST3_L pin.
+ \<14\> = Cntl2 reset due to PERST2_L pin.
+ \<13\> = Warm reset due to PERST3_L pin.
+ \<12\> = Warm reset due to PERST2_L pin. */
+ uint64_t lboot : 10; /**< [ 11: 2](R/W1C/H) Last boot cause mask for PEM1 and PEM0; resets only with PLL_DC_OK.
+ \<11\> = Soft reset due to watchdog.
+ \<10\> = Soft reset due to RST_SOFT_RST write.
+ \<9\> = Warm reset due to Cntl1 link-down or hot-reset.
+ \<8\> = Warm reset due to Cntl0 link-down or hot-reset.
+ \<7\> = Cntl1 reset due to PERST1_L pin.
+ \<6\> = Cntl0 reset due to PERST0_L pin.
+ \<5\> = Warm reset due to PERST1_L pin.
+ \<4\> = Warm reset due to PERST0_L pin.
+ \<3\> = Warm reset due to CHIP_RESET_L pin.
+ \<2\> = Cold reset due to PLL_DC_OK pin. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W) Remote boot. If set, indicates that core 0 will remain in reset after a
+ chip warm/soft reset. The initial value mimics the setting of the [RBOOT_PIN]. */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO/H) Remote Boot strap. Indicates the state of remote boot as initially determined by
+ GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE. If set core 0 will remain in reset
+ for the cold reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO/H) Remote Boot strap. Indicates the state of remote boot as initially determined by
+ GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE. If set core 0 will remain in reset
+ for the cold reset. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W) Remote boot. If set, indicates that core 0 will remain in reset after a
+ chip warm/soft reset. The initial value mimics the setting of the [RBOOT_PIN]. */
+ uint64_t lboot : 10; /**< [ 11: 2](R/W1C/H) Last boot cause mask for PEM1 and PEM0; resets only with PLL_DC_OK.
+ \<11\> = Soft reset due to watchdog.
+ \<10\> = Soft reset due to RST_SOFT_RST write.
+ \<9\> = Warm reset due to Cntl1 link-down or hot-reset.
+ \<8\> = Warm reset due to Cntl0 link-down or hot-reset.
+ \<7\> = Cntl1 reset due to PERST1_L pin.
+ \<6\> = Cntl0 reset due to PERST0_L pin.
+ \<5\> = Warm reset due to PERST1_L pin.
+ \<4\> = Warm reset due to PERST0_L pin.
+ \<3\> = Warm reset due to CHIP_RESET_L pin.
+ \<2\> = Cold reset due to PLL_DC_OK pin. */
+ uint64_t lboot_ext23 : 6; /**< [ 17: 12](R/W1C/H) Last boot cause mask for PEM3 and PEM2; resets only with PLL_DC_OK.
+ \<17\> = Warm reset due to Cntl3 link-down or hot-reset.
+ \<16\> = Warm reset due to Cntl2 link-down or hot-reset.
+ \<15\> = Cntl3 reset due to PERST3_L pin.
+ \<14\> = Cntl2 reset due to PERST2_L pin.
+ \<13\> = Warm reset due to PERST3_L pin.
+ \<12\> = Warm reset due to PERST2_L pin. */
+ uint64_t lboot_ext45 : 6; /**< [ 23: 18](R/W1C/H) Last boot cause mask for PEM5 and PEM4; resets only with PLL_DC_OK.
+ \<23\> = Warm reset due to Cntl5 link-down or hot-reset.
+ \<22\> = Warm reset due to Cntl4 link-down or hot-reset.
+ \<21\> = Cntl5 reset due to PERST5_L pin.
+ \<20\> = Cntl4 reset due to PERST4_L pin.
+ \<19\> = Warm reset due to PERST5_L pin.
+ \<18\> = Warm reset due to PERST4_L pin. */
+ uint64_t reserved_24_32 : 9;
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Coprocessor-clock multiplier. [PNR_MUL] = (coprocessor-clock speed) /(ref-clock speed).
+ The value ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [PNR_MUL] is set from the pi_pnr_pll_mul pins plus 6 and is limited by a set of
+ fuses[122:119]. If the fuse value is \> 0, it is compared with the pi_pnr_pll_mul[4:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_39 : 1;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Core-clock multiplier. [C_MUL] = (core-clock speed) / (ref-clock speed). The value
+ ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [C_MUL] is set from the pi_pll_mul pins plus 6 and is limited by a set of
+ fuses[127:123]. If the fuse value is \> 0, it is compared with the pi_pll_mul[5:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_47_52 : 6;
+ uint64_t gpio_ejtag : 1; /**< [ 53: 53](R/W/H) Use GPIO pins for EJTAG. When set, the EJTAG chain consisting
+ of MCP and SCP devices is routed directly to GPIO pins. When
+ cleared these devices are included in the standard JTAG chain.
+ The specific GPIO pins are selected with GPIO_BIT_CFG()[PIN_SEL].
+ This field is reinitialized with a cold domain reset.
+ Reset value is determined by GPIO strap pin number
+ GPIO_STRAP_PIN_E::MCP_DBG_ON_GPIO. */
+ uint64_t mcp_jtagdis : 1; /**< [ 54: 54](R/W/H) MCP JTAG debugger disable. When set, the MCP Debug interface of
+ the EJTAG TAP controller will be disabled. This field does not
+ control the SCP EJTAG interface (See EJTAGDIS).
+ This field resets to one in trusted mode otherwise it is cleared.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When written to 1, and FUSF_CTL[ROT_LCK] = 1, reads as 1 and scan is not
+ allowed in the part.
+ This state persists across soft and warm resets.
+
+ Internal:
+ This state will persist across a simulation */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to (!trusted_mode && FUSF_CTL[FJ_DIS_HUK]).
+
+ Software must write a one to this bit when the chain of trust is broken. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](RO) Reserved. */
+ uint64_t jt_tstmode : 1; /**< [ 58: 58](RO) JTAG test mode. */
+ uint64_t ckill_ppdis : 1; /**< [ 59: 59](R/W) Chipkill core disable. When set to 1, cores other than core 0 will immediately
+ be disabled when RST_BOOT[CHIPKILL] is set. Writes have no effect when
+ RST_BOOT[CHIPKILL]=1. */
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO) When set, chip is operating as a trusted device. This bit is asserted when
+ either MIO_FUS_DAT2[TRUSTZONE_EN], FUSF_CTL[TZ_FORCE2], or the trusted-mode
+ strap GPIO_STRAP\<10\> are set. */
+ uint64_t reserved_61_62 : 2;
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A 0-to-1 transition of CHIPKILL starts the CHIPKILL timer. When CHIPKILL=1 and the timer
+ expires, chip reset is asserted internally. The CHIPKILL timer can be stopped only by
+ a reset (cold, warm, soft). The length of the CHIPKILL timer is specified by
+ RST_CKILL[TIMER]. This feature is effectively a delayed warm reset. */
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_boot_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A zero-to-one transition of CHIPKILL starts the CHIPKILL timer. When set and the timer
+ expires, chip domain reset is asserted.
+ The length of the CHIPKILL timer is specified by RST_CKILL[TIMER].
+ This feature is effectively a delayed reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t jtagdis : 1; /**< [ 62: 62](R/W/H) JTAG access disable. When set, the debug access port of the
+ JTAG TAP controller will be disabled, i.e. DAP_IMP_DAR will be zero.
+ This field resets to one in trusted mode otherwise it is cleared.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t scp_jtagdis : 1; /**< [ 61: 61](R/W/H) SCP JTAG debugger disable. When set, the SCP debug interface of
+ the EJTAG TAP controller will be disabled. This field does not
+ control the MCP EJTAG interface (See [MCP_JTAGDIS]).
+ This field resets to one in trusted mode otherwise it is cleared.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO/H) When set, chip is operating as a trusted device. This bit is asserted when
+ either FUSF_CTL[TZ_FORCE2], or the trusted mode strap on GPIO number
+ GPIO_STRAP_PIN_E::TRUSTED_MODE is set. */
+ uint64_t reserved_58_59 : 2;
+ uint64_t vrm_err : 1; /**< [ 57: 57](R/W1) Reserved. */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set, FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to one if FUSF_CTL[FJ_DIS_HUK] is set and not in trusted mode.
+ It is also set anytime scan mode is activated while FUSF_CTL[FJ_DIS_HUK] is set.
+ Software must set this bit when the chain of trust is broken.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When set and FUSF_CTL[ROT_LCK] = 1, scan is not
+ allowed in the part.
+ This field is reinitialized with a cold domain reset.
+
+ Internal:
+ The field is actually reset only after DCOK has been left
+ deasserted for an extended period of time. */
+ uint64_t mcp_jtagdis : 1; /**< [ 54: 54](R/W/H) MCP JTAG debugger disable. When set, the MCP Debug interface of
+ the EJTAG TAP controller will be disabled. This field does not
+ control the SCP EJTAG interface (See EJTAGDIS).
+ This field resets to one in trusted mode otherwise it is cleared.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t gpio_ejtag : 1; /**< [ 53: 53](R/W/H) Use GPIO pins for EJTAG. When set, the EJTAG chain consisting
+ of MCP and SCP devices is routed directly to GPIO pins. When
+ cleared these devices are included in the standard JTAG chain.
+ The specific GPIO pins are selected with GPIO_BIT_CFG()[PIN_SEL].
+ This field is reinitialized with a cold domain reset.
+ Reset value is determined by GPIO strap pin number
+ GPIO_STRAP_PIN_E::MCP_DBG_ON_GPIO. */
+ uint64_t reserved_47_52 : 6;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Current core-clock multiplier. Clock frequency = [C_MUL] * 50 MHz.
+ See RST_CORE_PLL for details on programming and initial values.
+
+ Internal:
+ [C_MUL] is a copy of RST_CORE_PLL[CUR_MUL]. */
+ uint64_t reserved_39 : 1;
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Current coprocessor-clock multiplier. Clock frequency = [PNR_MUL] * 50 MHz.
+ See RST_PNR_PLL for details on programming and initial values.
+
+ Internal:
+ [PNR_MUL] is a copy of RST_PNR_PLL[CUR_MUL]. */
+ uint64_t reserved_31_32 : 2;
+ uint64_t cpt_mul : 7; /**< [ 30: 24](RO/H) Current crypto-clock multiplier. Clock frequency = [CPT_MUL] * 50 MHz.
+ See RST_CPT_PLL for details on programming and initial values.
+
+ Internal:
+ [CPT_MUL] is a copy of RST_CPT_PLL[CUR_MUL]. */
+ uint64_t reserved_2_23 : 22;
+ uint64_t rboot : 1; /**< [ 1: 1](R/W/H) Remote boot. If set, indicates that SCP will require a write to
+ RST_SCP_DOMAIN_W1C to bring it out of reset. Otherwise it
+ will automatically come out of reset once the reset source has
+ been deasserted.
+ The initial value is set when [RBOOT_PIN] is true and
+ trustzone has not been enabled.
+ This field is reinitialized with a cold domain reset.
+
+ Internal:
+ This field is cleared when jtg__rst_disable_remote is active. */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO) Remote boot strap. The value is set when primary boot method is RST_BOOT_METHOD_E::REMOTE
+ when the GPIO pins are sampled on the rising edge of PLL_DCOK. */
+#else /* Word 0 - Little Endian */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO) Remote boot strap. The value is set when primary boot method is RST_BOOT_METHOD_E::REMOTE
+ when the GPIO pins are sampled on the rising edge of PLL_DCOK. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W/H) Remote boot. If set, indicates that SCP will require a write to
+ RST_SCP_DOMAIN_W1C to bring it out of reset. Otherwise it
+ will automatically come out of reset once the reset source has
+ been deasserted.
+ The initial value is set when [RBOOT_PIN] is true and
+ trustzone has not been enabled.
+ This field is reinitialized with a cold domain reset.
+
+ Internal:
+ This field is cleared when jtg__rst_disable_remote is active. */
+ uint64_t reserved_2_23 : 22;
+ uint64_t cpt_mul : 7; /**< [ 30: 24](RO/H) Current crypto-clock multiplier. Clock frequency = [CPT_MUL] * 50 MHz.
+ See RST_CPT_PLL for details on programming and initial values.
+
+ Internal:
+ [CPT_MUL] is a copy of RST_CPT_PLL[CUR_MUL]. */
+ uint64_t reserved_31_32 : 2;
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Current coprocessor-clock multiplier. Clock frequency = [PNR_MUL] * 50 MHz.
+ See RST_PNR_PLL for details on programming and initial values.
+
+ Internal:
+ [PNR_MUL] is a copy of RST_PNR_PLL[CUR_MUL]. */
+ uint64_t reserved_39 : 1;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Current core-clock multiplier. Clock frequency = [C_MUL] * 50 MHz.
+ See RST_CORE_PLL for details on programming and initial values.
+
+ Internal:
+ [C_MUL] is a copy of RST_CORE_PLL[CUR_MUL]. */
+ uint64_t reserved_47_52 : 6;
+ uint64_t gpio_ejtag : 1; /**< [ 53: 53](R/W/H) Use GPIO pins for EJTAG. When set, the EJTAG chain consisting
+ of MCP and SCP devices is routed directly to GPIO pins. When
+ cleared these devices are included in the standard JTAG chain.
+ The specific GPIO pins are selected with GPIO_BIT_CFG()[PIN_SEL].
+ This field is reinitialized with a cold domain reset.
+ Reset value is determined by GPIO strap pin number
+ GPIO_STRAP_PIN_E::MCP_DBG_ON_GPIO. */
+ uint64_t mcp_jtagdis : 1; /**< [ 54: 54](R/W/H) MCP JTAG debugger disable. When set, the MCP Debug interface of
+ the EJTAG TAP controller will be disabled. This field does not
+ control the SCP EJTAG interface (See EJTAGDIS).
+ This field resets to one in trusted mode otherwise it is cleared.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When set and FUSF_CTL[ROT_LCK] = 1, scan is not
+ allowed in the part.
+ This field is reinitialized with a cold domain reset.
+
+ Internal:
+ The field is actually reset only after DCOK has been left
+ deasserted for an extended period of time. */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set, FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to one if FUSF_CTL[FJ_DIS_HUK] is set and not in trusted mode.
+ It is also set anytime scan mode is activated while FUSF_CTL[FJ_DIS_HUK] is set.
+ Software must set this bit when the chain of trust is broken.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](R/W1) Reserved. */
+ uint64_t reserved_58_59 : 2;
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO/H) When set, chip is operating as a trusted device. This bit is asserted when
+ either FUSF_CTL[TZ_FORCE2], or the trusted mode strap on GPIO number
+ GPIO_STRAP_PIN_E::TRUSTED_MODE is set. */
+ uint64_t scp_jtagdis : 1; /**< [ 61: 61](R/W/H) SCP JTAG debugger disable. When set, the SCP debug interface of
+ the EJTAG TAP controller will be disabled. This field does not
+ control the MCP EJTAG interface (See [MCP_JTAGDIS]).
+ This field resets to one in trusted mode otherwise it is cleared.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t jtagdis : 1; /**< [ 62: 62](R/W/H) JTAG access disable. When set, the debug access port of the
+ JTAG TAP controller will be disabled, i.e. DAP_IMP_DAR will be zero.
+ This field resets to one in trusted mode otherwise it is cleared.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A zero-to-one transition of CHIPKILL starts the CHIPKILL timer. When set and the timer
+ expires, chip domain reset is asserted.
+ The length of the CHIPKILL timer is specified by RST_CKILL[TIMER].
+ This feature is effectively a delayed reset.
+ This field is reinitialized with a chip domain reset. */
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_boot_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A 0-to-1 transition of CHIPKILL starts the CHIPKILL timer. When CHIPKILL=1 and the timer
+ expires, chip reset is asserted internally. The CHIPKILL timer can be stopped only by
+ a reset (cold, warm, soft). The length of the CHIPKILL timer is specified by
+ RST_CKILL[TIMER]. This feature is effectively a delayed warm reset. */
+ uint64_t jtcsrdis : 1; /**< [ 62: 62](R/W) JTAG CSR disable. When set to 1, during the next warm or soft reset the JTAG TAP
+ controller will be disabled, i.e. DAP_IMP_DAR will be 0. This field resets to 1
+ in trusted-mode, else 0. */
+ uint64_t ejtagdis : 1; /**< [ 61: 61](R/W) Reserved. */
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO) When set, chip is operating as a trusted device. This bit is asserted when
+ either MIO_FUS_DAT2[TRUSTZONE_EN], FUSF_CTL[TZ_FORCE2], or the trusted-mode
+ strap GPIO_STRAP\<10\> are set. */
+ uint64_t ckill_ppdis : 1; /**< [ 59: 59](R/W) Chipkill core disable. When set to 1, cores other than core 0 will immediately
+ be disabled when RST_BOOT[CHIPKILL] is set. Writes have no effect when
+ RST_BOOT[CHIPKILL]=1. */
+ uint64_t jt_tstmode : 1; /**< [ 58: 58](RO) JTAG test mode. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](RO) Reserved. */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to (!trusted_mode && FUSF_CTL[FJ_DIS_HUK]).
+
+ Software must write a one to this bit when the chain of trust is broken. */
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When written to 1, and FUSF_CTL[ROT_LCK] = 1, reads as 1 and scan is not
+ allowed in the part.
+ This state persists across soft and warm resets.
+
+ Internal:
+ This state will persist across a simulation */
+ uint64_t reserved_47_54 : 8;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Core-clock multiplier. [C_MUL] = (core-clock speed) / (ref-clock speed). The value
+ ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [C_MUL] is set from the pi_pll_mul pins plus 6 and is limited by a set of
+ fuses[127:123]. If the fuse value is \> 0, it is compared with the pi_pll_mul[5:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_39 : 1;
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Coprocessor-clock multiplier. [PNR_MUL] = (coprocessor-clock speed) /(ref-clock speed).
+ The value ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [PNR_MUL] is set from the pi_pnr_pll_mul pins plus 6 and is limited by a set of
+ fuses[122:119]. If the fuse value is \> 0, it is compared with the pi_pnr_pll_mul[4:1]
+ pins and the smaller value is used. */
+ uint64_t lboot_oci : 3; /**< [ 32: 30](R/W1C/H) Reserved.
+ Internal:
+ Last boot cause mask for CCPI; resets only with PLL_DC_OK.
+ \<32\> = Warm reset due to CCPI link 2 going down.
+ \<31\> = Warm reset due to CCPI link 1 going down.
+ \<30\> = Warm reset due to CCPI link 0 going down. */
+ uint64_t reserved_26_29 : 4;
+ uint64_t lboot_ckill : 1; /**< [ 25: 25](R/W1C/H) Last boot cause was chip kill timer expiring. See RST_BOOT[CHIPKILL]. */
+ uint64_t lboot_jtg : 1; /**< [ 24: 24](R/W1C/H) Last boot cause was write to JTG reset. */
+ uint64_t lboot_ext45 : 6; /**< [ 23: 18](R/W1C/H) Reserved. */
+ uint64_t lboot_ext23 : 6; /**< [ 17: 12](R/W1C/H) Last boot cause mask for PEM2; resets only with PLL_DC_OK.
+ \<17\> = Reserved
+ \<16\> = Warm reset due to Cntl2 link-down or hot-reset.
+ \<15\> = Reserved
+ \<14\> = Cntl2 reset due to PERST2_L pin.
+ \<13\> = Reserved
+ \<12\> = Warm reset due to PERST2_L pin. */
+ uint64_t lboot : 10; /**< [ 11: 2](R/W1C/H) Last boot cause mask for PEM1 and PEM0; resets only with PLL_DC_OK.
+ \<11\> = Soft reset due to watchdog.
+ \<10\> = Soft reset due to RST_SOFT_RST write.
+ \<9\> = Warm reset due to Cntl1 link-down or hot-reset.
+ \<8\> = Warm reset due to Cntl0 link-down or hot-reset.
+ \<7\> = Cntl1 reset due to PERST1_L pin.
+ \<6\> = Cntl0 reset due to PERST0_L pin.
+ \<5\> = Warm reset due to PERST1_L pin.
+ \<4\> = Warm reset due to PERST0_L pin.
+ \<3\> = Warm reset due to CHIP_RESET_L pin.
+ \<2\> = Cold reset due to PLL_DC_OK pin. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W) Remote boot. If set, indicates that core 0 will remain in reset after a
+ chip warm/soft reset. The initial value mimics the setting of the [RBOOT_PIN]. */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO/H) Remote Boot strap. Indicates the state of remote boot as initially determined by
+ GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE. If set core 0 will remain in reset
+ for the cold reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO/H) Remote Boot strap. Indicates the state of remote boot as initially determined by
+ GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE. If set core 0 will remain in reset
+ for the cold reset. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W) Remote boot. If set, indicates that core 0 will remain in reset after a
+ chip warm/soft reset. The initial value mimics the setting of the [RBOOT_PIN]. */
+ uint64_t lboot : 10; /**< [ 11: 2](R/W1C/H) Last boot cause mask for PEM1 and PEM0; resets only with PLL_DC_OK.
+ \<11\> = Soft reset due to watchdog.
+ \<10\> = Soft reset due to RST_SOFT_RST write.
+ \<9\> = Warm reset due to Cntl1 link-down or hot-reset.
+ \<8\> = Warm reset due to Cntl0 link-down or hot-reset.
+ \<7\> = Cntl1 reset due to PERST1_L pin.
+ \<6\> = Cntl0 reset due to PERST0_L pin.
+ \<5\> = Warm reset due to PERST1_L pin.
+ \<4\> = Warm reset due to PERST0_L pin.
+ \<3\> = Warm reset due to CHIP_RESET_L pin.
+ \<2\> = Cold reset due to PLL_DC_OK pin. */
+ uint64_t lboot_ext23 : 6; /**< [ 17: 12](R/W1C/H) Last boot cause mask for PEM2; resets only with PLL_DC_OK.
+ \<17\> = Reserved
+ \<16\> = Warm reset due to Cntl2 link-down or hot-reset.
+ \<15\> = Reserved
+ \<14\> = Cntl2 reset due to PERST2_L pin.
+ \<13\> = Reserved
+ \<12\> = Warm reset due to PERST2_L pin. */
+ uint64_t lboot_ext45 : 6; /**< [ 23: 18](R/W1C/H) Reserved. */
+ uint64_t lboot_jtg : 1; /**< [ 24: 24](R/W1C/H) Last boot cause was write to JTG reset. */
+ uint64_t lboot_ckill : 1; /**< [ 25: 25](R/W1C/H) Last boot cause was chip kill timer expiring. See RST_BOOT[CHIPKILL]. */
+ uint64_t reserved_26_29 : 4;
+ uint64_t lboot_oci : 3; /**< [ 32: 30](R/W1C/H) Reserved.
+ Internal:
+ Last boot cause mask for CCPI; resets only with PLL_DC_OK.
+ \<32\> = Warm reset due to CCPI link 2 going down.
+ \<31\> = Warm reset due to CCPI link 1 going down.
+ \<30\> = Warm reset due to CCPI link 0 going down. */
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Coprocessor-clock multiplier. [PNR_MUL] = (coprocessor-clock speed) /(ref-clock speed).
+ The value ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [PNR_MUL] is set from the pi_pnr_pll_mul pins plus 6 and is limited by a set of
+ fuses[122:119]. If the fuse value is \> 0, it is compared with the pi_pnr_pll_mul[4:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_39 : 1;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Core-clock multiplier. [C_MUL] = (core-clock speed) / (ref-clock speed). The value
+ ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [C_MUL] is set from the pi_pll_mul pins plus 6 and is limited by a set of
+ fuses[127:123]. If the fuse value is \> 0, it is compared with the pi_pll_mul[5:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_47_54 : 8;
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When written to 1, and FUSF_CTL[ROT_LCK] = 1, reads as 1 and scan is not
+ allowed in the part.
+ This state persists across soft and warm resets.
+
+ Internal:
+ This state will persist across a simulation */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to (!trusted_mode && FUSF_CTL[FJ_DIS_HUK]).
+
+ Software must write a one to this bit when the chain of trust is broken. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](RO) Reserved. */
+ uint64_t jt_tstmode : 1; /**< [ 58: 58](RO) JTAG test mode. */
+ uint64_t ckill_ppdis : 1; /**< [ 59: 59](R/W) Chipkill core disable. When set to 1, cores other than core 0 will immediately
+ be disabled when RST_BOOT[CHIPKILL] is set. Writes have no effect when
+ RST_BOOT[CHIPKILL]=1. */
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO) When set, chip is operating as a trusted device. This bit is asserted when
+ either MIO_FUS_DAT2[TRUSTZONE_EN], FUSF_CTL[TZ_FORCE2], or the trusted-mode
+ strap GPIO_STRAP\<10\> are set. */
+ uint64_t ejtagdis : 1; /**< [ 61: 61](R/W) Reserved. */
+ uint64_t jtcsrdis : 1; /**< [ 62: 62](R/W) JTAG CSR disable. When set to 1, during the next warm or soft reset the JTAG TAP
+ controller will be disabled, i.e. DAP_IMP_DAR will be 0. This field resets to 1
+ in trusted-mode, else 0. */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A 0-to-1 transition of CHIPKILL starts the CHIPKILL timer. When CHIPKILL=1 and the timer
+ expires, chip reset is asserted internally. The CHIPKILL timer can be stopped only by
+ a reset (cold, warm, soft). The length of the CHIPKILL timer is specified by
+ RST_CKILL[TIMER]. This feature is effectively a delayed warm reset. */
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_rst_boot_cn88xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A 0-to-1 transition of CHIPKILL starts the CHIPKILL timer. When CHIPKILL=1 and the timer
+ expires, chip reset is asserted internally. The CHIPKILL timer can be stopped only by
+ a reset (cold, warm, soft). The length of the CHIPKILL timer is specified by
+ RST_CKILL[TIMER]. This feature is effectively a delayed warm reset. */
+ uint64_t jtcsrdis : 1; /**< [ 62: 62](R/W) JTAG CSR disable. When set to 1, during the next warm or soft reset the JTAG TAP
+ controller will be disabled, i.e. DAP_IMP_DAR will be 0. This field resets to 1
+ in trusted-mode, else 0. */
+ uint64_t ejtagdis : 1; /**< [ 61: 61](R/W) Reserved. */
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO) When set, chip is operating as a trusted device. This bit is asserted when
+ either MIO_FUS_DAT2[TRUSTZONE_EN], FUSF_CTL[TZ_FORCE2], or the trusted-mode
+ strap GPIO_STRAP\<10\> are set. */
+ uint64_t ckill_ppdis : 1; /**< [ 59: 59](R/W) Chipkill core disable. When set to 1, cores other than core 0 will immediately
+ be disabled when RST_BOOT[CHIPKILL] is set. Writes have no effect when
+ RST_BOOT[CHIPKILL]=1. */
+ uint64_t jt_tstmode : 1; /**< [ 58: 58](RO) JTAG test mode. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](RO) VRM error. VRM did not complete operations within 5.25ms of PLL_DC_OK being
+ asserted. PLLs were released automatically. */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to (!trusted_mode && FUSF_CTL[FJ_DIS_HUK]).
+
+ Software must write a one to this bit when the chain of trust is broken. */
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When written to 1, and FUSF_CTL[ROT_LCK] = 1, reads as 1 and scan is not
+ allowed in the part.
+ This state persists across soft and warm resets.
+
+ Internal:
+ This state will persist across a simulation */
+ uint64_t reserved_47_54 : 8;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Core-clock multiplier. [C_MUL] = (core-clock speed) / (ref-clock speed). The value
+ ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [C_MUL] is set from the pi_pll_mul pins plus 6 and is limited by a set of
+ fuses[127:123]. If the fuse value is \> 0, it is compared with the pi_pll_mul[5:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_39 : 1;
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Coprocessor-clock multiplier. [PNR_MUL] = (coprocessor-clock speed) /(ref-clock speed).
+ The value ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [PNR_MUL] is set from the pi_pnr_pll_mul pins plus 6 and is limited by a set of
+ fuses[122:119]. If the fuse value is \> 0, it is compared with the pi_pnr_pll_mul[4:1]
+ pins and the smaller value is used. */
+ uint64_t lboot_oci : 3; /**< [ 32: 30](R/W1C/H) Last boot cause mask for CCPI; resets only with PLL_DC_OK.
+ \<32\> = Warm reset due to CCPI link 2 going down.
+ \<31\> = Warm reset due to CCPI link 1 going down.
+ \<30\> = Warm reset due to CCPI link 0 going down. */
+ uint64_t reserved_26_29 : 4;
+ uint64_t reserved_24_25 : 2;
+ uint64_t lboot_ext45 : 6; /**< [ 23: 18](R/W1C/H) Last boot cause mask for PEM5 and PEM4; resets only with PLL_DC_OK.
+ \<23\> = Warm reset due to Cntl5 link-down or hot-reset.
+ \<22\> = Warm reset due to Cntl4 link-down or hot-reset.
+ \<21\> = Cntl5 reset due to PERST5_L pin.
+ \<20\> = Cntl4 reset due to PERST4_L pin.
+ \<19\> = Warm reset due to PERST5_L pin.
+ \<18\> = Warm reset due to PERST4_L pin. */
+ uint64_t lboot_ext23 : 6; /**< [ 17: 12](R/W1C/H) Last boot cause mask for PEM3 and PEM2; resets only with PLL_DC_OK.
+ \<17\> = Warm reset due to Cntl3 link-down or hot-reset.
+ \<16\> = Warm reset due to Cntl2 link-down or hot-reset.
+ \<15\> = Cntl3 reset due to PERST3_L pin.
+ \<14\> = Cntl2 reset due to PERST2_L pin.
+ \<13\> = Warm reset due to PERST3_L pin.
+ \<12\> = Warm reset due to PERST2_L pin. */
+ uint64_t lboot : 10; /**< [ 11: 2](R/W1C/H) Last boot cause mask for PEM1 and PEM0; resets only with PLL_DC_OK.
+ \<11\> = Soft reset due to watchdog.
+ \<10\> = Soft reset due to RST_SOFT_RST write.
+ \<9\> = Warm reset due to Cntl1 link-down or hot-reset.
+ \<8\> = Warm reset due to Cntl0 link-down or hot-reset.
+ \<7\> = Cntl1 reset due to PERST1_L pin.
+ \<6\> = Cntl0 reset due to PERST0_L pin.
+ \<5\> = Warm reset due to PERST1_L pin.
+ \<4\> = Warm reset due to PERST0_L pin.
+ \<3\> = Warm reset due to CHIP_RESET_L pin.
+ \<2\> = Cold reset due to PLL_DC_OK pin. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W) Remote boot. If set, indicates that core 0 will remain in reset after a
+ chip warm/soft reset. The initial value mimics the setting of the [RBOOT_PIN]. */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO/H) Remote Boot strap. Indicates the state of remote boot as initially determined by
+ GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE. If set core 0 will remain in reset
+ for the cold reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO/H) Remote Boot strap. Indicates the state of remote boot as initially determined by
+ GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE. If set core 0 will remain in reset
+ for the cold reset. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W) Remote boot. If set, indicates that core 0 will remain in reset after a
+ chip warm/soft reset. The initial value mimics the setting of the [RBOOT_PIN]. */
+ uint64_t lboot : 10; /**< [ 11: 2](R/W1C/H) Last boot cause mask for PEM1 and PEM0; resets only with PLL_DC_OK.
+ \<11\> = Soft reset due to watchdog.
+ \<10\> = Soft reset due to RST_SOFT_RST write.
+ \<9\> = Warm reset due to Cntl1 link-down or hot-reset.
+ \<8\> = Warm reset due to Cntl0 link-down or hot-reset.
+ \<7\> = Cntl1 reset due to PERST1_L pin.
+ \<6\> = Cntl0 reset due to PERST0_L pin.
+ \<5\> = Warm reset due to PERST1_L pin.
+ \<4\> = Warm reset due to PERST0_L pin.
+ \<3\> = Warm reset due to CHIP_RESET_L pin.
+ \<2\> = Cold reset due to PLL_DC_OK pin. */
+ uint64_t lboot_ext23 : 6; /**< [ 17: 12](R/W1C/H) Last boot cause mask for PEM3 and PEM2; resets only with PLL_DC_OK.
+ \<17\> = Warm reset due to Cntl3 link-down or hot-reset.
+ \<16\> = Warm reset due to Cntl2 link-down or hot-reset.
+ \<15\> = Cntl3 reset due to PERST3_L pin.
+ \<14\> = Cntl2 reset due to PERST2_L pin.
+ \<13\> = Warm reset due to PERST3_L pin.
+ \<12\> = Warm reset due to PERST2_L pin. */
+ uint64_t lboot_ext45 : 6; /**< [ 23: 18](R/W1C/H) Last boot cause mask for PEM5 and PEM4; resets only with PLL_DC_OK.
+ \<23\> = Warm reset due to Cntl5 link-down or hot-reset.
+ \<22\> = Warm reset due to Cntl4 link-down or hot-reset.
+ \<21\> = Cntl5 reset due to PERST5_L pin.
+ \<20\> = Cntl4 reset due to PERST4_L pin.
+ \<19\> = Warm reset due to PERST5_L pin.
+ \<18\> = Warm reset due to PERST4_L pin. */
+ uint64_t reserved_24_25 : 2;
+ uint64_t reserved_26_29 : 4;
+ uint64_t lboot_oci : 3; /**< [ 32: 30](R/W1C/H) Last boot cause mask for CCPI; resets only with PLL_DC_OK.
+ \<32\> = Warm reset due to CCPI link 2 going down.
+ \<31\> = Warm reset due to CCPI link 1 going down.
+ \<30\> = Warm reset due to CCPI link 0 going down. */
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Coprocessor-clock multiplier. [PNR_MUL] = (coprocessor-clock speed) /(ref-clock speed).
+ The value ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [PNR_MUL] is set from the pi_pnr_pll_mul pins plus 6 and is limited by a set of
+ fuses[122:119]. If the fuse value is \> 0, it is compared with the pi_pnr_pll_mul[4:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_39 : 1;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Core-clock multiplier. [C_MUL] = (core-clock speed) / (ref-clock speed). The value
+ ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [C_MUL] is set from the pi_pll_mul pins plus 6 and is limited by a set of
+ fuses[127:123]. If the fuse value is \> 0, it is compared with the pi_pll_mul[5:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_47_54 : 8;
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When written to 1, and FUSF_CTL[ROT_LCK] = 1, reads as 1 and scan is not
+ allowed in the part.
+ This state persists across soft and warm resets.
+
+ Internal:
+ This state will persist across a simulation */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to (!trusted_mode && FUSF_CTL[FJ_DIS_HUK]).
+
+ Software must write a one to this bit when the chain of trust is broken. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](RO) VRM error. VRM did not complete operations within 5.25ms of PLL_DC_OK being
+ asserted. PLLs were released automatically. */
+ uint64_t jt_tstmode : 1; /**< [ 58: 58](RO) JTAG test mode. */
+ uint64_t ckill_ppdis : 1; /**< [ 59: 59](R/W) Chipkill core disable. When set to 1, cores other than core 0 will immediately
+ be disabled when RST_BOOT[CHIPKILL] is set. Writes have no effect when
+ RST_BOOT[CHIPKILL]=1. */
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO) When set, chip is operating as a trusted device. This bit is asserted when
+ either MIO_FUS_DAT2[TRUSTZONE_EN], FUSF_CTL[TZ_FORCE2], or the trusted-mode
+ strap GPIO_STRAP\<10\> are set. */
+ uint64_t ejtagdis : 1; /**< [ 61: 61](R/W) Reserved. */
+ uint64_t jtcsrdis : 1; /**< [ 62: 62](R/W) JTAG CSR disable. When set to 1, during the next warm or soft reset the JTAG TAP
+ controller will be disabled, i.e. DAP_IMP_DAR will be 0. This field resets to 1
+ in trusted-mode, else 0. */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A 0-to-1 transition of CHIPKILL starts the CHIPKILL timer. When CHIPKILL=1 and the timer
+ expires, chip reset is asserted internally. The CHIPKILL timer can be stopped only by
+ a reset (cold, warm, soft). The length of the CHIPKILL timer is specified by
+ RST_CKILL[TIMER]. This feature is effectively a delayed warm reset. */
+#endif /* Word 0 - End */
+ } cn88xx;
+ struct bdk_rst_boot_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A 0-to-1 transition of CHIPKILL starts the CHIPKILL timer. When CHIPKILL=1 and the timer
+ expires, chip reset is asserted internally. The CHIPKILL timer can be stopped only by
+ a reset (cold, warm, soft). The length of the CHIPKILL timer is specified by
+ RST_CKILL[TIMER]. This feature is effectively a delayed warm reset. */
+ uint64_t jtcsrdis : 1; /**< [ 62: 62](R/W) JTAG CSR disable. When set to 1, during the next warm or soft reset the JTAG TAP
+ controller will be disabled, i.e. DAP_IMP_DAR will be 0. This field resets to 1
+ in trusted-mode, else 0. */
+ uint64_t ejtagdis : 1; /**< [ 61: 61](R/W) Reserved. */
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO) When set, chip is operating as a trusted device. This bit is asserted when
+ either MIO_FUS_DAT2[TRUSTZONE_EN], FUSF_CTL[TZ_FORCE2], or the trusted-mode
+ strap GPIO_STRAP\<10\> are set. */
+ uint64_t ckill_ppdis : 1; /**< [ 59: 59](R/W) Chipkill core disable. When set to 1, cores other than core 0 will immediately
+ be disabled when RST_BOOT[CHIPKILL] is set. Writes have no effect when
+ RST_BOOT[CHIPKILL]=1. */
+ uint64_t jt_tstmode : 1; /**< [ 58: 58](RO) JTAG test mode. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](RO) VRM error. VRM did not complete operations within 5.25ms of PLL_DC_OK being
+ asserted. PLLs were released automatically. */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to (!trusted_mode && FUSF_CTL[FJ_DIS_HUK]).
+
+ Software must write a one to this bit when the chain of trust is broken. */
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When written to 1, and FUSF_CTL[ROT_LCK] = 1, reads as 1 and scan is not
+ allowed in the part.
+ This state persists across soft and warm resets.
+
+ Internal:
+ This state will persist across a simulation */
+ uint64_t reserved_47_54 : 8;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Core-clock multiplier. [C_MUL] = (core-clock speed) / (ref-clock speed). The value
+ ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [C_MUL] is set from the pi_pll_mul pins plus 6 and is limited by a set of
+ fuses[127:123]. If the fuse value is \> 0, it is compared with the pi_pll_mul[5:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_39 : 1;
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Coprocessor-clock multiplier. [PNR_MUL] = (coprocessor-clock speed) /(ref-clock speed).
+ The value ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [PNR_MUL] is set from the pi_pnr_pll_mul pins plus 6 and is limited by a set of
+ fuses[122:119]. If the fuse value is \> 0, it is compared with the pi_pnr_pll_mul[4:1]
+ pins and the smaller value is used. */
+ uint64_t lboot_oci : 3; /**< [ 32: 30](R/W1C/H) Reserved.
+ Internal:
+ Last boot cause mask for CCPI; resets only with PLL_DC_OK.
+ \<32\> = Warm reset due to CCPI link 2 going down.
+ \<31\> = Warm reset due to CCPI link 1 going down.
+ \<30\> = Warm reset due to CCPI link 0 going down. */
+ uint64_t lboot_pf_flr : 4; /**< [ 29: 26](R/W1C/H) Last boot cause was caused by a PF Function Level Reset event.
+ \<29\> = Warm reset due to PF FLR on PEM3.
+ \<28\> = Warm reset due to PF FLR on PEM2.
+ \<27\> = Warm reset due to PF FLR on PEM1.
+ \<26\> = Warm reset due to PF FLR on PEM0. */
+ uint64_t lboot_ckill : 1; /**< [ 25: 25](R/W1C/H) Last boot cause was chip kill timer expiring. See RST_BOOT[CHIPKILL]. */
+ uint64_t lboot_jtg : 1; /**< [ 24: 24](R/W1C/H) Last boot cause was write to JTG reset. */
+ uint64_t lboot_ext45 : 6; /**< [ 23: 18](R/W1C/H) Reserved. */
+ uint64_t lboot_ext23 : 6; /**< [ 17: 12](R/W1C/H) Last boot cause mask for PEM3 and PEM2; resets only with PLL_DC_OK.
+ \<17\> = Warm reset due to Cntl3 link-down or hot-reset.
+ \<16\> = Warm reset due to Cntl2 link-down or hot-reset.
+ \<15\> = Cntl3 reset due to PERST3_L pin.
+ \<14\> = Cntl2 reset due to PERST2_L pin.
+ \<13\> = Warm reset due to PERST3_L pin.
+ \<12\> = Warm reset due to PERST2_L pin. */
+ uint64_t lboot : 10; /**< [ 11: 2](R/W1C/H) Last boot cause mask for PEM1 and PEM0; resets only with PLL_DC_OK.
+ \<11\> = Soft reset due to watchdog.
+ \<10\> = Soft reset due to RST_SOFT_RST write.
+ \<9\> = Warm reset due to Cntl1 link-down or hot-reset.
+ \<8\> = Warm reset due to Cntl0 link-down or hot-reset.
+ \<7\> = Cntl1 reset due to PERST1_L pin.
+ \<6\> = Cntl0 reset due to PERST0_L pin.
+ \<5\> = Warm reset due to PERST1_L pin.
+ \<4\> = Warm reset due to PERST0_L pin.
+ \<3\> = Warm reset due to CHIP_RESET_L pin.
+ \<2\> = Cold reset due to PLL_DC_OK pin. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W) Remote boot. If set, indicates that core 0 will remain in reset after a
+ chip warm/soft reset. The initial value mimics the setting of the [RBOOT_PIN]. */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO/H) Remote Boot strap. Indicates the state of remote boot as initially determined by
+ GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE. If set core 0 will remain in reset
+ for the cold reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rboot_pin : 1; /**< [ 0: 0](RO/H) Remote Boot strap. Indicates the state of remote boot as initially determined by
+ GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE. If set core 0 will remain in reset
+ for the cold reset. */
+ uint64_t rboot : 1; /**< [ 1: 1](R/W) Remote boot. If set, indicates that core 0 will remain in reset after a
+ chip warm/soft reset. The initial value mimics the setting of the [RBOOT_PIN]. */
+ uint64_t lboot : 10; /**< [ 11: 2](R/W1C/H) Last boot cause mask for PEM1 and PEM0; resets only with PLL_DC_OK.
+ \<11\> = Soft reset due to watchdog.
+ \<10\> = Soft reset due to RST_SOFT_RST write.
+ \<9\> = Warm reset due to Cntl1 link-down or hot-reset.
+ \<8\> = Warm reset due to Cntl0 link-down or hot-reset.
+ \<7\> = Cntl1 reset due to PERST1_L pin.
+ \<6\> = Cntl0 reset due to PERST0_L pin.
+ \<5\> = Warm reset due to PERST1_L pin.
+ \<4\> = Warm reset due to PERST0_L pin.
+ \<3\> = Warm reset due to CHIP_RESET_L pin.
+ \<2\> = Cold reset due to PLL_DC_OK pin. */
+ uint64_t lboot_ext23 : 6; /**< [ 17: 12](R/W1C/H) Last boot cause mask for PEM3 and PEM2; resets only with PLL_DC_OK.
+ \<17\> = Warm reset due to Cntl3 link-down or hot-reset.
+ \<16\> = Warm reset due to Cntl2 link-down or hot-reset.
+ \<15\> = Cntl3 reset due to PERST3_L pin.
+ \<14\> = Cntl2 reset due to PERST2_L pin.
+ \<13\> = Warm reset due to PERST3_L pin.
+ \<12\> = Warm reset due to PERST2_L pin. */
+ uint64_t lboot_ext45 : 6; /**< [ 23: 18](R/W1C/H) Reserved. */
+ uint64_t lboot_jtg : 1; /**< [ 24: 24](R/W1C/H) Last boot cause was write to JTG reset. */
+ uint64_t lboot_ckill : 1; /**< [ 25: 25](R/W1C/H) Last boot cause was chip kill timer expiring. See RST_BOOT[CHIPKILL]. */
+ uint64_t lboot_pf_flr : 4; /**< [ 29: 26](R/W1C/H) Last boot cause was caused by a PF Function Level Reset event.
+ \<29\> = Warm reset due to PF FLR on PEM3.
+ \<28\> = Warm reset due to PF FLR on PEM2.
+ \<27\> = Warm reset due to PF FLR on PEM1.
+ \<26\> = Warm reset due to PF FLR on PEM0. */
+ uint64_t lboot_oci : 3; /**< [ 32: 30](R/W1C/H) Reserved.
+ Internal:
+ Last boot cause mask for CCPI; resets only with PLL_DC_OK.
+ \<32\> = Warm reset due to CCPI link 2 going down.
+ \<31\> = Warm reset due to CCPI link 1 going down.
+ \<30\> = Warm reset due to CCPI link 0 going down. */
+ uint64_t pnr_mul : 6; /**< [ 38: 33](RO/H) Coprocessor-clock multiplier. [PNR_MUL] = (coprocessor-clock speed) /(ref-clock speed).
+ The value ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [PNR_MUL] is set from the pi_pnr_pll_mul pins plus 6 and is limited by a set of
+ fuses[122:119]. If the fuse value is \> 0, it is compared with the pi_pnr_pll_mul[4:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_39 : 1;
+ uint64_t c_mul : 7; /**< [ 46: 40](RO/H) Core-clock multiplier. [C_MUL] = (core-clock speed) / (ref-clock speed). The value
+ ref-clock speed should always be 50 MHz.
+
+ Internal:
+ [C_MUL] is set from the pi_pll_mul pins plus 6 and is limited by a set of
+ fuses[127:123]. If the fuse value is \> 0, it is compared with the pi_pll_mul[5:1]
+ pins and the smaller value is used. */
+ uint64_t reserved_47_54 : 8;
+ uint64_t dis_scan : 1; /**< [ 55: 55](R/W1S) Disable scan. When written to 1, and FUSF_CTL[ROT_LCK] = 1, reads as 1 and scan is not
+ allowed in the part.
+ This state persists across soft and warm resets.
+
+ Internal:
+ This state will persist across a simulation */
+ uint64_t dis_huk : 1; /**< [ 56: 56](R/W1S) Disable HUK. Secure only and W1S set-only. When set FUSF_SSK(),
+ FUSF_HUK(), FUSF_EK(), and FUSF_SW() cannot be read.
+ Resets to (!trusted_mode && FUSF_CTL[FJ_DIS_HUK]).
+
+ Software must write a one to this bit when the chain of trust is broken. */
+ uint64_t vrm_err : 1; /**< [ 57: 57](RO) VRM error. VRM did not complete operations within 5.25ms of PLL_DC_OK being
+ asserted. PLLs were released automatically. */
+ uint64_t jt_tstmode : 1; /**< [ 58: 58](RO) JTAG test mode. */
+ uint64_t ckill_ppdis : 1; /**< [ 59: 59](R/W) Chipkill core disable. When set to 1, cores other than core 0 will immediately
+ be disabled when RST_BOOT[CHIPKILL] is set. Writes have no effect when
+ RST_BOOT[CHIPKILL]=1. */
+ uint64_t trusted_mode : 1; /**< [ 60: 60](RO) When set, chip is operating as a trusted device. This bit is asserted when
+ either MIO_FUS_DAT2[TRUSTZONE_EN], FUSF_CTL[TZ_FORCE2], or the trusted-mode
+ strap GPIO_STRAP\<10\> are set. */
+ uint64_t ejtagdis : 1; /**< [ 61: 61](R/W) Reserved. */
+ uint64_t jtcsrdis : 1; /**< [ 62: 62](R/W) JTAG CSR disable. When set to 1, during the next warm or soft reset the JTAG TAP
+ controller will be disabled, i.e. DAP_IMP_DAR will be 0. This field resets to 1
+ in trusted-mode, else 0. */
+ uint64_t chipkill : 1; /**< [ 63: 63](R/W1S) A 0-to-1 transition of CHIPKILL starts the CHIPKILL timer. When CHIPKILL=1 and the timer
+ expires, chip reset is asserted internally. The CHIPKILL timer can be stopped only by
+ a reset (cold, warm, soft). The length of the CHIPKILL timer is specified by
+ RST_CKILL[TIMER]. This feature is effectively a delayed warm reset. */
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_boot bdk_rst_boot_t;
+
+#define BDK_RST_BOOT BDK_RST_BOOT_FUNC()
+static inline uint64_t BDK_RST_BOOT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_BOOT_FUNC(void)
+{
+ return 0x87e006001600ll;
+}
+
+#define typedef_BDK_RST_BOOT bdk_rst_boot_t
+#define bustype_BDK_RST_BOOT BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_BOOT "RST_BOOT"
+#define device_bar_BDK_RST_BOOT 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_BOOT 0
+#define arguments_BDK_RST_BOOT -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_boot_status
+ *
+ * RST Boot Status Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_boot_status
+{
+ uint64_t u;
+ struct bdk_rst_boot_status_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t stat3 : 16; /**< [ 63: 48](R/W) JTAG accessible boot status word one. Used by software to indicate progress of
+ boot. Accessible via JTG/DTX with offset 17.
+
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t stat2 : 16; /**< [ 47: 32](R/W) JTAG accessible boot status word one. Used by software to indicate progress of
+ boot. Accessible via JTG/DTX with offset 16.
+
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t stat1 : 16; /**< [ 31: 16](R/W) JTAG accessible boot status word one. Used by software to indicate progress of
+ boot. Accessible via JTG/DTX with offset 13.
+
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t stat0 : 16; /**< [ 15: 0](R/W) JTAG accessable boot status word zero. Used by software to indicate progress of
+ boot. Accessable via JTG/DTX with offset 12.
+
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t stat0 : 16; /**< [ 15: 0](R/W) JTAG accessable boot status word zero. Used by software to indicate progress of
+ boot. Accessable via JTG/DTX with offset 12.
+
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t stat1 : 16; /**< [ 31: 16](R/W) JTAG accessible boot status word one. Used by software to indicate progress of
+ boot. Accessible via JTG/DTX with offset 13.
+
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t stat2 : 16; /**< [ 47: 32](R/W) JTAG accessible boot status word one. Used by software to indicate progress of
+ boot. Accessible via JTG/DTX with offset 16.
+
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t stat3 : 16; /**< [ 63: 48](R/W) JTAG accessible boot status word one. Used by software to indicate progress of
+ boot. Accessible via JTG/DTX with offset 17.
+
+ This field is always reinitialized on a chip domain reset. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_boot_status_s cn; */
+};
+typedef union bdk_rst_boot_status bdk_rst_boot_status_t;
+
+#define BDK_RST_BOOT_STATUS BDK_RST_BOOT_STATUS_FUNC()
+static inline uint64_t BDK_RST_BOOT_STATUS_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_BOOT_STATUS_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001800ll;
+ __bdk_csr_fatal("RST_BOOT_STATUS", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_BOOT_STATUS bdk_rst_boot_status_t
+#define bustype_BDK_RST_BOOT_STATUS BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_BOOT_STATUS "RST_BOOT_STATUS"
+#define device_bar_BDK_RST_BOOT_STATUS 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_BOOT_STATUS 0
+#define arguments_BDK_RST_BOOT_STATUS -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_cfg
+ *
+ * RST Configuration Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_cfg
+{
+ uint64_t u;
+ struct bdk_rst_cfg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t bist_delay : 58; /**< [ 63: 6](RO/H) Reserved. */
+ uint64_t reserved_3_5 : 3;
+ uint64_t cntl_clr_bist : 1; /**< [ 2: 2](R/W) Perform clear BIST during control-only reset, instead of a full BIST. A warm/soft reset
+ does not change this field. */
+ uint64_t warm_clr_bist : 1; /**< [ 1: 1](R/W) Perform clear BIST during warm reset, instead of a full BIST. A warm/soft reset does not
+ change this field. Note that a cold reset always performs a full BIST. */
+ uint64_t reserved_0 : 1;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0 : 1;
+ uint64_t warm_clr_bist : 1; /**< [ 1: 1](R/W) Perform clear BIST during warm reset, instead of a full BIST. A warm/soft reset does not
+ change this field. Note that a cold reset always performs a full BIST. */
+ uint64_t cntl_clr_bist : 1; /**< [ 2: 2](R/W) Perform clear BIST during control-only reset, instead of a full BIST. A warm/soft reset
+ does not change this field. */
+ uint64_t reserved_3_5 : 3;
+ uint64_t bist_delay : 58; /**< [ 63: 6](RO/H) Reserved. */
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_cfg_cn8
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t bist_delay : 58; /**< [ 63: 6](RO/H) Reserved. */
+ uint64_t reserved_3_5 : 3;
+ uint64_t cntl_clr_bist : 1; /**< [ 2: 2](R/W) Perform clear BIST during control-only reset, instead of a full BIST. A warm/soft reset
+ does not change this field. */
+ uint64_t warm_clr_bist : 1; /**< [ 1: 1](R/W) Perform clear BIST during warm reset, instead of a full BIST. A warm/soft reset does not
+ change this field. Note that a cold reset always performs a full BIST. */
+ uint64_t soft_clr_bist : 1; /**< [ 0: 0](R/W) Perform clear BIST during soft reset, instead of a full BIST. A warm/soft reset does not
+ change this field. Note that a cold reset always performs a full BIST. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_clr_bist : 1; /**< [ 0: 0](R/W) Perform clear BIST during soft reset, instead of a full BIST. A warm/soft reset does not
+ change this field. Note that a cold reset always performs a full BIST. */
+ uint64_t warm_clr_bist : 1; /**< [ 1: 1](R/W) Perform clear BIST during warm reset, instead of a full BIST. A warm/soft reset does not
+ change this field. Note that a cold reset always performs a full BIST. */
+ uint64_t cntl_clr_bist : 1; /**< [ 2: 2](R/W) Perform clear BIST during control-only reset, instead of a full BIST. A warm/soft reset
+ does not change this field. */
+ uint64_t reserved_3_5 : 3;
+ uint64_t bist_delay : 58; /**< [ 63: 6](RO/H) Reserved. */
+#endif /* Word 0 - End */
+ } cn8;
+ struct bdk_rst_cfg_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t clr_bist : 1; /**< [ 0: 0](R/W) Perform clear BIST on each chip domain reset, instead of a full BIST.
+ Note that the first BIST during a cold domain reset is always a full BIST.
+ This field is reinitialized with a cold domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t clr_bist : 1; /**< [ 0: 0](R/W) Perform clear BIST on each chip domain reset, instead of a full BIST.
+ Note that the first BIST during a cold domain reset is always a full BIST.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_cfg bdk_rst_cfg_t;
+
+#define BDK_RST_CFG BDK_RST_CFG_FUNC()
+static inline uint64_t BDK_RST_CFG_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CFG_FUNC(void)
+{
+ return 0x87e006001610ll;
+}
+
+#define typedef_BDK_RST_CFG bdk_rst_cfg_t
+#define bustype_BDK_RST_CFG BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CFG "RST_CFG"
+#define device_bar_BDK_RST_CFG 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_CFG 0
+#define arguments_BDK_RST_CFG -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_chip_domain_w1s
+ *
+ * RST Chip Domain Soft Pulse Reset Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_chip_domain_w1s
+{
+ uint64_t u;
+ struct bdk_rst_chip_domain_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Soft reset of entire chip.
+ When set to one, places the entire chip into reset. At the completion
+ of the reset the field is cleared. This is similar to asserting and
+ deasserting the CHIP_RESET_L pin.
+ When performing a reset, set this bit and then read any register to
+ confirm that chip is out of reset.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Soft reset of entire chip.
+ When set to one, places the entire chip into reset. At the completion
+ of the reset the field is cleared. This is similar to asserting and
+ deasserting the CHIP_RESET_L pin.
+ When performing a reset, set this bit and then read any register to
+ confirm that chip is out of reset.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_chip_domain_w1s_s cn; */
+};
+typedef union bdk_rst_chip_domain_w1s bdk_rst_chip_domain_w1s_t;
+
+#define BDK_RST_CHIP_DOMAIN_W1S BDK_RST_CHIP_DOMAIN_W1S_FUNC()
+static inline uint64_t BDK_RST_CHIP_DOMAIN_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CHIP_DOMAIN_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001810ll;
+ __bdk_csr_fatal("RST_CHIP_DOMAIN_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_CHIP_DOMAIN_W1S bdk_rst_chip_domain_w1s_t
+#define bustype_BDK_RST_CHIP_DOMAIN_W1S BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CHIP_DOMAIN_W1S "RST_CHIP_DOMAIN_W1S"
+#define device_bar_BDK_RST_CHIP_DOMAIN_W1S 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_CHIP_DOMAIN_W1S 0
+#define arguments_BDK_RST_CHIP_DOMAIN_W1S -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_ckill
+ *
+ * RST Chipkill Timer Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_ckill
+{
+ uint64_t u;
+ struct bdk_rst_ckill_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_47_63 : 17;
+ uint64_t timer : 47; /**< [ 46: 0](R/W/H) Chipkill timer measured in coprocessor-clock cycles. Read requests return
+ current chipkill timer. Write operations have no effect when RST_BOOT[CHIPKILL]
+ = 1. */
+#else /* Word 0 - Little Endian */
+ uint64_t timer : 47; /**< [ 46: 0](R/W/H) Chipkill timer measured in coprocessor-clock cycles. Read requests return
+ current chipkill timer. Write operations have no effect when RST_BOOT[CHIPKILL]
+ = 1. */
+ uint64_t reserved_47_63 : 17;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_ckill_s cn8; */
+ struct bdk_rst_ckill_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_47_63 : 17;
+ uint64_t timer : 47; /**< [ 46: 0](R/W/H) Chipkill timer measured in 100 MHz PLL reference clocks. Read
+ requests return current chip kill timer. Write operations have
+ no effect when RST_BOOT[CHIPKILL] is set.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t timer : 47; /**< [ 46: 0](R/W/H) Chipkill timer measured in 100 MHz PLL reference clocks. Read
+ requests return current chip kill timer. Write operations have
+ no effect when RST_BOOT[CHIPKILL] is set.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_47_63 : 17;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_ckill bdk_rst_ckill_t;
+
+#define BDK_RST_CKILL BDK_RST_CKILL_FUNC()
+static inline uint64_t BDK_RST_CKILL_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CKILL_FUNC(void)
+{
+ return 0x87e006001638ll;
+}
+
+#define typedef_BDK_RST_CKILL bdk_rst_ckill_t
+#define bustype_BDK_RST_CKILL BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CKILL "RST_CKILL"
+#define device_bar_BDK_RST_CKILL 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_CKILL 0
+#define arguments_BDK_RST_CKILL -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_cold_data#
+ *
+ * RST Cold Reset Data Registers
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_cold_datax
+{
+ uint64_t u;
+ struct bdk_rst_cold_datax_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W) Scratch data registers preserved through warm reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W) Scratch data registers preserved through warm reset. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_cold_datax_s cn8; */
+ struct bdk_rst_cold_datax_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W) Scratch data registers preserved through chip, core,
+ MCP and SCP domain resets.
+ This field is always reinitialized on a cold domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W) Scratch data registers preserved through chip, core,
+ MCP and SCP domain resets.
+ This field is always reinitialized on a cold domain reset. */
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_cold_datax bdk_rst_cold_datax_t;
+
+static inline uint64_t BDK_RST_COLD_DATAX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_COLD_DATAX(unsigned long a)
+{
+ if (a<=5)
+ return 0x87e0060017c0ll + 8ll * ((a) & 0x7);
+ __bdk_csr_fatal("RST_COLD_DATAX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_COLD_DATAX(a) bdk_rst_cold_datax_t
+#define bustype_BDK_RST_COLD_DATAX(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_COLD_DATAX(a) "RST_COLD_DATAX"
+#define device_bar_BDK_RST_COLD_DATAX(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_COLD_DATAX(a) (a)
+#define arguments_BDK_RST_COLD_DATAX(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) rst_cold_domain_w1s
+ *
+ * RST Cold Domain Pulse Reset Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_cold_domain_w1s
+{
+ uint64_t u;
+ struct bdk_rst_cold_domain_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Soft reset of entire chip emulating a cold domain reset.
+ When set to one, places the entire chip into reset. At the completion
+ of the reset the field is cleared.
+ This action is similar to deasserting and asserting PLL_DCOK with the
+ exception that external pins are not sampled again.
+ When performing a reset, set this bit and
+ then read any register to confirm that chip is out of reset.
+ This field is always reinitialized on a cold domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Soft reset of entire chip emulating a cold domain reset.
+ When set to one, places the entire chip into reset. At the completion
+ of the reset the field is cleared.
+ This action is similar to deasserting and asserting PLL_DCOK with the
+ exception that external pins are not sampled again.
+ When performing a reset, set this bit and
+ then read any register to confirm that chip is out of reset.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_cold_domain_w1s_s cn; */
+};
+typedef union bdk_rst_cold_domain_w1s bdk_rst_cold_domain_w1s_t;
+
+#define BDK_RST_COLD_DOMAIN_W1S BDK_RST_COLD_DOMAIN_W1S_FUNC()
+static inline uint64_t BDK_RST_COLD_DOMAIN_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_COLD_DOMAIN_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001808ll;
+ __bdk_csr_fatal("RST_COLD_DOMAIN_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_COLD_DOMAIN_W1S bdk_rst_cold_domain_w1s_t
+#define bustype_BDK_RST_COLD_DOMAIN_W1S BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_COLD_DOMAIN_W1S "RST_COLD_DOMAIN_W1S"
+#define device_bar_BDK_RST_COLD_DOMAIN_W1S 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_COLD_DOMAIN_W1S 0
+#define arguments_BDK_RST_COLD_DOMAIN_W1S -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_const
+ *
+ * RST Constant Register
+ * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_const
+{
+ uint64_t u;
+ struct bdk_rst_const_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_16_63 : 48;
+ uint64_t rst_devs : 8; /**< [ 15: 8](RO) Number of RST_DEV_E enumeration values supported, and size of RST_DEV_MAP(). */
+ uint64_t pems : 8; /**< [ 7: 0](RO) Number of PEMs supported by RST, and size of RST_CTL(), RST_SOFT_PRST(). */
+#else /* Word 0 - Little Endian */
+ uint64_t pems : 8; /**< [ 7: 0](RO) Number of PEMs supported by RST, and size of RST_CTL(), RST_SOFT_PRST(). */
+ uint64_t rst_devs : 8; /**< [ 15: 8](RO) Number of RST_DEV_E enumeration values supported, and size of RST_DEV_MAP(). */
+ uint64_t reserved_16_63 : 48;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_const_s cn; */
+};
+typedef union bdk_rst_const bdk_rst_const_t;
+
+#define BDK_RST_CONST BDK_RST_CONST_FUNC()
+static inline uint64_t BDK_RST_CONST_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CONST_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e0060018f8ll;
+ __bdk_csr_fatal("RST_CONST", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_CONST bdk_rst_const_t
+#define bustype_BDK_RST_CONST BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CONST "RST_CONST"
+#define device_bar_BDK_RST_CONST 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_CONST 0
+#define arguments_BDK_RST_CONST -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_core_domain_w1c
+ *
+ * RST Core Domain Soft Reset Clear Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_core_domain_w1c
+{
+ uint64_t u;
+ struct bdk_rst_core_domain_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1C/H) Clear soft reset of AP cores, cache, NCB and associated logic.
+ When set to one, the soft reset of the core is removed.
+ Reads of this register show the soft reset state. Not the actual core domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[CORE] shows
+ the actual reset state. To compensate for delays in reset, this field should only
+ be set if RST_RESET_ACTIVE[CORE] is set.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1C/H) Clear soft reset of AP cores, cache, NCB and associated logic.
+ When set to one, the soft reset of the core is removed.
+ Reads of this register show the soft reset state. Not the actual core domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[CORE] shows
+ the actual reset state. To compensate for delays in reset, this field should only
+ be set if RST_RESET_ACTIVE[CORE] is set.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_core_domain_w1c_s cn; */
+};
+typedef union bdk_rst_core_domain_w1c bdk_rst_core_domain_w1c_t;
+
+#define BDK_RST_CORE_DOMAIN_W1C BDK_RST_CORE_DOMAIN_W1C_FUNC()
+static inline uint64_t BDK_RST_CORE_DOMAIN_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CORE_DOMAIN_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001828ll;
+ __bdk_csr_fatal("RST_CORE_DOMAIN_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_CORE_DOMAIN_W1C bdk_rst_core_domain_w1c_t
+#define bustype_BDK_RST_CORE_DOMAIN_W1C BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CORE_DOMAIN_W1C "RST_CORE_DOMAIN_W1C"
+#define device_bar_BDK_RST_CORE_DOMAIN_W1C 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_CORE_DOMAIN_W1C 0
+#define arguments_BDK_RST_CORE_DOMAIN_W1C -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_core_domain_w1s
+ *
+ * RST Core Domain Soft Reset Set Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_core_domain_w1s
+{
+ uint64_t u;
+ struct bdk_rst_core_domain_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Set soft reset of AP cores, cache, NCB and associated logic.
+ When set to one, all logic associated with the core domain is placed in reset.
+ Reads of this register show the soft reset state. Not the actual core domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[CORE] shows
+ the actual reset state.
+ It is typically cleared by writing to RST_CORE_DOMAIN_W1C.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Set soft reset of AP cores, cache, NCB and associated logic.
+ When set to one, all logic associated with the core domain is placed in reset.
+ Reads of this register show the soft reset state. Not the actual core domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[CORE] shows
+ the actual reset state.
+ It is typically cleared by writing to RST_CORE_DOMAIN_W1C.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_core_domain_w1s_s cn; */
+};
+typedef union bdk_rst_core_domain_w1s bdk_rst_core_domain_w1s_t;
+
+#define BDK_RST_CORE_DOMAIN_W1S BDK_RST_CORE_DOMAIN_W1S_FUNC()
+static inline uint64_t BDK_RST_CORE_DOMAIN_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CORE_DOMAIN_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001820ll;
+ __bdk_csr_fatal("RST_CORE_DOMAIN_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_CORE_DOMAIN_W1S bdk_rst_core_domain_w1s_t
+#define bustype_BDK_RST_CORE_DOMAIN_W1S BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CORE_DOMAIN_W1S "RST_CORE_DOMAIN_W1S"
+#define device_bar_BDK_RST_CORE_DOMAIN_W1S 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_CORE_DOMAIN_W1S 0
+#define arguments_BDK_RST_CORE_DOMAIN_W1S -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_core_pll
+ *
+ * RST Core Clock PLL Control Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_core_pll
+{
+ uint64_t u;
+ struct bdk_rst_core_pll_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_51_63 : 13;
+ uint64_t cout_sel : 2; /**< [ 50: 49](R/W) Core clockout select.
+ 0x0 = Core clock divided by 16.
+ 0x1 = Core clock tree output divided by 16.
+ 0x2 = PLL0 output divided by 16.
+ 0x3 = PLL1 output divided by 16.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t cout_reset : 1; /**< [ 48: 48](R/W) Core clockout reset. The core clockout should be placed in
+ reset at least 10 PLL reference clocks prior
+ to changing [COUT_SEL]. It should remain under reset for at least 10
+ PLL reference clocks after [COUT_SEL] changes.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_45_47 : 3;
+ uint64_t pd_switch : 1; /**< [ 44: 44](R/W) PLL powerdown on switch. When set, hardware automatically
+ powers down the inactive PLL after the switch has occured.
+ When cleared, the inactive PLL remains in operation.
+ If [PD_SWITCH] is written to a one while both [DLY_SWITCH] and
+ [NXT_PGM] are cleared then the inactive PLL will immediately powerdown.
+
+ Note that a powered down PLL requires an additional 575 reference
+ clocks to become active. This time is automatically added by the
+ hardware.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t dly_switch : 12; /**< [ 43: 32](R/W/H) Switch the active PLL after delaying this number of 100 MHz clocks.
+ When set to a nonzero value, the hardware will wait for
+ any PLL programming to complete and then switch to the inactive
+ PLL after the specified number of PLL reference clocks. Hardware
+ will add additional clocks if required.
+ This field is always reinitialized on a chip domain reset.
+
+ Internal:
+ Hardware will add counts to maintain 256 cpt_clk/sclk/rclk notification to hardware.
+ Additional time will be added to wakeup powered down AP cores but that
+ time not be included in this count. */
+ uint64_t pll1_pd : 1; /**< [ 31: 31](RO) Core PLL1 power down. When set PLL is currently powered down. */
+ uint64_t pll0_pd : 1; /**< [ 30: 30](RO) Core PLL0 power down. When set PLL is currently powered down. */
+ uint64_t reserved_23_29 : 7;
+ uint64_t init_mul : 7; /**< [ 22: 16](R/W) Core clock multiplier to be used during a core or chip domain
+ reset. Actual frequency is [INIT_MUL] * 50 MHz. The actual value
+ used is limited by RST_PLL_LIMIT[CORE_MAX_MUL].
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t nxt_pgm : 1; /**< [ 15: 15](R/W/H) Program non-active PLL using [NXT_MUL]. Hardware automatically
+ clears bit when both pll is updated and any delay specified
+ in [DLY_SWITCH] has completed.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t nxt_mul : 7; /**< [ 14: 8](R/W) Core PLL frequency to be program in 50 MHz increments. The
+ actual value used is limited by RST_PLL_LIMIT[CORE_MAX_MUL] and
+ a minimum setting of 300 MHz.
+ Value will match [INIT_MUL] immediately after a cold or chip domain reset. */
+ uint64_t active_pll : 1; /**< [ 7: 7](RO) Indicates which physical PLL is in use. For diagnostic use only. */
+ uint64_t cur_mul : 7; /**< [ 6: 0](RO/H) Core clock frequency. Actual frequency is [CUR_MUL] * 50 MHz.
+ Value will reflect [NXT_MUL] after [DLY_SWITCH] has completed or [INIT_MUL]
+ immediately after a cold or chip domain reset. In both cases, value
+ is limited by RST_PLL_LIMIT[CORE_MAX_MUL]. */
+#else /* Word 0 - Little Endian */
+ uint64_t cur_mul : 7; /**< [ 6: 0](RO/H) Core clock frequency. Actual frequency is [CUR_MUL] * 50 MHz.
+ Value will reflect [NXT_MUL] after [DLY_SWITCH] has completed or [INIT_MUL]
+ immediately after a cold or chip domain reset. In both cases, value
+ is limited by RST_PLL_LIMIT[CORE_MAX_MUL]. */
+ uint64_t active_pll : 1; /**< [ 7: 7](RO) Indicates which physical PLL is in use. For diagnostic use only. */
+ uint64_t nxt_mul : 7; /**< [ 14: 8](R/W) Core PLL frequency to be program in 50 MHz increments. The
+ actual value used is limited by RST_PLL_LIMIT[CORE_MAX_MUL] and
+ a minimum setting of 300 MHz.
+ Value will match [INIT_MUL] immediately after a cold or chip domain reset. */
+ uint64_t nxt_pgm : 1; /**< [ 15: 15](R/W/H) Program non-active PLL using [NXT_MUL]. Hardware automatically
+ clears bit when both pll is updated and any delay specified
+ in [DLY_SWITCH] has completed.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t init_mul : 7; /**< [ 22: 16](R/W) Core clock multiplier to be used during a core or chip domain
+ reset. Actual frequency is [INIT_MUL] * 50 MHz. The actual value
+ used is limited by RST_PLL_LIMIT[CORE_MAX_MUL].
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_23_29 : 7;
+ uint64_t pll0_pd : 1; /**< [ 30: 30](RO) Core PLL0 power down. When set PLL is currently powered down. */
+ uint64_t pll1_pd : 1; /**< [ 31: 31](RO) Core PLL1 power down. When set PLL is currently powered down. */
+ uint64_t dly_switch : 12; /**< [ 43: 32](R/W/H) Switch the active PLL after delaying this number of 100 MHz clocks.
+ When set to a nonzero value, the hardware will wait for
+ any PLL programming to complete and then switch to the inactive
+ PLL after the specified number of PLL reference clocks. Hardware
+ will add additional clocks if required.
+ This field is always reinitialized on a chip domain reset.
+
+ Internal:
+ Hardware will add counts to maintain 256 cpt_clk/sclk/rclk notification to hardware.
+ Additional time will be added to wakeup powered down AP cores but that
+ time not be included in this count. */
+ uint64_t pd_switch : 1; /**< [ 44: 44](R/W) PLL powerdown on switch. When set, hardware automatically
+ powers down the inactive PLL after the switch has occured.
+ When cleared, the inactive PLL remains in operation.
+ If [PD_SWITCH] is written to a one while both [DLY_SWITCH] and
+ [NXT_PGM] are cleared then the inactive PLL will immediately powerdown.
+
+ Note that a powered down PLL requires an additional 575 reference
+ clocks to become active. This time is automatically added by the
+ hardware.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_45_47 : 3;
+ uint64_t cout_reset : 1; /**< [ 48: 48](R/W) Core clockout reset. The core clockout should be placed in
+ reset at least 10 PLL reference clocks prior
+ to changing [COUT_SEL]. It should remain under reset for at least 10
+ PLL reference clocks after [COUT_SEL] changes.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t cout_sel : 2; /**< [ 50: 49](R/W) Core clockout select.
+ 0x0 = Core clock divided by 16.
+ 0x1 = Core clock tree output divided by 16.
+ 0x2 = PLL0 output divided by 16.
+ 0x3 = PLL1 output divided by 16.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_51_63 : 13;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_core_pll_s cn; */
+};
+typedef union bdk_rst_core_pll bdk_rst_core_pll_t;
+
+#define BDK_RST_CORE_PLL BDK_RST_CORE_PLL_FUNC()
+static inline uint64_t BDK_RST_CORE_PLL_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CORE_PLL_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e00a001780ll;
+ __bdk_csr_fatal("RST_CORE_PLL", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_CORE_PLL bdk_rst_core_pll_t
+#define bustype_BDK_RST_CORE_PLL BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CORE_PLL "RST_CORE_PLL"
+#define device_bar_BDK_RST_CORE_PLL 0x2 /* PF_BAR2 */
+#define busnum_BDK_RST_CORE_PLL 0
+#define arguments_BDK_RST_CORE_PLL -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_cpt_pll
+ *
+ * RST Crypto Clock PLL Control Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_cpt_pll
+{
+ uint64_t u;
+ struct bdk_rst_cpt_pll_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_51_63 : 13;
+ uint64_t cout_sel : 2; /**< [ 50: 49](R/W) Cypto clockout select.
+ 0x0 = Crypto clock divided by 16.
+ 0x1 = Crypto clock tree output divided by 16.
+ 0x2 = PLL0 output divided by 16.
+ 0x3 = PLL1 output divided by 16.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t cout_reset : 1; /**< [ 48: 48](R/W) Crypto clockout reset. The crypto clockout should be placed in
+ reset at least 10 PLL reference clocks prior
+ to changing [COUT_SEL]. It should remain under reset for at least 10
+ PLL reference clocks after [COUT_SEL] changes.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_45_47 : 3;
+ uint64_t pd_switch : 1; /**< [ 44: 44](R/W) PLL powerdown on switch. When set, hardware automatically
+ powers down the inactive PLL after the switch has occured.
+ When cleared, the inactive PLL remains in operation.
+ If [PD_SWITCH] is written to a one while both [DLY_SWITCH] and
+ [NXT_PGM] are cleared then the inactive PLL will immediately powerdown.
+
+ Note that a powered down PLL requires an additional 575 reference
+ clocks to become active. This time is automatically added by the
+ hardware.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t dly_switch : 12; /**< [ 43: 32](R/W/H) Switch the active PLL after delaying this number of 100 MHz clocks.
+ When set to a nonzero value, the hardware will wait for
+ any PLL programming to complete and then switch to the inactive
+ PLL after the specified number of PLL reference clocks. Hardware
+ will add additional clocks if required.
+ This field is always reinitialized on a chip domain reset.
+
+ Internal:
+ Hardware will add counts to maintain 256 cpt_clk/sclk/rclk notification to hardware.
+ Additional time will be added to wakeup powered down AP cores but that
+ time not be included in this count. */
+ uint64_t pll1_pd : 1; /**< [ 31: 31](RO) CPT PLL1 power down. When set PLL is currently powered down. */
+ uint64_t pll0_pd : 1; /**< [ 30: 30](RO) CPT PLL0 power down. When set PLL is currently powered down. */
+ uint64_t reserved_23_29 : 7;
+ uint64_t init_mul : 7; /**< [ 22: 16](R/W) Crypto clock multiplier to be used during a core or chip domain
+ reset. Actual frequency is [INIT_MUL] * 50 MHz. The actual value
+ used is limited by RST_PLL_LIMIT[CPT_MAX_MUL].
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t nxt_pgm : 1; /**< [ 15: 15](R/W/H) Program non-active PLL using [NXT_MUL]. Hardware automatically
+ clears bit when both pll is updated and any delay specified
+ in [DLY_SWITCH] has completed.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t nxt_mul : 7; /**< [ 14: 8](R/W) Crypto PLL frequency to be program in 50 MHz increments. The
+ actual value used is limited by RST_PLL_LIMIT[CPT_MAX_MUL] and
+ a minimum setting of 200 MHz.
+ Value will match [INIT_MUL] immediately after a cold or chip domain reset. */
+ uint64_t active_pll : 1; /**< [ 7: 7](RO) Indicates which physical PLL is in use. For diagnostic use only. */
+ uint64_t cur_mul : 7; /**< [ 6: 0](RO/H) Crypto clock frequency. Actual frequency is [CUR_MUL] * 50 MHz.
+ Value will reflect [NXT_MUL] after [DLY_SWITCH] has completed or [INIT_MUL]
+ immediately after a cold or chip domain reset. In both cases, value
+ is limited by RST_PLL_LIMIT[CPT_MAX_MUL]. */
+#else /* Word 0 - Little Endian */
+ uint64_t cur_mul : 7; /**< [ 6: 0](RO/H) Crypto clock frequency. Actual frequency is [CUR_MUL] * 50 MHz.
+ Value will reflect [NXT_MUL] after [DLY_SWITCH] has completed or [INIT_MUL]
+ immediately after a cold or chip domain reset. In both cases, value
+ is limited by RST_PLL_LIMIT[CPT_MAX_MUL]. */
+ uint64_t active_pll : 1; /**< [ 7: 7](RO) Indicates which physical PLL is in use. For diagnostic use only. */
+ uint64_t nxt_mul : 7; /**< [ 14: 8](R/W) Crypto PLL frequency to be program in 50 MHz increments. The
+ actual value used is limited by RST_PLL_LIMIT[CPT_MAX_MUL] and
+ a minimum setting of 200 MHz.
+ Value will match [INIT_MUL] immediately after a cold or chip domain reset. */
+ uint64_t nxt_pgm : 1; /**< [ 15: 15](R/W/H) Program non-active PLL using [NXT_MUL]. Hardware automatically
+ clears bit when both pll is updated and any delay specified
+ in [DLY_SWITCH] has completed.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t init_mul : 7; /**< [ 22: 16](R/W) Crypto clock multiplier to be used during a core or chip domain
+ reset. Actual frequency is [INIT_MUL] * 50 MHz. The actual value
+ used is limited by RST_PLL_LIMIT[CPT_MAX_MUL].
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_23_29 : 7;
+ uint64_t pll0_pd : 1; /**< [ 30: 30](RO) CPT PLL0 power down. When set PLL is currently powered down. */
+ uint64_t pll1_pd : 1; /**< [ 31: 31](RO) CPT PLL1 power down. When set PLL is currently powered down. */
+ uint64_t dly_switch : 12; /**< [ 43: 32](R/W/H) Switch the active PLL after delaying this number of 100 MHz clocks.
+ When set to a nonzero value, the hardware will wait for
+ any PLL programming to complete and then switch to the inactive
+ PLL after the specified number of PLL reference clocks. Hardware
+ will add additional clocks if required.
+ This field is always reinitialized on a chip domain reset.
+
+ Internal:
+ Hardware will add counts to maintain 256 cpt_clk/sclk/rclk notification to hardware.
+ Additional time will be added to wakeup powered down AP cores but that
+ time not be included in this count. */
+ uint64_t pd_switch : 1; /**< [ 44: 44](R/W) PLL powerdown on switch. When set, hardware automatically
+ powers down the inactive PLL after the switch has occured.
+ When cleared, the inactive PLL remains in operation.
+ If [PD_SWITCH] is written to a one while both [DLY_SWITCH] and
+ [NXT_PGM] are cleared then the inactive PLL will immediately powerdown.
+
+ Note that a powered down PLL requires an additional 575 reference
+ clocks to become active. This time is automatically added by the
+ hardware.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_45_47 : 3;
+ uint64_t cout_reset : 1; /**< [ 48: 48](R/W) Crypto clockout reset. The crypto clockout should be placed in
+ reset at least 10 PLL reference clocks prior
+ to changing [COUT_SEL]. It should remain under reset for at least 10
+ PLL reference clocks after [COUT_SEL] changes.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t cout_sel : 2; /**< [ 50: 49](R/W) Cypto clockout select.
+ 0x0 = Crypto clock divided by 16.
+ 0x1 = Crypto clock tree output divided by 16.
+ 0x2 = PLL0 output divided by 16.
+ 0x3 = PLL1 output divided by 16.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_51_63 : 13;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_cpt_pll_s cn; */
+};
+typedef union bdk_rst_cpt_pll bdk_rst_cpt_pll_t;
+
+#define BDK_RST_CPT_PLL BDK_RST_CPT_PLL_FUNC()
+static inline uint64_t BDK_RST_CPT_PLL_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CPT_PLL_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e00a001778ll;
+ __bdk_csr_fatal("RST_CPT_PLL", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_CPT_PLL bdk_rst_cpt_pll_t
+#define bustype_BDK_RST_CPT_PLL BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CPT_PLL "RST_CPT_PLL"
+#define device_bar_BDK_RST_CPT_PLL 0x2 /* PF_BAR2 */
+#define busnum_BDK_RST_CPT_PLL 0
+#define arguments_BDK_RST_CPT_PLL -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_ctl#
+ *
+ * RST Controllers Registers
+ * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_ctlx
+{
+ uint64_t u;
+ struct bdk_rst_ctlx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_14_63 : 50;
+ uint64_t reset_type : 1; /**< [ 13: 13](R/W) Type of reset generated internally by PCI MAC PF FLR, link down/hot reset and
+ PERST events. See [PF_FLR_CHIP], [RST_LINK] and [RST_CHIP].
+
+ 0 = Chip domain reset.
+ 1 = Core domain reset.
+
+ On cold reset, this field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+ _ 1 when RST_CTL()[HOST_MODE] = 1. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t pf_flr_chip : 1; /**< [ 10: 10](R/W) Controls whether corresponding controller PF Function Level Reset causes a chip warm
+ reset like CHIP_RESET_L. A warm/soft reset does not change this field.
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0. */
+ uint64_t prst_link : 1; /**< [ 9: 9](R/W) PEM reset on link down.
+ 0 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and (provided properly configured) the link should come back up
+ automatically.
+ 1 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and set RST_SOFT_PRST()[SOFT_PRST]. This will hold the link in reset
+ until software clears RST_SOFT_PRST()[SOFT_PRST].
+
+ A warm/soft reset does not change this field. On cold reset, this field is initialized to
+ 0. */
+ uint64_t rst_done : 1; /**< [ 8: 8](RO/H) Reset done. Indicates the controller reset status. [RST_DONE] is always 0
+ (i.e. the controller is held in reset) when
+ * RST_SOFT_PRST()[SOFT_PRST] = 1, or
+ * [RST_RCV] = 1 and PERST*_L pin is asserted. */
+ uint64_t rst_link : 1; /**< [ 7: 7](R/W) Reset on link down. When set, a corresponding controller link-down reset or hot
+ reset causes a warm chip reset.
+
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ Note that a link-down or hot-reset event can never cause a warm chip reset when the
+ controller is in reset (i.e. can never cause a warm reset when [RST_DONE] = 0). */
+ uint64_t host_mode : 1; /**< [ 6: 6](RO) For all controllers this field is set as host. */
+ uint64_t reserved_4_5 : 2;
+ uint64_t rst_drv : 1; /**< [ 3: 3](R/W) Controls whether PERST*_L is driven. A warm/soft reset does not change this field. On cold
+ reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 1.
+
+ When set, CNXXXX drives the corresponding PERST*_L pin. Otherwise, CNXXXX does not drive
+ the corresponding PERST*_L pin. */
+ uint64_t rst_rcv : 1; /**< [ 2: 2](R/W) Reset received. Controls whether PERST*_L is received. A warm/soft reset does
+ not change this field. On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ When [RST_RCV] = 1, the PERST*_L value is received and can be used to reset the
+ controller and (optionally, based on [RST_CHIP]) warm reset the chip.
+
+ When [RST_RCV] = 1 (and [RST_CHIP] = 0), RST_INT[PERST*] gets set when the PERST*_L
+ pin asserts. (This interrupt can alert software whenever the external reset pin initiates
+ a controller reset sequence.)
+
+ [RST_VAL] gives the PERST*_L pin value when [RST_RCV] = 1.
+
+ When [RST_RCV] = 0, the PERST*_L pin value is ignored. */
+ uint64_t rst_chip : 1; /**< [ 1: 1](R/W) Controls whether PERST*_L causes a chip warm reset like CHIP_RESET_L. A warm/soft reset
+ does not change this field. On cold reset, this field is initialized to 0.
+
+ When [RST_RCV] = 0, [RST_CHIP] is ignored.
+
+ When [RST_RCV] = 1, [RST_CHIP] = 1, and PERST*_L asserts, a chip warm reset is generated. */
+ uint64_t rst_val : 1; /**< [ 0: 0](RO/H) Read-only access to PERST*_L. Unpredictable when [RST_RCV] = 0.
+
+ Reads as 1 when [RST_RCV] = 1 and the PERST*_L pin is asserted.
+
+ Reads as 0 when [RST_RCV] = 1 and the PERST*_L pin is not asserted. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_val : 1; /**< [ 0: 0](RO/H) Read-only access to PERST*_L. Unpredictable when [RST_RCV] = 0.
+
+ Reads as 1 when [RST_RCV] = 1 and the PERST*_L pin is asserted.
+
+ Reads as 0 when [RST_RCV] = 1 and the PERST*_L pin is not asserted. */
+ uint64_t rst_chip : 1; /**< [ 1: 1](R/W) Controls whether PERST*_L causes a chip warm reset like CHIP_RESET_L. A warm/soft reset
+ does not change this field. On cold reset, this field is initialized to 0.
+
+ When [RST_RCV] = 0, [RST_CHIP] is ignored.
+
+ When [RST_RCV] = 1, [RST_CHIP] = 1, and PERST*_L asserts, a chip warm reset is generated. */
+ uint64_t rst_rcv : 1; /**< [ 2: 2](R/W) Reset received. Controls whether PERST*_L is received. A warm/soft reset does
+ not change this field. On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ When [RST_RCV] = 1, the PERST*_L value is received and can be used to reset the
+ controller and (optionally, based on [RST_CHIP]) warm reset the chip.
+
+ When [RST_RCV] = 1 (and [RST_CHIP] = 0), RST_INT[PERST*] gets set when the PERST*_L
+ pin asserts. (This interrupt can alert software whenever the external reset pin initiates
+ a controller reset sequence.)
+
+ [RST_VAL] gives the PERST*_L pin value when [RST_RCV] = 1.
+
+ When [RST_RCV] = 0, the PERST*_L pin value is ignored. */
+ uint64_t rst_drv : 1; /**< [ 3: 3](R/W) Controls whether PERST*_L is driven. A warm/soft reset does not change this field. On cold
+ reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 1.
+
+ When set, CNXXXX drives the corresponding PERST*_L pin. Otherwise, CNXXXX does not drive
+ the corresponding PERST*_L pin. */
+ uint64_t reserved_4_5 : 2;
+ uint64_t host_mode : 1; /**< [ 6: 6](RO) For all controllers this field is set as host. */
+ uint64_t rst_link : 1; /**< [ 7: 7](R/W) Reset on link down. When set, a corresponding controller link-down reset or hot
+ reset causes a warm chip reset.
+
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ Note that a link-down or hot-reset event can never cause a warm chip reset when the
+ controller is in reset (i.e. can never cause a warm reset when [RST_DONE] = 0). */
+ uint64_t rst_done : 1; /**< [ 8: 8](RO/H) Reset done. Indicates the controller reset status. [RST_DONE] is always 0
+ (i.e. the controller is held in reset) when
+ * RST_SOFT_PRST()[SOFT_PRST] = 1, or
+ * [RST_RCV] = 1 and PERST*_L pin is asserted. */
+ uint64_t prst_link : 1; /**< [ 9: 9](R/W) PEM reset on link down.
+ 0 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and (provided properly configured) the link should come back up
+ automatically.
+ 1 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and set RST_SOFT_PRST()[SOFT_PRST]. This will hold the link in reset
+ until software clears RST_SOFT_PRST()[SOFT_PRST].
+
+ A warm/soft reset does not change this field. On cold reset, this field is initialized to
+ 0. */
+ uint64_t pf_flr_chip : 1; /**< [ 10: 10](R/W) Controls whether corresponding controller PF Function Level Reset causes a chip warm
+ reset like CHIP_RESET_L. A warm/soft reset does not change this field.
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t reset_type : 1; /**< [ 13: 13](R/W) Type of reset generated internally by PCI MAC PF FLR, link down/hot reset and
+ PERST events. See [PF_FLR_CHIP], [RST_LINK] and [RST_CHIP].
+
+ 0 = Chip domain reset.
+ 1 = Core domain reset.
+
+ On cold reset, this field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+ _ 1 when RST_CTL()[HOST_MODE] = 1. */
+ uint64_t reserved_14_63 : 50;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_ctlx_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_14_63 : 50;
+ uint64_t reset_type : 1; /**< [ 13: 13](R/W) Type of reset generated internally by PCI MAC PF FLR, link down/hot reset and
+ PERST events. See [PF_FLR_CHIP], [RST_LINK] and [RST_CHIP].
+
+ 0 = Chip domain reset.
+ 1 = Core domain reset.
+
+ On cold reset, this field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+ _ 1 when RST_CTL()[HOST_MODE] = 1. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t pf_flr_chip : 1; /**< [ 10: 10](R/W) PF FLR internal reset enable.
+ 0 = PF FLR events will not cause a reset.
+ 1 = A PF FLR event received by the PCIe logic causes the internal reset
+ specified by [RESET_TYPE].
+
+ On cold reset, this field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+ _ 1 when RST_CTL()[HOST_MODE] = 0. */
+ uint64_t prst_link : 1; /**< [ 9: 9](R/W) PEM reset on link down.
+ 0 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and (provided properly configured) the link should come back up
+ automatically.
+ 1 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and set RST_SOFT_PRST()[SOFT_PRST]. This will hold the link in reset
+ until software clears RST_SOFT_PRST()[SOFT_PRST].
+
+ A warm/soft reset does not change this field. On cold reset, this field is
+ initialized to 0. */
+ uint64_t rst_done : 1; /**< [ 8: 8](RO/H) Reset done. Indicates the controller reset status. [RST_DONE] is always 0
+ (i.e. the controller is held in reset) when
+ * RST_SOFT_PRST()[SOFT_PRST] = 1, or
+ * [RST_RCV] = 1 and PERST*_L pin is asserted. */
+ uint64_t rst_link : 1; /**< [ 7: 7](R/W) Link down / hot reset event internal reset enable.
+ 0 = Link down or hot reset do not cause a chip/core domain reset.
+ 1 = A link-down or hot-reset event on the PCIe interface causes the internal
+ reset specified by [RESET_TYPE].
+
+ The field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] is set.
+ _ 1 when RST_CTL()[HOST_MODE] is cleared.
+
+ Note that a link-down or hot reset event can never cause a domain reset when the
+ controller is already in reset (i.e. when [RST_DONE] = 0). */
+ uint64_t host_mode : 1; /**< [ 6: 6](RO/H) Read-only access to the corresponding PEM()_CFG[HOSTMD] field
+ indicating PEMn is root complex (host). */
+ uint64_t reserved_4_5 : 2;
+ uint64_t rst_drv : 1; /**< [ 3: 3](R/W) Controls whether PERST*_L is driven.
+ This field is always reinitialized on a cold domain reset.
+ The field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] is cleared.
+ _ 1 when RST_CTL()[HOST_MODE] is set. */
+ uint64_t rst_rcv : 1; /**< [ 2: 2](R/W) Reset received. Controls whether PERST*_L is received.
+ This field is always reinitialized on a cold domain reset.
+ The field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] is set.
+ _ 1 when RST_CTL()[HOST_MODE] is cleared.
+
+ When [RST_RCV] = 1, the PERST*_L value is received and can be used to reset the
+ controller and (optionally, based on [RST_CHIP]) cause a domain reset.
+
+ When [RST_RCV] = 1 (and [RST_CHIP] = 0), RST_INT[PERST*] gets set when the PERST*_L
+ pin asserts. (This interrupt can alert software whenever the external reset pin initiates
+ a controller reset sequence.)
+
+ [RST_VAL] gives the PERST*_L pin value when [RST_RCV] = 1.
+
+ When [RST_RCV] = 0, the PERST*_L pin value is ignored. */
+ uint64_t rst_chip : 1; /**< [ 1: 1](R/W) PERST internal reset enable. When set along with [RST_RCV],
+ logic will generate an internal reset specified by [RESET_TYPE]
+ when the corresponding PERST*_L pin is asserted. When cleared or
+ when [RST_RCV] is cleared, the PERST*_L does not cause an internal reset.
+
+ During a cold domain reset this field is initialized to zero. */
+ uint64_t rst_val : 1; /**< [ 0: 0](RO/H) Read-only access to PERST*_L. Unpredictable when [RST_RCV] = 0.
+
+ Reads as 1 when [RST_RCV] = 1 and the PERST*_L pin is asserted.
+ Reads as 0 when [RST_RCV] = 1 and the PERST*_L pin is not asserted. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_val : 1; /**< [ 0: 0](RO/H) Read-only access to PERST*_L. Unpredictable when [RST_RCV] = 0.
+
+ Reads as 1 when [RST_RCV] = 1 and the PERST*_L pin is asserted.
+ Reads as 0 when [RST_RCV] = 1 and the PERST*_L pin is not asserted. */
+ uint64_t rst_chip : 1; /**< [ 1: 1](R/W) PERST internal reset enable. When set along with [RST_RCV],
+ logic will generate an internal reset specified by [RESET_TYPE]
+ when the corresponding PERST*_L pin is asserted. When cleared or
+ when [RST_RCV] is cleared, the PERST*_L does not cause an internal reset.
+
+ During a cold domain reset this field is initialized to zero. */
+ uint64_t rst_rcv : 1; /**< [ 2: 2](R/W) Reset received. Controls whether PERST*_L is received.
+ This field is always reinitialized on a cold domain reset.
+ The field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] is set.
+ _ 1 when RST_CTL()[HOST_MODE] is cleared.
+
+ When [RST_RCV] = 1, the PERST*_L value is received and can be used to reset the
+ controller and (optionally, based on [RST_CHIP]) cause a domain reset.
+
+ When [RST_RCV] = 1 (and [RST_CHIP] = 0), RST_INT[PERST*] gets set when the PERST*_L
+ pin asserts. (This interrupt can alert software whenever the external reset pin initiates
+ a controller reset sequence.)
+
+ [RST_VAL] gives the PERST*_L pin value when [RST_RCV] = 1.
+
+ When [RST_RCV] = 0, the PERST*_L pin value is ignored. */
+ uint64_t rst_drv : 1; /**< [ 3: 3](R/W) Controls whether PERST*_L is driven.
+ This field is always reinitialized on a cold domain reset.
+ The field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] is cleared.
+ _ 1 when RST_CTL()[HOST_MODE] is set. */
+ uint64_t reserved_4_5 : 2;
+ uint64_t host_mode : 1; /**< [ 6: 6](RO/H) Read-only access to the corresponding PEM()_CFG[HOSTMD] field
+ indicating PEMn is root complex (host). */
+ uint64_t rst_link : 1; /**< [ 7: 7](R/W) Link down / hot reset event internal reset enable.
+ 0 = Link down or hot reset do not cause a chip/core domain reset.
+ 1 = A link-down or hot-reset event on the PCIe interface causes the internal
+ reset specified by [RESET_TYPE].
+
+ The field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] is set.
+ _ 1 when RST_CTL()[HOST_MODE] is cleared.
+
+ Note that a link-down or hot reset event can never cause a domain reset when the
+ controller is already in reset (i.e. when [RST_DONE] = 0). */
+ uint64_t rst_done : 1; /**< [ 8: 8](RO/H) Reset done. Indicates the controller reset status. [RST_DONE] is always 0
+ (i.e. the controller is held in reset) when
+ * RST_SOFT_PRST()[SOFT_PRST] = 1, or
+ * [RST_RCV] = 1 and PERST*_L pin is asserted. */
+ uint64_t prst_link : 1; /**< [ 9: 9](R/W) PEM reset on link down.
+ 0 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and (provided properly configured) the link should come back up
+ automatically.
+ 1 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and set RST_SOFT_PRST()[SOFT_PRST]. This will hold the link in reset
+ until software clears RST_SOFT_PRST()[SOFT_PRST].
+
+ A warm/soft reset does not change this field. On cold reset, this field is
+ initialized to 0. */
+ uint64_t pf_flr_chip : 1; /**< [ 10: 10](R/W) PF FLR internal reset enable.
+ 0 = PF FLR events will not cause a reset.
+ 1 = A PF FLR event received by the PCIe logic causes the internal reset
+ specified by [RESET_TYPE].
+
+ On cold reset, this field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+ _ 1 when RST_CTL()[HOST_MODE] = 0. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t reset_type : 1; /**< [ 13: 13](R/W) Type of reset generated internally by PCI MAC PF FLR, link down/hot reset and
+ PERST events. See [PF_FLR_CHIP], [RST_LINK] and [RST_CHIP].
+
+ 0 = Chip domain reset.
+ 1 = Core domain reset.
+
+ On cold reset, this field is initialized as follows:
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+ _ 1 when RST_CTL()[HOST_MODE] = 1. */
+ uint64_t reserved_14_63 : 50;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_ctlx_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_10_63 : 54;
+ uint64_t prst_link : 1; /**< [ 9: 9](R/W) PEM reset on link down.
+ 0 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and (provided properly configured) the link should come back up
+ automatically.
+ 1 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and set RST_SOFT_PRST()[SOFT_PRST]. This will hold the link in reset
+ until software clears RST_SOFT_PRST()[SOFT_PRST].
+
+ A warm/soft reset does not change this field. On cold reset, this field is initialized to
+ 0. */
+ uint64_t rst_done : 1; /**< [ 8: 8](RO/H) Reset done. Indicates the controller reset status. [RST_DONE] is always 0
+ (i.e. the controller is held in reset) when
+ * RST_SOFT_PRST()[SOFT_PRST] = 1, or
+ * [RST_RCV] = 1 and PERST*_L pin is asserted. */
+ uint64_t rst_link : 1; /**< [ 7: 7](R/W) Reset on link down. When set, a corresponding controller link-down reset or hot
+ reset causes a warm chip reset.
+
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ Note that a link-down or hot-reset event can never cause a warm chip reset when the
+ controller is in reset (i.e. can never cause a warm reset when [RST_DONE] = 0). */
+ uint64_t host_mode : 1; /**< [ 6: 6](RO) For all controllers this field is set as host. */
+ uint64_t reserved_4_5 : 2;
+ uint64_t rst_drv : 1; /**< [ 3: 3](R/W) Controls whether PERST*_L is driven. A warm/soft reset does not change this field. On cold
+ reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 1.
+
+ When set, CNXXXX drives the corresponding PERST*_L pin. Otherwise, CNXXXX does not drive
+ the corresponding PERST*_L pin. */
+ uint64_t rst_rcv : 1; /**< [ 2: 2](R/W) Reset received. Controls whether PERST*_L is received. A warm/soft reset does
+ not change this field. On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ When [RST_RCV] = 1, the PERST*_L value is received and can be used to reset the
+ controller and (optionally, based on [RST_CHIP]) warm reset the chip.
+
+ When [RST_RCV] = 1 (and [RST_CHIP] = 0), RST_INT[PERST*] gets set when the PERST*_L
+ pin asserts. (This interrupt can alert software whenever the external reset pin initiates
+ a controller reset sequence.)
+
+ [RST_VAL] gives the PERST*_L pin value when [RST_RCV] = 1.
+
+ When [RST_RCV] = 0, the PERST*_L pin value is ignored. */
+ uint64_t rst_chip : 1; /**< [ 1: 1](R/W) Controls whether PERST*_L causes a chip warm reset like CHIP_RESET_L. A warm/soft reset
+ does not change this field. On cold reset, this field is initialized to 0.
+
+ When [RST_RCV] = 0, [RST_CHIP] is ignored.
+
+ When [RST_RCV] = 1, [RST_CHIP] = 1, and PERST*_L asserts, a chip warm reset is generated. */
+ uint64_t rst_val : 1; /**< [ 0: 0](RO/H) Read-only access to PERST*_L. Unpredictable when [RST_RCV] = 0.
+
+ Reads as 1 when [RST_RCV] = 1 and the PERST*_L pin is asserted.
+
+ Reads as 0 when [RST_RCV] = 1 and the PERST*_L pin is not asserted. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_val : 1; /**< [ 0: 0](RO/H) Read-only access to PERST*_L. Unpredictable when [RST_RCV] = 0.
+
+ Reads as 1 when [RST_RCV] = 1 and the PERST*_L pin is asserted.
+
+ Reads as 0 when [RST_RCV] = 1 and the PERST*_L pin is not asserted. */
+ uint64_t rst_chip : 1; /**< [ 1: 1](R/W) Controls whether PERST*_L causes a chip warm reset like CHIP_RESET_L. A warm/soft reset
+ does not change this field. On cold reset, this field is initialized to 0.
+
+ When [RST_RCV] = 0, [RST_CHIP] is ignored.
+
+ When [RST_RCV] = 1, [RST_CHIP] = 1, and PERST*_L asserts, a chip warm reset is generated. */
+ uint64_t rst_rcv : 1; /**< [ 2: 2](R/W) Reset received. Controls whether PERST*_L is received. A warm/soft reset does
+ not change this field. On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ When [RST_RCV] = 1, the PERST*_L value is received and can be used to reset the
+ controller and (optionally, based on [RST_CHIP]) warm reset the chip.
+
+ When [RST_RCV] = 1 (and [RST_CHIP] = 0), RST_INT[PERST*] gets set when the PERST*_L
+ pin asserts. (This interrupt can alert software whenever the external reset pin initiates
+ a controller reset sequence.)
+
+ [RST_VAL] gives the PERST*_L pin value when [RST_RCV] = 1.
+
+ When [RST_RCV] = 0, the PERST*_L pin value is ignored. */
+ uint64_t rst_drv : 1; /**< [ 3: 3](R/W) Controls whether PERST*_L is driven. A warm/soft reset does not change this field. On cold
+ reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 1.
+
+ When set, CNXXXX drives the corresponding PERST*_L pin. Otherwise, CNXXXX does not drive
+ the corresponding PERST*_L pin. */
+ uint64_t reserved_4_5 : 2;
+ uint64_t host_mode : 1; /**< [ 6: 6](RO) For all controllers this field is set as host. */
+ uint64_t rst_link : 1; /**< [ 7: 7](R/W) Reset on link down. When set, a corresponding controller link-down reset or hot
+ reset causes a warm chip reset.
+
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ Note that a link-down or hot-reset event can never cause a warm chip reset when the
+ controller is in reset (i.e. can never cause a warm reset when [RST_DONE] = 0). */
+ uint64_t rst_done : 1; /**< [ 8: 8](RO/H) Reset done. Indicates the controller reset status. [RST_DONE] is always 0
+ (i.e. the controller is held in reset) when
+ * RST_SOFT_PRST()[SOFT_PRST] = 1, or
+ * [RST_RCV] = 1 and PERST*_L pin is asserted. */
+ uint64_t prst_link : 1; /**< [ 9: 9](R/W) PEM reset on link down.
+ 0 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and (provided properly configured) the link should come back up
+ automatically.
+ 1 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and set RST_SOFT_PRST()[SOFT_PRST]. This will hold the link in reset
+ until software clears RST_SOFT_PRST()[SOFT_PRST].
+
+ A warm/soft reset does not change this field. On cold reset, this field is initialized to
+ 0. */
+ uint64_t reserved_10_63 : 54;
+#endif /* Word 0 - End */
+ } cn81xx;
+ /* struct bdk_rst_ctlx_cn81xx cn88xx; */
+ struct bdk_rst_ctlx_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_11_63 : 53;
+ uint64_t pf_flr_chip : 1; /**< [ 10: 10](R/W) Controls whether corresponding controller PF Function Level Reset causes a chip warm
+ reset like CHIP_RESET_L. A warm/soft reset does not change this field.
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0. */
+ uint64_t prst_link : 1; /**< [ 9: 9](R/W) PEM reset on link down.
+ 0 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and (provided properly configured) the link should come back up
+ automatically.
+ 1 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and set RST_SOFT_PRST()[SOFT_PRST]. This will hold the link in reset
+ until software clears RST_SOFT_PRST()[SOFT_PRST].
+
+ A warm/soft reset does not change this field. On cold reset, this field is initialized to
+ 0. */
+ uint64_t rst_done : 1; /**< [ 8: 8](RO/H) Reset done. Indicates the controller reset status. [RST_DONE] is always 0
+ (i.e. the controller is held in reset) when
+ * RST_SOFT_PRST()[SOFT_PRST] = 1, or
+ * [RST_RCV] = 1 and PERST*_L pin is asserted. */
+ uint64_t rst_link : 1; /**< [ 7: 7](R/W) Reset on link down. When set, a corresponding controller link-down reset or hot
+ reset causes a warm chip reset.
+
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ Note that a link-down or hot-reset event can never cause a warm chip reset when the
+ controller is in reset (i.e. can never cause a warm reset when [RST_DONE] = 0). */
+ uint64_t host_mode : 1; /**< [ 6: 6](RO) Read-only access to the corresponding PEM()_CFG[HOSTMD] field indicating PEMn is root
+ complex (host). For controllers 0 and 2 the initial value is determined by straps. For
+ controllers 1 and 3 this field is initially set as host. */
+ uint64_t reserved_4_5 : 2;
+ uint64_t rst_drv : 1; /**< [ 3: 3](R/W) Controls whether PERST*_L is driven. A warm/soft reset does not change this field. On cold
+ reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 1.
+
+ When set, CNXXXX drives the corresponding PERST*_L pin. Otherwise, CNXXXX does not drive
+ the corresponding PERST*_L pin. */
+ uint64_t rst_rcv : 1; /**< [ 2: 2](R/W) Reset received. Controls whether PERST*_L is received. A warm/soft reset does
+ not change this field. On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ When [RST_RCV] = 1, the PERST*_L value is received and can be used to reset the
+ controller and (optionally, based on [RST_CHIP]) warm reset the chip.
+
+ When [RST_RCV] = 1 (and [RST_CHIP] = 0), RST_INT[PERST*] gets set when the PERST*_L
+ pin asserts. (This interrupt can alert software whenever the external reset pin initiates
+ a controller reset sequence.)
+
+ [RST_VAL] gives the PERST*_L pin value when [RST_RCV] = 1.
+
+ When [RST_RCV] = 0, the PERST*_L pin value is ignored. */
+ uint64_t rst_chip : 1; /**< [ 1: 1](R/W) Controls whether PERST*_L causes a chip warm reset like CHIP_RESET_L. A warm/soft reset
+ does not change this field. On cold reset, this field is initialized to 0.
+
+ When [RST_RCV] = 0, [RST_CHIP] is ignored.
+
+ When [RST_RCV] = 1, [RST_CHIP] = 1, and PERST*_L asserts, a chip warm reset is generated. */
+ uint64_t rst_val : 1; /**< [ 0: 0](RO/H) Read-only access to PERST*_L. Unpredictable when [RST_RCV] = 0.
+
+ Reads as 1 when [RST_RCV] = 1 and the PERST*_L pin is asserted.
+
+ Reads as 0 when [RST_RCV] = 1 and the PERST*_L pin is not asserted. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_val : 1; /**< [ 0: 0](RO/H) Read-only access to PERST*_L. Unpredictable when [RST_RCV] = 0.
+
+ Reads as 1 when [RST_RCV] = 1 and the PERST*_L pin is asserted.
+
+ Reads as 0 when [RST_RCV] = 1 and the PERST*_L pin is not asserted. */
+ uint64_t rst_chip : 1; /**< [ 1: 1](R/W) Controls whether PERST*_L causes a chip warm reset like CHIP_RESET_L. A warm/soft reset
+ does not change this field. On cold reset, this field is initialized to 0.
+
+ When [RST_RCV] = 0, [RST_CHIP] is ignored.
+
+ When [RST_RCV] = 1, [RST_CHIP] = 1, and PERST*_L asserts, a chip warm reset is generated. */
+ uint64_t rst_rcv : 1; /**< [ 2: 2](R/W) Reset received. Controls whether PERST*_L is received. A warm/soft reset does
+ not change this field. On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ When [RST_RCV] = 1, the PERST*_L value is received and can be used to reset the
+ controller and (optionally, based on [RST_CHIP]) warm reset the chip.
+
+ When [RST_RCV] = 1 (and [RST_CHIP] = 0), RST_INT[PERST*] gets set when the PERST*_L
+ pin asserts. (This interrupt can alert software whenever the external reset pin initiates
+ a controller reset sequence.)
+
+ [RST_VAL] gives the PERST*_L pin value when [RST_RCV] = 1.
+
+ When [RST_RCV] = 0, the PERST*_L pin value is ignored. */
+ uint64_t rst_drv : 1; /**< [ 3: 3](R/W) Controls whether PERST*_L is driven. A warm/soft reset does not change this field. On cold
+ reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 0.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 1.
+
+ When set, CNXXXX drives the corresponding PERST*_L pin. Otherwise, CNXXXX does not drive
+ the corresponding PERST*_L pin. */
+ uint64_t reserved_4_5 : 2;
+ uint64_t host_mode : 1; /**< [ 6: 6](RO) Read-only access to the corresponding PEM()_CFG[HOSTMD] field indicating PEMn is root
+ complex (host). For controllers 0 and 2 the initial value is determined by straps. For
+ controllers 1 and 3 this field is initially set as host. */
+ uint64_t rst_link : 1; /**< [ 7: 7](R/W) Reset on link down. When set, a corresponding controller link-down reset or hot
+ reset causes a warm chip reset.
+
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0.
+
+ Note that a link-down or hot-reset event can never cause a warm chip reset when the
+ controller is in reset (i.e. can never cause a warm reset when [RST_DONE] = 0). */
+ uint64_t rst_done : 1; /**< [ 8: 8](RO/H) Reset done. Indicates the controller reset status. [RST_DONE] is always 0
+ (i.e. the controller is held in reset) when
+ * RST_SOFT_PRST()[SOFT_PRST] = 1, or
+ * [RST_RCV] = 1 and PERST*_L pin is asserted. */
+ uint64_t prst_link : 1; /**< [ 9: 9](R/W) PEM reset on link down.
+ 0 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and (provided properly configured) the link should come back up
+ automatically.
+ 1 = Link-down or hot-reset will set RST_INT[RST_LINK] for the corresponding
+ controller, and set RST_SOFT_PRST()[SOFT_PRST]. This will hold the link in reset
+ until software clears RST_SOFT_PRST()[SOFT_PRST].
+
+ A warm/soft reset does not change this field. On cold reset, this field is initialized to
+ 0. */
+ uint64_t pf_flr_chip : 1; /**< [ 10: 10](R/W) Controls whether corresponding controller PF Function Level Reset causes a chip warm
+ reset like CHIP_RESET_L. A warm/soft reset does not change this field.
+ On cold reset, this field is initialized as follows:
+
+ _ 0 when RST_CTL()[HOST_MODE] = 1.
+
+ _ 1 when RST_CTL()[HOST_MODE] = 0. */
+ uint64_t reserved_11_63 : 53;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_ctlx bdk_rst_ctlx_t;
+
+static inline uint64_t BDK_RST_CTLX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_CTLX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
+ return 0x87e006001640ll + 8ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e006001640ll + 8ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
+ return 0x87e006001640ll + 8ll * ((a) & 0x7);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x87e006001640ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RST_CTLX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_CTLX(a) bdk_rst_ctlx_t
+#define bustype_BDK_RST_CTLX(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_CTLX(a) "RST_CTLX"
+#define device_bar_BDK_RST_CTLX(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_CTLX(a) (a)
+#define arguments_BDK_RST_CTLX(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) rst_dbg_reset
+ *
+ * RST Debug Logic Reset Register
+ * This register contains the reset control for each core's debug logic.
+ * Debug reset is not supported in pass 2.
+ */
+union bdk_rst_dbg_reset
+{
+ uint64_t u;
+ struct bdk_rst_dbg_reset_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t rst : 48; /**< [ 47: 0](R/W) Debug logic reset for each core:
+ 0 = Debug logic operates normally.
+ 1 = Holds the debug logic in its reset state.
+
+ The register is reset to 0 only during cold reset, the value is unaffected by
+ warm and soft reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst : 48; /**< [ 47: 0](R/W) Debug logic reset for each core:
+ 0 = Debug logic operates normally.
+ 1 = Holds the debug logic in its reset state.
+
+ The register is reset to 0 only during cold reset, the value is unaffected by
+ warm and soft reset. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_dbg_reset_s cn88xxp1; */
+ struct bdk_rst_dbg_reset_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t rst : 4; /**< [ 3: 0](R/W) Reserved. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst : 4; /**< [ 3: 0](R/W) Reserved. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_rst_dbg_reset_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t rst : 24; /**< [ 23: 0](R/W) Reserved. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst : 24; /**< [ 23: 0](R/W) Reserved. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn83xx;
+ struct bdk_rst_dbg_reset_cn88xxp2
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t rst : 48; /**< [ 47: 0](R/W) Reserved. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst : 48; /**< [ 47: 0](R/W) Reserved. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } cn88xxp2;
+};
+typedef union bdk_rst_dbg_reset bdk_rst_dbg_reset_t;
+
+#define BDK_RST_DBG_RESET BDK_RST_DBG_RESET_FUNC()
+static inline uint64_t BDK_RST_DBG_RESET_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_DBG_RESET_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX))
+ return 0x87e006001750ll;
+ __bdk_csr_fatal("RST_DBG_RESET", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_DBG_RESET bdk_rst_dbg_reset_t
+#define bustype_BDK_RST_DBG_RESET BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_DBG_RESET "RST_DBG_RESET"
+#define device_bar_BDK_RST_DBG_RESET 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_DBG_RESET 0
+#define arguments_BDK_RST_DBG_RESET -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_debug
+ *
+ * RST Debug Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_debug
+{
+ uint64_t u;
+ struct bdk_rst_debug_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t dll_csr_wakeup : 1; /**< [ 3: 3](R/W) Forces DLL setting to unlock.
+ Setting this field will force all DLLs to track clock changes.
+ For diagnostic use only.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t clkena_on : 1; /**< [ 2: 2](R/W) Force global clock enable on.
+ Setting this field will force all clocks on while they are in reset and
+ will dramatically increase power consumption.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t clk_cng : 1; /**< [ 1: 1](R/W) Force clock-changing indicator on.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset.
+
+ Internal:
+ Forces store-n-forward across clock domains. */
+ uint64_t clk_on : 1; /**< [ 0: 0](R/W) Force conditional clock used for interrupt logic to always be on. For diagnostic use only. */
+#else /* Word 0 - Little Endian */
+ uint64_t clk_on : 1; /**< [ 0: 0](R/W) Force conditional clock used for interrupt logic to always be on. For diagnostic use only. */
+ uint64_t clk_cng : 1; /**< [ 1: 1](R/W) Force clock-changing indicator on.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset.
+
+ Internal:
+ Forces store-n-forward across clock domains. */
+ uint64_t clkena_on : 1; /**< [ 2: 2](R/W) Force global clock enable on.
+ Setting this field will force all clocks on while they are in reset and
+ will dramatically increase power consumption.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t dll_csr_wakeup : 1; /**< [ 3: 3](R/W) Forces DLL setting to unlock.
+ Setting this field will force all DLLs to track clock changes.
+ For diagnostic use only.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_debug_cn8
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t clk_on : 1; /**< [ 0: 0](R/W) Force conditional clock used for interrupt logic to always be on. For diagnostic use only. */
+#else /* Word 0 - Little Endian */
+ uint64_t clk_on : 1; /**< [ 0: 0](R/W) Force conditional clock used for interrupt logic to always be on. For diagnostic use only. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } cn8;
+ struct bdk_rst_debug_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t dll_csr_wakeup : 1; /**< [ 3: 3](R/W) Forces DLL setting to unlock.
+ Setting this field will force all DLLs to track clock changes.
+ For diagnostic use only.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t clkena_on : 1; /**< [ 2: 2](R/W) Force global clock enable on.
+ Setting this field will force all clocks on while they are in reset and
+ will dramatically increase power consumption.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t clk_cng : 1; /**< [ 1: 1](R/W) Force clock-changing indicator on.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset.
+
+ Internal:
+ Forces store-n-forward across clock domains. */
+ uint64_t clk_on : 1; /**< [ 0: 0](R/W) Force conditional clock used for interrupt logic to always be on.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t clk_on : 1; /**< [ 0: 0](R/W) Force conditional clock used for interrupt logic to always be on.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t clk_cng : 1; /**< [ 1: 1](R/W) Force clock-changing indicator on.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset.
+
+ Internal:
+ Forces store-n-forward across clock domains. */
+ uint64_t clkena_on : 1; /**< [ 2: 2](R/W) Force global clock enable on.
+ Setting this field will force all clocks on while they are in reset and
+ will dramatically increase power consumption.
+ For diagnostic use only.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t dll_csr_wakeup : 1; /**< [ 3: 3](R/W) Forces DLL setting to unlock.
+ Setting this field will force all DLLs to track clock changes.
+ For diagnostic use only.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_debug bdk_rst_debug_t;
+
+#define BDK_RST_DEBUG BDK_RST_DEBUG_FUNC()
+static inline uint64_t BDK_RST_DEBUG_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_DEBUG_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX))
+ return 0x87e0060017b0ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX))
+ return 0x87e0060017b0ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X))
+ return 0x87e0060017b0ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e0060017b0ll;
+ __bdk_csr_fatal("RST_DEBUG", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_DEBUG bdk_rst_debug_t
+#define bustype_BDK_RST_DEBUG BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_DEBUG "RST_DEBUG"
+#define device_bar_BDK_RST_DEBUG 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_DEBUG 0
+#define arguments_BDK_RST_DEBUG -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_delay
+ *
+ * RST Delay Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_delay
+{
+ uint64_t u;
+ struct bdk_rst_delay_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_32_63 : 32;
+ uint64_t warm_rst_dly : 16; /**< [ 31: 16](R/W) Warm reset delay. A warm reset immediately causes an early warm-reset notification, but
+ the assertion of warm reset is delayed this many coprocessor-clock cycles. A warm/soft
+ reset does not change this field.
+ This must be at least 0x200 coprocessor-clock cycles. */
+ uint64_t reserved_0_15 : 16;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_15 : 16;
+ uint64_t warm_rst_dly : 16; /**< [ 31: 16](R/W) Warm reset delay. A warm reset immediately causes an early warm-reset notification, but
+ the assertion of warm reset is delayed this many coprocessor-clock cycles. A warm/soft
+ reset does not change this field.
+ This must be at least 0x200 coprocessor-clock cycles. */
+ uint64_t reserved_32_63 : 32;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_delay_cn8
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_32_63 : 32;
+ uint64_t warm_rst_dly : 16; /**< [ 31: 16](R/W) Warm reset delay. A warm reset immediately causes an early warm-reset notification, but
+ the assertion of warm reset is delayed this many coprocessor-clock cycles. A warm/soft
+ reset does not change this field.
+ This must be at least 0x200 coprocessor-clock cycles. */
+ uint64_t soft_rst_dly : 16; /**< [ 15: 0](R/W) Soft reset delay. A soft reset immediately causes an early soft-reset notification, but
+ the assertion of soft reset is delayed this many coprocessor-clock cycles. A warm/soft
+ reset does not change this field.
+ This must be at least 0x200 coprocessor-clock cycles. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst_dly : 16; /**< [ 15: 0](R/W) Soft reset delay. A soft reset immediately causes an early soft-reset notification, but
+ the assertion of soft reset is delayed this many coprocessor-clock cycles. A warm/soft
+ reset does not change this field.
+ This must be at least 0x200 coprocessor-clock cycles. */
+ uint64_t warm_rst_dly : 16; /**< [ 31: 16](R/W) Warm reset delay. A warm reset immediately causes an early warm-reset notification, but
+ the assertion of warm reset is delayed this many coprocessor-clock cycles. A warm/soft
+ reset does not change this field.
+ This must be at least 0x200 coprocessor-clock cycles. */
+ uint64_t reserved_32_63 : 32;
+#endif /* Word 0 - End */
+ } cn8;
+ struct bdk_rst_delay_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_16_63 : 48;
+ uint64_t rst_dly : 16; /**< [ 15: 0](R/W) Reset delay. Chip and core domain resets immediately causes an early reset
+ notification to the dDR interface. The assertion of the domain reset is delayed
+ by this many 100 MHz PLL reference clocks. The minimum value is 1 uS.
+ Typical value is 4 uS once DDR has been initialized.
+ This field is reinitialized with a cold domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_dly : 16; /**< [ 15: 0](R/W) Reset delay. Chip and core domain resets immediately causes an early reset
+ notification to the dDR interface. The assertion of the domain reset is delayed
+ by this many 100 MHz PLL reference clocks. The minimum value is 1 uS.
+ Typical value is 4 uS once DDR has been initialized.
+ This field is reinitialized with a cold domain reset. */
+ uint64_t reserved_16_63 : 48;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_delay bdk_rst_delay_t;
+
+#define BDK_RST_DELAY BDK_RST_DELAY_FUNC()
+static inline uint64_t BDK_RST_DELAY_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_DELAY_FUNC(void)
+{
+ return 0x87e006001608ll;
+}
+
+#define typedef_BDK_RST_DELAY bdk_rst_delay_t
+#define bustype_BDK_RST_DELAY BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_DELAY "RST_DELAY"
+#define device_bar_BDK_RST_DELAY 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_DELAY 0
+#define arguments_BDK_RST_DELAY -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_dev_map#
+ *
+ * RST Device Map Register
+ * This register configures the reset domain of devices. Index {a} is enumerated by RST_DEV_E.
+ * Writes to these registers should only occur when all the bits ofRST_BIST_ACTIVE are clear.
+ * See RST_BIST_ACTIVE for details.
+ * Only one RST_DEV_MAP should be written at a time.
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_dev_mapx
+{
+ uint64_t u;
+ struct bdk_rst_dev_mapx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_3_63 : 61;
+ uint64_t dmn : 3; /**< [ 2: 0](R/W) Map of programmable devices to reset domains. When the specified domain reset
+ occurs the corresponding device will reset. Devices are numbered according to
+ RST_DEV_E.
+
+ GSERs should be mapped to the same domain as the PEM, CGX or NCSI device they are
+ associated with.
+
+ If any PCIEx_EP_STRAP is set then all RST_DEV_MAP(GSERx) are mapped to chip reset.
+
+ See RST_DOMAIN_E for field encodings.
+
+ This field is always reinitialized on a cold domain reset.
+
+ Internal:
+ RST_DEV_MAP()[DMN] resets to core domain for everything except AVS, EMM, MPI\<1:0\>
+ and NCSI which reset to SCP domain and GSER which are set to chip in EP mode.
+
+ This is based on cold reset so software could e.g. choose to put a PEM GSER into
+ endpoint based on knowledge outside the straps (that RST uses to reset this
+ table). */
+#else /* Word 0 - Little Endian */
+ uint64_t dmn : 3; /**< [ 2: 0](R/W) Map of programmable devices to reset domains. When the specified domain reset
+ occurs the corresponding device will reset. Devices are numbered according to
+ RST_DEV_E.
+
+ GSERs should be mapped to the same domain as the PEM, CGX or NCSI device they are
+ associated with.
+
+ If any PCIEx_EP_STRAP is set then all RST_DEV_MAP(GSERx) are mapped to chip reset.
+
+ See RST_DOMAIN_E for field encodings.
+
+ This field is always reinitialized on a cold domain reset.
+
+ Internal:
+ RST_DEV_MAP()[DMN] resets to core domain for everything except AVS, EMM, MPI\<1:0\>
+ and NCSI which reset to SCP domain and GSER which are set to chip in EP mode.
+
+ This is based on cold reset so software could e.g. choose to put a PEM GSER into
+ endpoint based on knowledge outside the straps (that RST uses to reset this
+ table). */
+ uint64_t reserved_3_63 : 61;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_dev_mapx_s cn; */
+};
+typedef union bdk_rst_dev_mapx bdk_rst_dev_mapx_t;
+
+static inline uint64_t BDK_RST_DEV_MAPX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_DEV_MAPX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=47))
+ return 0x87e00a001a00ll + 8ll * ((a) & 0x3f);
+ __bdk_csr_fatal("RST_DEV_MAPX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_DEV_MAPX(a) bdk_rst_dev_mapx_t
+#define bustype_BDK_RST_DEV_MAPX(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_DEV_MAPX(a) "RST_DEV_MAPX"
+#define device_bar_BDK_RST_DEV_MAPX(a) 0x2 /* PF_BAR2 */
+#define busnum_BDK_RST_DEV_MAPX(a) (a)
+#define arguments_BDK_RST_DEV_MAPX(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) rst_eco
+ *
+ * INTERNAL: RST ECO Register
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_eco
+{
+ uint64_t u;
+ struct bdk_rst_eco_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_32_63 : 32;
+ uint64_t eco_rw : 32; /**< [ 31: 0](R/W) ECO flops. */
+#else /* Word 0 - Little Endian */
+ uint64_t eco_rw : 32; /**< [ 31: 0](R/W) ECO flops. */
+ uint64_t reserved_32_63 : 32;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_eco_s cn8; */
+ struct bdk_rst_eco_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_32_63 : 32;
+ uint64_t eco_rw : 32; /**< [ 31: 0](R/W) ECO flops.
+ This field is always reinitialized on a cold domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t eco_rw : 32; /**< [ 31: 0](R/W) ECO flops.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_32_63 : 32;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_eco bdk_rst_eco_t;
+
+#define BDK_RST_ECO BDK_RST_ECO_FUNC()
+static inline uint64_t BDK_RST_ECO_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_ECO_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX))
+ return 0x87e0060017b8ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX))
+ return 0x87e0060017b8ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X))
+ return 0x87e0060017b8ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e0060017b8ll;
+ __bdk_csr_fatal("RST_ECO", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_ECO bdk_rst_eco_t
+#define bustype_BDK_RST_ECO BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_ECO "RST_ECO"
+#define device_bar_BDK_RST_ECO 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_ECO 0
+#define arguments_BDK_RST_ECO -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_int
+ *
+ * RST Interrupt Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_int
+{
+ uint64_t u;
+ struct bdk_rst_int_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_35_63 : 29;
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1C/H) SCP domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1C/H) MCP domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1C/H) Core domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t reserved_6_31 : 26;
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller. */
+ uint64_t reserved_6_31 : 26;
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1C/H) Core domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1C/H) MCP domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1C/H) SCP domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t reserved_35_63 : 29;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_int_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_35_63 : 29;
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1C/H) SCP domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1C/H) MCP domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1C/H) Core domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t perst : 4; /**< [ 19: 16](R/W1C/H) PERST*_L asserted while RST_CTL()[RST_RCV] = 1 and RST_CTL()[RST_CHIP] = 0. One bit
+ corresponds to each controller.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t reserved_4_15 : 12;
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller.
+ This field is reinitialized with a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t reserved_4_15 : 12;
+ uint64_t perst : 4; /**< [ 19: 16](R/W1C/H) PERST*_L asserted while RST_CTL()[RST_RCV] = 1 and RST_CTL()[RST_CHIP] = 0. One bit
+ corresponds to each controller.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1C/H) Core domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1C/H) MCP domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1C/H) SCP domain entered reset.
+ This field is reinitialized with a chip domain reset. */
+ uint64_t reserved_35_63 : 29;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_int_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_11_63 : 53;
+ uint64_t perst : 3; /**< [ 10: 8](R/W1C/H) PERST*_L asserted while RST_CTL()[RST_RCV] = 1 and RST_CTL()[RST_CHIP] = 0. One bit
+ corresponds to each controller. */
+ uint64_t reserved_3_7 : 5;
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller. */
+ uint64_t reserved_3_7 : 5;
+ uint64_t perst : 3; /**< [ 10: 8](R/W1C/H) PERST*_L asserted while RST_CTL()[RST_RCV] = 1 and RST_CTL()[RST_CHIP] = 0. One bit
+ corresponds to each controller. */
+ uint64_t reserved_11_63 : 53;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_rst_int_cn88xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_14_63 : 50;
+ uint64_t perst : 6; /**< [ 13: 8](R/W1C/H) PERST*_L asserted while RST_CTL()[RST_RCV] = 1 and RST_CTL()[RST_CHIP] = 0. One bit
+ corresponds to each controller. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t perst : 6; /**< [ 13: 8](R/W1C/H) PERST*_L asserted while RST_CTL()[RST_RCV] = 1 and RST_CTL()[RST_CHIP] = 0. One bit
+ corresponds to each controller. */
+ uint64_t reserved_14_63 : 50;
+#endif /* Word 0 - End */
+ } cn88xx;
+ struct bdk_rst_int_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_12_63 : 52;
+ uint64_t perst : 4; /**< [ 11: 8](R/W1C/H) PERST*_L asserted while RST_CTL()[RST_RCV] = 1 and RST_CTL()[RST_CHIP] = 0. One bit
+ corresponds to each controller. */
+ uint64_t reserved_4_7 : 4;
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1C/H) A controller link-down/hot-reset occurred while RST_CTL()[RST_LINK] = 0. Software must
+ assert then deassert RST_SOFT_PRST()[SOFT_PRST]. One bit corresponds to each controller. */
+ uint64_t reserved_4_7 : 4;
+ uint64_t perst : 4; /**< [ 11: 8](R/W1C/H) PERST*_L asserted while RST_CTL()[RST_RCV] = 1 and RST_CTL()[RST_CHIP] = 0. One bit
+ corresponds to each controller. */
+ uint64_t reserved_12_63 : 52;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_int bdk_rst_int_t;
+
+#define BDK_RST_INT BDK_RST_INT_FUNC()
+static inline uint64_t BDK_RST_INT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_INT_FUNC(void)
+{
+ return 0x87e006001628ll;
+}
+
+#define typedef_BDK_RST_INT bdk_rst_int_t
+#define bustype_BDK_RST_INT BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_INT "RST_INT"
+#define device_bar_BDK_RST_INT 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_INT 0
+#define arguments_BDK_RST_INT -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_int_ena_w1c
+ *
+ * RST Interrupt Enable Clear Register
+ * This register clears interrupt enable bits.
+ */
+union bdk_rst_int_ena_w1c
+{
+ uint64_t u;
+ struct bdk_rst_int_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_35_63 : 29;
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for RST_INT[SCP_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for RST_INT[MCP_RESET]. */
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for RST_INT[CORE_RESET]. */
+ uint64_t reserved_6_31 : 26;
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_6_31 : 26;
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for RST_INT[CORE_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for RST_INT[MCP_RESET]. */
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for RST_INT[SCP_RESET]. */
+ uint64_t reserved_35_63 : 29;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_int_ena_w1c_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_35_63 : 29;
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for RST_INT[SCP_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for RST_INT[MCP_RESET]. */
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for RST_INT[CORE_RESET]. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t perst : 4; /**< [ 19: 16](R/W1C/H) Reads or clears enable for RST_INT[PERST]. */
+ uint64_t reserved_4_15 : 12;
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_4_15 : 12;
+ uint64_t perst : 4; /**< [ 19: 16](R/W1C/H) Reads or clears enable for RST_INT[PERST]. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for RST_INT[CORE_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for RST_INT[MCP_RESET]. */
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for RST_INT[SCP_RESET]. */
+ uint64_t reserved_35_63 : 29;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_int_ena_w1c_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_11_63 : 53;
+ uint64_t perst : 3; /**< [ 10: 8](R/W1C/H) Reads or clears enable for RST_INT[PERST]. */
+ uint64_t reserved_3_7 : 5;
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_3_7 : 5;
+ uint64_t perst : 3; /**< [ 10: 8](R/W1C/H) Reads or clears enable for RST_INT[PERST]. */
+ uint64_t reserved_11_63 : 53;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_rst_int_ena_w1c_cn88xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_14_63 : 50;
+ uint64_t perst : 6; /**< [ 13: 8](R/W1C/H) Reads or clears enable for RST_INT[PERST]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t perst : 6; /**< [ 13: 8](R/W1C/H) Reads or clears enable for RST_INT[PERST]. */
+ uint64_t reserved_14_63 : 50;
+#endif /* Word 0 - End */
+ } cn88xx;
+ struct bdk_rst_int_ena_w1c_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_12_63 : 52;
+ uint64_t perst : 4; /**< [ 11: 8](R/W1C/H) Reads or clears enable for RST_INT[PERST]. */
+ uint64_t reserved_4_7 : 4;
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1C/H) Reads or clears enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_4_7 : 4;
+ uint64_t perst : 4; /**< [ 11: 8](R/W1C/H) Reads or clears enable for RST_INT[PERST]. */
+ uint64_t reserved_12_63 : 52;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_int_ena_w1c bdk_rst_int_ena_w1c_t;
+
+#define BDK_RST_INT_ENA_W1C BDK_RST_INT_ENA_W1C_FUNC()
+static inline uint64_t BDK_RST_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_INT_ENA_W1C_FUNC(void)
+{
+ return 0x87e0060016a8ll;
+}
+
+#define typedef_BDK_RST_INT_ENA_W1C bdk_rst_int_ena_w1c_t
+#define bustype_BDK_RST_INT_ENA_W1C BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_INT_ENA_W1C "RST_INT_ENA_W1C"
+#define device_bar_BDK_RST_INT_ENA_W1C 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_INT_ENA_W1C 0
+#define arguments_BDK_RST_INT_ENA_W1C -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_int_ena_w1s
+ *
+ * RST Interrupt Enable Set Register
+ * This register sets interrupt enable bits.
+ */
+union bdk_rst_int_ena_w1s
+{
+ uint64_t u;
+ struct bdk_rst_int_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_35_63 : 29;
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for RST_INT[SCP_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for RST_INT[MCP_RESET]. */
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for RST_INT[CORE_RESET]. */
+ uint64_t reserved_6_31 : 26;
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_6_31 : 26;
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for RST_INT[CORE_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for RST_INT[MCP_RESET]. */
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for RST_INT[SCP_RESET]. */
+ uint64_t reserved_35_63 : 29;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_int_ena_w1s_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_35_63 : 29;
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for RST_INT[SCP_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for RST_INT[MCP_RESET]. */
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for RST_INT[CORE_RESET]. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t perst : 4; /**< [ 19: 16](R/W1S/H) Reads or sets enable for RST_INT[PERST]. */
+ uint64_t reserved_4_15 : 12;
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_4_15 : 12;
+ uint64_t perst : 4; /**< [ 19: 16](R/W1S/H) Reads or sets enable for RST_INT[PERST]. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for RST_INT[CORE_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for RST_INT[MCP_RESET]. */
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for RST_INT[SCP_RESET]. */
+ uint64_t reserved_35_63 : 29;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_int_ena_w1s_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_11_63 : 53;
+ uint64_t perst : 3; /**< [ 10: 8](R/W1S/H) Reads or sets enable for RST_INT[PERST]. */
+ uint64_t reserved_3_7 : 5;
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_3_7 : 5;
+ uint64_t perst : 3; /**< [ 10: 8](R/W1S/H) Reads or sets enable for RST_INT[PERST]. */
+ uint64_t reserved_11_63 : 53;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_rst_int_ena_w1s_cn88xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_14_63 : 50;
+ uint64_t perst : 6; /**< [ 13: 8](R/W1S/H) Reads or sets enable for RST_INT[PERST]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t perst : 6; /**< [ 13: 8](R/W1S/H) Reads or sets enable for RST_INT[PERST]. */
+ uint64_t reserved_14_63 : 50;
+#endif /* Word 0 - End */
+ } cn88xx;
+ struct bdk_rst_int_ena_w1s_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_12_63 : 52;
+ uint64_t perst : 4; /**< [ 11: 8](R/W1S/H) Reads or sets enable for RST_INT[PERST]. */
+ uint64_t reserved_4_7 : 4;
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1S/H) Reads or sets enable for RST_INT[RST_LINK]. */
+ uint64_t reserved_4_7 : 4;
+ uint64_t perst : 4; /**< [ 11: 8](R/W1S/H) Reads or sets enable for RST_INT[PERST]. */
+ uint64_t reserved_12_63 : 52;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_int_ena_w1s bdk_rst_int_ena_w1s_t;
+
+#define BDK_RST_INT_ENA_W1S BDK_RST_INT_ENA_W1S_FUNC()
+static inline uint64_t BDK_RST_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_INT_ENA_W1S_FUNC(void)
+{
+ return 0x87e0060016a0ll;
+}
+
+#define typedef_BDK_RST_INT_ENA_W1S bdk_rst_int_ena_w1s_t
+#define bustype_BDK_RST_INT_ENA_W1S BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_INT_ENA_W1S "RST_INT_ENA_W1S"
+#define device_bar_BDK_RST_INT_ENA_W1S 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_INT_ENA_W1S 0
+#define arguments_BDK_RST_INT_ENA_W1S -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_int_w1s
+ *
+ * RST Interrupt Set Register
+ * This register sets interrupt bits.
+ */
+union bdk_rst_int_w1s
+{
+ uint64_t u;
+ struct bdk_rst_int_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_35_63 : 29;
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1S/H) Reads or sets RST_INT[SCP_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1S/H) Reads or sets RST_INT[MCP_RESET]. */
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1S/H) Reads or sets RST_INT[CORE_RESET]. */
+ uint64_t reserved_6_31 : 26;
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+ uint64_t reserved_6_31 : 26;
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1S/H) Reads or sets RST_INT[CORE_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1S/H) Reads or sets RST_INT[MCP_RESET]. */
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1S/H) Reads or sets RST_INT[SCP_RESET]. */
+ uint64_t reserved_35_63 : 29;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_int_w1s_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_35_63 : 29;
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1S/H) Reads or sets RST_INT[SCP_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1S/H) Reads or sets RST_INT[MCP_RESET]. */
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1S/H) Reads or sets RST_INT[CORE_RESET]. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t perst : 4; /**< [ 19: 16](R/W1S/H) Reads or sets RST_INT[PERST]. */
+ uint64_t reserved_4_15 : 12;
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+ uint64_t reserved_4_15 : 12;
+ uint64_t perst : 4; /**< [ 19: 16](R/W1S/H) Reads or sets RST_INT[PERST]. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t core_reset : 1; /**< [ 32: 32](R/W1S/H) Reads or sets RST_INT[CORE_RESET]. */
+ uint64_t mcp_reset : 1; /**< [ 33: 33](R/W1S/H) Reads or sets RST_INT[MCP_RESET]. */
+ uint64_t scp_reset : 1; /**< [ 34: 34](R/W1S/H) Reads or sets RST_INT[SCP_RESET]. */
+ uint64_t reserved_35_63 : 29;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_int_w1s_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_11_63 : 53;
+ uint64_t perst : 3; /**< [ 10: 8](R/W1S/H) Reads or sets RST_INT[PERST]. */
+ uint64_t reserved_3_7 : 5;
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+ uint64_t reserved_3_7 : 5;
+ uint64_t perst : 3; /**< [ 10: 8](R/W1S/H) Reads or sets RST_INT[PERST]. */
+ uint64_t reserved_11_63 : 53;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_rst_int_w1s_cn88xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_14_63 : 50;
+ uint64_t perst : 6; /**< [ 13: 8](R/W1S/H) Reads or sets RST_INT[PERST]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 6; /**< [ 5: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t perst : 6; /**< [ 13: 8](R/W1S/H) Reads or sets RST_INT[PERST]. */
+ uint64_t reserved_14_63 : 50;
+#endif /* Word 0 - End */
+ } cn88xx;
+ struct bdk_rst_int_w1s_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_12_63 : 52;
+ uint64_t perst : 4; /**< [ 11: 8](R/W1S/H) Reads or sets RST_INT[PERST]. */
+ uint64_t reserved_4_7 : 4;
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 4; /**< [ 3: 0](R/W1S/H) Reads or sets RST_INT[RST_LINK]. */
+ uint64_t reserved_4_7 : 4;
+ uint64_t perst : 4; /**< [ 11: 8](R/W1S/H) Reads or sets RST_INT[PERST]. */
+ uint64_t reserved_12_63 : 52;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_int_w1s bdk_rst_int_w1s_t;
+
+#define BDK_RST_INT_W1S BDK_RST_INT_W1S_FUNC()
+static inline uint64_t BDK_RST_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_INT_W1S_FUNC(void)
+{
+ return 0x87e006001630ll;
+}
+
+#define typedef_BDK_RST_INT_W1S bdk_rst_int_w1s_t
+#define bustype_BDK_RST_INT_W1S BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_INT_W1S "RST_INT_W1S"
+#define device_bar_BDK_RST_INT_W1S 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_INT_W1S 0
+#define arguments_BDK_RST_INT_W1S -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_lboot
+ *
+ * RST Last Boot Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_lboot
+{
+ uint64_t u;
+ struct bdk_rst_lboot_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t lboot : 48; /**< [ 47: 0](R/W1C/H) Bit vector of last reset cause(es). The value reset with a
+ cold domain reset.
+ Bit numbers are enumerated by RST_SOURCE_E. */
+#else /* Word 0 - Little Endian */
+ uint64_t lboot : 48; /**< [ 47: 0](R/W1C/H) Bit vector of last reset cause(es). The value reset with a
+ cold domain reset.
+ Bit numbers are enumerated by RST_SOURCE_E. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_lboot_s cn; */
+};
+typedef union bdk_rst_lboot bdk_rst_lboot_t;
+
+#define BDK_RST_LBOOT BDK_RST_LBOOT_FUNC()
+static inline uint64_t BDK_RST_LBOOT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_LBOOT_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001620ll;
+ __bdk_csr_fatal("RST_LBOOT", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_LBOOT bdk_rst_lboot_t
+#define bustype_BDK_RST_LBOOT BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_LBOOT "RST_LBOOT"
+#define device_bar_BDK_RST_LBOOT 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_LBOOT 0
+#define arguments_BDK_RST_LBOOT -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_mcp_domain_w1c
+ *
+ * RST MCP Domain Soft Reset Clear Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_mcp_domain_w1c
+{
+ uint64_t u;
+ struct bdk_rst_mcp_domain_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1C/H) Clear soft reset of the MCP processor and associated logic.
+ When set to one, the soft reset of the mcp is removed.
+ Reads of this register show the soft reset state. Not the actual mcp domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[MCP] shows
+ the actual reset state. To compensate for delays in reset, this field should only
+ be set if RST_RESET_ACTIVE[MCP] is set.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1C/H) Clear soft reset of the MCP processor and associated logic.
+ When set to one, the soft reset of the mcp is removed.
+ Reads of this register show the soft reset state. Not the actual mcp domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[MCP] shows
+ the actual reset state. To compensate for delays in reset, this field should only
+ be set if RST_RESET_ACTIVE[MCP] is set.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_mcp_domain_w1c_s cn; */
+};
+typedef union bdk_rst_mcp_domain_w1c bdk_rst_mcp_domain_w1c_t;
+
+#define BDK_RST_MCP_DOMAIN_W1C BDK_RST_MCP_DOMAIN_W1C_FUNC()
+static inline uint64_t BDK_RST_MCP_DOMAIN_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_MCP_DOMAIN_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001838ll;
+ __bdk_csr_fatal("RST_MCP_DOMAIN_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_MCP_DOMAIN_W1C bdk_rst_mcp_domain_w1c_t
+#define bustype_BDK_RST_MCP_DOMAIN_W1C BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_MCP_DOMAIN_W1C "RST_MCP_DOMAIN_W1C"
+#define device_bar_BDK_RST_MCP_DOMAIN_W1C 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_MCP_DOMAIN_W1C 0
+#define arguments_BDK_RST_MCP_DOMAIN_W1C -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_mcp_domain_w1s
+ *
+ * RST MCP Domain Soft Reset Set Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_mcp_domain_w1s
+{
+ uint64_t u;
+ struct bdk_rst_mcp_domain_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Set soft reset of MCP core and associated logic.
+ When set to one, all logic associated with the mcp domain is placed in reset.
+ Reads of this register show the soft reset state. Not the actual mcp domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[MCP] shows
+ the actual reset state.
+ It is typically cleared by writing to RST_MCP_DOMAIN_W1C.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Set soft reset of MCP core and associated logic.
+ When set to one, all logic associated with the mcp domain is placed in reset.
+ Reads of this register show the soft reset state. Not the actual mcp domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[MCP] shows
+ the actual reset state.
+ It is typically cleared by writing to RST_MCP_DOMAIN_W1C.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_mcp_domain_w1s_s cn; */
+};
+typedef union bdk_rst_mcp_domain_w1s bdk_rst_mcp_domain_w1s_t;
+
+#define BDK_RST_MCP_DOMAIN_W1S BDK_RST_MCP_DOMAIN_W1S_FUNC()
+static inline uint64_t BDK_RST_MCP_DOMAIN_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_MCP_DOMAIN_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001830ll;
+ __bdk_csr_fatal("RST_MCP_DOMAIN_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_MCP_DOMAIN_W1S bdk_rst_mcp_domain_w1s_t
+#define bustype_BDK_RST_MCP_DOMAIN_W1S BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_MCP_DOMAIN_W1S "RST_MCP_DOMAIN_W1S"
+#define device_bar_BDK_RST_MCP_DOMAIN_W1S 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_MCP_DOMAIN_W1S 0
+#define arguments_BDK_RST_MCP_DOMAIN_W1S -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_msix_pba#
+ *
+ * RST MSI-X Pending Bit Array Registers
+ * This register is the MSI-X PBA table; the bit number is indexed by the RST_INT_VEC_E
+ * enumeration.
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_msix_pbax
+{
+ uint64_t u;
+ struct bdk_rst_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 RST_MSIX_VEC()_CTL, enumerated by
+ RST_INT_VEC_E. Bits that have no associated RST_INT_VEC_E are 0. */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message for the associated RST_MSIX_VEC()_CTL, enumerated by
+ RST_INT_VEC_E. Bits that have no associated RST_INT_VEC_E are 0. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_msix_pbax_s cn8; */
+ struct bdk_rst_msix_pbax_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message for the associated RST_MSIX_VEC()_CTL, enumerated by
+ RST_INT_VEC_E. Bits that have no associated RST_INT_VEC_E are 0.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO/H) Pending message for the associated RST_MSIX_VEC()_CTL, enumerated by
+ RST_INT_VEC_E. Bits that have no associated RST_INT_VEC_E are 0.
+ This field is always reinitialized on a chip domain reset. */
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_msix_pbax bdk_rst_msix_pbax_t;
+
+static inline uint64_t BDK_RST_MSIX_PBAX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_MSIX_PBAX(unsigned long a)
+{
+ if (a==0)
+ return 0x87e006ff0000ll + 8ll * ((a) & 0x0);
+ __bdk_csr_fatal("RST_MSIX_PBAX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_MSIX_PBAX(a) bdk_rst_msix_pbax_t
+#define bustype_BDK_RST_MSIX_PBAX(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_MSIX_PBAX(a) "RST_MSIX_PBAX"
+#define device_bar_BDK_RST_MSIX_PBAX(a) 0x4 /* PF_BAR4 */
+#define busnum_BDK_RST_MSIX_PBAX(a) (a)
+#define arguments_BDK_RST_MSIX_PBAX(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) rst_msix_vec#_addr
+ *
+ * RST MSI-X Vector-Table Address Register
+ * This register is the MSI-X vector table, indexed by the RST_INT_VEC_E enumeration.
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_msix_vecx_addr
+{
+ uint64_t u;
+ struct bdk_rst_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 can be read or written by either secure or nonsecure states.
+ 1 = This vector's RST_MSIX_VEC()_ADDR, RST_MSIX_VEC()_CTL, and
+ corresponding bit of RST_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
+ by the nonsecure world.
+
+ If PCCPF_RST_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 can be read or written by either secure or nonsecure states.
+ 1 = This vector's RST_MSIX_VEC()_ADDR, RST_MSIX_VEC()_CTL, and
+ corresponding bit of RST_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
+ by the nonsecure world.
+
+ If PCCPF_RST_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_rst_msix_vecx_addr_cn8
+ {
+#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 can be read or written by either secure or nonsecure states.
+ 1 = This vector's RST_MSIX_VEC()_ADDR, RST_MSIX_VEC()_CTL, and
+ corresponding bit of RST_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
+ by the nonsecure world.
+
+ If PCCPF_RST_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 can be read or written by either secure or nonsecure states.
+ 1 = This vector's RST_MSIX_VEC()_ADDR, RST_MSIX_VEC()_CTL, and
+ corresponding bit of RST_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
+ by the nonsecure world.
+
+ If PCCPF_RST_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 */
+ } cn8;
+ struct bdk_rst_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.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1 : 1;
+ uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
+ 0 = This vector can be read or written by either secure or nonsecure states.
+ 1 = This vector's RST_MSIX_VEC()_ADDR, RST_MSIX_VEC()_CTL, and
+ corresponding bit of RST_MSIX_PBA() are RAZ/WI and does not cause
+ a fault when accessed by the nonsecure world.
+
+ If PCCPF_RST_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.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
+ 0 = This vector can be read or written by either secure or nonsecure states.
+ 1 = This vector's RST_MSIX_VEC()_ADDR, RST_MSIX_VEC()_CTL, and
+ corresponding bit of RST_MSIX_PBA() are RAZ/WI and does not cause
+ a fault when accessed by the nonsecure world.
+
+ If PCCPF_RST_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.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1 : 1;
+ uint64_t addr : 51; /**< [ 52: 2](R/W) IOVA to use for MSI-X delivery of this vector.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_53_63 : 11;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_msix_vecx_addr bdk_rst_msix_vecx_addr_t;
+
+static inline uint64_t BDK_RST_MSIX_VECX_ADDR(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_MSIX_VECX_ADDR(unsigned long a)
+{
+ if (a==0)
+ return 0x87e006f00000ll + 0x10ll * ((a) & 0x0);
+ __bdk_csr_fatal("RST_MSIX_VECX_ADDR", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_MSIX_VECX_ADDR(a) bdk_rst_msix_vecx_addr_t
+#define bustype_BDK_RST_MSIX_VECX_ADDR(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_MSIX_VECX_ADDR(a) "RST_MSIX_VECX_ADDR"
+#define device_bar_BDK_RST_MSIX_VECX_ADDR(a) 0x4 /* PF_BAR4 */
+#define busnum_BDK_RST_MSIX_VECX_ADDR(a) (a)
+#define arguments_BDK_RST_MSIX_VECX_ADDR(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) rst_msix_vec#_ctl
+ *
+ * RST MSI-X Vector-Table Control and Data Register
+ * This register is the MSI-X vector table, indexed by the RST_INT_VEC_E enumeration.
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_msix_vecx_ctl
+{
+ uint64_t u;
+ struct bdk_rst_msix_vecx_ctl_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_33_63 : 31;
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector. */
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t reserved_33_63 : 31;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_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 are 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 are sent to this vector. */
+ uint64_t reserved_33_63 : 31;
+#endif /* Word 0 - End */
+ } cn8;
+ struct bdk_rst_msix_vecx_ctl_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_33_63 : 31;
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 32; /**< [ 31: 0](R/W) Data to use for MSI-X delivery of this vector.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_33_63 : 31;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_msix_vecx_ctl bdk_rst_msix_vecx_ctl_t;
+
+static inline uint64_t BDK_RST_MSIX_VECX_CTL(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_MSIX_VECX_CTL(unsigned long a)
+{
+ if (a==0)
+ return 0x87e006f00008ll + 0x10ll * ((a) & 0x0);
+ __bdk_csr_fatal("RST_MSIX_VECX_CTL", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_MSIX_VECX_CTL(a) bdk_rst_msix_vecx_ctl_t
+#define bustype_BDK_RST_MSIX_VECX_CTL(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_MSIX_VECX_CTL(a) "RST_MSIX_VECX_CTL"
+#define device_bar_BDK_RST_MSIX_VECX_CTL(a) 0x4 /* PF_BAR4 */
+#define busnum_BDK_RST_MSIX_VECX_CTL(a) (a)
+#define arguments_BDK_RST_MSIX_VECX_CTL(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) rst_ocx
+ *
+ * RST OCX Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_ocx
+{
+ uint64_t u;
+ struct bdk_rst_ocx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_3_63 : 61;
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W) Controls whether corresponding OCX link going down causes a chip reset. A warm/soft reset
+ does not change this field. On cold reset, this field is initialized to 0. See
+ OCX_COM_LINK()_CTL for a description of what events can contribute to the link_down
+ condition. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W) Controls whether corresponding OCX link going down causes a chip reset. A warm/soft reset
+ does not change this field. On cold reset, this field is initialized to 0. See
+ OCX_COM_LINK()_CTL for a description of what events can contribute to the link_down
+ condition. */
+ uint64_t reserved_3_63 : 61;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_ocx_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t rst_link : 1; /**< [ 0: 0](R/W) Controls whether the OCX CCPI link going down causes a reset.
+ This field is reinitialized with a core domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 1; /**< [ 0: 0](R/W) Controls whether the OCX CCPI link going down causes a reset.
+ This field is reinitialized with a core domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_ocx_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_3_63 : 61;
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W) Reserved. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst_link : 3; /**< [ 2: 0](R/W) Reserved. */
+ uint64_t reserved_3_63 : 61;
+#endif /* Word 0 - End */
+ } cn81xx;
+ /* struct bdk_rst_ocx_s cn88xx; */
+ /* struct bdk_rst_ocx_cn81xx cn83xx; */
+};
+typedef union bdk_rst_ocx bdk_rst_ocx_t;
+
+#define BDK_RST_OCX BDK_RST_OCX_FUNC()
+static inline uint64_t BDK_RST_OCX_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_OCX_FUNC(void)
+{
+ return 0x87e006001618ll;
+}
+
+#define typedef_BDK_RST_OCX bdk_rst_ocx_t
+#define bustype_BDK_RST_OCX BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_OCX "RST_OCX"
+#define device_bar_BDK_RST_OCX 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_OCX 0
+#define arguments_BDK_RST_OCX -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_osc_cntr
+ *
+ * INTERNAL: RST Internal Ring-Oscillator Counter Register
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_osc_cntr
+{
+ uint64_t u;
+ struct bdk_rst_osc_cntr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t cnt : 64; /**< [ 63: 0](RO/H) Internal ring-oscillator clock count. Updated every 16 reference clocks. */
+#else /* Word 0 - Little Endian */
+ uint64_t cnt : 64; /**< [ 63: 0](RO/H) Internal ring-oscillator clock count. Updated every 16 reference clocks. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_osc_cntr_s cn8; */
+ struct bdk_rst_osc_cntr_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t cnt : 64; /**< [ 63: 0](RO/H) Internal ring-oscillator clock count.
+ Updated every 16 PLL reference clocks. */
+#else /* Word 0 - Little Endian */
+ uint64_t cnt : 64; /**< [ 63: 0](RO/H) Internal ring-oscillator clock count.
+ Updated every 16 PLL reference clocks. */
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_osc_cntr bdk_rst_osc_cntr_t;
+
+#define BDK_RST_OSC_CNTR BDK_RST_OSC_CNTR_FUNC()
+static inline uint64_t BDK_RST_OSC_CNTR_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_OSC_CNTR_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX))
+ return 0x87e006001778ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX))
+ return 0x87e006001778ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X))
+ return 0x87e006001778ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001768ll;
+ __bdk_csr_fatal("RST_OSC_CNTR", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_OSC_CNTR bdk_rst_osc_cntr_t
+#define bustype_BDK_RST_OSC_CNTR BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_OSC_CNTR "RST_OSC_CNTR"
+#define device_bar_BDK_RST_OSC_CNTR 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_OSC_CNTR 0
+#define arguments_BDK_RST_OSC_CNTR -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_out_ctl
+ *
+ * RST External Reset Control Register
+ * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_out_ctl
+{
+ uint64_t u;
+ struct bdk_rst_out_ctl_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t scp_rst : 1; /**< [ 3: 3](R/W) SCP reset output. When set by software, this field drives the GPIO_PIN_SEL_E::SCP_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a SCP
+ domain reset.
+ This field is always reinitialized on an SCP domain reset. */
+ uint64_t mcp_rst : 1; /**< [ 2: 2](R/W) MCP reset output. When set by software, this field drives the GPIO_PIN_SEL_E::MCP_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a MCP
+ domain reset.
+ This field is always reinitialized on an MCP domain reset. */
+ uint64_t core_rst : 1; /**< [ 1: 1](R/W) Core reset output. When set by software, this field drives the GPIO_PIN_SEL_E::CORE_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a core
+ domain reset.
+ This field is always reinitialized on a core domain reset. */
+ uint64_t reserved_0 : 1;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0 : 1;
+ uint64_t core_rst : 1; /**< [ 1: 1](R/W) Core reset output. When set by software, this field drives the GPIO_PIN_SEL_E::CORE_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a core
+ domain reset.
+ This field is always reinitialized on a core domain reset. */
+ uint64_t mcp_rst : 1; /**< [ 2: 2](R/W) MCP reset output. When set by software, this field drives the GPIO_PIN_SEL_E::MCP_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a MCP
+ domain reset.
+ This field is always reinitialized on an MCP domain reset. */
+ uint64_t scp_rst : 1; /**< [ 3: 3](R/W) SCP reset output. When set by software, this field drives the GPIO_PIN_SEL_E::SCP_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a SCP
+ domain reset.
+ This field is always reinitialized on an SCP domain reset. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_out_ctl_cn8
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W) Soft reset. When set to 1 by software, this field drives the CHIP_RESET_OUT_L pin
+ active low. In this case the field must also be cleared by software to deassert
+ the pin. The pin is also automatically asserted and deasserted by hardware
+ during a cold/warm/soft reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W) Soft reset. When set to 1 by software, this field drives the CHIP_RESET_OUT_L pin
+ active low. In this case the field must also be cleared by software to deassert
+ the pin. The pin is also automatically asserted and deasserted by hardware
+ during a cold/warm/soft reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } cn8;
+ struct bdk_rst_out_ctl_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t scp_rst : 1; /**< [ 3: 3](R/W) SCP reset output. When set by software, this field drives the GPIO_PIN_SEL_E::SCP_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a SCP
+ domain reset.
+ This field is always reinitialized on an SCP domain reset. */
+ uint64_t mcp_rst : 1; /**< [ 2: 2](R/W) MCP reset output. When set by software, this field drives the GPIO_PIN_SEL_E::MCP_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a MCP
+ domain reset.
+ This field is always reinitialized on an MCP domain reset. */
+ uint64_t core_rst : 1; /**< [ 1: 1](R/W) Core reset output. When set by software, this field drives the GPIO_PIN_SEL_E::CORE_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a core
+ domain reset.
+ This field is always reinitialized on a core domain reset. */
+ uint64_t chip_rst : 1; /**< [ 0: 0](R/W) Chip domain reset output. When set to one by software, this field drives the
+ CHIP_RESET_OUT_L pin active low. If this field is set my software then it must also be
+ cleared to deassert the pin. The pin is also automatically asserted and deasserted by
+ hardware during a chip domain reset.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t chip_rst : 1; /**< [ 0: 0](R/W) Chip domain reset output. When set to one by software, this field drives the
+ CHIP_RESET_OUT_L pin active low. If this field is set my software then it must also be
+ cleared to deassert the pin. The pin is also automatically asserted and deasserted by
+ hardware during a chip domain reset.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t core_rst : 1; /**< [ 1: 1](R/W) Core reset output. When set by software, this field drives the GPIO_PIN_SEL_E::CORE_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a core
+ domain reset.
+ This field is always reinitialized on a core domain reset. */
+ uint64_t mcp_rst : 1; /**< [ 2: 2](R/W) MCP reset output. When set by software, this field drives the GPIO_PIN_SEL_E::MCP_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a MCP
+ domain reset.
+ This field is always reinitialized on an MCP domain reset. */
+ uint64_t scp_rst : 1; /**< [ 3: 3](R/W) SCP reset output. When set by software, this field drives the GPIO_PIN_SEL_E::SCP_RESET_OUT
+ selectable pin active. The pin can be assigned using GPIO_BIT_CFG(). If this
+ field is set by software then it must also be cleared to deassert the pin.
+ The pin is also automatically asserted and deasserted by hardware during a SCP
+ domain reset.
+ This field is always reinitialized on an SCP domain reset. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_out_ctl bdk_rst_out_ctl_t;
+
+#define BDK_RST_OUT_CTL BDK_RST_OUT_CTL_FUNC()
+static inline uint64_t BDK_RST_OUT_CTL_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_OUT_CTL_FUNC(void)
+{
+ return 0x87e006001688ll;
+}
+
+#define typedef_BDK_RST_OUT_CTL bdk_rst_out_ctl_t
+#define bustype_BDK_RST_OUT_CTL BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_OUT_CTL "RST_OUT_CTL"
+#define device_bar_BDK_RST_OUT_CTL 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_OUT_CTL 0
+#define arguments_BDK_RST_OUT_CTL -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_pll_limit
+ *
+ * RST PLL Maximum Frequency Limit Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_pll_limit
+{
+ uint64_t u;
+ struct bdk_rst_pll_limit_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_23_63 : 41;
+ uint64_t cpt_max_mul : 7; /**< [ 22: 16](R/W/H) Crypto clock maximum PLL multiplier.
+ This field is used to limit the RST_CPT_PLL[CUR_MUL] value.
+ A value of zero is considered unlimited. Once the value
+ of this field is nonzero, any new values written into this field
+ cannot exceed the previous value. Values 1-3 are considered illegal
+ since the minimum PLL frequency is 200 MHz.
+
+ Internal:
+ The field is initialized to FUS_FUSE_NUM_E::CPT_MAX_MUL() fuses on a chip domain reset. */
+ uint64_t reserved_15 : 1;
+ uint64_t core_max_mul : 7; /**< [ 14: 8](R/W/H) Core clock maximum PLL multiplier.
+ This field is used to limit the RST_CORE_PLL[CUR_MUL] value.
+ A value of zero is considered unlimited. Once the value
+ of this field is nonzero, any new values written into this field
+ cannot exceed the previous value. Values 1-5 are considered illegal
+ since the minimum PLL frequency is 300 MHz.
+
+ Internal:
+ The field is initialized to FUS_FUSE_NUM_E::CORE_MAX_MUL() fuses on a chip domain reset. */
+ uint64_t reserved_7 : 1;
+ uint64_t pnr_max_mul : 7; /**< [ 6: 0](R/W/H) Coprocessor clock maximum PLL multiplier.
+ This field is used to limit the RST_PNR_PLL[CUR_MUL] value.
+ A value of zero is considered unlimited. Once the value
+ of this field is nonzero, any new values written into this field
+ cannot exceed the previous value. Values 1-5 are considered illegal
+ since the minimum PLL frequency is 300 MHz.
+
+ Internal:
+ The field is initialized to FUS_FUSE_NUM_E::PNR_MAX_MUL() fuses on a chip domain
+ reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t pnr_max_mul : 7; /**< [ 6: 0](R/W/H) Coprocessor clock maximum PLL multiplier.
+ This field is used to limit the RST_PNR_PLL[CUR_MUL] value.
+ A value of zero is considered unlimited. Once the value
+ of this field is nonzero, any new values written into this field
+ cannot exceed the previous value. Values 1-5 are considered illegal
+ since the minimum PLL frequency is 300 MHz.
+
+ Internal:
+ The field is initialized to FUS_FUSE_NUM_E::PNR_MAX_MUL() fuses on a chip domain
+ reset. */
+ uint64_t reserved_7 : 1;
+ uint64_t core_max_mul : 7; /**< [ 14: 8](R/W/H) Core clock maximum PLL multiplier.
+ This field is used to limit the RST_CORE_PLL[CUR_MUL] value.
+ A value of zero is considered unlimited. Once the value
+ of this field is nonzero, any new values written into this field
+ cannot exceed the previous value. Values 1-5 are considered illegal
+ since the minimum PLL frequency is 300 MHz.
+
+ Internal:
+ The field is initialized to FUS_FUSE_NUM_E::CORE_MAX_MUL() fuses on a chip domain reset. */
+ uint64_t reserved_15 : 1;
+ uint64_t cpt_max_mul : 7; /**< [ 22: 16](R/W/H) Crypto clock maximum PLL multiplier.
+ This field is used to limit the RST_CPT_PLL[CUR_MUL] value.
+ A value of zero is considered unlimited. Once the value
+ of this field is nonzero, any new values written into this field
+ cannot exceed the previous value. Values 1-3 are considered illegal
+ since the minimum PLL frequency is 200 MHz.
+
+ Internal:
+ The field is initialized to FUS_FUSE_NUM_E::CPT_MAX_MUL() fuses on a chip domain reset. */
+ uint64_t reserved_23_63 : 41;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_pll_limit_s cn; */
+};
+typedef union bdk_rst_pll_limit bdk_rst_pll_limit_t;
+
+#define BDK_RST_PLL_LIMIT BDK_RST_PLL_LIMIT_FUNC()
+static inline uint64_t BDK_RST_PLL_LIMIT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_PLL_LIMIT_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e00a001790ll;
+ __bdk_csr_fatal("RST_PLL_LIMIT", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_PLL_LIMIT bdk_rst_pll_limit_t
+#define bustype_BDK_RST_PLL_LIMIT BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_PLL_LIMIT "RST_PLL_LIMIT"
+#define device_bar_BDK_RST_PLL_LIMIT 0x2 /* PF_BAR2 */
+#define busnum_BDK_RST_PLL_LIMIT 0
+#define arguments_BDK_RST_PLL_LIMIT -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_pnr_pll
+ *
+ * RST Coprocessor Clock PLL Control Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_pnr_pll
+{
+ uint64_t u;
+ struct bdk_rst_pnr_pll_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_51_63 : 13;
+ uint64_t cout_sel : 2; /**< [ 50: 49](R/W) Coprocessor clockout select.
+ 0x0 = Coprocessor clock divided by 16.
+ 0x1 = Coprocessor clock tree output divided by 16.
+ 0x2 = PLL0 output divided by 16.
+ 0x3 = PLL1 output divided by 16.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t cout_reset : 1; /**< [ 48: 48](R/W) Coprocessor clockout reset. The coprocessor clockout should be placed in
+ reset at least 10 PLL reference clocks prior
+ to changing [COUT_SEL]. It should remain under reset for at least 10
+ PLL reference clocks after [COUT_SEL] changes.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_45_47 : 3;
+ uint64_t pd_switch : 1; /**< [ 44: 44](R/W) PLL powerdown on switch. When set, hardware automatically
+ powers down the inactive PLL after the switch has occured.
+ When cleared, the inactive PLL remains in operation.
+ If [PD_SWITCH] is written to a one while both [DLY_SWITCH] and
+ [NXT_PGM] are cleared then the inactive PLL will immediately powerdown.
+
+ Note that a powered down PLL requires an additional 575 reference
+ clocks to become active. This time is automatically added by the
+ hardware.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t dly_switch : 12; /**< [ 43: 32](R/W/H) Switch the active PLL after delaying this number of 100 MHz clocks.
+ When set to a nonzero value, the hardware will wait for
+ any PLL programming to complete and then switch to the inactive
+ PLL after the specified number of PLL reference clocks. Hardware
+ will add additional clocks if required.
+ This field is always reinitialized on a cold domain reset.
+
+ Internal:
+ Hardware will add counts to maintain 256 cpt_clk/sclk/rclk notification to hardware.
+ Additional time will be added to wakeup powered down AP cores but that
+ time not be included in this count. */
+ uint64_t pll1_pd : 1; /**< [ 31: 31](RO) PNR PLL1 power down. When set PLL is currently powered down. */
+ uint64_t pll0_pd : 1; /**< [ 30: 30](RO) PNR PLL0 power down. When set PLL is currently powered down. */
+ uint64_t reserved_23_29 : 7;
+ uint64_t init_mul : 7; /**< [ 22: 16](R/W) Coprocessor clock multiplier to be used during a core or chip domain
+ reset. Actual frequency is [INIT_MUL] * 50 MHz. The actual value
+ used is limited by RST_PLL_LIMIT[PNR_MAX_MUL].
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t nxt_pgm : 1; /**< [ 15: 15](R/W/H) Program non-active PLL using [NXT_MUL]. Hardware automatically
+ clears bit when both pll is updated and any delay specified
+ in [DLY_SWITCH] has completed.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t nxt_mul : 7; /**< [ 14: 8](R/W) Coprocessor PLL frequency to be program in 50 MHz increments. The
+ actual value used is limited by RST_PLL_LIMIT[PNR_MAX_MUL] and
+ a minimum setting of 300 MHz.
+ Value will match [INIT_MUL] immediately after a cold or chip domain reset. */
+ uint64_t active_pll : 1; /**< [ 7: 7](RO) Indicates which physical PLL is in use. For diagnostic use only. */
+ uint64_t cur_mul : 7; /**< [ 6: 0](RO/H) Coprocessor clock frequency. Actual frequency is [CUR_MUL] * 50 MHz.
+ Value will reflect [NXT_MUL] after [DLY_SWITCH] has completed or [INIT_MUL]
+ immediately after a cold or chip domain reset. In both cases, value
+ is limited by RST_PLL_LIMIT[PNR_MAX_MUL]. */
+#else /* Word 0 - Little Endian */
+ uint64_t cur_mul : 7; /**< [ 6: 0](RO/H) Coprocessor clock frequency. Actual frequency is [CUR_MUL] * 50 MHz.
+ Value will reflect [NXT_MUL] after [DLY_SWITCH] has completed or [INIT_MUL]
+ immediately after a cold or chip domain reset. In both cases, value
+ is limited by RST_PLL_LIMIT[PNR_MAX_MUL]. */
+ uint64_t active_pll : 1; /**< [ 7: 7](RO) Indicates which physical PLL is in use. For diagnostic use only. */
+ uint64_t nxt_mul : 7; /**< [ 14: 8](R/W) Coprocessor PLL frequency to be program in 50 MHz increments. The
+ actual value used is limited by RST_PLL_LIMIT[PNR_MAX_MUL] and
+ a minimum setting of 300 MHz.
+ Value will match [INIT_MUL] immediately after a cold or chip domain reset. */
+ uint64_t nxt_pgm : 1; /**< [ 15: 15](R/W/H) Program non-active PLL using [NXT_MUL]. Hardware automatically
+ clears bit when both pll is updated and any delay specified
+ in [DLY_SWITCH] has completed.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t init_mul : 7; /**< [ 22: 16](R/W) Coprocessor clock multiplier to be used during a core or chip domain
+ reset. Actual frequency is [INIT_MUL] * 50 MHz. The actual value
+ used is limited by RST_PLL_LIMIT[PNR_MAX_MUL].
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_23_29 : 7;
+ uint64_t pll0_pd : 1; /**< [ 30: 30](RO) PNR PLL0 power down. When set PLL is currently powered down. */
+ uint64_t pll1_pd : 1; /**< [ 31: 31](RO) PNR PLL1 power down. When set PLL is currently powered down. */
+ uint64_t dly_switch : 12; /**< [ 43: 32](R/W/H) Switch the active PLL after delaying this number of 100 MHz clocks.
+ When set to a nonzero value, the hardware will wait for
+ any PLL programming to complete and then switch to the inactive
+ PLL after the specified number of PLL reference clocks. Hardware
+ will add additional clocks if required.
+ This field is always reinitialized on a cold domain reset.
+
+ Internal:
+ Hardware will add counts to maintain 256 cpt_clk/sclk/rclk notification to hardware.
+ Additional time will be added to wakeup powered down AP cores but that
+ time not be included in this count. */
+ uint64_t pd_switch : 1; /**< [ 44: 44](R/W) PLL powerdown on switch. When set, hardware automatically
+ powers down the inactive PLL after the switch has occured.
+ When cleared, the inactive PLL remains in operation.
+ If [PD_SWITCH] is written to a one while both [DLY_SWITCH] and
+ [NXT_PGM] are cleared then the inactive PLL will immediately powerdown.
+
+ Note that a powered down PLL requires an additional 575 reference
+ clocks to become active. This time is automatically added by the
+ hardware.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_45_47 : 3;
+ uint64_t cout_reset : 1; /**< [ 48: 48](R/W) Coprocessor clockout reset. The coprocessor clockout should be placed in
+ reset at least 10 PLL reference clocks prior
+ to changing [COUT_SEL]. It should remain under reset for at least 10
+ PLL reference clocks after [COUT_SEL] changes.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t cout_sel : 2; /**< [ 50: 49](R/W) Coprocessor clockout select.
+ 0x0 = Coprocessor clock divided by 16.
+ 0x1 = Coprocessor clock tree output divided by 16.
+ 0x2 = PLL0 output divided by 16.
+ 0x3 = PLL1 output divided by 16.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_51_63 : 13;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_pnr_pll_s cn; */
+};
+typedef union bdk_rst_pnr_pll bdk_rst_pnr_pll_t;
+
+#define BDK_RST_PNR_PLL BDK_RST_PNR_PLL_FUNC()
+static inline uint64_t BDK_RST_PNR_PLL_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_PNR_PLL_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e00a001788ll;
+ __bdk_csr_fatal("RST_PNR_PLL", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_PNR_PLL bdk_rst_pnr_pll_t
+#define bustype_BDK_RST_PNR_PLL BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_PNR_PLL "RST_PNR_PLL"
+#define device_bar_BDK_RST_PNR_PLL 0x2 /* PF_BAR2 */
+#define busnum_BDK_RST_PNR_PLL 0
+#define arguments_BDK_RST_PNR_PLL -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_power_dbg
+ *
+ * RST Core-Power Debug-Control Register
+ */
+union bdk_rst_power_dbg
+{
+ uint64_t u;
+ struct bdk_rst_power_dbg_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_3_63 : 61;
+ uint64_t str : 3; /**< [ 2: 0](R/W) Reserved.
+ Internal:
+ Internal power driver strength. Resets only on cold reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t str : 3; /**< [ 2: 0](R/W) Reserved.
+ Internal:
+ Internal power driver strength. Resets only on cold reset. */
+ uint64_t reserved_3_63 : 61;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_power_dbg_s cn; */
+};
+typedef union bdk_rst_power_dbg bdk_rst_power_dbg_t;
+
+#define BDK_RST_POWER_DBG BDK_RST_POWER_DBG_FUNC()
+static inline uint64_t BDK_RST_POWER_DBG_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_POWER_DBG_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX))
+ return 0x87e006001708ll;
+ __bdk_csr_fatal("RST_POWER_DBG", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_POWER_DBG bdk_rst_power_dbg_t
+#define bustype_BDK_RST_POWER_DBG BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_POWER_DBG "RST_POWER_DBG"
+#define device_bar_BDK_RST_POWER_DBG 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_POWER_DBG 0
+#define arguments_BDK_RST_POWER_DBG -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_pp_available
+ *
+ * RST Core Availablity Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_pp_available
+{
+ uint64_t u;
+ struct bdk_rst_pp_available_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t present : 48; /**< [ 47: 0](RO) Each bit set indicates a physical core is present. */
+#else /* Word 0 - Little Endian */
+ uint64_t present : 48; /**< [ 47: 0](RO) Each bit set indicates a physical core is present. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_pp_available_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t present : 24; /**< [ 23: 0](RO) Each bit set indicates a physical core is present. */
+#else /* Word 0 - Little Endian */
+ uint64_t present : 24; /**< [ 23: 0](RO) Each bit set indicates a physical core is present. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_pp_available_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t present : 4; /**< [ 3: 0](RO) Each bit set indicates a physical core is present. */
+#else /* Word 0 - Little Endian */
+ uint64_t present : 4; /**< [ 3: 0](RO) Each bit set indicates a physical core is present. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } cn81xx;
+ /* struct bdk_rst_pp_available_s cn88xx; */
+ /* struct bdk_rst_pp_available_cn9 cn83xx; */
+};
+typedef union bdk_rst_pp_available bdk_rst_pp_available_t;
+
+#define BDK_RST_PP_AVAILABLE BDK_RST_PP_AVAILABLE_FUNC()
+static inline uint64_t BDK_RST_PP_AVAILABLE_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_PP_AVAILABLE_FUNC(void)
+{
+ return 0x87e006001738ll;
+}
+
+#define typedef_BDK_RST_PP_AVAILABLE bdk_rst_pp_available_t
+#define bustype_BDK_RST_PP_AVAILABLE BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_PP_AVAILABLE "RST_PP_AVAILABLE"
+#define device_bar_BDK_RST_PP_AVAILABLE 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_PP_AVAILABLE 0
+#define arguments_BDK_RST_PP_AVAILABLE -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_pp_pending
+ *
+ * RST Cores Reset Pending Register
+ * This register contains the reset status for each core.
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_pp_pending
+{
+ uint64_t u;
+ struct bdk_rst_pp_pending_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t pend : 48; /**< [ 47: 0](RO/H) Set if corresponding core is waiting to change its reset state. Normally a reset change
+ occurs immediately but if RST_PP_POWER[GATE] = 1 and the core is released from
+ reset a delay of 64K core-clock cycles between each core reset applies to satisfy power
+ management.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 48; /**< [ 47: 0](RO/H) Set if corresponding core is waiting to change its reset state. Normally a reset change
+ occurs immediately but if RST_PP_POWER[GATE] = 1 and the core is released from
+ reset a delay of 64K core-clock cycles between each core reset applies to satisfy power
+ management.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_pp_pending_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t pend : 24; /**< [ 23: 0](RO/H) Set if corresponding core is waiting to change its reset state. Normally a reset change
+ occurs immediately but if RST_PP_POWER[GATE] = 1 and the core is released from
+ reset a delay of 32K core-clock cycles between each core reset applies to satisfy power
+ management.
+ This field is always reinitialized on a core domain reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 24; /**< [ 23: 0](RO/H) Set if corresponding core is waiting to change its reset state. Normally a reset change
+ occurs immediately but if RST_PP_POWER[GATE] = 1 and the core is released from
+ reset a delay of 32K core-clock cycles between each core reset applies to satisfy power
+ management.
+ This field is always reinitialized on a core domain reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_pp_pending_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t pend : 4; /**< [ 3: 0](RO/H) Set if corresponding core is waiting to change its reset state. Normally a reset change
+ occurs immediately but if RST_PP_POWER[GATE] = 1 and the core is released from
+ reset a delay of 64K core-clock cycles between each core reset applies to satisfy power
+ management.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 4; /**< [ 3: 0](RO/H) Set if corresponding core is waiting to change its reset state. Normally a reset change
+ occurs immediately but if RST_PP_POWER[GATE] = 1 and the core is released from
+ reset a delay of 64K core-clock cycles between each core reset applies to satisfy power
+ management.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } cn81xx;
+ /* struct bdk_rst_pp_pending_s cn88xx; */
+ struct bdk_rst_pp_pending_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t pend : 24; /**< [ 23: 0](RO/H) Set if corresponding core is waiting to change its reset state. Normally a reset change
+ occurs immediately but if RST_PP_POWER[GATE] = 1 and the core is released from
+ reset a delay of 64K core-clock cycles between each core reset applies to satisfy power
+ management.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 24; /**< [ 23: 0](RO/H) Set if corresponding core is waiting to change its reset state. Normally a reset change
+ occurs immediately but if RST_PP_POWER[GATE] = 1 and the core is released from
+ reset a delay of 64K core-clock cycles between each core reset applies to satisfy power
+ management.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_pp_pending bdk_rst_pp_pending_t;
+
+#define BDK_RST_PP_PENDING BDK_RST_PP_PENDING_FUNC()
+static inline uint64_t BDK_RST_PP_PENDING_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_PP_PENDING_FUNC(void)
+{
+ return 0x87e006001748ll;
+}
+
+#define typedef_BDK_RST_PP_PENDING bdk_rst_pp_pending_t
+#define bustype_BDK_RST_PP_PENDING BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_PP_PENDING "RST_PP_PENDING"
+#define device_bar_BDK_RST_PP_PENDING 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_PP_PENDING 0
+#define arguments_BDK_RST_PP_PENDING -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_pp_power
+ *
+ * RST Core-Power Gating-Control Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_pp_power
+{
+ uint64_t u;
+ struct bdk_rst_pp_power_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t gate : 48; /**< [ 47: 0](R/W) Power down enable. When a bit in this field and the corresponding RST_PP_RESET bit are
+ set,
+ the core
+ has voltage removed to save power. In typical operation these bits are set up during
+ initialization and core resets are controlled through RST_PP_RESET. These bits can only be
+ changed when the corresponding core is in reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t gate : 48; /**< [ 47: 0](R/W) Power down enable. When a bit in this field and the corresponding RST_PP_RESET bit are
+ set,
+ the core
+ has voltage removed to save power. In typical operation these bits are set up during
+ initialization and core resets are controlled through RST_PP_RESET. These bits can only be
+ changed when the corresponding core is in reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_pp_power_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t gate : 24; /**< [ 23: 0](R/W) Power down enable. When a bit in this field and the corresponding
+ RST_PP_RESET bit are set, the AP core is reduced to minimum power consumption.
+ In typical operation these bits are set up during initialization and the
+ AP core resets are controlled through RST_PP_RESET. These bits can only be
+ changed when the corresponding AP core is in reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores.
+ This field is always reinitialized on a core domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t gate : 24; /**< [ 23: 0](R/W) Power down enable. When a bit in this field and the corresponding
+ RST_PP_RESET bit are set, the AP core is reduced to minimum power consumption.
+ In typical operation these bits are set up during initialization and the
+ AP core resets are controlled through RST_PP_RESET. These bits can only be
+ changed when the corresponding AP core is in reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores.
+ This field is always reinitialized on a core domain reset. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_pp_power_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t gate : 4; /**< [ 3: 0](R/W) Power down enable. When a bit in this field and the corresponding RST_PP_RESET bit are
+ set,
+ the core
+ has voltage removed to save power. In typical operation these bits are set up during
+ initialization and core resets are controlled through RST_PP_RESET. These bits can only be
+ changed when the corresponding core is in reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t gate : 4; /**< [ 3: 0](R/W) Power down enable. When a bit in this field and the corresponding RST_PP_RESET bit are
+ set,
+ the core
+ has voltage removed to save power. In typical operation these bits are set up during
+ initialization and core resets are controlled through RST_PP_RESET. These bits can only be
+ changed when the corresponding core is in reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } cn81xx;
+ /* struct bdk_rst_pp_power_s cn88xx; */
+ struct bdk_rst_pp_power_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t gate : 24; /**< [ 23: 0](R/W) Power down enable. When a bit in this field and the corresponding RST_PP_RESET bit are
+ set,
+ the core
+ has voltage removed to save power. In typical operation these bits are set up during
+ initialization and core resets are controlled through RST_PP_RESET. These bits can only be
+ changed when the corresponding core is in reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t gate : 24; /**< [ 23: 0](R/W) Power down enable. When a bit in this field and the corresponding RST_PP_RESET bit are
+ set,
+ the core
+ has voltage removed to save power. In typical operation these bits are set up during
+ initialization and core resets are controlled through RST_PP_RESET. These bits can only be
+ changed when the corresponding core is in reset.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_pp_power bdk_rst_pp_power_t;
+
+#define BDK_RST_PP_POWER BDK_RST_PP_POWER_FUNC()
+static inline uint64_t BDK_RST_PP_POWER_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_PP_POWER_FUNC(void)
+{
+ return 0x87e006001700ll;
+}
+
+#define typedef_BDK_RST_PP_POWER bdk_rst_pp_power_t
+#define bustype_BDK_RST_PP_POWER BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_PP_POWER "RST_PP_POWER"
+#define device_bar_BDK_RST_PP_POWER 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_PP_POWER 0
+#define arguments_BDK_RST_PP_POWER -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_pp_power_stat
+ *
+ * RST Core-Power Status Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_pp_power_stat
+{
+ uint64_t u;
+ struct bdk_rst_pp_power_stat_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t down : 48; /**< [ 47: 0](RO/H) Reserved.
+ Internal:
+ Core Powerdown. When set, each bit indicates the core is currently powered down.
+ Typically this occurs when the corresponding RST_PP_RESET and RST_PP_POWER bits are set.
+ If the core is powered down when RST_PP_PENDING and RST_PP_RESET are both clear then the
+ core should be reset again by setting the RST_PP_RESET and then clearing it.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t down : 48; /**< [ 47: 0](RO/H) Reserved.
+ Internal:
+ Core Powerdown. When set, each bit indicates the core is currently powered down.
+ Typically this occurs when the corresponding RST_PP_RESET and RST_PP_POWER bits are set.
+ If the core is powered down when RST_PP_PENDING and RST_PP_RESET are both clear then the
+ core should be reset again by setting the RST_PP_RESET and then clearing it.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_pp_power_stat_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t down : 24; /**< [ 23: 0](RO/H) Reserved.
+ Internal:
+ Core Powerdown. When set, each bit indicates the core is currently powered down.
+ Typically this occurs when the corresponding RST_PP_RESET and RST_PP_POWER bits are set.
+ If the core is powered down when RST_PP_PENDING and RST_PP_RESET are both clear then the
+ core should be reset again by setting the RST_PP_RESET and then clearing it.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t down : 24; /**< [ 23: 0](RO/H) Reserved.
+ Internal:
+ Core Powerdown. When set, each bit indicates the core is currently powered down.
+ Typically this occurs when the corresponding RST_PP_RESET and RST_PP_POWER bits are set.
+ If the core is powered down when RST_PP_PENDING and RST_PP_RESET are both clear then the
+ core should be reset again by setting the RST_PP_RESET and then clearing it.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_pp_power_stat_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t down : 4; /**< [ 3: 0](RO/H) Reserved.
+ Internal:
+ Core Powerdown. When set, each bit indicates the core is currently powered down.
+ Typically this occurs when the corresponding RST_PP_RESET and RST_PP_POWER bits are set.
+ If the core is powered down when RST_PP_PENDING and RST_PP_RESET are both clear then the
+ core should be reset again by setting the RST_PP_RESET and then clearing it.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+#else /* Word 0 - Little Endian */
+ uint64_t down : 4; /**< [ 3: 0](RO/H) Reserved.
+ Internal:
+ Core Powerdown. When set, each bit indicates the core is currently powered down.
+ Typically this occurs when the corresponding RST_PP_RESET and RST_PP_POWER bits are set.
+ If the core is powered down when RST_PP_PENDING and RST_PP_RESET are both clear then the
+ core should be reset again by setting the RST_PP_RESET and then clearing it.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } cn81xx;
+ /* struct bdk_rst_pp_power_stat_s cn88xx; */
+ /* struct bdk_rst_pp_power_stat_cn9 cn83xx; */
+};
+typedef union bdk_rst_pp_power_stat bdk_rst_pp_power_stat_t;
+
+#define BDK_RST_PP_POWER_STAT BDK_RST_PP_POWER_STAT_FUNC()
+static inline uint64_t BDK_RST_PP_POWER_STAT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_PP_POWER_STAT_FUNC(void)
+{
+ return 0x87e006001710ll;
+}
+
+#define typedef_BDK_RST_PP_POWER_STAT bdk_rst_pp_power_stat_t
+#define bustype_BDK_RST_PP_POWER_STAT BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_PP_POWER_STAT "RST_PP_POWER_STAT"
+#define device_bar_BDK_RST_PP_POWER_STAT 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_PP_POWER_STAT 0
+#define arguments_BDK_RST_PP_POWER_STAT -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_pp_reset
+ *
+ * RST Core Reset Register
+ * This register contains the reset control for each core.
+ * Write operations to this register should occur only if
+ * RST_PP_PENDING is cleared.
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_pp_reset
+{
+ uint64_t u;
+ struct bdk_rst_pp_reset_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_rst_pp_reset_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t rst : 24; /**< [ 23: 0](R/W/H) AP core resets. Writing a one holds the corresponding AP core in reset,
+ writing a zero releases it from reset. These bits may also be cleared by
+ either DAP or CIC activity.
+ This field is always reinitialized on a core domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst : 24; /**< [ 23: 0](R/W/H) AP core resets. Writing a one holds the corresponding AP core in reset,
+ writing a zero releases it from reset. These bits may also be cleared by
+ either DAP or CIC activity.
+ This field is always reinitialized on a core domain reset. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_pp_reset_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t rst : 3; /**< [ 3: 1](R/W/H) Core reset for cores 1 and above. Writing a 1 holds the corresponding core in reset,
+ writing a 0 releases from reset. These bits may also be cleared by either DAP or CIC
+ activity.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t rst0 : 1; /**< [ 0: 0](R/W/H) Core reset for core 0, depends on if GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE.
+ This bit may also be cleared by either DAP or CIC activity. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst0 : 1; /**< [ 0: 0](R/W/H) Core reset for core 0, depends on if GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE.
+ This bit may also be cleared by either DAP or CIC activity. */
+ uint64_t rst : 3; /**< [ 3: 1](R/W/H) Core reset for cores 1 and above. Writing a 1 holds the corresponding core in reset,
+ writing a 0 releases from reset. These bits may also be cleared by either DAP or CIC
+ activity.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_rst_pp_reset_cn88xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_48_63 : 16;
+ uint64_t rst : 47; /**< [ 47: 1](R/W/H) Core reset for cores 1 and above. Writing a 1 holds the corresponding core in reset,
+ writing a 0 releases from reset. These bits may also be cleared by either DAP or CIC
+ activity.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t rst0 : 1; /**< [ 0: 0](R/W/H) Core reset for core 0, depends on if GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE.
+ This bit may also be cleared by either DAP or CIC activity. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst0 : 1; /**< [ 0: 0](R/W/H) Core reset for core 0, depends on if GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE.
+ This bit may also be cleared by either DAP or CIC activity. */
+ uint64_t rst : 47; /**< [ 47: 1](R/W/H) Core reset for cores 1 and above. Writing a 1 holds the corresponding core in reset,
+ writing a 0 releases from reset. These bits may also be cleared by either DAP or CIC
+ activity.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_48_63 : 16;
+#endif /* Word 0 - End */
+ } cn88xx;
+ struct bdk_rst_pp_reset_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_24_63 : 40;
+ uint64_t rst : 23; /**< [ 23: 1](R/W/H) Core reset for cores 1 and above. Writing a 1 holds the corresponding core in reset,
+ writing a 0 releases from reset. These bits may also be cleared by either DAP or CIC
+ activity.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t rst0 : 1; /**< [ 0: 0](R/W/H) Core reset for core 0, depends on if GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE.
+ This bit may also be cleared by either DAP or CIC activity. */
+#else /* Word 0 - Little Endian */
+ uint64_t rst0 : 1; /**< [ 0: 0](R/W/H) Core reset for core 0, depends on if GPIO_STRAP\<2:0\> = RST_BOOT_METHOD_E::REMOTE.
+ This bit may also be cleared by either DAP or CIC activity. */
+ uint64_t rst : 23; /**< [ 23: 1](R/W/H) Core reset for cores 1 and above. Writing a 1 holds the corresponding core in reset,
+ writing a 0 releases from reset. These bits may also be cleared by either DAP or CIC
+ activity.
+
+ The upper bits of this field remain accessible but will have no effect if the cores
+ are disabled. The number of bits set in RST_PP_AVAILABLE indicate the number of cores. */
+ uint64_t reserved_24_63 : 40;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_rst_pp_reset bdk_rst_pp_reset_t;
+
+#define BDK_RST_PP_RESET BDK_RST_PP_RESET_FUNC()
+static inline uint64_t BDK_RST_PP_RESET_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_PP_RESET_FUNC(void)
+{
+ return 0x87e006001740ll;
+}
+
+#define typedef_BDK_RST_PP_RESET bdk_rst_pp_reset_t
+#define bustype_BDK_RST_PP_RESET BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_PP_RESET "RST_PP_RESET"
+#define device_bar_BDK_RST_PP_RESET 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_PP_RESET 0
+#define arguments_BDK_RST_PP_RESET -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_ref_check
+ *
+ * INTERNAL: RST Reference Clock Checker Register
+ *
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_ref_check
+{
+ uint64_t u;
+ struct bdk_rst_ref_check_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t range : 1; /**< [ 63: 63](RO/H) Reference ever out of range. Set when either:
+ * Reference clock was outside operating range of 25 to 100 MHz.
+ * Reference clock increased or decreased in frequency. */
+ uint64_t reserved_48_62 : 15;
+ uint64_t pcycle : 16; /**< [ 47: 32](RO/H) Previous cycle count. Sum of last [CNT0] and [CNT1]. */
+ uint64_t cnt1 : 16; /**< [ 31: 16](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was high.
+ When used with [CNT0] the internal ring-oscillator frequency can be determined. */
+ uint64_t cnt0 : 16; /**< [ 15: 0](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was low.
+ When used with [CNT1] the internal ring-oscillator frequency can be determined. */
+#else /* Word 0 - Little Endian */
+ uint64_t cnt0 : 16; /**< [ 15: 0](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was low.
+ When used with [CNT1] the internal ring-oscillator frequency can be determined. */
+ uint64_t cnt1 : 16; /**< [ 31: 16](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was high.
+ When used with [CNT0] the internal ring-oscillator frequency can be determined. */
+ uint64_t pcycle : 16; /**< [ 47: 32](RO/H) Previous cycle count. Sum of last [CNT0] and [CNT1]. */
+ uint64_t reserved_48_62 : 15;
+ uint64_t range : 1; /**< [ 63: 63](RO/H) Reference ever out of range. Set when either:
+ * Reference clock was outside operating range of 25 to 100 MHz.
+ * Reference clock increased or decreased in frequency. */
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_ref_check_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t range : 1; /**< [ 63: 63](RO/H) Reference ever out of range. Set when either:
+ * Reference clock was outside operating range of 85 to 115 MHz.
+ * Reference increased or decreased in frequency. */
+ uint64_t reserved_48_62 : 15;
+ uint64_t pcycle : 16; /**< [ 47: 32](RO/H) Previous cycle count. Sum of last [CNT0] and [CNT1]. */
+ uint64_t cnt1 : 16; /**< [ 31: 16](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was high.
+ When used with [CNT0] the internal ring-oscillator frequency can be determined. */
+ uint64_t cnt0 : 16; /**< [ 15: 0](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was low.
+ When used with [CNT1] the internal ring-oscillator frequency can be determined. */
+#else /* Word 0 - Little Endian */
+ uint64_t cnt0 : 16; /**< [ 15: 0](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was low.
+ When used with [CNT1] the internal ring-oscillator frequency can be determined. */
+ uint64_t cnt1 : 16; /**< [ 31: 16](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was high.
+ When used with [CNT0] the internal ring-oscillator frequency can be determined. */
+ uint64_t pcycle : 16; /**< [ 47: 32](RO/H) Previous cycle count. Sum of last [CNT0] and [CNT1]. */
+ uint64_t reserved_48_62 : 15;
+ uint64_t range : 1; /**< [ 63: 63](RO/H) Reference ever out of range. Set when either:
+ * Reference clock was outside operating range of 85 to 115 MHz.
+ * Reference increased or decreased in frequency. */
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_ref_check_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t range : 1; /**< [ 63: 63](RO/H) Reference ever out of range. Set when either:
+ * Reference clock was outside operating range of 25 to 100 MHz.
+ * Reference clock increased or decreased in frequency. */
+ uint64_t reserved_48_62 : 15;
+ uint64_t reserved_32_47 : 16;
+ uint64_t cnt1 : 16; /**< [ 31: 16](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was high.
+ When used with [CNT0] the internal ring-oscillator frequency can be determined. */
+ uint64_t cnt0 : 16; /**< [ 15: 0](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was low.
+ When used with [CNT1] the internal ring-oscillator frequency can be determined. */
+#else /* Word 0 - Little Endian */
+ uint64_t cnt0 : 16; /**< [ 15: 0](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was low.
+ When used with [CNT1] the internal ring-oscillator frequency can be determined. */
+ uint64_t cnt1 : 16; /**< [ 31: 16](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was high.
+ When used with [CNT0] the internal ring-oscillator frequency can be determined. */
+ uint64_t reserved_32_47 : 16;
+ uint64_t reserved_48_62 : 15;
+ uint64_t range : 1; /**< [ 63: 63](RO/H) Reference ever out of range. Set when either:
+ * Reference clock was outside operating range of 25 to 100 MHz.
+ * Reference clock increased or decreased in frequency. */
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_rst_ref_check_cn88xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t range : 1; /**< [ 63: 63](RO/H) Reference ever out of range. Set when either:
+ * Reference clock was outside operating range of 25 to 100 MHz.
+ * Reference clock duty cycle outside 50% +/- 20%.
+ * Reference increased or decreased in frequency. */
+ uint64_t reserved_48_62 : 15;
+ uint64_t reserved_32_47 : 16;
+ uint64_t cnt1 : 16; /**< [ 31: 16](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was high.
+ When used with [CNT0] the internal ring-oscillator frequency can be determined. */
+ uint64_t cnt0 : 16; /**< [ 15: 0](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was low.
+ When used with [CNT1] the internal ring-oscillator frequency can be determined. */
+#else /* Word 0 - Little Endian */
+ uint64_t cnt0 : 16; /**< [ 15: 0](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was low.
+ When used with [CNT1] the internal ring-oscillator frequency can be determined. */
+ uint64_t cnt1 : 16; /**< [ 31: 16](RO/H) Number of internal ring-oscillator clock pulses counted over 16 reference clocks
+ while reference clock was high.
+ When used with [CNT0] the internal ring-oscillator frequency can be determined. */
+ uint64_t reserved_32_47 : 16;
+ uint64_t reserved_48_62 : 15;
+ uint64_t range : 1; /**< [ 63: 63](RO/H) Reference ever out of range. Set when either:
+ * Reference clock was outside operating range of 25 to 100 MHz.
+ * Reference clock duty cycle outside 50% +/- 20%.
+ * Reference increased or decreased in frequency. */
+#endif /* Word 0 - End */
+ } cn88xx;
+ /* struct bdk_rst_ref_check_s cn83xx; */
+};
+typedef union bdk_rst_ref_check bdk_rst_ref_check_t;
+
+#define BDK_RST_REF_CHECK BDK_RST_REF_CHECK_FUNC()
+static inline uint64_t BDK_RST_REF_CHECK_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_REF_CHECK_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX))
+ return 0x87e006001770ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX))
+ return 0x87e006001770ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X))
+ return 0x87e006001770ll;
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001770ll;
+ __bdk_csr_fatal("RST_REF_CHECK", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_REF_CHECK bdk_rst_ref_check_t
+#define bustype_BDK_RST_REF_CHECK BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_REF_CHECK "RST_REF_CHECK"
+#define device_bar_BDK_RST_REF_CHECK 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_REF_CHECK 0
+#define arguments_BDK_RST_REF_CHECK -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_ref_cntr
+ *
+ * RST Reference-Counter Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_ref_cntr
+{
+ uint64_t u;
+ struct bdk_rst_ref_cntr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t cnt : 64; /**< [ 63: 0](R/W/H) Count. The counter is initialized to 0x0 during a cold reset and is otherwise continuously
+ running.
+ CNT is incremented every reference-clock cycle (i.e. at 50 MHz). */
+#else /* Word 0 - Little Endian */
+ uint64_t cnt : 64; /**< [ 63: 0](R/W/H) Count. The counter is initialized to 0x0 during a cold reset and is otherwise continuously
+ running.
+ CNT is incremented every reference-clock cycle (i.e. at 50 MHz). */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_ref_cntr_s cn8; */
+ struct bdk_rst_ref_cntr_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t cnt : 64; /**< [ 63: 0](R/W/H) Reference count. [CNT] is incremented every 100 MHz reference clock.
+ This field is always reinitialized on a cold domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t cnt : 64; /**< [ 63: 0](R/W/H) Reference count. [CNT] is incremented every 100 MHz reference clock.
+ This field is always reinitialized on a cold domain reset. */
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_ref_cntr bdk_rst_ref_cntr_t;
+
+#define BDK_RST_REF_CNTR BDK_RST_REF_CNTR_FUNC()
+static inline uint64_t BDK_RST_REF_CNTR_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_REF_CNTR_FUNC(void)
+{
+ return 0x87e006001758ll;
+}
+
+#define typedef_BDK_RST_REF_CNTR bdk_rst_ref_cntr_t
+#define bustype_BDK_RST_REF_CNTR BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_REF_CNTR "RST_REF_CNTR"
+#define device_bar_BDK_RST_REF_CNTR 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_REF_CNTR 0
+#define arguments_BDK_RST_REF_CNTR -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_refc_ctl
+ *
+ * RST Common Reference Clock Input Control Register
+ * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_refc_ctl
+{
+ uint64_t u;
+ struct bdk_rst_refc_ctl_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t cclk2_sel : 2; /**< [ 8: 7](R/W) Common clock 2 termination select.
+ X0 = No termination.
+ 01 = LVPECL termination.
+ 11 = HCSL termination.
+
+ The field is initialized on a cold domain reset. */
+ uint64_t cclk2_pwdn : 1; /**< [ 6: 6](R/W) Common clock 2 receiver power down.
+ When set, receiver is powered down.
+ The field is initialized on a cold domain reset.
+
+ Internal:
+ The receiver is also forced into powerdown when jtg__rst_pll.iddq_mode is set. */
+ uint64_t cclk1_sel : 2; /**< [ 5: 4](R/W) Common clock 1 termination select.
+ X0 = No termination.
+ 01 = LVPECL termination.
+ 11 = HCSL termination.
+
+ The field is initialized on a cold domain reset. */
+ uint64_t cclk1_pwdn : 1; /**< [ 3: 3](R/W) Common clock 1 receiver power down.
+ When set, receiver is powered down.
+ The field is initialized on a cold domain reset.
+
+ Internal:
+ The receiver is also forced into powerdown when jtg__rst_pll.iddq_mode is set. */
+ uint64_t cclk0_sel : 2; /**< [ 2: 1](RO/H) Common clock 0 termination select determined by hardware.
+ X0 = No termination.
+ 01 = LVPECL termination.
+ 11 = HCSL termination.
+
+ The field is initialized on a cold domain reset. */
+ uint64_t cclk0_pwdn : 1; /**< [ 0: 0](RAZ) Common clock 0 receiver power down.
+ Never powered down. Reads as zero. */
+#else /* Word 0 - Little Endian */
+ uint64_t cclk0_pwdn : 1; /**< [ 0: 0](RAZ) Common clock 0 receiver power down.
+ Never powered down. Reads as zero. */
+ uint64_t cclk0_sel : 2; /**< [ 2: 1](RO/H) Common clock 0 termination select determined by hardware.
+ X0 = No termination.
+ 01 = LVPECL termination.
+ 11 = HCSL termination.
+
+ The field is initialized on a cold domain reset. */
+ uint64_t cclk1_pwdn : 1; /**< [ 3: 3](R/W) Common clock 1 receiver power down.
+ When set, receiver is powered down.
+ The field is initialized on a cold domain reset.
+
+ Internal:
+ The receiver is also forced into powerdown when jtg__rst_pll.iddq_mode is set. */
+ uint64_t cclk1_sel : 2; /**< [ 5: 4](R/W) Common clock 1 termination select.
+ X0 = No termination.
+ 01 = LVPECL termination.
+ 11 = HCSL termination.
+
+ The field is initialized on a cold domain reset. */
+ uint64_t cclk2_pwdn : 1; /**< [ 6: 6](R/W) Common clock 2 receiver power down.
+ When set, receiver is powered down.
+ The field is initialized on a cold domain reset.
+
+ Internal:
+ The receiver is also forced into powerdown when jtg__rst_pll.iddq_mode is set. */
+ uint64_t cclk2_sel : 2; /**< [ 8: 7](R/W) Common clock 2 termination select.
+ X0 = No termination.
+ 01 = LVPECL termination.
+ 11 = HCSL termination.
+
+ The field is initialized on a cold domain reset. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_refc_ctl_s cn; */
+};
+typedef union bdk_rst_refc_ctl bdk_rst_refc_ctl_t;
+
+#define BDK_RST_REFC_CTL BDK_RST_REFC_CTL_FUNC()
+static inline uint64_t BDK_RST_REFC_CTL_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_REFC_CTL_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e00a001798ll;
+ __bdk_csr_fatal("RST_REFC_CTL", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_REFC_CTL bdk_rst_refc_ctl_t
+#define bustype_BDK_RST_REFC_CTL BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_REFC_CTL "RST_REFC_CTL"
+#define device_bar_BDK_RST_REFC_CTL 0x2 /* PF_BAR2 */
+#define busnum_BDK_RST_REFC_CTL 0
+#define arguments_BDK_RST_REFC_CTL -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_reset_active
+ *
+ * RST Domain Reset Active Status Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_reset_active
+{
+ uint64_t u;
+ struct bdk_rst_reset_active_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_4_63 : 60;
+ uint64_t scp : 1; /**< [ 3: 3](RO/H) SCP domain reset status. When set, SCP domain is in reset.
+ Default reset value is zero after a chip reset. */
+ uint64_t mcp : 1; /**< [ 2: 2](RO/H) MCP domain reset status. When set, MCP domain is in reset.
+ Default reset value is one after a chip reset. */
+ uint64_t core : 1; /**< [ 1: 1](RO/H) Core domain reset status. When set, core domain is in reset.
+ Default reset value is one after a chip reset. */
+ uint64_t reserved_0 : 1;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0 : 1;
+ uint64_t core : 1; /**< [ 1: 1](RO/H) Core domain reset status. When set, core domain is in reset.
+ Default reset value is one after a chip reset. */
+ uint64_t mcp : 1; /**< [ 2: 2](RO/H) MCP domain reset status. When set, MCP domain is in reset.
+ Default reset value is one after a chip reset. */
+ uint64_t scp : 1; /**< [ 3: 3](RO/H) SCP domain reset status. When set, SCP domain is in reset.
+ Default reset value is zero after a chip reset. */
+ uint64_t reserved_4_63 : 60;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_reset_active_s cn; */
+};
+typedef union bdk_rst_reset_active bdk_rst_reset_active_t;
+
+#define BDK_RST_RESET_ACTIVE BDK_RST_RESET_ACTIVE_FUNC()
+static inline uint64_t BDK_RST_RESET_ACTIVE_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_RESET_ACTIVE_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001888ll;
+ __bdk_csr_fatal("RST_RESET_ACTIVE", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_RESET_ACTIVE bdk_rst_reset_active_t
+#define bustype_BDK_RST_RESET_ACTIVE BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_RESET_ACTIVE "RST_RESET_ACTIVE"
+#define device_bar_BDK_RST_RESET_ACTIVE 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_RESET_ACTIVE 0
+#define arguments_BDK_RST_RESET_ACTIVE -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_scp_domain_w1c
+ *
+ * RST SCP Domain Soft Reset Clear Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_scp_domain_w1c
+{
+ uint64_t u;
+ struct bdk_rst_scp_domain_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1C/H) Clear soft reset of the SCP processor and associated logic.
+ When set to one, the soft reset of the scp is removed.
+ Reads of this register show the soft reset state. Not the actual scp domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[SCP] shows
+ the actual reset state. To compensate for delays in reset, this field should only
+ be set if RST_RESET_ACTIVE[SCP] is set.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1C/H) Clear soft reset of the SCP processor and associated logic.
+ When set to one, the soft reset of the scp is removed.
+ Reads of this register show the soft reset state. Not the actual scp domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[SCP] shows
+ the actual reset state. To compensate for delays in reset, this field should only
+ be set if RST_RESET_ACTIVE[SCP] is set.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_scp_domain_w1c_s cn; */
+};
+typedef union bdk_rst_scp_domain_w1c bdk_rst_scp_domain_w1c_t;
+
+#define BDK_RST_SCP_DOMAIN_W1C BDK_RST_SCP_DOMAIN_W1C_FUNC()
+static inline uint64_t BDK_RST_SCP_DOMAIN_W1C_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_SCP_DOMAIN_W1C_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001848ll;
+ __bdk_csr_fatal("RST_SCP_DOMAIN_W1C", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_SCP_DOMAIN_W1C bdk_rst_scp_domain_w1c_t
+#define bustype_BDK_RST_SCP_DOMAIN_W1C BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_SCP_DOMAIN_W1C "RST_SCP_DOMAIN_W1C"
+#define device_bar_BDK_RST_SCP_DOMAIN_W1C 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_SCP_DOMAIN_W1C 0
+#define arguments_BDK_RST_SCP_DOMAIN_W1C -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_scp_domain_w1s
+ *
+ * RST SCP Domain Soft Reset Set Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_scp_domain_w1s
+{
+ uint64_t u;
+ struct bdk_rst_scp_domain_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Set soft reset of SCP core and associated logic.
+ When set to one, all logic associated with the scp domain is placed in reset.
+ If RST_BOOT[RBOOT] is set, the scp soft reset will stay asserted until
+ RST_SCP_DOMAIN_W1C is written. Otherwise it will automatically deassert.
+ Reads of this register show the soft reset state. Not the actual scp domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[SCP] shows
+ the actual reset state.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](R/W1S/H) Set soft reset of SCP core and associated logic.
+ When set to one, all logic associated with the scp domain is placed in reset.
+ If RST_BOOT[RBOOT] is set, the scp soft reset will stay asserted until
+ RST_SCP_DOMAIN_W1C is written. Otherwise it will automatically deassert.
+ Reads of this register show the soft reset state. Not the actual scp domain reset.
+ Other factors may keep the reset active, reading RST_RESET_ACTIVE[SCP] shows
+ the actual reset state.
+ This field is always reinitialized on a chip domain reset. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_scp_domain_w1s_s cn; */
+};
+typedef union bdk_rst_scp_domain_w1s bdk_rst_scp_domain_w1s_t;
+
+#define BDK_RST_SCP_DOMAIN_W1S BDK_RST_SCP_DOMAIN_W1S_FUNC()
+static inline uint64_t BDK_RST_SCP_DOMAIN_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_SCP_DOMAIN_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001840ll;
+ __bdk_csr_fatal("RST_SCP_DOMAIN_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_SCP_DOMAIN_W1S bdk_rst_scp_domain_w1s_t
+#define bustype_BDK_RST_SCP_DOMAIN_W1S BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_SCP_DOMAIN_W1S "RST_SCP_DOMAIN_W1S"
+#define device_bar_BDK_RST_SCP_DOMAIN_W1S 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_SCP_DOMAIN_W1S 0
+#define arguments_BDK_RST_SCP_DOMAIN_W1S -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_soft_prst#
+ *
+ * RST PCIe Soft Reset Registers
+ * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_soft_prstx
+{
+ uint64_t u;
+ struct bdk_rst_soft_prstx_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_prst : 1; /**< [ 0: 0](R/W) Soft PCIe reset. Resets the PCIe logic and corresponding common logic associated with the
+ SLI controller in
+ all modes, not just RC mode.
+ * If RST_CTL()[HOST_MODE] = 0, [SOFT_PRST] resets to 0.
+ * If RST_CTL()[HOST_MODE] = 1, [SOFT_PRST] resets to 1.
+
+ When CNXXXX is configured to drive PERST*_L (i.e.
+ RST_CTL()[RST_DRV] = 1), this controls the output value on PERST*_L.
+
+ Internal:
+ This bit is also forced high if the corresponding PEM Cripple Fuse is set. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_prst : 1; /**< [ 0: 0](R/W) Soft PCIe reset. Resets the PCIe logic and corresponding common logic associated with the
+ SLI controller in
+ all modes, not just RC mode.
+ * If RST_CTL()[HOST_MODE] = 0, [SOFT_PRST] resets to 0.
+ * If RST_CTL()[HOST_MODE] = 1, [SOFT_PRST] resets to 1.
+
+ When CNXXXX is configured to drive PERST*_L (i.e.
+ RST_CTL()[RST_DRV] = 1), this controls the output value on PERST*_L.
+
+ Internal:
+ This bit is also forced high if the corresponding PEM Cripple Fuse is set. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_soft_prstx_s cn8; */
+ struct bdk_rst_soft_prstx_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_prst : 1; /**< [ 0: 0](R/W) Soft PCIe reset. Resets the PEM and corresponding GSER SERDES logic.
+ This field is always set on a cold domain reset, when the link goes down
+ or on the corresponding PEM domain reset if RST_CTL()[HOST_MODE] is set.
+
+ When RST_CTL()[RST_DRV] is set, this controls the output value on PERST*_L.
+
+ Internal:
+ This bit is also forced high if the corresponding PEM Cripple Fuse is set. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_prst : 1; /**< [ 0: 0](R/W) Soft PCIe reset. Resets the PEM and corresponding GSER SERDES logic.
+ This field is always set on a cold domain reset, when the link goes down
+ or on the corresponding PEM domain reset if RST_CTL()[HOST_MODE] is set.
+
+ When RST_CTL()[RST_DRV] is set, this controls the output value on PERST*_L.
+
+ Internal:
+ This bit is also forced high if the corresponding PEM Cripple Fuse is set. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } cn9;
+};
+typedef union bdk_rst_soft_prstx bdk_rst_soft_prstx_t;
+
+static inline uint64_t BDK_RST_SOFT_PRSTX(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_SOFT_PRSTX(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
+ return 0x87e0060016c0ll + 8ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e0060016c0ll + 8ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
+ return 0x87e0060016c0ll + 8ll * ((a) & 0x7);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
+ return 0x87e0060016c0ll + 8ll * ((a) & 0x3);
+ __bdk_csr_fatal("RST_SOFT_PRSTX", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_SOFT_PRSTX(a) bdk_rst_soft_prstx_t
+#define bustype_BDK_RST_SOFT_PRSTX(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_SOFT_PRSTX(a) "RST_SOFT_PRSTX"
+#define device_bar_BDK_RST_SOFT_PRSTX(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_SOFT_PRSTX(a) (a)
+#define arguments_BDK_RST_SOFT_PRSTX(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) rst_soft_rst
+ *
+ * RST Soft Reset Register
+ */
+union bdk_rst_soft_rst
+{
+ uint64_t u;
+ struct bdk_rst_soft_rst_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_1_63 : 63;
+ uint64_t soft_rst : 1; /**< [ 0: 0](WO) Soft reset. When set to 1, resets the CNXXXX core. When performing a soft reset from a
+ remote PCIe host,
+ always read this register and wait for the results before setting [SOFT_RST] to 1. */
+#else /* Word 0 - Little Endian */
+ uint64_t soft_rst : 1; /**< [ 0: 0](WO) Soft reset. When set to 1, resets the CNXXXX core. When performing a soft reset from a
+ remote PCIe host,
+ always read this register and wait for the results before setting [SOFT_RST] to 1. */
+ uint64_t reserved_1_63 : 63;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_soft_rst_s cn; */
+};
+typedef union bdk_rst_soft_rst bdk_rst_soft_rst_t;
+
+#define BDK_RST_SOFT_RST BDK_RST_SOFT_RST_FUNC()
+static inline uint64_t BDK_RST_SOFT_RST_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_SOFT_RST_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX))
+ return 0x87e006001680ll;
+ __bdk_csr_fatal("RST_SOFT_RST", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_SOFT_RST bdk_rst_soft_rst_t
+#define bustype_BDK_RST_SOFT_RST BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_SOFT_RST "RST_SOFT_RST"
+#define device_bar_BDK_RST_SOFT_RST 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_SOFT_RST 0
+#define arguments_BDK_RST_SOFT_RST -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_src_map
+ *
+ * RST Source Domain Map Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_src_map
+{
+ uint64_t u;
+ struct bdk_rst_src_map_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_13_63 : 51;
+ uint64_t ocx_to_chip : 1; /**< [ 12: 12](R/W) Reserved.
+ Internal:
+ OCX linkdown mapped to chip domain reset.
+ When RST_OCX[RST_LINK] is set:
+ 0 = OCX transition from link up to link down will cause a core domain reset.
+ 1 = OCX transition from link up to link down will cause both a core domain reset
+ and a chip domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_11 : 1;
+ uint64_t scp_to_mcp : 1; /**< [ 10: 10](R/W) SCP watchdog and pin resets mapped to MCP domain reset.
+ 0 = Mapping disabled.
+ 1 = SCP reset pin or the SCP watchdog will additionally
+ cause an mcp domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t scp_to_core : 1; /**< [ 9: 9](R/W) SCP watchdog and pin resets mapped to core domain reset.
+ 0 = Mapping disabled.
+ 1 = SCP reset pin or the SCP watchdog will additionally
+ cause a core domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t scp_to_chip : 1; /**< [ 8: 8](R/W) SCP watchdog and pin resets mapped to chip domain reset.
+ 0 = Mapping disabled.
+ 1 = SCP reset pin or the SCP watchdog will additionally
+ cause a chip domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t mcp_to_scp : 1; /**< [ 7: 7](R/W) MCP watchdog and pin resets mapped to scp domain reset.
+ 0 = Mapping disabled.
+ 1 = MCP reset pin or the MCP watchdog will additionally
+ cause an scp domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_6 : 1;
+ uint64_t mcp_to_core : 1; /**< [ 5: 5](R/W) MCP watchdog and pin resets mapped to core domain reset.
+ 0 = Mapping disabled.
+ 1 = MCP reset pin or the MCP watchdog will additionally
+ cause a core domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t mcp_to_chip : 1; /**< [ 4: 4](R/W) MCP watchdog and pin resets mapped to chip domain reset.
+ 0 = Mapping disabled.
+ 1 = MCP reset pin or the MCP watchdog will additionally
+ cause a chip domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t core_to_scp : 1; /**< [ 3: 3](R/W) Core watchdog and pin resets mapped to scp domain reset.
+ 0 = Mapping disabled.
+ 1 = Core reset pin or the AP watchdog will additionally
+ cause an scp domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t core_to_mcp : 1; /**< [ 2: 2](R/W) Core watchdog and pin resets mapped to mcp domain reset.
+ 0 = Mapping disabled.
+ 1 = Core reset pin or the AP watchdog will additionally
+ cause an mcp domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_1 : 1;
+ uint64_t core_to_chip : 1; /**< [ 0: 0](R/W) Core watchdog and pin resets mapped to chip domain reset.
+ 0 = Mapping disabled.
+ 1 = Core reset pin or the AP watchdog will additionally
+ cause a chip domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t core_to_chip : 1; /**< [ 0: 0](R/W) Core watchdog and pin resets mapped to chip domain reset.
+ 0 = Mapping disabled.
+ 1 = Core reset pin or the AP watchdog will additionally
+ cause a chip domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_1 : 1;
+ uint64_t core_to_mcp : 1; /**< [ 2: 2](R/W) Core watchdog and pin resets mapped to mcp domain reset.
+ 0 = Mapping disabled.
+ 1 = Core reset pin or the AP watchdog will additionally
+ cause an mcp domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t core_to_scp : 1; /**< [ 3: 3](R/W) Core watchdog and pin resets mapped to scp domain reset.
+ 0 = Mapping disabled.
+ 1 = Core reset pin or the AP watchdog will additionally
+ cause an scp domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t mcp_to_chip : 1; /**< [ 4: 4](R/W) MCP watchdog and pin resets mapped to chip domain reset.
+ 0 = Mapping disabled.
+ 1 = MCP reset pin or the MCP watchdog will additionally
+ cause a chip domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t mcp_to_core : 1; /**< [ 5: 5](R/W) MCP watchdog and pin resets mapped to core domain reset.
+ 0 = Mapping disabled.
+ 1 = MCP reset pin or the MCP watchdog will additionally
+ cause a core domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_6 : 1;
+ uint64_t mcp_to_scp : 1; /**< [ 7: 7](R/W) MCP watchdog and pin resets mapped to scp domain reset.
+ 0 = Mapping disabled.
+ 1 = MCP reset pin or the MCP watchdog will additionally
+ cause an scp domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t scp_to_chip : 1; /**< [ 8: 8](R/W) SCP watchdog and pin resets mapped to chip domain reset.
+ 0 = Mapping disabled.
+ 1 = SCP reset pin or the SCP watchdog will additionally
+ cause a chip domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t scp_to_core : 1; /**< [ 9: 9](R/W) SCP watchdog and pin resets mapped to core domain reset.
+ 0 = Mapping disabled.
+ 1 = SCP reset pin or the SCP watchdog will additionally
+ cause a core domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t scp_to_mcp : 1; /**< [ 10: 10](R/W) SCP watchdog and pin resets mapped to MCP domain reset.
+ 0 = Mapping disabled.
+ 1 = SCP reset pin or the SCP watchdog will additionally
+ cause an mcp domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_11 : 1;
+ uint64_t ocx_to_chip : 1; /**< [ 12: 12](R/W) Reserved.
+ Internal:
+ OCX linkdown mapped to chip domain reset.
+ When RST_OCX[RST_LINK] is set:
+ 0 = OCX transition from link up to link down will cause a core domain reset.
+ 1 = OCX transition from link up to link down will cause both a core domain reset
+ and a chip domain reset.
+
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_13_63 : 51;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_src_map_s cn; */
+};
+typedef union bdk_rst_src_map bdk_rst_src_map_t;
+
+#define BDK_RST_SRC_MAP BDK_RST_SRC_MAP_FUNC()
+static inline uint64_t BDK_RST_SRC_MAP_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_SRC_MAP_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e006001898ll;
+ __bdk_csr_fatal("RST_SRC_MAP", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_SRC_MAP bdk_rst_src_map_t
+#define bustype_BDK_RST_SRC_MAP BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_SRC_MAP "RST_SRC_MAP"
+#define device_bar_BDK_RST_SRC_MAP 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_SRC_MAP 0
+#define arguments_BDK_RST_SRC_MAP -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_sw_w1s
+ *
+ * RST Software W1S Data Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_sw_w1s
+{
+ uint64_t u;
+ struct bdk_rst_sw_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W1S) Data register that can be set by software and is only cleared
+ on a chip domain reset.
+ This field is always reinitialized on a chip domain reset. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 64; /**< [ 63: 0](R/W1S) Data register that can be set by software and is only cleared
+ on a chip domain reset.
+ This field is always reinitialized on a chip domain reset. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_sw_w1s_s cn; */
+};
+typedef union bdk_rst_sw_w1s bdk_rst_sw_w1s_t;
+
+#define BDK_RST_SW_W1S BDK_RST_SW_W1S_FUNC()
+static inline uint64_t BDK_RST_SW_W1S_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_SW_W1S_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
+ return 0x87e0060017f0ll;
+ __bdk_csr_fatal("RST_SW_W1S", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_SW_W1S bdk_rst_sw_w1s_t
+#define bustype_BDK_RST_SW_W1S BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_SW_W1S "RST_SW_W1S"
+#define device_bar_BDK_RST_SW_W1S 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_SW_W1S 0
+#define arguments_BDK_RST_SW_W1S -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_thermal_alert
+ *
+ * RST Thermal Alert Register
+ * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
+ */
+union bdk_rst_thermal_alert
+{
+ uint64_t u;
+ struct bdk_rst_thermal_alert_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t trip : 1; /**< [ 8: 8](R/W1S/H) Thermal trip pin. When set to 1, drives the THERMAL_TRIP_N pin active low. This field is
+ set by either of the
+ on-board temperature sensors reaching a failure threshold or writing this bit.
+ The bit can only be cleared by a deassertion of the PLL_DC_OK pin which completely resets
+ the chip. */
+ uint64_t reserved_2_7 : 6;
+ uint64_t alert : 2; /**< [ 1: 0](RO/H) Thermal alert status. When set to 1, indicates the temperature sensor is currently at the
+ failure threshold. */
+#else /* Word 0 - Little Endian */
+ uint64_t alert : 2; /**< [ 1: 0](RO/H) Thermal alert status. When set to 1, indicates the temperature sensor is currently at the
+ failure threshold. */
+ uint64_t reserved_2_7 : 6;
+ uint64_t trip : 1; /**< [ 8: 8](R/W1S/H) Thermal trip pin. When set to 1, drives the THERMAL_TRIP_N pin active low. This field is
+ set by either of the
+ on-board temperature sensors reaching a failure threshold or writing this bit.
+ The bit can only be cleared by a deassertion of the PLL_DC_OK pin which completely resets
+ the chip. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_rst_thermal_alert_cn9
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t trip : 1; /**< [ 8: 8](R/W1S/H) Thermal trip pin. When set, drives the THERMAL_TRIP_L pin active low.
+ This field is set by one of the on-board temperature sensors reaching a
+ failure threshold or writing this bit.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_1_7 : 7;
+ uint64_t alert : 1; /**< [ 0: 0](RO/H) Thermal alert status. When set to one, indicates a temperature sensor is
+ currently at the failure threshold. */
+#else /* Word 0 - Little Endian */
+ uint64_t alert : 1; /**< [ 0: 0](RO/H) Thermal alert status. When set to one, indicates a temperature sensor is
+ currently at the failure threshold. */
+ uint64_t reserved_1_7 : 7;
+ uint64_t trip : 1; /**< [ 8: 8](R/W1S/H) Thermal trip pin. When set, drives the THERMAL_TRIP_L pin active low.
+ This field is set by one of the on-board temperature sensors reaching a
+ failure threshold or writing this bit.
+ This field is always reinitialized on a cold domain reset. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } cn9;
+ struct bdk_rst_thermal_alert_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_9_63 : 55;
+ uint64_t trip : 1; /**< [ 8: 8](R/W1S/H) Thermal trip pin. When set to 1, drives the THERMAL_TRIP_N pin active low. This field is
+ set by either of the
+ on-board temperature sensors reaching a failure threshold or writing this bit.
+ The bit can only be cleared by a deassertion of the PLL_DC_OK pin which completely resets
+ the chip. */
+ uint64_t reserved_1_7 : 7;
+ uint64_t alert : 1; /**< [ 0: 0](RO/H) Thermal alert status. When set to 1, indicates the temperature sensor is currently at the
+ failure threshold. */
+#else /* Word 0 - Little Endian */
+ uint64_t alert : 1; /**< [ 0: 0](RO/H) Thermal alert status. When set to 1, indicates the temperature sensor is currently at the
+ failure threshold. */
+ uint64_t reserved_1_7 : 7;
+ uint64_t trip : 1; /**< [ 8: 8](R/W1S/H) Thermal trip pin. When set to 1, drives the THERMAL_TRIP_N pin active low. This field is
+ set by either of the
+ on-board temperature sensors reaching a failure threshold or writing this bit.
+ The bit can only be cleared by a deassertion of the PLL_DC_OK pin which completely resets
+ the chip. */
+ uint64_t reserved_9_63 : 55;
+#endif /* Word 0 - End */
+ } cn81xx;
+ /* struct bdk_rst_thermal_alert_s cn88xx; */
+ /* struct bdk_rst_thermal_alert_cn81xx cn83xx; */
+};
+typedef union bdk_rst_thermal_alert bdk_rst_thermal_alert_t;
+
+#define BDK_RST_THERMAL_ALERT BDK_RST_THERMAL_ALERT_FUNC()
+static inline uint64_t BDK_RST_THERMAL_ALERT_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_THERMAL_ALERT_FUNC(void)
+{
+ return 0x87e006001690ll;
+}
+
+#define typedef_BDK_RST_THERMAL_ALERT bdk_rst_thermal_alert_t
+#define bustype_BDK_RST_THERMAL_ALERT BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_THERMAL_ALERT "RST_THERMAL_ALERT"
+#define device_bar_BDK_RST_THERMAL_ALERT 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_THERMAL_ALERT 0
+#define arguments_BDK_RST_THERMAL_ALERT -1,-1,-1,-1
+
+/**
+ * Register (RSL) rst_tns_pll_ctl
+ *
+ * RST Network-Switch PLL-Control Register
+ * This register controls the network-switch clock frequency.
+ * The following sequence is the TNS PLL-bringup sequence:
+ *
+ * 1. Write a 0 to [RESET_N] and a 1 to [DIV_RESET].
+ *
+ * 2. Set [CLKF] and [PS_EN]. If jtg_test_mode.
+ * then also write jtg__tns_pll_tm_en2, jtg__tns_pll_tm_en4, jtg__tns_pll_tm_en12 and
+ * jtg__tns_pll_tm_en24.
+ *
+ * 3. Wait 128 reference-clock cycles.
+ *
+ * 4. Write 1 to [RESET_N].
+ *
+ * 5. Wait 1152 reference-clock cycles.
+ *
+ * 6. Write 0 to [DIV_RESET].
+ *
+ * 7. Wait 10 reference-clock cycles before bringing up the network interface.
+ *
+ * If test mode is going to be activated, wait an additional 8191 reference-clock cycles to allow
+ * PLL clock
+ * alignment.
+ */
+union bdk_rst_tns_pll_ctl
+{
+ uint64_t u;
+ struct bdk_rst_tns_pll_ctl_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_29_63 : 35;
+ uint64_t pll_fbslip : 1; /**< [ 28: 28](RO/H) PLL FBSLIP indication. */
+ uint64_t pll_lock : 1; /**< [ 27: 27](RO/H) PLL LOCK indication. */
+ uint64_t pll_rfslip : 1; /**< [ 26: 26](RO/H) PLL RFSLIP indication. */
+ uint64_t reserved_23_25 : 3;
+ uint64_t div_reset : 1; /**< [ 22: 22](R/W) Postscalar divider reset. */
+ uint64_t ps_en : 4; /**< [ 21: 18](R/W) PLL postscalar divide ratio. Determines the network clock speed.
+ 0x0 = Divide TNS PLL by 1.
+ 0x1 = Divide TNS PLL by 2.
+ 0x2 = Divide TNS PLL by 3.
+ 0x3 = Divide TNS PLL by 4.
+ 0x4 = Divide TNS PLL by 5.
+ 0x5 = Divide TNS PLL by 6.
+ 0x6 = Divide TNS PLL by 7.
+ 0x7 = Divide TNS PLL by 8.
+ 0x8 = Divide TNS PLL by 10.
+ 0x9 = Divide TNS PLL by 12.
+ 0xA-0xF = Reserved.
+
+ [PS_EN] is not used when [DIV_RESET] = 1 */
+ uint64_t reserved_15_17 : 3;
+ uint64_t cout_rst : 1; /**< [ 14: 14](R/W) Clockout postscaler reset. This clockout postscaler should be placed in reset at
+ least 10 reference-clock cycles prior to changing [COUT_SEL]. The clockout
+ postscaler should remain under reset for at least 10 reference-clock cycles
+ after [COUT_SEL] changes. */
+ uint64_t cout_sel : 2; /**< [ 13: 12](R/W) PNR clockout select:
+ 0x0 = Network clock.
+ 0x1 = PS output.
+ 0x2 = PLL output.
+ 0x3 = UNDIVIDED core clock. */
+ uint64_t reserved_8_11 : 4;
+ uint64_t reset_n : 1; /**< [ 7: 7](R/W) PLL reset. */
+ uint64_t clkf : 7; /**< [ 6: 0](R/W) PLL multiplier. Sets TNS clock frequency to 50 MHz * ([CLKF]+1) / ([PS_EN]+1). */
+#else /* Word 0 - Little Endian */
+ uint64_t clkf : 7; /**< [ 6: 0](R/W) PLL multiplier. Sets TNS clock frequency to 50 MHz * ([CLKF]+1) / ([PS_EN]+1). */
+ uint64_t reset_n : 1; /**< [ 7: 7](R/W) PLL reset. */
+ uint64_t reserved_8_11 : 4;
+ uint64_t cout_sel : 2; /**< [ 13: 12](R/W) PNR clockout select:
+ 0x0 = Network clock.
+ 0x1 = PS output.
+ 0x2 = PLL output.
+ 0x3 = UNDIVIDED core clock. */
+ uint64_t cout_rst : 1; /**< [ 14: 14](R/W) Clockout postscaler reset. This clockout postscaler should be placed in reset at
+ least 10 reference-clock cycles prior to changing [COUT_SEL]. The clockout
+ postscaler should remain under reset for at least 10 reference-clock cycles
+ after [COUT_SEL] changes. */
+ uint64_t reserved_15_17 : 3;
+ uint64_t ps_en : 4; /**< [ 21: 18](R/W) PLL postscalar divide ratio. Determines the network clock speed.
+ 0x0 = Divide TNS PLL by 1.
+ 0x1 = Divide TNS PLL by 2.
+ 0x2 = Divide TNS PLL by 3.
+ 0x3 = Divide TNS PLL by 4.
+ 0x4 = Divide TNS PLL by 5.
+ 0x5 = Divide TNS PLL by 6.
+ 0x6 = Divide TNS PLL by 7.
+ 0x7 = Divide TNS PLL by 8.
+ 0x8 = Divide TNS PLL by 10.
+ 0x9 = Divide TNS PLL by 12.
+ 0xA-0xF = Reserved.
+
+ [PS_EN] is not used when [DIV_RESET] = 1 */
+ uint64_t div_reset : 1; /**< [ 22: 22](R/W) Postscalar divider reset. */
+ uint64_t reserved_23_25 : 3;
+ uint64_t pll_rfslip : 1; /**< [ 26: 26](RO/H) PLL RFSLIP indication. */
+ uint64_t pll_lock : 1; /**< [ 27: 27](RO/H) PLL LOCK indication. */
+ uint64_t pll_fbslip : 1; /**< [ 28: 28](RO/H) PLL FBSLIP indication. */
+ uint64_t reserved_29_63 : 35;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_rst_tns_pll_ctl_s cn; */
+};
+typedef union bdk_rst_tns_pll_ctl bdk_rst_tns_pll_ctl_t;
+
+#define BDK_RST_TNS_PLL_CTL BDK_RST_TNS_PLL_CTL_FUNC()
+static inline uint64_t BDK_RST_TNS_PLL_CTL_FUNC(void) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_RST_TNS_PLL_CTL_FUNC(void)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX))
+ return 0x87e006001780ll;
+ __bdk_csr_fatal("RST_TNS_PLL_CTL", 0, 0, 0, 0, 0);
+}
+
+#define typedef_BDK_RST_TNS_PLL_CTL bdk_rst_tns_pll_ctl_t
+#define bustype_BDK_RST_TNS_PLL_CTL BDK_CSR_TYPE_RSL
+#define basename_BDK_RST_TNS_PLL_CTL "RST_TNS_PLL_CTL"
+#define device_bar_BDK_RST_TNS_PLL_CTL 0x0 /* PF_BAR0 */
+#define busnum_BDK_RST_TNS_PLL_CTL 0
+#define arguments_BDK_RST_TNS_PLL_CTL -1,-1,-1,-1
+
+#endif /* __BDK_CSRS_RST_H__ */