MIPS: OCTEON: Add definitions for OCTEON memory contoller registers.
David Daney [Thu, 15 Nov 2012 21:47:58 +0000 (13:47 -0800)]
Signed-off-by: David Daney <david.daney@cavium.com>

arch/mips/include/asm/octeon/cvmx-lmcx-defs.h [new file with mode: 0644]

diff --git a/arch/mips/include/asm/octeon/cvmx-lmcx-defs.h b/arch/mips/include/asm/octeon/cvmx-lmcx-defs.h
new file mode 100644 (file)
index 0000000..36f5107
--- /dev/null
@@ -0,0 +1,3457 @@
+/***********************license start***************
+ * Author: Cavium Inc.
+ *
+ * Contact: support@cavium.com
+ * This file is part of the OCTEON SDK
+ *
+ * Copyright (c) 2003-2012 Cavium Inc.
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, Version 2, as
+ * published by the Free Software Foundation.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
+ * NONINFRINGEMENT.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this file; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ * or visit http://www.gnu.org/licenses/.
+ *
+ * This file may also be available under a different license from Cavium.
+ * Contact Cavium Inc. for more information
+ ***********************license end**************************************/
+
+#ifndef __CVMX_LMCX_DEFS_H__
+#define __CVMX_LMCX_DEFS_H__
+
+#define CVMX_LMCX_BIST_CTL(block_id) (CVMX_ADD_IO_SEG(0x00011800880000F0ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_BIST_RESULT(block_id) (CVMX_ADD_IO_SEG(0x00011800880000F8ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_CHAR_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000220ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_CHAR_MASK0(block_id) (CVMX_ADD_IO_SEG(0x0001180088000228ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_CHAR_MASK1(block_id) (CVMX_ADD_IO_SEG(0x0001180088000230ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_CHAR_MASK2(block_id) (CVMX_ADD_IO_SEG(0x0001180088000238ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_CHAR_MASK3(block_id) (CVMX_ADD_IO_SEG(0x0001180088000240ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_CHAR_MASK4(block_id) (CVMX_ADD_IO_SEG(0x0001180088000318ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_COMP_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000028ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_COMP_CTL2(block_id) (CVMX_ADD_IO_SEG(0x00011800880001B8ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_CONFIG(block_id) (CVMX_ADD_IO_SEG(0x0001180088000188ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_CONTROL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000190ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000010ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_CTL1(block_id) (CVMX_ADD_IO_SEG(0x0001180088000090ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_DCLK_CNT(block_id) (CVMX_ADD_IO_SEG(0x00011800880001E0ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_DCLK_CNT_HI(block_id) (CVMX_ADD_IO_SEG(0x0001180088000070ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_DCLK_CNT_LO(block_id) (CVMX_ADD_IO_SEG(0x0001180088000068ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_DCLK_CTL(block_id) (CVMX_ADD_IO_SEG(0x00011800880000B8ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_DDR2_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000018ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_DDR_PLL_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000258ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_DELAY_CFG(block_id) (CVMX_ADD_IO_SEG(0x0001180088000088ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_DIMMX_PARAMS(offset, block_id) (CVMX_ADD_IO_SEG(0x0001180088000270ull) + (((offset) & 1) + ((block_id) & 3) * 0x200000ull) * 8)
+#define CVMX_LMCX_DIMM_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000310ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_DLL_CTL(block_id) (CVMX_ADD_IO_SEG(0x00011800880000C0ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_DLL_CTL2(block_id) (CVMX_ADD_IO_SEG(0x00011800880001C8ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_DLL_CTL3(block_id) (CVMX_ADD_IO_SEG(0x0001180088000218ull) + ((block_id) & 3) * 0x1000000ull)
+static inline uint64_t CVMX_LMCX_DUAL_MEMCFG(unsigned long block_id)
+{
+       switch (cvmx_get_octeon_family()) {
+       case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN50XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN58XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000098ull) + (block_id) * 0x60000000ull;
+       case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000098ull) + (block_id) * 0x60000000ull;
+       case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000098ull) + (block_id) * 0x1000000ull;
+       }
+       return CVMX_ADD_IO_SEG(0x0001180088000098ull) + (block_id) * 0x60000000ull;
+}
+
+static inline uint64_t CVMX_LMCX_ECC_SYND(unsigned long block_id)
+{
+       switch (cvmx_get_octeon_family()) {
+       case OCTEON_CN30XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN50XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN38XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN31XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN58XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000038ull) + (block_id) * 0x60000000ull;
+       case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000038ull) + (block_id) * 0x60000000ull;
+       case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000038ull) + (block_id) * 0x1000000ull;
+       }
+       return CVMX_ADD_IO_SEG(0x0001180088000038ull) + (block_id) * 0x60000000ull;
+}
+
+static inline uint64_t CVMX_LMCX_FADR(unsigned long block_id)
+{
+       switch (cvmx_get_octeon_family()) {
+       case OCTEON_CN30XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN50XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN38XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN31XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN58XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000020ull) + (block_id) * 0x60000000ull;
+       case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000020ull) + (block_id) * 0x60000000ull;
+       case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x0001180088000020ull) + (block_id) * 0x1000000ull;
+       }
+       return CVMX_ADD_IO_SEG(0x0001180088000020ull) + (block_id) * 0x60000000ull;
+}
+
+#define CVMX_LMCX_IFB_CNT(block_id) (CVMX_ADD_IO_SEG(0x00011800880001D0ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_IFB_CNT_HI(block_id) (CVMX_ADD_IO_SEG(0x0001180088000050ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_IFB_CNT_LO(block_id) (CVMX_ADD_IO_SEG(0x0001180088000048ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_INT(block_id) (CVMX_ADD_IO_SEG(0x00011800880001F0ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_INT_EN(block_id) (CVMX_ADD_IO_SEG(0x00011800880001E8ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_MEM_CFG0(block_id) (CVMX_ADD_IO_SEG(0x0001180088000000ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_MEM_CFG1(block_id) (CVMX_ADD_IO_SEG(0x0001180088000008ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_MODEREG_PARAMS0(block_id) (CVMX_ADD_IO_SEG(0x00011800880001A8ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_MODEREG_PARAMS1(block_id) (CVMX_ADD_IO_SEG(0x0001180088000260ull) + ((block_id) & 3) * 0x1000000ull)
+static inline uint64_t CVMX_LMCX_NXM(unsigned long block_id)
+{
+       switch (cvmx_get_octeon_family()) {
+       case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN58XX & OCTEON_FAMILY_MASK:
+       case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x00011800880000C8ull) + (block_id) * 0x60000000ull;
+       case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x00011800880000C8ull) + (block_id) * 0x60000000ull;
+       case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
+               return CVMX_ADD_IO_SEG(0x00011800880000C8ull) + (block_id) * 0x1000000ull;
+       }
+       return CVMX_ADD_IO_SEG(0x00011800880000C8ull) + (block_id) * 0x60000000ull;
+}
+
+#define CVMX_LMCX_OPS_CNT(block_id) (CVMX_ADD_IO_SEG(0x00011800880001D8ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_OPS_CNT_HI(block_id) (CVMX_ADD_IO_SEG(0x0001180088000060ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_OPS_CNT_LO(block_id) (CVMX_ADD_IO_SEG(0x0001180088000058ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_PHY_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000210ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_PLL_BWCTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000040ull))
+#define CVMX_LMCX_PLL_CTL(block_id) (CVMX_ADD_IO_SEG(0x00011800880000A8ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_PLL_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800880000B0ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_READ_LEVEL_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000140ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_READ_LEVEL_DBG(block_id) (CVMX_ADD_IO_SEG(0x0001180088000148ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_READ_LEVEL_RANKX(offset, block_id) (CVMX_ADD_IO_SEG(0x0001180088000100ull) + (((offset) & 3) + ((block_id) & 1) * 0xC000000ull) * 8)
+#define CVMX_LMCX_RESET_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000180ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_RLEVEL_CTL(block_id) (CVMX_ADD_IO_SEG(0x00011800880002A0ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_RLEVEL_DBG(block_id) (CVMX_ADD_IO_SEG(0x00011800880002A8ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_RLEVEL_RANKX(offset, block_id) (CVMX_ADD_IO_SEG(0x0001180088000280ull) + (((offset) & 3) + ((block_id) & 3) * 0x200000ull) * 8)
+#define CVMX_LMCX_RODT_COMP_CTL(block_id) (CVMX_ADD_IO_SEG(0x00011800880000A0ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_RODT_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000078ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_RODT_MASK(block_id) (CVMX_ADD_IO_SEG(0x0001180088000268ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_SCRAMBLED_FADR(block_id) (CVMX_ADD_IO_SEG(0x0001180088000330ull))
+#define CVMX_LMCX_SCRAMBLE_CFG0(block_id) (CVMX_ADD_IO_SEG(0x0001180088000320ull))
+#define CVMX_LMCX_SCRAMBLE_CFG1(block_id) (CVMX_ADD_IO_SEG(0x0001180088000328ull))
+#define CVMX_LMCX_SLOT_CTL0(block_id) (CVMX_ADD_IO_SEG(0x00011800880001F8ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_SLOT_CTL1(block_id) (CVMX_ADD_IO_SEG(0x0001180088000200ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_SLOT_CTL2(block_id) (CVMX_ADD_IO_SEG(0x0001180088000208ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_TIMING_PARAMS0(block_id) (CVMX_ADD_IO_SEG(0x0001180088000198ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_TIMING_PARAMS1(block_id) (CVMX_ADD_IO_SEG(0x00011800880001A0ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_TRO_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000248ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_TRO_STAT(block_id) (CVMX_ADD_IO_SEG(0x0001180088000250ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_WLEVEL_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180088000300ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_WLEVEL_DBG(block_id) (CVMX_ADD_IO_SEG(0x0001180088000308ull) + ((block_id) & 3) * 0x1000000ull)
+#define CVMX_LMCX_WLEVEL_RANKX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800880002B0ull) + (((offset) & 3) + ((block_id) & 3) * 0x200000ull) * 8)
+#define CVMX_LMCX_WODT_CTL0(block_id) (CVMX_ADD_IO_SEG(0x0001180088000030ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_WODT_CTL1(block_id) (CVMX_ADD_IO_SEG(0x0001180088000080ull) + ((block_id) & 1) * 0x60000000ull)
+#define CVMX_LMCX_WODT_MASK(block_id) (CVMX_ADD_IO_SEG(0x00011800880001B0ull) + ((block_id) & 3) * 0x1000000ull)
+
+union cvmx_lmcx_bist_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_bist_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_1_63:63;
+               uint64_t start:1;
+#else
+               uint64_t start:1;
+               uint64_t reserved_1_63:63;
+#endif
+       } s;
+       struct cvmx_lmcx_bist_ctl_s cn50xx;
+       struct cvmx_lmcx_bist_ctl_s cn52xx;
+       struct cvmx_lmcx_bist_ctl_s cn52xxp1;
+       struct cvmx_lmcx_bist_ctl_s cn56xx;
+       struct cvmx_lmcx_bist_ctl_s cn56xxp1;
+};
+
+union cvmx_lmcx_bist_result {
+       uint64_t u64;
+       struct cvmx_lmcx_bist_result_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_11_63:53;
+               uint64_t csrd2e:1;
+               uint64_t csre2d:1;
+               uint64_t mwf:1;
+               uint64_t mwd:3;
+               uint64_t mwc:1;
+               uint64_t mrf:1;
+               uint64_t mrd:3;
+#else
+               uint64_t mrd:3;
+               uint64_t mrf:1;
+               uint64_t mwc:1;
+               uint64_t mwd:3;
+               uint64_t mwf:1;
+               uint64_t csre2d:1;
+               uint64_t csrd2e:1;
+               uint64_t reserved_11_63:53;
+#endif
+       } s;
+       struct cvmx_lmcx_bist_result_cn50xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_9_63:55;
+               uint64_t mwf:1;
+               uint64_t mwd:3;
+               uint64_t mwc:1;
+               uint64_t mrf:1;
+               uint64_t mrd:3;
+#else
+               uint64_t mrd:3;
+               uint64_t mrf:1;
+               uint64_t mwc:1;
+               uint64_t mwd:3;
+               uint64_t mwf:1;
+               uint64_t reserved_9_63:55;
+#endif
+       } cn50xx;
+       struct cvmx_lmcx_bist_result_s cn52xx;
+       struct cvmx_lmcx_bist_result_s cn52xxp1;
+       struct cvmx_lmcx_bist_result_s cn56xx;
+       struct cvmx_lmcx_bist_result_s cn56xxp1;
+};
+
+union cvmx_lmcx_char_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_char_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_44_63:20;
+               uint64_t dr:1;
+               uint64_t skew_on:1;
+               uint64_t en:1;
+               uint64_t sel:1;
+               uint64_t prog:8;
+               uint64_t prbs:32;
+#else
+               uint64_t prbs:32;
+               uint64_t prog:8;
+               uint64_t sel:1;
+               uint64_t en:1;
+               uint64_t skew_on:1;
+               uint64_t dr:1;
+               uint64_t reserved_44_63:20;
+#endif
+       } s;
+       struct cvmx_lmcx_char_ctl_s cn61xx;
+       struct cvmx_lmcx_char_ctl_cn63xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_42_63:22;
+               uint64_t en:1;
+               uint64_t sel:1;
+               uint64_t prog:8;
+               uint64_t prbs:32;
+#else
+               uint64_t prbs:32;
+               uint64_t prog:8;
+               uint64_t sel:1;
+               uint64_t en:1;
+               uint64_t reserved_42_63:22;
+#endif
+       } cn63xx;
+       struct cvmx_lmcx_char_ctl_cn63xx cn63xxp1;
+       struct cvmx_lmcx_char_ctl_s cn66xx;
+       struct cvmx_lmcx_char_ctl_s cn68xx;
+       struct cvmx_lmcx_char_ctl_cn63xx cn68xxp1;
+       struct cvmx_lmcx_char_ctl_s cnf71xx;
+};
+
+union cvmx_lmcx_char_mask0 {
+       uint64_t u64;
+       struct cvmx_lmcx_char_mask0_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t mask:64;
+#else
+               uint64_t mask:64;
+#endif
+       } s;
+       struct cvmx_lmcx_char_mask0_s cn61xx;
+       struct cvmx_lmcx_char_mask0_s cn63xx;
+       struct cvmx_lmcx_char_mask0_s cn63xxp1;
+       struct cvmx_lmcx_char_mask0_s cn66xx;
+       struct cvmx_lmcx_char_mask0_s cn68xx;
+       struct cvmx_lmcx_char_mask0_s cn68xxp1;
+       struct cvmx_lmcx_char_mask0_s cnf71xx;
+};
+
+union cvmx_lmcx_char_mask1 {
+       uint64_t u64;
+       struct cvmx_lmcx_char_mask1_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_8_63:56;
+               uint64_t mask:8;
+#else
+               uint64_t mask:8;
+               uint64_t reserved_8_63:56;
+#endif
+       } s;
+       struct cvmx_lmcx_char_mask1_s cn61xx;
+       struct cvmx_lmcx_char_mask1_s cn63xx;
+       struct cvmx_lmcx_char_mask1_s cn63xxp1;
+       struct cvmx_lmcx_char_mask1_s cn66xx;
+       struct cvmx_lmcx_char_mask1_s cn68xx;
+       struct cvmx_lmcx_char_mask1_s cn68xxp1;
+       struct cvmx_lmcx_char_mask1_s cnf71xx;
+};
+
+union cvmx_lmcx_char_mask2 {
+       uint64_t u64;
+       struct cvmx_lmcx_char_mask2_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t mask:64;
+#else
+               uint64_t mask:64;
+#endif
+       } s;
+       struct cvmx_lmcx_char_mask2_s cn61xx;
+       struct cvmx_lmcx_char_mask2_s cn63xx;
+       struct cvmx_lmcx_char_mask2_s cn63xxp1;
+       struct cvmx_lmcx_char_mask2_s cn66xx;
+       struct cvmx_lmcx_char_mask2_s cn68xx;
+       struct cvmx_lmcx_char_mask2_s cn68xxp1;
+       struct cvmx_lmcx_char_mask2_s cnf71xx;
+};
+
+union cvmx_lmcx_char_mask3 {
+       uint64_t u64;
+       struct cvmx_lmcx_char_mask3_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_8_63:56;
+               uint64_t mask:8;
+#else
+               uint64_t mask:8;
+               uint64_t reserved_8_63:56;
+#endif
+       } s;
+       struct cvmx_lmcx_char_mask3_s cn61xx;
+       struct cvmx_lmcx_char_mask3_s cn63xx;
+       struct cvmx_lmcx_char_mask3_s cn63xxp1;
+       struct cvmx_lmcx_char_mask3_s cn66xx;
+       struct cvmx_lmcx_char_mask3_s cn68xx;
+       struct cvmx_lmcx_char_mask3_s cn68xxp1;
+       struct cvmx_lmcx_char_mask3_s cnf71xx;
+};
+
+union cvmx_lmcx_char_mask4 {
+       uint64_t u64;
+       struct cvmx_lmcx_char_mask4_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_33_63:31;
+               uint64_t reset_n_mask:1;
+               uint64_t a_mask:16;
+               uint64_t ba_mask:3;
+               uint64_t we_n_mask:1;
+               uint64_t cas_n_mask:1;
+               uint64_t ras_n_mask:1;
+               uint64_t odt1_mask:2;
+               uint64_t odt0_mask:2;
+               uint64_t cs1_n_mask:2;
+               uint64_t cs0_n_mask:2;
+               uint64_t cke_mask:2;
+#else
+               uint64_t cke_mask:2;
+               uint64_t cs0_n_mask:2;
+               uint64_t cs1_n_mask:2;
+               uint64_t odt0_mask:2;
+               uint64_t odt1_mask:2;
+               uint64_t ras_n_mask:1;
+               uint64_t cas_n_mask:1;
+               uint64_t we_n_mask:1;
+               uint64_t ba_mask:3;
+               uint64_t a_mask:16;
+               uint64_t reset_n_mask:1;
+               uint64_t reserved_33_63:31;
+#endif
+       } s;
+       struct cvmx_lmcx_char_mask4_s cn61xx;
+       struct cvmx_lmcx_char_mask4_s cn63xx;
+       struct cvmx_lmcx_char_mask4_s cn63xxp1;
+       struct cvmx_lmcx_char_mask4_s cn66xx;
+       struct cvmx_lmcx_char_mask4_s cn68xx;
+       struct cvmx_lmcx_char_mask4_s cn68xxp1;
+       struct cvmx_lmcx_char_mask4_s cnf71xx;
+};
+
+union cvmx_lmcx_comp_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_comp_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t nctl_csr:4;
+               uint64_t nctl_clk:4;
+               uint64_t nctl_cmd:4;
+               uint64_t nctl_dat:4;
+               uint64_t pctl_csr:4;
+               uint64_t pctl_clk:4;
+               uint64_t reserved_0_7:8;
+#else
+               uint64_t reserved_0_7:8;
+               uint64_t pctl_clk:4;
+               uint64_t pctl_csr:4;
+               uint64_t nctl_dat:4;
+               uint64_t nctl_cmd:4;
+               uint64_t nctl_clk:4;
+               uint64_t nctl_csr:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_comp_ctl_cn30xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t nctl_csr:4;
+               uint64_t nctl_clk:4;
+               uint64_t nctl_cmd:4;
+               uint64_t nctl_dat:4;
+               uint64_t pctl_csr:4;
+               uint64_t pctl_clk:4;
+               uint64_t pctl_cmd:4;
+               uint64_t pctl_dat:4;
+#else
+               uint64_t pctl_dat:4;
+               uint64_t pctl_cmd:4;
+               uint64_t pctl_clk:4;
+               uint64_t pctl_csr:4;
+               uint64_t nctl_dat:4;
+               uint64_t nctl_cmd:4;
+               uint64_t nctl_clk:4;
+               uint64_t nctl_csr:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn30xx;
+       struct cvmx_lmcx_comp_ctl_cn30xx cn31xx;
+       struct cvmx_lmcx_comp_ctl_cn30xx cn38xx;
+       struct cvmx_lmcx_comp_ctl_cn30xx cn38xxp2;
+       struct cvmx_lmcx_comp_ctl_cn50xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t nctl_csr:4;
+               uint64_t reserved_20_27:8;
+               uint64_t nctl_dat:4;
+               uint64_t pctl_csr:4;
+               uint64_t reserved_5_11:7;
+               uint64_t pctl_dat:5;
+#else
+               uint64_t pctl_dat:5;
+               uint64_t reserved_5_11:7;
+               uint64_t pctl_csr:4;
+               uint64_t nctl_dat:4;
+               uint64_t reserved_20_27:8;
+               uint64_t nctl_csr:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn50xx;
+       struct cvmx_lmcx_comp_ctl_cn50xx cn52xx;
+       struct cvmx_lmcx_comp_ctl_cn50xx cn52xxp1;
+       struct cvmx_lmcx_comp_ctl_cn50xx cn56xx;
+       struct cvmx_lmcx_comp_ctl_cn50xx cn56xxp1;
+       struct cvmx_lmcx_comp_ctl_cn50xx cn58xx;
+       struct cvmx_lmcx_comp_ctl_cn58xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t nctl_csr:4;
+               uint64_t reserved_20_27:8;
+               uint64_t nctl_dat:4;
+               uint64_t pctl_csr:4;
+               uint64_t reserved_4_11:8;
+               uint64_t pctl_dat:4;
+#else
+               uint64_t pctl_dat:4;
+               uint64_t reserved_4_11:8;
+               uint64_t pctl_csr:4;
+               uint64_t nctl_dat:4;
+               uint64_t reserved_20_27:8;
+               uint64_t nctl_csr:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn58xxp1;
+};
+
+union cvmx_lmcx_comp_ctl2 {
+       uint64_t u64;
+       struct cvmx_lmcx_comp_ctl2_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_34_63:30;
+               uint64_t ddr__ptune:4;
+               uint64_t ddr__ntune:4;
+               uint64_t m180:1;
+               uint64_t byp:1;
+               uint64_t ptune:4;
+               uint64_t ntune:4;
+               uint64_t rodt_ctl:4;
+               uint64_t cmd_ctl:4;
+               uint64_t ck_ctl:4;
+               uint64_t dqx_ctl:4;
+#else
+               uint64_t dqx_ctl:4;
+               uint64_t ck_ctl:4;
+               uint64_t cmd_ctl:4;
+               uint64_t rodt_ctl:4;
+               uint64_t ntune:4;
+               uint64_t ptune:4;
+               uint64_t byp:1;
+               uint64_t m180:1;
+               uint64_t ddr__ntune:4;
+               uint64_t ddr__ptune:4;
+               uint64_t reserved_34_63:30;
+#endif
+       } s;
+       struct cvmx_lmcx_comp_ctl2_s cn61xx;
+       struct cvmx_lmcx_comp_ctl2_s cn63xx;
+       struct cvmx_lmcx_comp_ctl2_s cn63xxp1;
+       struct cvmx_lmcx_comp_ctl2_s cn66xx;
+       struct cvmx_lmcx_comp_ctl2_s cn68xx;
+       struct cvmx_lmcx_comp_ctl2_s cn68xxp1;
+       struct cvmx_lmcx_comp_ctl2_s cnf71xx;
+};
+
+union cvmx_lmcx_config {
+       uint64_t u64;
+       struct cvmx_lmcx_config_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_61_63:3;
+               uint64_t mode32b:1;
+               uint64_t scrz:1;
+               uint64_t early_unload_d1_r1:1;
+               uint64_t early_unload_d1_r0:1;
+               uint64_t early_unload_d0_r1:1;
+               uint64_t early_unload_d0_r0:1;
+               uint64_t init_status:4;
+               uint64_t mirrmask:4;
+               uint64_t rankmask:4;
+               uint64_t rank_ena:1;
+               uint64_t sref_with_dll:1;
+               uint64_t early_dqx:1;
+               uint64_t sequence:3;
+               uint64_t ref_zqcs_int:19;
+               uint64_t reset:1;
+               uint64_t ecc_adr:1;
+               uint64_t forcewrite:4;
+               uint64_t idlepower:3;
+               uint64_t pbank_lsb:4;
+               uint64_t row_lsb:3;
+               uint64_t ecc_ena:1;
+               uint64_t init_start:1;
+#else
+               uint64_t init_start:1;
+               uint64_t ecc_ena:1;
+               uint64_t row_lsb:3;
+               uint64_t pbank_lsb:4;
+               uint64_t idlepower:3;
+               uint64_t forcewrite:4;
+               uint64_t ecc_adr:1;
+               uint64_t reset:1;
+               uint64_t ref_zqcs_int:19;
+               uint64_t sequence:3;
+               uint64_t early_dqx:1;
+               uint64_t sref_with_dll:1;
+               uint64_t rank_ena:1;
+               uint64_t rankmask:4;
+               uint64_t mirrmask:4;
+               uint64_t init_status:4;
+               uint64_t early_unload_d0_r0:1;
+               uint64_t early_unload_d0_r1:1;
+               uint64_t early_unload_d1_r0:1;
+               uint64_t early_unload_d1_r1:1;
+               uint64_t scrz:1;
+               uint64_t mode32b:1;
+               uint64_t reserved_61_63:3;
+#endif
+       } s;
+       struct cvmx_lmcx_config_s cn61xx;
+       struct cvmx_lmcx_config_cn63xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_59_63:5;
+               uint64_t early_unload_d1_r1:1;
+               uint64_t early_unload_d1_r0:1;
+               uint64_t early_unload_d0_r1:1;
+               uint64_t early_unload_d0_r0:1;
+               uint64_t init_status:4;
+               uint64_t mirrmask:4;
+               uint64_t rankmask:4;
+               uint64_t rank_ena:1;
+               uint64_t sref_with_dll:1;
+               uint64_t early_dqx:1;
+               uint64_t sequence:3;
+               uint64_t ref_zqcs_int:19;
+               uint64_t reset:1;
+               uint64_t ecc_adr:1;
+               uint64_t forcewrite:4;
+               uint64_t idlepower:3;
+               uint64_t pbank_lsb:4;
+               uint64_t row_lsb:3;
+               uint64_t ecc_ena:1;
+               uint64_t init_start:1;
+#else
+               uint64_t init_start:1;
+               uint64_t ecc_ena:1;
+               uint64_t row_lsb:3;
+               uint64_t pbank_lsb:4;
+               uint64_t idlepower:3;
+               uint64_t forcewrite:4;
+               uint64_t ecc_adr:1;
+               uint64_t reset:1;
+               uint64_t ref_zqcs_int:19;
+               uint64_t sequence:3;
+               uint64_t early_dqx:1;
+               uint64_t sref_with_dll:1;
+               uint64_t rank_ena:1;
+               uint64_t rankmask:4;
+               uint64_t mirrmask:4;
+               uint64_t init_status:4;
+               uint64_t early_unload_d0_r0:1;
+               uint64_t early_unload_d0_r1:1;
+               uint64_t early_unload_d1_r0:1;
+               uint64_t early_unload_d1_r1:1;
+               uint64_t reserved_59_63:5;
+#endif
+       } cn63xx;
+       struct cvmx_lmcx_config_cn63xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_55_63:9;
+               uint64_t init_status:4;
+               uint64_t mirrmask:4;
+               uint64_t rankmask:4;
+               uint64_t rank_ena:1;
+               uint64_t sref_with_dll:1;
+               uint64_t early_dqx:1;
+               uint64_t sequence:3;
+               uint64_t ref_zqcs_int:19;
+               uint64_t reset:1;
+               uint64_t ecc_adr:1;
+               uint64_t forcewrite:4;
+               uint64_t idlepower:3;
+               uint64_t pbank_lsb:4;
+               uint64_t row_lsb:3;
+               uint64_t ecc_ena:1;
+               uint64_t init_start:1;
+#else
+               uint64_t init_start:1;
+               uint64_t ecc_ena:1;
+               uint64_t row_lsb:3;
+               uint64_t pbank_lsb:4;
+               uint64_t idlepower:3;
+               uint64_t forcewrite:4;
+               uint64_t ecc_adr:1;
+               uint64_t reset:1;
+               uint64_t ref_zqcs_int:19;
+               uint64_t sequence:3;
+               uint64_t early_dqx:1;
+               uint64_t sref_with_dll:1;
+               uint64_t rank_ena:1;
+               uint64_t rankmask:4;
+               uint64_t mirrmask:4;
+               uint64_t init_status:4;
+               uint64_t reserved_55_63:9;
+#endif
+       } cn63xxp1;
+       struct cvmx_lmcx_config_cn66xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_60_63:4;
+               uint64_t scrz:1;
+               uint64_t early_unload_d1_r1:1;
+               uint64_t early_unload_d1_r0:1;
+               uint64_t early_unload_d0_r1:1;
+               uint64_t early_unload_d0_r0:1;
+               uint64_t init_status:4;
+               uint64_t mirrmask:4;
+               uint64_t rankmask:4;
+               uint64_t rank_ena:1;
+               uint64_t sref_with_dll:1;
+               uint64_t early_dqx:1;
+               uint64_t sequence:3;
+               uint64_t ref_zqcs_int:19;
+               uint64_t reset:1;
+               uint64_t ecc_adr:1;
+               uint64_t forcewrite:4;
+               uint64_t idlepower:3;
+               uint64_t pbank_lsb:4;
+               uint64_t row_lsb:3;
+               uint64_t ecc_ena:1;
+               uint64_t init_start:1;
+#else
+               uint64_t init_start:1;
+               uint64_t ecc_ena:1;
+               uint64_t row_lsb:3;
+               uint64_t pbank_lsb:4;
+               uint64_t idlepower:3;
+               uint64_t forcewrite:4;
+               uint64_t ecc_adr:1;
+               uint64_t reset:1;
+               uint64_t ref_zqcs_int:19;
+               uint64_t sequence:3;
+               uint64_t early_dqx:1;
+               uint64_t sref_with_dll:1;
+               uint64_t rank_ena:1;
+               uint64_t rankmask:4;
+               uint64_t mirrmask:4;
+               uint64_t init_status:4;
+               uint64_t early_unload_d0_r0:1;
+               uint64_t early_unload_d0_r1:1;
+               uint64_t early_unload_d1_r0:1;
+               uint64_t early_unload_d1_r1:1;
+               uint64_t scrz:1;
+               uint64_t reserved_60_63:4;
+#endif
+       } cn66xx;
+       struct cvmx_lmcx_config_cn63xx cn68xx;
+       struct cvmx_lmcx_config_cn63xx cn68xxp1;
+       struct cvmx_lmcx_config_s cnf71xx;
+};
+
+union cvmx_lmcx_control {
+       uint64_t u64;
+       struct cvmx_lmcx_control_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t scramble_ena:1;
+               uint64_t thrcnt:12;
+               uint64_t persub:8;
+               uint64_t thrmax:4;
+               uint64_t crm_cnt:5;
+               uint64_t crm_thr:5;
+               uint64_t crm_max:5;
+               uint64_t rodt_bprch:1;
+               uint64_t wodt_bprch:1;
+               uint64_t bprch:2;
+               uint64_t ext_zqcs_dis:1;
+               uint64_t int_zqcs_dis:1;
+               uint64_t auto_dclkdis:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t nxm_write_en:1;
+               uint64_t elev_prio_dis:1;
+               uint64_t inorder_wr:1;
+               uint64_t inorder_rd:1;
+               uint64_t throttle_wr:1;
+               uint64_t throttle_rd:1;
+               uint64_t fprch2:2;
+               uint64_t pocas:1;
+               uint64_t ddr2t:1;
+               uint64_t bwcnt:1;
+               uint64_t rdimm_ena:1;
+#else
+               uint64_t rdimm_ena:1;
+               uint64_t bwcnt:1;
+               uint64_t ddr2t:1;
+               uint64_t pocas:1;
+               uint64_t fprch2:2;
+               uint64_t throttle_rd:1;
+               uint64_t throttle_wr:1;
+               uint64_t inorder_rd:1;
+               uint64_t inorder_wr:1;
+               uint64_t elev_prio_dis:1;
+               uint64_t nxm_write_en:1;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t auto_dclkdis:1;
+               uint64_t int_zqcs_dis:1;
+               uint64_t ext_zqcs_dis:1;
+               uint64_t bprch:2;
+               uint64_t wodt_bprch:1;
+               uint64_t rodt_bprch:1;
+               uint64_t crm_max:5;
+               uint64_t crm_thr:5;
+               uint64_t crm_cnt:5;
+               uint64_t thrmax:4;
+               uint64_t persub:8;
+               uint64_t thrcnt:12;
+               uint64_t scramble_ena:1;
+#endif
+       } s;
+       struct cvmx_lmcx_control_s cn61xx;
+       struct cvmx_lmcx_control_cn63xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_24_63:40;
+               uint64_t rodt_bprch:1;
+               uint64_t wodt_bprch:1;
+               uint64_t bprch:2;
+               uint64_t ext_zqcs_dis:1;
+               uint64_t int_zqcs_dis:1;
+               uint64_t auto_dclkdis:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t nxm_write_en:1;
+               uint64_t elev_prio_dis:1;
+               uint64_t inorder_wr:1;
+               uint64_t inorder_rd:1;
+               uint64_t throttle_wr:1;
+               uint64_t throttle_rd:1;
+               uint64_t fprch2:2;
+               uint64_t pocas:1;
+               uint64_t ddr2t:1;
+               uint64_t bwcnt:1;
+               uint64_t rdimm_ena:1;
+#else
+               uint64_t rdimm_ena:1;
+               uint64_t bwcnt:1;
+               uint64_t ddr2t:1;
+               uint64_t pocas:1;
+               uint64_t fprch2:2;
+               uint64_t throttle_rd:1;
+               uint64_t throttle_wr:1;
+               uint64_t inorder_rd:1;
+               uint64_t inorder_wr:1;
+               uint64_t elev_prio_dis:1;
+               uint64_t nxm_write_en:1;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t auto_dclkdis:1;
+               uint64_t int_zqcs_dis:1;
+               uint64_t ext_zqcs_dis:1;
+               uint64_t bprch:2;
+               uint64_t wodt_bprch:1;
+               uint64_t rodt_bprch:1;
+               uint64_t reserved_24_63:40;
+#endif
+       } cn63xx;
+       struct cvmx_lmcx_control_cn63xx cn63xxp1;
+       struct cvmx_lmcx_control_cn66xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t scramble_ena:1;
+               uint64_t reserved_24_62:39;
+               uint64_t rodt_bprch:1;
+               uint64_t wodt_bprch:1;
+               uint64_t bprch:2;
+               uint64_t ext_zqcs_dis:1;
+               uint64_t int_zqcs_dis:1;
+               uint64_t auto_dclkdis:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t nxm_write_en:1;
+               uint64_t elev_prio_dis:1;
+               uint64_t inorder_wr:1;
+               uint64_t inorder_rd:1;
+               uint64_t throttle_wr:1;
+               uint64_t throttle_rd:1;
+               uint64_t fprch2:2;
+               uint64_t pocas:1;
+               uint64_t ddr2t:1;
+               uint64_t bwcnt:1;
+               uint64_t rdimm_ena:1;
+#else
+               uint64_t rdimm_ena:1;
+               uint64_t bwcnt:1;
+               uint64_t ddr2t:1;
+               uint64_t pocas:1;
+               uint64_t fprch2:2;
+               uint64_t throttle_rd:1;
+               uint64_t throttle_wr:1;
+               uint64_t inorder_rd:1;
+               uint64_t inorder_wr:1;
+               uint64_t elev_prio_dis:1;
+               uint64_t nxm_write_en:1;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t auto_dclkdis:1;
+               uint64_t int_zqcs_dis:1;
+               uint64_t ext_zqcs_dis:1;
+               uint64_t bprch:2;
+               uint64_t wodt_bprch:1;
+               uint64_t rodt_bprch:1;
+               uint64_t reserved_24_62:39;
+               uint64_t scramble_ena:1;
+#endif
+       } cn66xx;
+       struct cvmx_lmcx_control_cn68xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_63_63:1;
+               uint64_t thrcnt:12;
+               uint64_t persub:8;
+               uint64_t thrmax:4;
+               uint64_t crm_cnt:5;
+               uint64_t crm_thr:5;
+               uint64_t crm_max:5;
+               uint64_t rodt_bprch:1;
+               uint64_t wodt_bprch:1;
+               uint64_t bprch:2;
+               uint64_t ext_zqcs_dis:1;
+               uint64_t int_zqcs_dis:1;
+               uint64_t auto_dclkdis:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t nxm_write_en:1;
+               uint64_t elev_prio_dis:1;
+               uint64_t inorder_wr:1;
+               uint64_t inorder_rd:1;
+               uint64_t throttle_wr:1;
+               uint64_t throttle_rd:1;
+               uint64_t fprch2:2;
+               uint64_t pocas:1;
+               uint64_t ddr2t:1;
+               uint64_t bwcnt:1;
+               uint64_t rdimm_ena:1;
+#else
+               uint64_t rdimm_ena:1;
+               uint64_t bwcnt:1;
+               uint64_t ddr2t:1;
+               uint64_t pocas:1;
+               uint64_t fprch2:2;
+               uint64_t throttle_rd:1;
+               uint64_t throttle_wr:1;
+               uint64_t inorder_rd:1;
+               uint64_t inorder_wr:1;
+               uint64_t elev_prio_dis:1;
+               uint64_t nxm_write_en:1;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t auto_dclkdis:1;
+               uint64_t int_zqcs_dis:1;
+               uint64_t ext_zqcs_dis:1;
+               uint64_t bprch:2;
+               uint64_t wodt_bprch:1;
+               uint64_t rodt_bprch:1;
+               uint64_t crm_max:5;
+               uint64_t crm_thr:5;
+               uint64_t crm_cnt:5;
+               uint64_t thrmax:4;
+               uint64_t persub:8;
+               uint64_t thrcnt:12;
+               uint64_t reserved_63_63:1;
+#endif
+       } cn68xx;
+       struct cvmx_lmcx_control_cn68xx cn68xxp1;
+       struct cvmx_lmcx_control_cn66xx cnf71xx;
+};
+
+union cvmx_lmcx_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ddr__nctl:4;
+               uint64_t ddr__pctl:4;
+               uint64_t slow_scf:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t pll_div2:1;
+               uint64_t pll_bypass:1;
+               uint64_t rdimm_ena:1;
+               uint64_t r2r_slot:1;
+               uint64_t inorder_mwf:1;
+               uint64_t inorder_mrf:1;
+               uint64_t reserved_10_11:2;
+               uint64_t fprch2:1;
+               uint64_t bprch:1;
+               uint64_t sil_lat:2;
+               uint64_t tskw:2;
+               uint64_t qs_dic:2;
+               uint64_t dic:2;
+#else
+               uint64_t dic:2;
+               uint64_t qs_dic:2;
+               uint64_t tskw:2;
+               uint64_t sil_lat:2;
+               uint64_t bprch:1;
+               uint64_t fprch2:1;
+               uint64_t reserved_10_11:2;
+               uint64_t inorder_mrf:1;
+               uint64_t inorder_mwf:1;
+               uint64_t r2r_slot:1;
+               uint64_t rdimm_ena:1;
+               uint64_t pll_bypass:1;
+               uint64_t pll_div2:1;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t slow_scf:1;
+               uint64_t ddr__pctl:4;
+               uint64_t ddr__nctl:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_ctl_cn30xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ddr__nctl:4;
+               uint64_t ddr__pctl:4;
+               uint64_t slow_scf:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t pll_div2:1;
+               uint64_t pll_bypass:1;
+               uint64_t rdimm_ena:1;
+               uint64_t r2r_slot:1;
+               uint64_t inorder_mwf:1;
+               uint64_t inorder_mrf:1;
+               uint64_t dreset:1;
+               uint64_t mode32b:1;
+               uint64_t fprch2:1;
+               uint64_t bprch:1;
+               uint64_t sil_lat:2;
+               uint64_t tskw:2;
+               uint64_t qs_dic:2;
+               uint64_t dic:2;
+#else
+               uint64_t dic:2;
+               uint64_t qs_dic:2;
+               uint64_t tskw:2;
+               uint64_t sil_lat:2;
+               uint64_t bprch:1;
+               uint64_t fprch2:1;
+               uint64_t mode32b:1;
+               uint64_t dreset:1;
+               uint64_t inorder_mrf:1;
+               uint64_t inorder_mwf:1;
+               uint64_t r2r_slot:1;
+               uint64_t rdimm_ena:1;
+               uint64_t pll_bypass:1;
+               uint64_t pll_div2:1;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t slow_scf:1;
+               uint64_t ddr__pctl:4;
+               uint64_t ddr__nctl:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn30xx;
+       struct cvmx_lmcx_ctl_cn30xx cn31xx;
+       struct cvmx_lmcx_ctl_cn38xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ddr__nctl:4;
+               uint64_t ddr__pctl:4;
+               uint64_t slow_scf:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t reserved_16_17:2;
+               uint64_t rdimm_ena:1;
+               uint64_t r2r_slot:1;
+               uint64_t inorder_mwf:1;
+               uint64_t inorder_mrf:1;
+               uint64_t set_zero:1;
+               uint64_t mode128b:1;
+               uint64_t fprch2:1;
+               uint64_t bprch:1;
+               uint64_t sil_lat:2;
+               uint64_t tskw:2;
+               uint64_t qs_dic:2;
+               uint64_t dic:2;
+#else
+               uint64_t dic:2;
+               uint64_t qs_dic:2;
+               uint64_t tskw:2;
+               uint64_t sil_lat:2;
+               uint64_t bprch:1;
+               uint64_t fprch2:1;
+               uint64_t mode128b:1;
+               uint64_t set_zero:1;
+               uint64_t inorder_mrf:1;
+               uint64_t inorder_mwf:1;
+               uint64_t r2r_slot:1;
+               uint64_t rdimm_ena:1;
+               uint64_t reserved_16_17:2;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t slow_scf:1;
+               uint64_t ddr__pctl:4;
+               uint64_t ddr__nctl:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn38xx;
+       struct cvmx_lmcx_ctl_cn38xx cn38xxp2;
+       struct cvmx_lmcx_ctl_cn50xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ddr__nctl:4;
+               uint64_t ddr__pctl:4;
+               uint64_t slow_scf:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t reserved_17_17:1;
+               uint64_t pll_bypass:1;
+               uint64_t rdimm_ena:1;
+               uint64_t r2r_slot:1;
+               uint64_t inorder_mwf:1;
+               uint64_t inorder_mrf:1;
+               uint64_t dreset:1;
+               uint64_t mode32b:1;
+               uint64_t fprch2:1;
+               uint64_t bprch:1;
+               uint64_t sil_lat:2;
+               uint64_t tskw:2;
+               uint64_t qs_dic:2;
+               uint64_t dic:2;
+#else
+               uint64_t dic:2;
+               uint64_t qs_dic:2;
+               uint64_t tskw:2;
+               uint64_t sil_lat:2;
+               uint64_t bprch:1;
+               uint64_t fprch2:1;
+               uint64_t mode32b:1;
+               uint64_t dreset:1;
+               uint64_t inorder_mrf:1;
+               uint64_t inorder_mwf:1;
+               uint64_t r2r_slot:1;
+               uint64_t rdimm_ena:1;
+               uint64_t pll_bypass:1;
+               uint64_t reserved_17_17:1;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t slow_scf:1;
+               uint64_t ddr__pctl:4;
+               uint64_t ddr__nctl:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn50xx;
+       struct cvmx_lmcx_ctl_cn52xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ddr__nctl:4;
+               uint64_t ddr__pctl:4;
+               uint64_t slow_scf:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t reserved_16_17:2;
+               uint64_t rdimm_ena:1;
+               uint64_t r2r_slot:1;
+               uint64_t inorder_mwf:1;
+               uint64_t inorder_mrf:1;
+               uint64_t dreset:1;
+               uint64_t mode32b:1;
+               uint64_t fprch2:1;
+               uint64_t bprch:1;
+               uint64_t sil_lat:2;
+               uint64_t tskw:2;
+               uint64_t qs_dic:2;
+               uint64_t dic:2;
+#else
+               uint64_t dic:2;
+               uint64_t qs_dic:2;
+               uint64_t tskw:2;
+               uint64_t sil_lat:2;
+               uint64_t bprch:1;
+               uint64_t fprch2:1;
+               uint64_t mode32b:1;
+               uint64_t dreset:1;
+               uint64_t inorder_mrf:1;
+               uint64_t inorder_mwf:1;
+               uint64_t r2r_slot:1;
+               uint64_t rdimm_ena:1;
+               uint64_t reserved_16_17:2;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t slow_scf:1;
+               uint64_t ddr__pctl:4;
+               uint64_t ddr__nctl:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn52xx;
+       struct cvmx_lmcx_ctl_cn52xx cn52xxp1;
+       struct cvmx_lmcx_ctl_cn52xx cn56xx;
+       struct cvmx_lmcx_ctl_cn52xx cn56xxp1;
+       struct cvmx_lmcx_ctl_cn58xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ddr__nctl:4;
+               uint64_t ddr__pctl:4;
+               uint64_t slow_scf:1;
+               uint64_t xor_bank:1;
+               uint64_t max_write_batch:4;
+               uint64_t reserved_16_17:2;
+               uint64_t rdimm_ena:1;
+               uint64_t r2r_slot:1;
+               uint64_t inorder_mwf:1;
+               uint64_t inorder_mrf:1;
+               uint64_t dreset:1;
+               uint64_t mode128b:1;
+               uint64_t fprch2:1;
+               uint64_t bprch:1;
+               uint64_t sil_lat:2;
+               uint64_t tskw:2;
+               uint64_t qs_dic:2;
+               uint64_t dic:2;
+#else
+               uint64_t dic:2;
+               uint64_t qs_dic:2;
+               uint64_t tskw:2;
+               uint64_t sil_lat:2;
+               uint64_t bprch:1;
+               uint64_t fprch2:1;
+               uint64_t mode128b:1;
+               uint64_t dreset:1;
+               uint64_t inorder_mrf:1;
+               uint64_t inorder_mwf:1;
+               uint64_t r2r_slot:1;
+               uint64_t rdimm_ena:1;
+               uint64_t reserved_16_17:2;
+               uint64_t max_write_batch:4;
+               uint64_t xor_bank:1;
+               uint64_t slow_scf:1;
+               uint64_t ddr__pctl:4;
+               uint64_t ddr__nctl:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn58xx;
+       struct cvmx_lmcx_ctl_cn58xx cn58xxp1;
+};
+
+union cvmx_lmcx_ctl1 {
+       uint64_t u64;
+       struct cvmx_lmcx_ctl1_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_21_63:43;
+               uint64_t ecc_adr:1;
+               uint64_t forcewrite:4;
+               uint64_t idlepower:3;
+               uint64_t sequence:3;
+               uint64_t sil_mode:1;
+               uint64_t dcc_enable:1;
+               uint64_t reserved_2_7:6;
+               uint64_t data_layout:2;
+#else
+               uint64_t data_layout:2;
+               uint64_t reserved_2_7:6;
+               uint64_t dcc_enable:1;
+               uint64_t sil_mode:1;
+               uint64_t sequence:3;
+               uint64_t idlepower:3;
+               uint64_t forcewrite:4;
+               uint64_t ecc_adr:1;
+               uint64_t reserved_21_63:43;
+#endif
+       } s;
+       struct cvmx_lmcx_ctl1_cn30xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_2_63:62;
+               uint64_t data_layout:2;
+#else
+               uint64_t data_layout:2;
+               uint64_t reserved_2_63:62;
+#endif
+       } cn30xx;
+       struct cvmx_lmcx_ctl1_cn50xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_10_63:54;
+               uint64_t sil_mode:1;
+               uint64_t dcc_enable:1;
+               uint64_t reserved_2_7:6;
+               uint64_t data_layout:2;
+#else
+               uint64_t data_layout:2;
+               uint64_t reserved_2_7:6;
+               uint64_t dcc_enable:1;
+               uint64_t sil_mode:1;
+               uint64_t reserved_10_63:54;
+#endif
+       } cn50xx;
+       struct cvmx_lmcx_ctl1_cn52xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_21_63:43;
+               uint64_t ecc_adr:1;
+               uint64_t forcewrite:4;
+               uint64_t idlepower:3;
+               uint64_t sequence:3;
+               uint64_t sil_mode:1;
+               uint64_t dcc_enable:1;
+               uint64_t reserved_0_7:8;
+#else
+               uint64_t reserved_0_7:8;
+               uint64_t dcc_enable:1;
+               uint64_t sil_mode:1;
+               uint64_t sequence:3;
+               uint64_t idlepower:3;
+               uint64_t forcewrite:4;
+               uint64_t ecc_adr:1;
+               uint64_t reserved_21_63:43;
+#endif
+       } cn52xx;
+       struct cvmx_lmcx_ctl1_cn52xx cn52xxp1;
+       struct cvmx_lmcx_ctl1_cn52xx cn56xx;
+       struct cvmx_lmcx_ctl1_cn52xx cn56xxp1;
+       struct cvmx_lmcx_ctl1_cn58xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_10_63:54;
+               uint64_t sil_mode:1;
+               uint64_t dcc_enable:1;
+               uint64_t reserved_0_7:8;
+#else
+               uint64_t reserved_0_7:8;
+               uint64_t dcc_enable:1;
+               uint64_t sil_mode:1;
+               uint64_t reserved_10_63:54;
+#endif
+       } cn58xx;
+       struct cvmx_lmcx_ctl1_cn58xx cn58xxp1;
+};
+
+union cvmx_lmcx_dclk_cnt {
+       uint64_t u64;
+       struct cvmx_lmcx_dclk_cnt_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t dclkcnt:64;
+#else
+               uint64_t dclkcnt:64;
+#endif
+       } s;
+       struct cvmx_lmcx_dclk_cnt_s cn61xx;
+       struct cvmx_lmcx_dclk_cnt_s cn63xx;
+       struct cvmx_lmcx_dclk_cnt_s cn63xxp1;
+       struct cvmx_lmcx_dclk_cnt_s cn66xx;
+       struct cvmx_lmcx_dclk_cnt_s cn68xx;
+       struct cvmx_lmcx_dclk_cnt_s cn68xxp1;
+       struct cvmx_lmcx_dclk_cnt_s cnf71xx;
+};
+
+union cvmx_lmcx_dclk_cnt_hi {
+       uint64_t u64;
+       struct cvmx_lmcx_dclk_cnt_hi_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t dclkcnt_hi:32;
+#else
+               uint64_t dclkcnt_hi:32;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn30xx;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn31xx;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn38xx;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn38xxp2;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn50xx;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn52xx;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn52xxp1;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn56xx;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn56xxp1;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn58xx;
+       struct cvmx_lmcx_dclk_cnt_hi_s cn58xxp1;
+};
+
+union cvmx_lmcx_dclk_cnt_lo {
+       uint64_t u64;
+       struct cvmx_lmcx_dclk_cnt_lo_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t dclkcnt_lo:32;
+#else
+               uint64_t dclkcnt_lo:32;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn30xx;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn31xx;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn38xx;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn38xxp2;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn50xx;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn52xx;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn52xxp1;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn56xx;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn56xxp1;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn58xx;
+       struct cvmx_lmcx_dclk_cnt_lo_s cn58xxp1;
+};
+
+union cvmx_lmcx_dclk_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_dclk_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_8_63:56;
+               uint64_t off90_ena:1;
+               uint64_t dclk90_byp:1;
+               uint64_t dclk90_ld:1;
+               uint64_t dclk90_vlu:5;
+#else
+               uint64_t dclk90_vlu:5;
+               uint64_t dclk90_ld:1;
+               uint64_t dclk90_byp:1;
+               uint64_t off90_ena:1;
+               uint64_t reserved_8_63:56;
+#endif
+       } s;
+       struct cvmx_lmcx_dclk_ctl_s cn56xx;
+       struct cvmx_lmcx_dclk_ctl_s cn56xxp1;
+};
+
+union cvmx_lmcx_ddr2_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_ddr2_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t bank8:1;
+               uint64_t burst8:1;
+               uint64_t addlat:3;
+               uint64_t pocas:1;
+               uint64_t bwcnt:1;
+               uint64_t twr:3;
+               uint64_t silo_hc:1;
+               uint64_t ddr_eof:4;
+               uint64_t tfaw:5;
+               uint64_t crip_mode:1;
+               uint64_t ddr2t:1;
+               uint64_t odt_ena:1;
+               uint64_t qdll_ena:1;
+               uint64_t dll90_vlu:5;
+               uint64_t dll90_byp:1;
+               uint64_t rdqs:1;
+               uint64_t ddr2:1;
+#else
+               uint64_t ddr2:1;
+               uint64_t rdqs:1;
+               uint64_t dll90_byp:1;
+               uint64_t dll90_vlu:5;
+               uint64_t qdll_ena:1;
+               uint64_t odt_ena:1;
+               uint64_t ddr2t:1;
+               uint64_t crip_mode:1;
+               uint64_t tfaw:5;
+               uint64_t ddr_eof:4;
+               uint64_t silo_hc:1;
+               uint64_t twr:3;
+               uint64_t bwcnt:1;
+               uint64_t pocas:1;
+               uint64_t addlat:3;
+               uint64_t burst8:1;
+               uint64_t bank8:1;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_ddr2_ctl_cn30xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t bank8:1;
+               uint64_t burst8:1;
+               uint64_t addlat:3;
+               uint64_t pocas:1;
+               uint64_t bwcnt:1;
+               uint64_t twr:3;
+               uint64_t silo_hc:1;
+               uint64_t ddr_eof:4;
+               uint64_t tfaw:5;
+               uint64_t crip_mode:1;
+               uint64_t ddr2t:1;
+               uint64_t odt_ena:1;
+               uint64_t qdll_ena:1;
+               uint64_t dll90_vlu:5;
+               uint64_t dll90_byp:1;
+               uint64_t reserved_1_1:1;
+               uint64_t ddr2:1;
+#else
+               uint64_t ddr2:1;
+               uint64_t reserved_1_1:1;
+               uint64_t dll90_byp:1;
+               uint64_t dll90_vlu:5;
+               uint64_t qdll_ena:1;
+               uint64_t odt_ena:1;
+               uint64_t ddr2t:1;
+               uint64_t crip_mode:1;
+               uint64_t tfaw:5;
+               uint64_t ddr_eof:4;
+               uint64_t silo_hc:1;
+               uint64_t twr:3;
+               uint64_t bwcnt:1;
+               uint64_t pocas:1;
+               uint64_t addlat:3;
+               uint64_t burst8:1;
+               uint64_t bank8:1;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn30xx;
+       struct cvmx_lmcx_ddr2_ctl_cn30xx cn31xx;
+       struct cvmx_lmcx_ddr2_ctl_s cn38xx;
+       struct cvmx_lmcx_ddr2_ctl_s cn38xxp2;
+       struct cvmx_lmcx_ddr2_ctl_s cn50xx;
+       struct cvmx_lmcx_ddr2_ctl_s cn52xx;
+       struct cvmx_lmcx_ddr2_ctl_s cn52xxp1;
+       struct cvmx_lmcx_ddr2_ctl_s cn56xx;
+       struct cvmx_lmcx_ddr2_ctl_s cn56xxp1;
+       struct cvmx_lmcx_ddr2_ctl_s cn58xx;
+       struct cvmx_lmcx_ddr2_ctl_s cn58xxp1;
+};
+
+union cvmx_lmcx_ddr_pll_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_ddr_pll_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_27_63:37;
+               uint64_t jtg_test_mode:1;
+               uint64_t dfm_div_reset:1;
+               uint64_t dfm_ps_en:3;
+               uint64_t ddr_div_reset:1;
+               uint64_t ddr_ps_en:3;
+               uint64_t diffamp:4;
+               uint64_t cps:3;
+               uint64_t cpb:3;
+               uint64_t reset_n:1;
+               uint64_t clkf:7;
+#else
+               uint64_t clkf:7;
+               uint64_t reset_n:1;
+               uint64_t cpb:3;
+               uint64_t cps:3;
+               uint64_t diffamp:4;
+               uint64_t ddr_ps_en:3;
+               uint64_t ddr_div_reset:1;
+               uint64_t dfm_ps_en:3;
+               uint64_t dfm_div_reset:1;
+               uint64_t jtg_test_mode:1;
+               uint64_t reserved_27_63:37;
+#endif
+       } s;
+       struct cvmx_lmcx_ddr_pll_ctl_s cn61xx;
+       struct cvmx_lmcx_ddr_pll_ctl_s cn63xx;
+       struct cvmx_lmcx_ddr_pll_ctl_s cn63xxp1;
+       struct cvmx_lmcx_ddr_pll_ctl_s cn66xx;
+       struct cvmx_lmcx_ddr_pll_ctl_s cn68xx;
+       struct cvmx_lmcx_ddr_pll_ctl_s cn68xxp1;
+       struct cvmx_lmcx_ddr_pll_ctl_s cnf71xx;
+};
+
+union cvmx_lmcx_delay_cfg {
+       uint64_t u64;
+       struct cvmx_lmcx_delay_cfg_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_15_63:49;
+               uint64_t dq:5;
+               uint64_t cmd:5;
+               uint64_t clk:5;
+#else
+               uint64_t clk:5;
+               uint64_t cmd:5;
+               uint64_t dq:5;
+               uint64_t reserved_15_63:49;
+#endif
+       } s;
+       struct cvmx_lmcx_delay_cfg_s cn30xx;
+       struct cvmx_lmcx_delay_cfg_cn38xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_14_63:50;
+               uint64_t dq:4;
+               uint64_t reserved_9_9:1;
+               uint64_t cmd:4;
+               uint64_t reserved_4_4:1;
+               uint64_t clk:4;
+#else
+               uint64_t clk:4;
+               uint64_t reserved_4_4:1;
+               uint64_t cmd:4;
+               uint64_t reserved_9_9:1;
+               uint64_t dq:4;
+               uint64_t reserved_14_63:50;
+#endif
+       } cn38xx;
+       struct cvmx_lmcx_delay_cfg_cn38xx cn50xx;
+       struct cvmx_lmcx_delay_cfg_cn38xx cn52xx;
+       struct cvmx_lmcx_delay_cfg_cn38xx cn52xxp1;
+       struct cvmx_lmcx_delay_cfg_cn38xx cn56xx;
+       struct cvmx_lmcx_delay_cfg_cn38xx cn56xxp1;
+       struct cvmx_lmcx_delay_cfg_cn38xx cn58xx;
+       struct cvmx_lmcx_delay_cfg_cn38xx cn58xxp1;
+};
+
+union cvmx_lmcx_dimmx_params {
+       uint64_t u64;
+       struct cvmx_lmcx_dimmx_params_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t rc15:4;
+               uint64_t rc14:4;
+               uint64_t rc13:4;
+               uint64_t rc12:4;
+               uint64_t rc11:4;
+               uint64_t rc10:4;
+               uint64_t rc9:4;
+               uint64_t rc8:4;
+               uint64_t rc7:4;
+               uint64_t rc6:4;
+               uint64_t rc5:4;
+               uint64_t rc4:4;
+               uint64_t rc3:4;
+               uint64_t rc2:4;
+               uint64_t rc1:4;
+               uint64_t rc0:4;
+#else
+               uint64_t rc0:4;
+               uint64_t rc1:4;
+               uint64_t rc2:4;
+               uint64_t rc3:4;
+               uint64_t rc4:4;
+               uint64_t rc5:4;
+               uint64_t rc6:4;
+               uint64_t rc7:4;
+               uint64_t rc8:4;
+               uint64_t rc9:4;
+               uint64_t rc10:4;
+               uint64_t rc11:4;
+               uint64_t rc12:4;
+               uint64_t rc13:4;
+               uint64_t rc14:4;
+               uint64_t rc15:4;
+#endif
+       } s;
+       struct cvmx_lmcx_dimmx_params_s cn61xx;
+       struct cvmx_lmcx_dimmx_params_s cn63xx;
+       struct cvmx_lmcx_dimmx_params_s cn63xxp1;
+       struct cvmx_lmcx_dimmx_params_s cn66xx;
+       struct cvmx_lmcx_dimmx_params_s cn68xx;
+       struct cvmx_lmcx_dimmx_params_s cn68xxp1;
+       struct cvmx_lmcx_dimmx_params_s cnf71xx;
+};
+
+union cvmx_lmcx_dimm_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_dimm_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_46_63:18;
+               uint64_t parity:1;
+               uint64_t tcws:13;
+               uint64_t dimm1_wmask:16;
+               uint64_t dimm0_wmask:16;
+#else
+               uint64_t dimm0_wmask:16;
+               uint64_t dimm1_wmask:16;
+               uint64_t tcws:13;
+               uint64_t parity:1;
+               uint64_t reserved_46_63:18;
+#endif
+       } s;
+       struct cvmx_lmcx_dimm_ctl_s cn61xx;
+       struct cvmx_lmcx_dimm_ctl_s cn63xx;
+       struct cvmx_lmcx_dimm_ctl_s cn63xxp1;
+       struct cvmx_lmcx_dimm_ctl_s cn66xx;
+       struct cvmx_lmcx_dimm_ctl_s cn68xx;
+       struct cvmx_lmcx_dimm_ctl_s cn68xxp1;
+       struct cvmx_lmcx_dimm_ctl_s cnf71xx;
+};
+
+union cvmx_lmcx_dll_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_dll_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_8_63:56;
+               uint64_t dreset:1;
+               uint64_t dll90_byp:1;
+               uint64_t dll90_ena:1;
+               uint64_t dll90_vlu:5;
+#else
+               uint64_t dll90_vlu:5;
+               uint64_t dll90_ena:1;
+               uint64_t dll90_byp:1;
+               uint64_t dreset:1;
+               uint64_t reserved_8_63:56;
+#endif
+       } s;
+       struct cvmx_lmcx_dll_ctl_s cn52xx;
+       struct cvmx_lmcx_dll_ctl_s cn52xxp1;
+       struct cvmx_lmcx_dll_ctl_s cn56xx;
+       struct cvmx_lmcx_dll_ctl_s cn56xxp1;
+};
+
+union cvmx_lmcx_dll_ctl2 {
+       uint64_t u64;
+       struct cvmx_lmcx_dll_ctl2_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_16_63:48;
+               uint64_t intf_en:1;
+               uint64_t dll_bringup:1;
+               uint64_t dreset:1;
+               uint64_t quad_dll_ena:1;
+               uint64_t byp_sel:4;
+               uint64_t byp_setting:8;
+#else
+               uint64_t byp_setting:8;
+               uint64_t byp_sel:4;
+               uint64_t quad_dll_ena:1;
+               uint64_t dreset:1;
+               uint64_t dll_bringup:1;
+               uint64_t intf_en:1;
+               uint64_t reserved_16_63:48;
+#endif
+       } s;
+       struct cvmx_lmcx_dll_ctl2_s cn61xx;
+       struct cvmx_lmcx_dll_ctl2_cn63xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_15_63:49;
+               uint64_t dll_bringup:1;
+               uint64_t dreset:1;
+               uint64_t quad_dll_ena:1;
+               uint64_t byp_sel:4;
+               uint64_t byp_setting:8;
+#else
+               uint64_t byp_setting:8;
+               uint64_t byp_sel:4;
+               uint64_t quad_dll_ena:1;
+               uint64_t dreset:1;
+               uint64_t dll_bringup:1;
+               uint64_t reserved_15_63:49;
+#endif
+       } cn63xx;
+       struct cvmx_lmcx_dll_ctl2_cn63xx cn63xxp1;
+       struct cvmx_lmcx_dll_ctl2_cn63xx cn66xx;
+       struct cvmx_lmcx_dll_ctl2_s cn68xx;
+       struct cvmx_lmcx_dll_ctl2_s cn68xxp1;
+       struct cvmx_lmcx_dll_ctl2_s cnf71xx;
+};
+
+union cvmx_lmcx_dll_ctl3 {
+       uint64_t u64;
+       struct cvmx_lmcx_dll_ctl3_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_41_63:23;
+               uint64_t dclk90_fwd:1;
+               uint64_t ddr_90_dly_byp:1;
+               uint64_t dclk90_recal_dis:1;
+               uint64_t dclk90_byp_sel:1;
+               uint64_t dclk90_byp_setting:8;
+               uint64_t dll_fast:1;
+               uint64_t dll90_setting:8;
+               uint64_t fine_tune_mode:1;
+               uint64_t dll_mode:1;
+               uint64_t dll90_byte_sel:4;
+               uint64_t offset_ena:1;
+               uint64_t load_offset:1;
+               uint64_t mode_sel:2;
+               uint64_t byte_sel:4;
+               uint64_t offset:6;
+#else
+               uint64_t offset:6;
+               uint64_t byte_sel:4;
+               uint64_t mode_sel:2;
+               uint64_t load_offset:1;
+               uint64_t offset_ena:1;
+               uint64_t dll90_byte_sel:4;
+               uint64_t dll_mode:1;
+               uint64_t fine_tune_mode:1;
+               uint64_t dll90_setting:8;
+               uint64_t dll_fast:1;
+               uint64_t dclk90_byp_setting:8;
+               uint64_t dclk90_byp_sel:1;
+               uint64_t dclk90_recal_dis:1;
+               uint64_t ddr_90_dly_byp:1;
+               uint64_t dclk90_fwd:1;
+               uint64_t reserved_41_63:23;
+#endif
+       } s;
+       struct cvmx_lmcx_dll_ctl3_s cn61xx;
+       struct cvmx_lmcx_dll_ctl3_cn63xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_29_63:35;
+               uint64_t dll_fast:1;
+               uint64_t dll90_setting:8;
+               uint64_t fine_tune_mode:1;
+               uint64_t dll_mode:1;
+               uint64_t dll90_byte_sel:4;
+               uint64_t offset_ena:1;
+               uint64_t load_offset:1;
+               uint64_t mode_sel:2;
+               uint64_t byte_sel:4;
+               uint64_t offset:6;
+#else
+               uint64_t offset:6;
+               uint64_t byte_sel:4;
+               uint64_t mode_sel:2;
+               uint64_t load_offset:1;
+               uint64_t offset_ena:1;
+               uint64_t dll90_byte_sel:4;
+               uint64_t dll_mode:1;
+               uint64_t fine_tune_mode:1;
+               uint64_t dll90_setting:8;
+               uint64_t dll_fast:1;
+               uint64_t reserved_29_63:35;
+#endif
+       } cn63xx;
+       struct cvmx_lmcx_dll_ctl3_cn63xx cn63xxp1;
+       struct cvmx_lmcx_dll_ctl3_cn63xx cn66xx;
+       struct cvmx_lmcx_dll_ctl3_s cn68xx;
+       struct cvmx_lmcx_dll_ctl3_s cn68xxp1;
+       struct cvmx_lmcx_dll_ctl3_s cnf71xx;
+};
+
+union cvmx_lmcx_dual_memcfg {
+       uint64_t u64;
+       struct cvmx_lmcx_dual_memcfg_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_20_63:44;
+               uint64_t bank8:1;
+               uint64_t row_lsb:3;
+               uint64_t reserved_8_15:8;
+               uint64_t cs_mask:8;
+#else
+               uint64_t cs_mask:8;
+               uint64_t reserved_8_15:8;
+               uint64_t row_lsb:3;
+               uint64_t bank8:1;
+               uint64_t reserved_20_63:44;
+#endif
+       } s;
+       struct cvmx_lmcx_dual_memcfg_s cn50xx;
+       struct cvmx_lmcx_dual_memcfg_s cn52xx;
+       struct cvmx_lmcx_dual_memcfg_s cn52xxp1;
+       struct cvmx_lmcx_dual_memcfg_s cn56xx;
+       struct cvmx_lmcx_dual_memcfg_s cn56xxp1;
+       struct cvmx_lmcx_dual_memcfg_s cn58xx;
+       struct cvmx_lmcx_dual_memcfg_s cn58xxp1;
+       struct cvmx_lmcx_dual_memcfg_cn61xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_19_63:45;
+               uint64_t row_lsb:3;
+               uint64_t reserved_8_15:8;
+               uint64_t cs_mask:8;
+#else
+               uint64_t cs_mask:8;
+               uint64_t reserved_8_15:8;
+               uint64_t row_lsb:3;
+               uint64_t reserved_19_63:45;
+#endif
+       } cn61xx;
+       struct cvmx_lmcx_dual_memcfg_cn61xx cn63xx;
+       struct cvmx_lmcx_dual_memcfg_cn61xx cn63xxp1;
+       struct cvmx_lmcx_dual_memcfg_cn61xx cn66xx;
+       struct cvmx_lmcx_dual_memcfg_cn61xx cn68xx;
+       struct cvmx_lmcx_dual_memcfg_cn61xx cn68xxp1;
+       struct cvmx_lmcx_dual_memcfg_cn61xx cnf71xx;
+};
+
+union cvmx_lmcx_ecc_synd {
+       uint64_t u64;
+       struct cvmx_lmcx_ecc_synd_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t mrdsyn3:8;
+               uint64_t mrdsyn2:8;
+               uint64_t mrdsyn1:8;
+               uint64_t mrdsyn0:8;
+#else
+               uint64_t mrdsyn0:8;
+               uint64_t mrdsyn1:8;
+               uint64_t mrdsyn2:8;
+               uint64_t mrdsyn3:8;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_ecc_synd_s cn30xx;
+       struct cvmx_lmcx_ecc_synd_s cn31xx;
+       struct cvmx_lmcx_ecc_synd_s cn38xx;
+       struct cvmx_lmcx_ecc_synd_s cn38xxp2;
+       struct cvmx_lmcx_ecc_synd_s cn50xx;
+       struct cvmx_lmcx_ecc_synd_s cn52xx;
+       struct cvmx_lmcx_ecc_synd_s cn52xxp1;
+       struct cvmx_lmcx_ecc_synd_s cn56xx;
+       struct cvmx_lmcx_ecc_synd_s cn56xxp1;
+       struct cvmx_lmcx_ecc_synd_s cn58xx;
+       struct cvmx_lmcx_ecc_synd_s cn58xxp1;
+       struct cvmx_lmcx_ecc_synd_s cn61xx;
+       struct cvmx_lmcx_ecc_synd_s cn63xx;
+       struct cvmx_lmcx_ecc_synd_s cn63xxp1;
+       struct cvmx_lmcx_ecc_synd_s cn66xx;
+       struct cvmx_lmcx_ecc_synd_s cn68xx;
+       struct cvmx_lmcx_ecc_synd_s cn68xxp1;
+       struct cvmx_lmcx_ecc_synd_s cnf71xx;
+};
+
+union cvmx_lmcx_fadr {
+       uint64_t u64;
+       struct cvmx_lmcx_fadr_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_0_63:64;
+#else
+               uint64_t reserved_0_63:64;
+#endif
+       } s;
+       struct cvmx_lmcx_fadr_cn30xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t fdimm:2;
+               uint64_t fbunk:1;
+               uint64_t fbank:3;
+               uint64_t frow:14;
+               uint64_t fcol:12;
+#else
+               uint64_t fcol:12;
+               uint64_t frow:14;
+               uint64_t fbank:3;
+               uint64_t fbunk:1;
+               uint64_t fdimm:2;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn30xx;
+       struct cvmx_lmcx_fadr_cn30xx cn31xx;
+       struct cvmx_lmcx_fadr_cn30xx cn38xx;
+       struct cvmx_lmcx_fadr_cn30xx cn38xxp2;
+       struct cvmx_lmcx_fadr_cn30xx cn50xx;
+       struct cvmx_lmcx_fadr_cn30xx cn52xx;
+       struct cvmx_lmcx_fadr_cn30xx cn52xxp1;
+       struct cvmx_lmcx_fadr_cn30xx cn56xx;
+       struct cvmx_lmcx_fadr_cn30xx cn56xxp1;
+       struct cvmx_lmcx_fadr_cn30xx cn58xx;
+       struct cvmx_lmcx_fadr_cn30xx cn58xxp1;
+       struct cvmx_lmcx_fadr_cn61xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_36_63:28;
+               uint64_t fdimm:2;
+               uint64_t fbunk:1;
+               uint64_t fbank:3;
+               uint64_t frow:16;
+               uint64_t fcol:14;
+#else
+               uint64_t fcol:14;
+               uint64_t frow:16;
+               uint64_t fbank:3;
+               uint64_t fbunk:1;
+               uint64_t fdimm:2;
+               uint64_t reserved_36_63:28;
+#endif
+       } cn61xx;
+       struct cvmx_lmcx_fadr_cn61xx cn63xx;
+       struct cvmx_lmcx_fadr_cn61xx cn63xxp1;
+       struct cvmx_lmcx_fadr_cn61xx cn66xx;
+       struct cvmx_lmcx_fadr_cn61xx cn68xx;
+       struct cvmx_lmcx_fadr_cn61xx cn68xxp1;
+       struct cvmx_lmcx_fadr_cn61xx cnf71xx;
+};
+
+union cvmx_lmcx_ifb_cnt {
+       uint64_t u64;
+       struct cvmx_lmcx_ifb_cnt_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t ifbcnt:64;
+#else
+               uint64_t ifbcnt:64;
+#endif
+       } s;
+       struct cvmx_lmcx_ifb_cnt_s cn61xx;
+       struct cvmx_lmcx_ifb_cnt_s cn63xx;
+       struct cvmx_lmcx_ifb_cnt_s cn63xxp1;
+       struct cvmx_lmcx_ifb_cnt_s cn66xx;
+       struct cvmx_lmcx_ifb_cnt_s cn68xx;
+       struct cvmx_lmcx_ifb_cnt_s cn68xxp1;
+       struct cvmx_lmcx_ifb_cnt_s cnf71xx;
+};
+
+union cvmx_lmcx_ifb_cnt_hi {
+       uint64_t u64;
+       struct cvmx_lmcx_ifb_cnt_hi_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ifbcnt_hi:32;
+#else
+               uint64_t ifbcnt_hi:32;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn30xx;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn31xx;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn38xx;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn38xxp2;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn50xx;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn52xx;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn52xxp1;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn56xx;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn56xxp1;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn58xx;
+       struct cvmx_lmcx_ifb_cnt_hi_s cn58xxp1;
+};
+
+union cvmx_lmcx_ifb_cnt_lo {
+       uint64_t u64;
+       struct cvmx_lmcx_ifb_cnt_lo_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ifbcnt_lo:32;
+#else
+               uint64_t ifbcnt_lo:32;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn30xx;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn31xx;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn38xx;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn38xxp2;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn50xx;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn52xx;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn52xxp1;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn56xx;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn56xxp1;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn58xx;
+       struct cvmx_lmcx_ifb_cnt_lo_s cn58xxp1;
+};
+
+union cvmx_lmcx_int {
+       uint64_t u64;
+       struct cvmx_lmcx_int_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_9_63:55;
+               uint64_t ded_err:4;
+               uint64_t sec_err:4;
+               uint64_t nxm_wr_err:1;
+#else
+               uint64_t nxm_wr_err:1;
+               uint64_t sec_err:4;
+               uint64_t ded_err:4;
+               uint64_t reserved_9_63:55;
+#endif
+       } s;
+       struct cvmx_lmcx_int_s cn61xx;
+       struct cvmx_lmcx_int_s cn63xx;
+       struct cvmx_lmcx_int_s cn63xxp1;
+       struct cvmx_lmcx_int_s cn66xx;
+       struct cvmx_lmcx_int_s cn68xx;
+       struct cvmx_lmcx_int_s cn68xxp1;
+       struct cvmx_lmcx_int_s cnf71xx;
+};
+
+union cvmx_lmcx_int_en {
+       uint64_t u64;
+       struct cvmx_lmcx_int_en_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_3_63:61;
+               uint64_t intr_ded_ena:1;
+               uint64_t intr_sec_ena:1;
+               uint64_t intr_nxm_wr_ena:1;
+#else
+               uint64_t intr_nxm_wr_ena:1;
+               uint64_t intr_sec_ena:1;
+               uint64_t intr_ded_ena:1;
+               uint64_t reserved_3_63:61;
+#endif
+       } s;
+       struct cvmx_lmcx_int_en_s cn61xx;
+       struct cvmx_lmcx_int_en_s cn63xx;
+       struct cvmx_lmcx_int_en_s cn63xxp1;
+       struct cvmx_lmcx_int_en_s cn66xx;
+       struct cvmx_lmcx_int_en_s cn68xx;
+       struct cvmx_lmcx_int_en_s cn68xxp1;
+       struct cvmx_lmcx_int_en_s cnf71xx;
+};
+
+union cvmx_lmcx_mem_cfg0 {
+       uint64_t u64;
+       struct cvmx_lmcx_mem_cfg0_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t reset:1;
+               uint64_t silo_qc:1;
+               uint64_t bunk_ena:1;
+               uint64_t ded_err:4;
+               uint64_t sec_err:4;
+               uint64_t intr_ded_ena:1;
+               uint64_t intr_sec_ena:1;
+               uint64_t tcl:4;
+               uint64_t ref_int:6;
+               uint64_t pbank_lsb:4;
+               uint64_t row_lsb:3;
+               uint64_t ecc_ena:1;
+               uint64_t init_start:1;
+#else
+               uint64_t init_start:1;
+               uint64_t ecc_ena:1;
+               uint64_t row_lsb:3;
+               uint64_t pbank_lsb:4;
+               uint64_t ref_int:6;
+               uint64_t tcl:4;
+               uint64_t intr_sec_ena:1;
+               uint64_t intr_ded_ena:1;
+               uint64_t sec_err:4;
+               uint64_t ded_err:4;
+               uint64_t bunk_ena:1;
+               uint64_t silo_qc:1;
+               uint64_t reset:1;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_mem_cfg0_s cn30xx;
+       struct cvmx_lmcx_mem_cfg0_s cn31xx;
+       struct cvmx_lmcx_mem_cfg0_s cn38xx;
+       struct cvmx_lmcx_mem_cfg0_s cn38xxp2;
+       struct cvmx_lmcx_mem_cfg0_s cn50xx;
+       struct cvmx_lmcx_mem_cfg0_s cn52xx;
+       struct cvmx_lmcx_mem_cfg0_s cn52xxp1;
+       struct cvmx_lmcx_mem_cfg0_s cn56xx;
+       struct cvmx_lmcx_mem_cfg0_s cn56xxp1;
+       struct cvmx_lmcx_mem_cfg0_s cn58xx;
+       struct cvmx_lmcx_mem_cfg0_s cn58xxp1;
+};
+
+union cvmx_lmcx_mem_cfg1 {
+       uint64_t u64;
+       struct cvmx_lmcx_mem_cfg1_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t comp_bypass:1;
+               uint64_t trrd:3;
+               uint64_t caslat:3;
+               uint64_t tmrd:3;
+               uint64_t trfc:5;
+               uint64_t trp:4;
+               uint64_t twtr:4;
+               uint64_t trcd:4;
+               uint64_t tras:5;
+#else
+               uint64_t tras:5;
+               uint64_t trcd:4;
+               uint64_t twtr:4;
+               uint64_t trp:4;
+               uint64_t trfc:5;
+               uint64_t tmrd:3;
+               uint64_t caslat:3;
+               uint64_t trrd:3;
+               uint64_t comp_bypass:1;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_mem_cfg1_s cn30xx;
+       struct cvmx_lmcx_mem_cfg1_s cn31xx;
+       struct cvmx_lmcx_mem_cfg1_cn38xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_31_63:33;
+               uint64_t trrd:3;
+               uint64_t caslat:3;
+               uint64_t tmrd:3;
+               uint64_t trfc:5;
+               uint64_t trp:4;
+               uint64_t twtr:4;
+               uint64_t trcd:4;
+               uint64_t tras:5;
+#else
+               uint64_t tras:5;
+               uint64_t trcd:4;
+               uint64_t twtr:4;
+               uint64_t trp:4;
+               uint64_t trfc:5;
+               uint64_t tmrd:3;
+               uint64_t caslat:3;
+               uint64_t trrd:3;
+               uint64_t reserved_31_63:33;
+#endif
+       } cn38xx;
+       struct cvmx_lmcx_mem_cfg1_cn38xx cn38xxp2;
+       struct cvmx_lmcx_mem_cfg1_s cn50xx;
+       struct cvmx_lmcx_mem_cfg1_cn38xx cn52xx;
+       struct cvmx_lmcx_mem_cfg1_cn38xx cn52xxp1;
+       struct cvmx_lmcx_mem_cfg1_cn38xx cn56xx;
+       struct cvmx_lmcx_mem_cfg1_cn38xx cn56xxp1;
+       struct cvmx_lmcx_mem_cfg1_cn38xx cn58xx;
+       struct cvmx_lmcx_mem_cfg1_cn38xx cn58xxp1;
+};
+
+union cvmx_lmcx_modereg_params0 {
+       uint64_t u64;
+       struct cvmx_lmcx_modereg_params0_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_25_63:39;
+               uint64_t ppd:1;
+               uint64_t wrp:3;
+               uint64_t dllr:1;
+               uint64_t tm:1;
+               uint64_t rbt:1;
+               uint64_t cl:4;
+               uint64_t bl:2;
+               uint64_t qoff:1;
+               uint64_t tdqs:1;
+               uint64_t wlev:1;
+               uint64_t al:2;
+               uint64_t dll:1;
+               uint64_t mpr:1;
+               uint64_t mprloc:2;
+               uint64_t cwl:3;
+#else
+               uint64_t cwl:3;
+               uint64_t mprloc:2;
+               uint64_t mpr:1;
+               uint64_t dll:1;
+               uint64_t al:2;
+               uint64_t wlev:1;
+               uint64_t tdqs:1;
+               uint64_t qoff:1;
+               uint64_t bl:2;
+               uint64_t cl:4;
+               uint64_t rbt:1;
+               uint64_t tm:1;
+               uint64_t dllr:1;
+               uint64_t wrp:3;
+               uint64_t ppd:1;
+               uint64_t reserved_25_63:39;
+#endif
+       } s;
+       struct cvmx_lmcx_modereg_params0_s cn61xx;
+       struct cvmx_lmcx_modereg_params0_s cn63xx;
+       struct cvmx_lmcx_modereg_params0_s cn63xxp1;
+       struct cvmx_lmcx_modereg_params0_s cn66xx;
+       struct cvmx_lmcx_modereg_params0_s cn68xx;
+       struct cvmx_lmcx_modereg_params0_s cn68xxp1;
+       struct cvmx_lmcx_modereg_params0_s cnf71xx;
+};
+
+union cvmx_lmcx_modereg_params1 {
+       uint64_t u64;
+       struct cvmx_lmcx_modereg_params1_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_48_63:16;
+               uint64_t rtt_nom_11:3;
+               uint64_t dic_11:2;
+               uint64_t rtt_wr_11:2;
+               uint64_t srt_11:1;
+               uint64_t asr_11:1;
+               uint64_t pasr_11:3;
+               uint64_t rtt_nom_10:3;
+               uint64_t dic_10:2;
+               uint64_t rtt_wr_10:2;
+               uint64_t srt_10:1;
+               uint64_t asr_10:1;
+               uint64_t pasr_10:3;
+               uint64_t rtt_nom_01:3;
+               uint64_t dic_01:2;
+               uint64_t rtt_wr_01:2;
+               uint64_t srt_01:1;
+               uint64_t asr_01:1;
+               uint64_t pasr_01:3;
+               uint64_t rtt_nom_00:3;
+               uint64_t dic_00:2;
+               uint64_t rtt_wr_00:2;
+               uint64_t srt_00:1;
+               uint64_t asr_00:1;
+               uint64_t pasr_00:3;
+#else
+               uint64_t pasr_00:3;
+               uint64_t asr_00:1;
+               uint64_t srt_00:1;
+               uint64_t rtt_wr_00:2;
+               uint64_t dic_00:2;
+               uint64_t rtt_nom_00:3;
+               uint64_t pasr_01:3;
+               uint64_t asr_01:1;
+               uint64_t srt_01:1;
+               uint64_t rtt_wr_01:2;
+               uint64_t dic_01:2;
+               uint64_t rtt_nom_01:3;
+               uint64_t pasr_10:3;
+               uint64_t asr_10:1;
+               uint64_t srt_10:1;
+               uint64_t rtt_wr_10:2;
+               uint64_t dic_10:2;
+               uint64_t rtt_nom_10:3;
+               uint64_t pasr_11:3;
+               uint64_t asr_11:1;
+               uint64_t srt_11:1;
+               uint64_t rtt_wr_11:2;
+               uint64_t dic_11:2;
+               uint64_t rtt_nom_11:3;
+               uint64_t reserved_48_63:16;
+#endif
+       } s;
+       struct cvmx_lmcx_modereg_params1_s cn61xx;
+       struct cvmx_lmcx_modereg_params1_s cn63xx;
+       struct cvmx_lmcx_modereg_params1_s cn63xxp1;
+       struct cvmx_lmcx_modereg_params1_s cn66xx;
+       struct cvmx_lmcx_modereg_params1_s cn68xx;
+       struct cvmx_lmcx_modereg_params1_s cn68xxp1;
+       struct cvmx_lmcx_modereg_params1_s cnf71xx;
+};
+
+union cvmx_lmcx_nxm {
+       uint64_t u64;
+       struct cvmx_lmcx_nxm_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_40_63:24;
+               uint64_t mem_msb_d3_r1:4;
+               uint64_t mem_msb_d3_r0:4;
+               uint64_t mem_msb_d2_r1:4;
+               uint64_t mem_msb_d2_r0:4;
+               uint64_t mem_msb_d1_r1:4;
+               uint64_t mem_msb_d1_r0:4;
+               uint64_t mem_msb_d0_r1:4;
+               uint64_t mem_msb_d0_r0:4;
+               uint64_t cs_mask:8;
+#else
+               uint64_t cs_mask:8;
+               uint64_t mem_msb_d0_r0:4;
+               uint64_t mem_msb_d0_r1:4;
+               uint64_t mem_msb_d1_r0:4;
+               uint64_t mem_msb_d1_r1:4;
+               uint64_t mem_msb_d2_r0:4;
+               uint64_t mem_msb_d2_r1:4;
+               uint64_t mem_msb_d3_r0:4;
+               uint64_t mem_msb_d3_r1:4;
+               uint64_t reserved_40_63:24;
+#endif
+       } s;
+       struct cvmx_lmcx_nxm_cn52xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_8_63:56;
+               uint64_t cs_mask:8;
+#else
+               uint64_t cs_mask:8;
+               uint64_t reserved_8_63:56;
+#endif
+       } cn52xx;
+       struct cvmx_lmcx_nxm_cn52xx cn56xx;
+       struct cvmx_lmcx_nxm_cn52xx cn58xx;
+       struct cvmx_lmcx_nxm_s cn61xx;
+       struct cvmx_lmcx_nxm_s cn63xx;
+       struct cvmx_lmcx_nxm_s cn63xxp1;
+       struct cvmx_lmcx_nxm_s cn66xx;
+       struct cvmx_lmcx_nxm_s cn68xx;
+       struct cvmx_lmcx_nxm_s cn68xxp1;
+       struct cvmx_lmcx_nxm_s cnf71xx;
+};
+
+union cvmx_lmcx_ops_cnt {
+       uint64_t u64;
+       struct cvmx_lmcx_ops_cnt_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t opscnt:64;
+#else
+               uint64_t opscnt:64;
+#endif
+       } s;
+       struct cvmx_lmcx_ops_cnt_s cn61xx;
+       struct cvmx_lmcx_ops_cnt_s cn63xx;
+       struct cvmx_lmcx_ops_cnt_s cn63xxp1;
+       struct cvmx_lmcx_ops_cnt_s cn66xx;
+       struct cvmx_lmcx_ops_cnt_s cn68xx;
+       struct cvmx_lmcx_ops_cnt_s cn68xxp1;
+       struct cvmx_lmcx_ops_cnt_s cnf71xx;
+};
+
+union cvmx_lmcx_ops_cnt_hi {
+       uint64_t u64;
+       struct cvmx_lmcx_ops_cnt_hi_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t opscnt_hi:32;
+#else
+               uint64_t opscnt_hi:32;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_ops_cnt_hi_s cn30xx;
+       struct cvmx_lmcx_ops_cnt_hi_s cn31xx;
+       struct cvmx_lmcx_ops_cnt_hi_s cn38xx;
+       struct cvmx_lmcx_ops_cnt_hi_s cn38xxp2;
+       struct cvmx_lmcx_ops_cnt_hi_s cn50xx;
+       struct cvmx_lmcx_ops_cnt_hi_s cn52xx;
+       struct cvmx_lmcx_ops_cnt_hi_s cn52xxp1;
+       struct cvmx_lmcx_ops_cnt_hi_s cn56xx;
+       struct cvmx_lmcx_ops_cnt_hi_s cn56xxp1;
+       struct cvmx_lmcx_ops_cnt_hi_s cn58xx;
+       struct cvmx_lmcx_ops_cnt_hi_s cn58xxp1;
+};
+
+union cvmx_lmcx_ops_cnt_lo {
+       uint64_t u64;
+       struct cvmx_lmcx_ops_cnt_lo_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t opscnt_lo:32;
+#else
+               uint64_t opscnt_lo:32;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_ops_cnt_lo_s cn30xx;
+       struct cvmx_lmcx_ops_cnt_lo_s cn31xx;
+       struct cvmx_lmcx_ops_cnt_lo_s cn38xx;
+       struct cvmx_lmcx_ops_cnt_lo_s cn38xxp2;
+       struct cvmx_lmcx_ops_cnt_lo_s cn50xx;
+       struct cvmx_lmcx_ops_cnt_lo_s cn52xx;
+       struct cvmx_lmcx_ops_cnt_lo_s cn52xxp1;
+       struct cvmx_lmcx_ops_cnt_lo_s cn56xx;
+       struct cvmx_lmcx_ops_cnt_lo_s cn56xxp1;
+       struct cvmx_lmcx_ops_cnt_lo_s cn58xx;
+       struct cvmx_lmcx_ops_cnt_lo_s cn58xxp1;
+};
+
+union cvmx_lmcx_phy_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_phy_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_15_63:49;
+               uint64_t rx_always_on:1;
+               uint64_t lv_mode:1;
+               uint64_t ck_tune1:1;
+               uint64_t ck_dlyout1:4;
+               uint64_t ck_tune0:1;
+               uint64_t ck_dlyout0:4;
+               uint64_t loopback:1;
+               uint64_t loopback_pos:1;
+               uint64_t ts_stagger:1;
+#else
+               uint64_t ts_stagger:1;
+               uint64_t loopback_pos:1;
+               uint64_t loopback:1;
+               uint64_t ck_dlyout0:4;
+               uint64_t ck_tune0:1;
+               uint64_t ck_dlyout1:4;
+               uint64_t ck_tune1:1;
+               uint64_t lv_mode:1;
+               uint64_t rx_always_on:1;
+               uint64_t reserved_15_63:49;
+#endif
+       } s;
+       struct cvmx_lmcx_phy_ctl_s cn61xx;
+       struct cvmx_lmcx_phy_ctl_s cn63xx;
+       struct cvmx_lmcx_phy_ctl_cn63xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_14_63:50;
+               uint64_t lv_mode:1;
+               uint64_t ck_tune1:1;
+               uint64_t ck_dlyout1:4;
+               uint64_t ck_tune0:1;
+               uint64_t ck_dlyout0:4;
+               uint64_t loopback:1;
+               uint64_t loopback_pos:1;
+               uint64_t ts_stagger:1;
+#else
+               uint64_t ts_stagger:1;
+               uint64_t loopback_pos:1;
+               uint64_t loopback:1;
+               uint64_t ck_dlyout0:4;
+               uint64_t ck_tune0:1;
+               uint64_t ck_dlyout1:4;
+               uint64_t ck_tune1:1;
+               uint64_t lv_mode:1;
+               uint64_t reserved_14_63:50;
+#endif
+       } cn63xxp1;
+       struct cvmx_lmcx_phy_ctl_s cn66xx;
+       struct cvmx_lmcx_phy_ctl_s cn68xx;
+       struct cvmx_lmcx_phy_ctl_s cn68xxp1;
+       struct cvmx_lmcx_phy_ctl_s cnf71xx;
+};
+
+union cvmx_lmcx_pll_bwctl {
+       uint64_t u64;
+       struct cvmx_lmcx_pll_bwctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_5_63:59;
+               uint64_t bwupd:1;
+               uint64_t bwctl:4;
+#else
+               uint64_t bwctl:4;
+               uint64_t bwupd:1;
+               uint64_t reserved_5_63:59;
+#endif
+       } s;
+       struct cvmx_lmcx_pll_bwctl_s cn30xx;
+       struct cvmx_lmcx_pll_bwctl_s cn31xx;
+       struct cvmx_lmcx_pll_bwctl_s cn38xx;
+       struct cvmx_lmcx_pll_bwctl_s cn38xxp2;
+};
+
+union cvmx_lmcx_pll_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_pll_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_30_63:34;
+               uint64_t bypass:1;
+               uint64_t fasten_n:1;
+               uint64_t div_reset:1;
+               uint64_t reset_n:1;
+               uint64_t clkf:12;
+               uint64_t clkr:6;
+               uint64_t reserved_6_7:2;
+               uint64_t en16:1;
+               uint64_t en12:1;
+               uint64_t en8:1;
+               uint64_t en6:1;
+               uint64_t en4:1;
+               uint64_t en2:1;
+#else
+               uint64_t en2:1;
+               uint64_t en4:1;
+               uint64_t en6:1;
+               uint64_t en8:1;
+               uint64_t en12:1;
+               uint64_t en16:1;
+               uint64_t reserved_6_7:2;
+               uint64_t clkr:6;
+               uint64_t clkf:12;
+               uint64_t reset_n:1;
+               uint64_t div_reset:1;
+               uint64_t fasten_n:1;
+               uint64_t bypass:1;
+               uint64_t reserved_30_63:34;
+#endif
+       } s;
+       struct cvmx_lmcx_pll_ctl_cn50xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_29_63:35;
+               uint64_t fasten_n:1;
+               uint64_t div_reset:1;
+               uint64_t reset_n:1;
+               uint64_t clkf:12;
+               uint64_t clkr:6;
+               uint64_t reserved_6_7:2;
+               uint64_t en16:1;
+               uint64_t en12:1;
+               uint64_t en8:1;
+               uint64_t en6:1;
+               uint64_t en4:1;
+               uint64_t en2:1;
+#else
+               uint64_t en2:1;
+               uint64_t en4:1;
+               uint64_t en6:1;
+               uint64_t en8:1;
+               uint64_t en12:1;
+               uint64_t en16:1;
+               uint64_t reserved_6_7:2;
+               uint64_t clkr:6;
+               uint64_t clkf:12;
+               uint64_t reset_n:1;
+               uint64_t div_reset:1;
+               uint64_t fasten_n:1;
+               uint64_t reserved_29_63:35;
+#endif
+       } cn50xx;
+       struct cvmx_lmcx_pll_ctl_s cn52xx;
+       struct cvmx_lmcx_pll_ctl_s cn52xxp1;
+       struct cvmx_lmcx_pll_ctl_cn50xx cn56xx;
+       struct cvmx_lmcx_pll_ctl_cn56xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_28_63:36;
+               uint64_t div_reset:1;
+               uint64_t reset_n:1;
+               uint64_t clkf:12;
+               uint64_t clkr:6;
+               uint64_t reserved_6_7:2;
+               uint64_t en16:1;
+               uint64_t en12:1;
+               uint64_t en8:1;
+               uint64_t en6:1;
+               uint64_t en4:1;
+               uint64_t en2:1;
+#else
+               uint64_t en2:1;
+               uint64_t en4:1;
+               uint64_t en6:1;
+               uint64_t en8:1;
+               uint64_t en12:1;
+               uint64_t en16:1;
+               uint64_t reserved_6_7:2;
+               uint64_t clkr:6;
+               uint64_t clkf:12;
+               uint64_t reset_n:1;
+               uint64_t div_reset:1;
+               uint64_t reserved_28_63:36;
+#endif
+       } cn56xxp1;
+       struct cvmx_lmcx_pll_ctl_cn56xxp1 cn58xx;
+       struct cvmx_lmcx_pll_ctl_cn56xxp1 cn58xxp1;
+};
+
+union cvmx_lmcx_pll_status {
+       uint64_t u64;
+       struct cvmx_lmcx_pll_status_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ddr__nctl:5;
+               uint64_t ddr__pctl:5;
+               uint64_t reserved_2_21:20;
+               uint64_t rfslip:1;
+               uint64_t fbslip:1;
+#else
+               uint64_t fbslip:1;
+               uint64_t rfslip:1;
+               uint64_t reserved_2_21:20;
+               uint64_t ddr__pctl:5;
+               uint64_t ddr__nctl:5;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_pll_status_s cn50xx;
+       struct cvmx_lmcx_pll_status_s cn52xx;
+       struct cvmx_lmcx_pll_status_s cn52xxp1;
+       struct cvmx_lmcx_pll_status_s cn56xx;
+       struct cvmx_lmcx_pll_status_s cn56xxp1;
+       struct cvmx_lmcx_pll_status_s cn58xx;
+       struct cvmx_lmcx_pll_status_cn58xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_2_63:62;
+               uint64_t rfslip:1;
+               uint64_t fbslip:1;
+#else
+               uint64_t fbslip:1;
+               uint64_t rfslip:1;
+               uint64_t reserved_2_63:62;
+#endif
+       } cn58xxp1;
+};
+
+union cvmx_lmcx_read_level_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_read_level_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_44_63:20;
+               uint64_t rankmask:4;
+               uint64_t pattern:8;
+               uint64_t row:16;
+               uint64_t col:12;
+               uint64_t reserved_3_3:1;
+               uint64_t bnk:3;
+#else
+               uint64_t bnk:3;
+               uint64_t reserved_3_3:1;
+               uint64_t col:12;
+               uint64_t row:16;
+               uint64_t pattern:8;
+               uint64_t rankmask:4;
+               uint64_t reserved_44_63:20;
+#endif
+       } s;
+       struct cvmx_lmcx_read_level_ctl_s cn52xx;
+       struct cvmx_lmcx_read_level_ctl_s cn52xxp1;
+       struct cvmx_lmcx_read_level_ctl_s cn56xx;
+       struct cvmx_lmcx_read_level_ctl_s cn56xxp1;
+};
+
+union cvmx_lmcx_read_level_dbg {
+       uint64_t u64;
+       struct cvmx_lmcx_read_level_dbg_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t bitmask:16;
+               uint64_t reserved_4_15:12;
+               uint64_t byte:4;
+#else
+               uint64_t byte:4;
+               uint64_t reserved_4_15:12;
+               uint64_t bitmask:16;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_read_level_dbg_s cn52xx;
+       struct cvmx_lmcx_read_level_dbg_s cn52xxp1;
+       struct cvmx_lmcx_read_level_dbg_s cn56xx;
+       struct cvmx_lmcx_read_level_dbg_s cn56xxp1;
+};
+
+union cvmx_lmcx_read_level_rankx {
+       uint64_t u64;
+       struct cvmx_lmcx_read_level_rankx_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_38_63:26;
+               uint64_t status:2;
+               uint64_t byte8:4;
+               uint64_t byte7:4;
+               uint64_t byte6:4;
+               uint64_t byte5:4;
+               uint64_t byte4:4;
+               uint64_t byte3:4;
+               uint64_t byte2:4;
+               uint64_t byte1:4;
+               uint64_t byte0:4;
+#else
+               uint64_t byte0:4;
+               uint64_t byte1:4;
+               uint64_t byte2:4;
+               uint64_t byte3:4;
+               uint64_t byte4:4;
+               uint64_t byte5:4;
+               uint64_t byte6:4;
+               uint64_t byte7:4;
+               uint64_t byte8:4;
+               uint64_t status:2;
+               uint64_t reserved_38_63:26;
+#endif
+       } s;
+       struct cvmx_lmcx_read_level_rankx_s cn52xx;
+       struct cvmx_lmcx_read_level_rankx_s cn52xxp1;
+       struct cvmx_lmcx_read_level_rankx_s cn56xx;
+       struct cvmx_lmcx_read_level_rankx_s cn56xxp1;
+};
+
+union cvmx_lmcx_reset_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_reset_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_4_63:60;
+               uint64_t ddr3psv:1;
+               uint64_t ddr3psoft:1;
+               uint64_t ddr3pwarm:1;
+               uint64_t ddr3rst:1;
+#else
+               uint64_t ddr3rst:1;
+               uint64_t ddr3pwarm:1;
+               uint64_t ddr3psoft:1;
+               uint64_t ddr3psv:1;
+               uint64_t reserved_4_63:60;
+#endif
+       } s;
+       struct cvmx_lmcx_reset_ctl_s cn61xx;
+       struct cvmx_lmcx_reset_ctl_s cn63xx;
+       struct cvmx_lmcx_reset_ctl_s cn63xxp1;
+       struct cvmx_lmcx_reset_ctl_s cn66xx;
+       struct cvmx_lmcx_reset_ctl_s cn68xx;
+       struct cvmx_lmcx_reset_ctl_s cn68xxp1;
+       struct cvmx_lmcx_reset_ctl_s cnf71xx;
+};
+
+union cvmx_lmcx_rlevel_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_rlevel_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_22_63:42;
+               uint64_t delay_unload_3:1;
+               uint64_t delay_unload_2:1;
+               uint64_t delay_unload_1:1;
+               uint64_t delay_unload_0:1;
+               uint64_t bitmask:8;
+               uint64_t or_dis:1;
+               uint64_t offset_en:1;
+               uint64_t offset:4;
+               uint64_t byte:4;
+#else
+               uint64_t byte:4;
+               uint64_t offset:4;
+               uint64_t offset_en:1;
+               uint64_t or_dis:1;
+               uint64_t bitmask:8;
+               uint64_t delay_unload_0:1;
+               uint64_t delay_unload_1:1;
+               uint64_t delay_unload_2:1;
+               uint64_t delay_unload_3:1;
+               uint64_t reserved_22_63:42;
+#endif
+       } s;
+       struct cvmx_lmcx_rlevel_ctl_s cn61xx;
+       struct cvmx_lmcx_rlevel_ctl_s cn63xx;
+       struct cvmx_lmcx_rlevel_ctl_cn63xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_9_63:55;
+               uint64_t offset_en:1;
+               uint64_t offset:4;
+               uint64_t byte:4;
+#else
+               uint64_t byte:4;
+               uint64_t offset:4;
+               uint64_t offset_en:1;
+               uint64_t reserved_9_63:55;
+#endif
+       } cn63xxp1;
+       struct cvmx_lmcx_rlevel_ctl_s cn66xx;
+       struct cvmx_lmcx_rlevel_ctl_s cn68xx;
+       struct cvmx_lmcx_rlevel_ctl_s cn68xxp1;
+       struct cvmx_lmcx_rlevel_ctl_s cnf71xx;
+};
+
+union cvmx_lmcx_rlevel_dbg {
+       uint64_t u64;
+       struct cvmx_lmcx_rlevel_dbg_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t bitmask:64;
+#else
+               uint64_t bitmask:64;
+#endif
+       } s;
+       struct cvmx_lmcx_rlevel_dbg_s cn61xx;
+       struct cvmx_lmcx_rlevel_dbg_s cn63xx;
+       struct cvmx_lmcx_rlevel_dbg_s cn63xxp1;
+       struct cvmx_lmcx_rlevel_dbg_s cn66xx;
+       struct cvmx_lmcx_rlevel_dbg_s cn68xx;
+       struct cvmx_lmcx_rlevel_dbg_s cn68xxp1;
+       struct cvmx_lmcx_rlevel_dbg_s cnf71xx;
+};
+
+union cvmx_lmcx_rlevel_rankx {
+       uint64_t u64;
+       struct cvmx_lmcx_rlevel_rankx_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_56_63:8;
+               uint64_t status:2;
+               uint64_t byte8:6;
+               uint64_t byte7:6;
+               uint64_t byte6:6;
+               uint64_t byte5:6;
+               uint64_t byte4:6;
+               uint64_t byte3:6;
+               uint64_t byte2:6;
+               uint64_t byte1:6;
+               uint64_t byte0:6;
+#else
+               uint64_t byte0:6;
+               uint64_t byte1:6;
+               uint64_t byte2:6;
+               uint64_t byte3:6;
+               uint64_t byte4:6;
+               uint64_t byte5:6;
+               uint64_t byte6:6;
+               uint64_t byte7:6;
+               uint64_t byte8:6;
+               uint64_t status:2;
+               uint64_t reserved_56_63:8;
+#endif
+       } s;
+       struct cvmx_lmcx_rlevel_rankx_s cn61xx;
+       struct cvmx_lmcx_rlevel_rankx_s cn63xx;
+       struct cvmx_lmcx_rlevel_rankx_s cn63xxp1;
+       struct cvmx_lmcx_rlevel_rankx_s cn66xx;
+       struct cvmx_lmcx_rlevel_rankx_s cn68xx;
+       struct cvmx_lmcx_rlevel_rankx_s cn68xxp1;
+       struct cvmx_lmcx_rlevel_rankx_s cnf71xx;
+};
+
+union cvmx_lmcx_rodt_comp_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_rodt_comp_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_17_63:47;
+               uint64_t enable:1;
+               uint64_t reserved_12_15:4;
+               uint64_t nctl:4;
+               uint64_t reserved_5_7:3;
+               uint64_t pctl:5;
+#else
+               uint64_t pctl:5;
+               uint64_t reserved_5_7:3;
+               uint64_t nctl:4;
+               uint64_t reserved_12_15:4;
+               uint64_t enable:1;
+               uint64_t reserved_17_63:47;
+#endif
+       } s;
+       struct cvmx_lmcx_rodt_comp_ctl_s cn50xx;
+       struct cvmx_lmcx_rodt_comp_ctl_s cn52xx;
+       struct cvmx_lmcx_rodt_comp_ctl_s cn52xxp1;
+       struct cvmx_lmcx_rodt_comp_ctl_s cn56xx;
+       struct cvmx_lmcx_rodt_comp_ctl_s cn56xxp1;
+       struct cvmx_lmcx_rodt_comp_ctl_s cn58xx;
+       struct cvmx_lmcx_rodt_comp_ctl_s cn58xxp1;
+};
+
+union cvmx_lmcx_rodt_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_rodt_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t rodt_hi3:4;
+               uint64_t rodt_hi2:4;
+               uint64_t rodt_hi1:4;
+               uint64_t rodt_hi0:4;
+               uint64_t rodt_lo3:4;
+               uint64_t rodt_lo2:4;
+               uint64_t rodt_lo1:4;
+               uint64_t rodt_lo0:4;
+#else
+               uint64_t rodt_lo0:4;
+               uint64_t rodt_lo1:4;
+               uint64_t rodt_lo2:4;
+               uint64_t rodt_lo3:4;
+               uint64_t rodt_hi0:4;
+               uint64_t rodt_hi1:4;
+               uint64_t rodt_hi2:4;
+               uint64_t rodt_hi3:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_rodt_ctl_s cn30xx;
+       struct cvmx_lmcx_rodt_ctl_s cn31xx;
+       struct cvmx_lmcx_rodt_ctl_s cn38xx;
+       struct cvmx_lmcx_rodt_ctl_s cn38xxp2;
+       struct cvmx_lmcx_rodt_ctl_s cn50xx;
+       struct cvmx_lmcx_rodt_ctl_s cn52xx;
+       struct cvmx_lmcx_rodt_ctl_s cn52xxp1;
+       struct cvmx_lmcx_rodt_ctl_s cn56xx;
+       struct cvmx_lmcx_rodt_ctl_s cn56xxp1;
+       struct cvmx_lmcx_rodt_ctl_s cn58xx;
+       struct cvmx_lmcx_rodt_ctl_s cn58xxp1;
+};
+
+union cvmx_lmcx_rodt_mask {
+       uint64_t u64;
+       struct cvmx_lmcx_rodt_mask_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t rodt_d3_r1:8;
+               uint64_t rodt_d3_r0:8;
+               uint64_t rodt_d2_r1:8;
+               uint64_t rodt_d2_r0:8;
+               uint64_t rodt_d1_r1:8;
+               uint64_t rodt_d1_r0:8;
+               uint64_t rodt_d0_r1:8;
+               uint64_t rodt_d0_r0:8;
+#else
+               uint64_t rodt_d0_r0:8;
+               uint64_t rodt_d0_r1:8;
+               uint64_t rodt_d1_r0:8;
+               uint64_t rodt_d1_r1:8;
+               uint64_t rodt_d2_r0:8;
+               uint64_t rodt_d2_r1:8;
+               uint64_t rodt_d3_r0:8;
+               uint64_t rodt_d3_r1:8;
+#endif
+       } s;
+       struct cvmx_lmcx_rodt_mask_s cn61xx;
+       struct cvmx_lmcx_rodt_mask_s cn63xx;
+       struct cvmx_lmcx_rodt_mask_s cn63xxp1;
+       struct cvmx_lmcx_rodt_mask_s cn66xx;
+       struct cvmx_lmcx_rodt_mask_s cn68xx;
+       struct cvmx_lmcx_rodt_mask_s cn68xxp1;
+       struct cvmx_lmcx_rodt_mask_s cnf71xx;
+};
+
+union cvmx_lmcx_scramble_cfg0 {
+       uint64_t u64;
+       struct cvmx_lmcx_scramble_cfg0_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t key:64;
+#else
+               uint64_t key:64;
+#endif
+       } s;
+       struct cvmx_lmcx_scramble_cfg0_s cn61xx;
+       struct cvmx_lmcx_scramble_cfg0_s cn66xx;
+       struct cvmx_lmcx_scramble_cfg0_s cnf71xx;
+};
+
+union cvmx_lmcx_scramble_cfg1 {
+       uint64_t u64;
+       struct cvmx_lmcx_scramble_cfg1_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t key:64;
+#else
+               uint64_t key:64;
+#endif
+       } s;
+       struct cvmx_lmcx_scramble_cfg1_s cn61xx;
+       struct cvmx_lmcx_scramble_cfg1_s cn66xx;
+       struct cvmx_lmcx_scramble_cfg1_s cnf71xx;
+};
+
+union cvmx_lmcx_scrambled_fadr {
+       uint64_t u64;
+       struct cvmx_lmcx_scrambled_fadr_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_36_63:28;
+               uint64_t fdimm:2;
+               uint64_t fbunk:1;
+               uint64_t fbank:3;
+               uint64_t frow:16;
+               uint64_t fcol:14;
+#else
+               uint64_t fcol:14;
+               uint64_t frow:16;
+               uint64_t fbank:3;
+               uint64_t fbunk:1;
+               uint64_t fdimm:2;
+               uint64_t reserved_36_63:28;
+#endif
+       } s;
+       struct cvmx_lmcx_scrambled_fadr_s cn61xx;
+       struct cvmx_lmcx_scrambled_fadr_s cn66xx;
+       struct cvmx_lmcx_scrambled_fadr_s cnf71xx;
+};
+
+union cvmx_lmcx_slot_ctl0 {
+       uint64_t u64;
+       struct cvmx_lmcx_slot_ctl0_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_24_63:40;
+               uint64_t w2w_init:6;
+               uint64_t w2r_init:6;
+               uint64_t r2w_init:6;
+               uint64_t r2r_init:6;
+#else
+               uint64_t r2r_init:6;
+               uint64_t r2w_init:6;
+               uint64_t w2r_init:6;
+               uint64_t w2w_init:6;
+               uint64_t reserved_24_63:40;
+#endif
+       } s;
+       struct cvmx_lmcx_slot_ctl0_s cn61xx;
+       struct cvmx_lmcx_slot_ctl0_s cn63xx;
+       struct cvmx_lmcx_slot_ctl0_s cn63xxp1;
+       struct cvmx_lmcx_slot_ctl0_s cn66xx;
+       struct cvmx_lmcx_slot_ctl0_s cn68xx;
+       struct cvmx_lmcx_slot_ctl0_s cn68xxp1;
+       struct cvmx_lmcx_slot_ctl0_s cnf71xx;
+};
+
+union cvmx_lmcx_slot_ctl1 {
+       uint64_t u64;
+       struct cvmx_lmcx_slot_ctl1_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_24_63:40;
+               uint64_t w2w_xrank_init:6;
+               uint64_t w2r_xrank_init:6;
+               uint64_t r2w_xrank_init:6;
+               uint64_t r2r_xrank_init:6;
+#else
+               uint64_t r2r_xrank_init:6;
+               uint64_t r2w_xrank_init:6;
+               uint64_t w2r_xrank_init:6;
+               uint64_t w2w_xrank_init:6;
+               uint64_t reserved_24_63:40;
+#endif
+       } s;
+       struct cvmx_lmcx_slot_ctl1_s cn61xx;
+       struct cvmx_lmcx_slot_ctl1_s cn63xx;
+       struct cvmx_lmcx_slot_ctl1_s cn63xxp1;
+       struct cvmx_lmcx_slot_ctl1_s cn66xx;
+       struct cvmx_lmcx_slot_ctl1_s cn68xx;
+       struct cvmx_lmcx_slot_ctl1_s cn68xxp1;
+       struct cvmx_lmcx_slot_ctl1_s cnf71xx;
+};
+
+union cvmx_lmcx_slot_ctl2 {
+       uint64_t u64;
+       struct cvmx_lmcx_slot_ctl2_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_24_63:40;
+               uint64_t w2w_xdimm_init:6;
+               uint64_t w2r_xdimm_init:6;
+               uint64_t r2w_xdimm_init:6;
+               uint64_t r2r_xdimm_init:6;
+#else
+               uint64_t r2r_xdimm_init:6;
+               uint64_t r2w_xdimm_init:6;
+               uint64_t w2r_xdimm_init:6;
+               uint64_t w2w_xdimm_init:6;
+               uint64_t reserved_24_63:40;
+#endif
+       } s;
+       struct cvmx_lmcx_slot_ctl2_s cn61xx;
+       struct cvmx_lmcx_slot_ctl2_s cn63xx;
+       struct cvmx_lmcx_slot_ctl2_s cn63xxp1;
+       struct cvmx_lmcx_slot_ctl2_s cn66xx;
+       struct cvmx_lmcx_slot_ctl2_s cn68xx;
+       struct cvmx_lmcx_slot_ctl2_s cn68xxp1;
+       struct cvmx_lmcx_slot_ctl2_s cnf71xx;
+};
+
+union cvmx_lmcx_timing_params0 {
+       uint64_t u64;
+       struct cvmx_lmcx_timing_params0_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_47_63:17;
+               uint64_t trp_ext:1;
+               uint64_t tcksre:4;
+               uint64_t trp:4;
+               uint64_t tzqinit:4;
+               uint64_t tdllk:4;
+               uint64_t tmod:4;
+               uint64_t tmrd:4;
+               uint64_t txpr:4;
+               uint64_t tcke:4;
+               uint64_t tzqcs:4;
+               uint64_t tckeon:10;
+#else
+               uint64_t tckeon:10;
+               uint64_t tzqcs:4;
+               uint64_t tcke:4;
+               uint64_t txpr:4;
+               uint64_t tmrd:4;
+               uint64_t tmod:4;
+               uint64_t tdllk:4;
+               uint64_t tzqinit:4;
+               uint64_t trp:4;
+               uint64_t tcksre:4;
+               uint64_t trp_ext:1;
+               uint64_t reserved_47_63:17;
+#endif
+       } s;
+       struct cvmx_lmcx_timing_params0_cn61xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_47_63:17;
+               uint64_t trp_ext:1;
+               uint64_t tcksre:4;
+               uint64_t trp:4;
+               uint64_t tzqinit:4;
+               uint64_t tdllk:4;
+               uint64_t tmod:4;
+               uint64_t tmrd:4;
+               uint64_t txpr:4;
+               uint64_t tcke:4;
+               uint64_t tzqcs:4;
+               uint64_t reserved_0_9:10;
+#else
+               uint64_t reserved_0_9:10;
+               uint64_t tzqcs:4;
+               uint64_t tcke:4;
+               uint64_t txpr:4;
+               uint64_t tmrd:4;
+               uint64_t tmod:4;
+               uint64_t tdllk:4;
+               uint64_t tzqinit:4;
+               uint64_t trp:4;
+               uint64_t tcksre:4;
+               uint64_t trp_ext:1;
+               uint64_t reserved_47_63:17;
+#endif
+       } cn61xx;
+       struct cvmx_lmcx_timing_params0_cn61xx cn63xx;
+       struct cvmx_lmcx_timing_params0_cn63xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_46_63:18;
+               uint64_t tcksre:4;
+               uint64_t trp:4;
+               uint64_t tzqinit:4;
+               uint64_t tdllk:4;
+               uint64_t tmod:4;
+               uint64_t tmrd:4;
+               uint64_t txpr:4;
+               uint64_t tcke:4;
+               uint64_t tzqcs:4;
+               uint64_t tckeon:10;
+#else
+               uint64_t tckeon:10;
+               uint64_t tzqcs:4;
+               uint64_t tcke:4;
+               uint64_t txpr:4;
+               uint64_t tmrd:4;
+               uint64_t tmod:4;
+               uint64_t tdllk:4;
+               uint64_t tzqinit:4;
+               uint64_t trp:4;
+               uint64_t tcksre:4;
+               uint64_t reserved_46_63:18;
+#endif
+       } cn63xxp1;
+       struct cvmx_lmcx_timing_params0_cn61xx cn66xx;
+       struct cvmx_lmcx_timing_params0_cn61xx cn68xx;
+       struct cvmx_lmcx_timing_params0_cn61xx cn68xxp1;
+       struct cvmx_lmcx_timing_params0_cn61xx cnf71xx;
+};
+
+union cvmx_lmcx_timing_params1 {
+       uint64_t u64;
+       struct cvmx_lmcx_timing_params1_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_47_63:17;
+               uint64_t tras_ext:1;
+               uint64_t txpdll:5;
+               uint64_t tfaw:5;
+               uint64_t twldqsen:4;
+               uint64_t twlmrd:4;
+               uint64_t txp:3;
+               uint64_t trrd:3;
+               uint64_t trfc:5;
+               uint64_t twtr:4;
+               uint64_t trcd:4;
+               uint64_t tras:5;
+               uint64_t tmprr:4;
+#else
+               uint64_t tmprr:4;
+               uint64_t tras:5;
+               uint64_t trcd:4;
+               uint64_t twtr:4;
+               uint64_t trfc:5;
+               uint64_t trrd:3;
+               uint64_t txp:3;
+               uint64_t twlmrd:4;
+               uint64_t twldqsen:4;
+               uint64_t tfaw:5;
+               uint64_t txpdll:5;
+               uint64_t tras_ext:1;
+               uint64_t reserved_47_63:17;
+#endif
+       } s;
+       struct cvmx_lmcx_timing_params1_s cn61xx;
+       struct cvmx_lmcx_timing_params1_s cn63xx;
+       struct cvmx_lmcx_timing_params1_cn63xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_46_63:18;
+               uint64_t txpdll:5;
+               uint64_t tfaw:5;
+               uint64_t twldqsen:4;
+               uint64_t twlmrd:4;
+               uint64_t txp:3;
+               uint64_t trrd:3;
+               uint64_t trfc:5;
+               uint64_t twtr:4;
+               uint64_t trcd:4;
+               uint64_t tras:5;
+               uint64_t tmprr:4;
+#else
+               uint64_t tmprr:4;
+               uint64_t tras:5;
+               uint64_t trcd:4;
+               uint64_t twtr:4;
+               uint64_t trfc:5;
+               uint64_t trrd:3;
+               uint64_t txp:3;
+               uint64_t twlmrd:4;
+               uint64_t twldqsen:4;
+               uint64_t tfaw:5;
+               uint64_t txpdll:5;
+               uint64_t reserved_46_63:18;
+#endif
+       } cn63xxp1;
+       struct cvmx_lmcx_timing_params1_s cn66xx;
+       struct cvmx_lmcx_timing_params1_s cn68xx;
+       struct cvmx_lmcx_timing_params1_s cn68xxp1;
+       struct cvmx_lmcx_timing_params1_s cnf71xx;
+};
+
+union cvmx_lmcx_tro_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_tro_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_33_63:31;
+               uint64_t rclk_cnt:32;
+               uint64_t treset:1;
+#else
+               uint64_t treset:1;
+               uint64_t rclk_cnt:32;
+               uint64_t reserved_33_63:31;
+#endif
+       } s;
+       struct cvmx_lmcx_tro_ctl_s cn61xx;
+       struct cvmx_lmcx_tro_ctl_s cn63xx;
+       struct cvmx_lmcx_tro_ctl_s cn63xxp1;
+       struct cvmx_lmcx_tro_ctl_s cn66xx;
+       struct cvmx_lmcx_tro_ctl_s cn68xx;
+       struct cvmx_lmcx_tro_ctl_s cn68xxp1;
+       struct cvmx_lmcx_tro_ctl_s cnf71xx;
+};
+
+union cvmx_lmcx_tro_stat {
+       uint64_t u64;
+       struct cvmx_lmcx_tro_stat_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t ring_cnt:32;
+#else
+               uint64_t ring_cnt:32;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_tro_stat_s cn61xx;
+       struct cvmx_lmcx_tro_stat_s cn63xx;
+       struct cvmx_lmcx_tro_stat_s cn63xxp1;
+       struct cvmx_lmcx_tro_stat_s cn66xx;
+       struct cvmx_lmcx_tro_stat_s cn68xx;
+       struct cvmx_lmcx_tro_stat_s cn68xxp1;
+       struct cvmx_lmcx_tro_stat_s cnf71xx;
+};
+
+union cvmx_lmcx_wlevel_ctl {
+       uint64_t u64;
+       struct cvmx_lmcx_wlevel_ctl_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_22_63:42;
+               uint64_t rtt_nom:3;
+               uint64_t bitmask:8;
+               uint64_t or_dis:1;
+               uint64_t sset:1;
+               uint64_t lanemask:9;
+#else
+               uint64_t lanemask:9;
+               uint64_t sset:1;
+               uint64_t or_dis:1;
+               uint64_t bitmask:8;
+               uint64_t rtt_nom:3;
+               uint64_t reserved_22_63:42;
+#endif
+       } s;
+       struct cvmx_lmcx_wlevel_ctl_s cn61xx;
+       struct cvmx_lmcx_wlevel_ctl_s cn63xx;
+       struct cvmx_lmcx_wlevel_ctl_cn63xxp1 {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_10_63:54;
+               uint64_t sset:1;
+               uint64_t lanemask:9;
+#else
+               uint64_t lanemask:9;
+               uint64_t sset:1;
+               uint64_t reserved_10_63:54;
+#endif
+       } cn63xxp1;
+       struct cvmx_lmcx_wlevel_ctl_s cn66xx;
+       struct cvmx_lmcx_wlevel_ctl_s cn68xx;
+       struct cvmx_lmcx_wlevel_ctl_s cn68xxp1;
+       struct cvmx_lmcx_wlevel_ctl_s cnf71xx;
+};
+
+union cvmx_lmcx_wlevel_dbg {
+       uint64_t u64;
+       struct cvmx_lmcx_wlevel_dbg_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_12_63:52;
+               uint64_t bitmask:8;
+               uint64_t byte:4;
+#else
+               uint64_t byte:4;
+               uint64_t bitmask:8;
+               uint64_t reserved_12_63:52;
+#endif
+       } s;
+       struct cvmx_lmcx_wlevel_dbg_s cn61xx;
+       struct cvmx_lmcx_wlevel_dbg_s cn63xx;
+       struct cvmx_lmcx_wlevel_dbg_s cn63xxp1;
+       struct cvmx_lmcx_wlevel_dbg_s cn66xx;
+       struct cvmx_lmcx_wlevel_dbg_s cn68xx;
+       struct cvmx_lmcx_wlevel_dbg_s cn68xxp1;
+       struct cvmx_lmcx_wlevel_dbg_s cnf71xx;
+};
+
+union cvmx_lmcx_wlevel_rankx {
+       uint64_t u64;
+       struct cvmx_lmcx_wlevel_rankx_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_47_63:17;
+               uint64_t status:2;
+               uint64_t byte8:5;
+               uint64_t byte7:5;
+               uint64_t byte6:5;
+               uint64_t byte5:5;
+               uint64_t byte4:5;
+               uint64_t byte3:5;
+               uint64_t byte2:5;
+               uint64_t byte1:5;
+               uint64_t byte0:5;
+#else
+               uint64_t byte0:5;
+               uint64_t byte1:5;
+               uint64_t byte2:5;
+               uint64_t byte3:5;
+               uint64_t byte4:5;
+               uint64_t byte5:5;
+               uint64_t byte6:5;
+               uint64_t byte7:5;
+               uint64_t byte8:5;
+               uint64_t status:2;
+               uint64_t reserved_47_63:17;
+#endif
+       } s;
+       struct cvmx_lmcx_wlevel_rankx_s cn61xx;
+       struct cvmx_lmcx_wlevel_rankx_s cn63xx;
+       struct cvmx_lmcx_wlevel_rankx_s cn63xxp1;
+       struct cvmx_lmcx_wlevel_rankx_s cn66xx;
+       struct cvmx_lmcx_wlevel_rankx_s cn68xx;
+       struct cvmx_lmcx_wlevel_rankx_s cn68xxp1;
+       struct cvmx_lmcx_wlevel_rankx_s cnf71xx;
+};
+
+union cvmx_lmcx_wodt_ctl0 {
+       uint64_t u64;
+       struct cvmx_lmcx_wodt_ctl0_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_0_63:64;
+#else
+               uint64_t reserved_0_63:64;
+#endif
+       } s;
+       struct cvmx_lmcx_wodt_ctl0_cn30xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t wodt_d1_r1:8;
+               uint64_t wodt_d1_r0:8;
+               uint64_t wodt_d0_r1:8;
+               uint64_t wodt_d0_r0:8;
+#else
+               uint64_t wodt_d0_r0:8;
+               uint64_t wodt_d0_r1:8;
+               uint64_t wodt_d1_r0:8;
+               uint64_t wodt_d1_r1:8;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn30xx;
+       struct cvmx_lmcx_wodt_ctl0_cn30xx cn31xx;
+       struct cvmx_lmcx_wodt_ctl0_cn38xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t wodt_hi3:4;
+               uint64_t wodt_hi2:4;
+               uint64_t wodt_hi1:4;
+               uint64_t wodt_hi0:4;
+               uint64_t wodt_lo3:4;
+               uint64_t wodt_lo2:4;
+               uint64_t wodt_lo1:4;
+               uint64_t wodt_lo0:4;
+#else
+               uint64_t wodt_lo0:4;
+               uint64_t wodt_lo1:4;
+               uint64_t wodt_lo2:4;
+               uint64_t wodt_lo3:4;
+               uint64_t wodt_hi0:4;
+               uint64_t wodt_hi1:4;
+               uint64_t wodt_hi2:4;
+               uint64_t wodt_hi3:4;
+               uint64_t reserved_32_63:32;
+#endif
+       } cn38xx;
+       struct cvmx_lmcx_wodt_ctl0_cn38xx cn38xxp2;
+       struct cvmx_lmcx_wodt_ctl0_cn38xx cn50xx;
+       struct cvmx_lmcx_wodt_ctl0_cn30xx cn52xx;
+       struct cvmx_lmcx_wodt_ctl0_cn30xx cn52xxp1;
+       struct cvmx_lmcx_wodt_ctl0_cn30xx cn56xx;
+       struct cvmx_lmcx_wodt_ctl0_cn30xx cn56xxp1;
+       struct cvmx_lmcx_wodt_ctl0_cn38xx cn58xx;
+       struct cvmx_lmcx_wodt_ctl0_cn38xx cn58xxp1;
+};
+
+union cvmx_lmcx_wodt_ctl1 {
+       uint64_t u64;
+       struct cvmx_lmcx_wodt_ctl1_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t reserved_32_63:32;
+               uint64_t wodt_d3_r1:8;
+               uint64_t wodt_d3_r0:8;
+               uint64_t wodt_d2_r1:8;
+               uint64_t wodt_d2_r0:8;
+#else
+               uint64_t wodt_d2_r0:8;
+               uint64_t wodt_d2_r1:8;
+               uint64_t wodt_d3_r0:8;
+               uint64_t wodt_d3_r1:8;
+               uint64_t reserved_32_63:32;
+#endif
+       } s;
+       struct cvmx_lmcx_wodt_ctl1_s cn30xx;
+       struct cvmx_lmcx_wodt_ctl1_s cn31xx;
+       struct cvmx_lmcx_wodt_ctl1_s cn52xx;
+       struct cvmx_lmcx_wodt_ctl1_s cn52xxp1;
+       struct cvmx_lmcx_wodt_ctl1_s cn56xx;
+       struct cvmx_lmcx_wodt_ctl1_s cn56xxp1;
+};
+
+union cvmx_lmcx_wodt_mask {
+       uint64_t u64;
+       struct cvmx_lmcx_wodt_mask_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+               uint64_t wodt_d3_r1:8;
+               uint64_t wodt_d3_r0:8;
+               uint64_t wodt_d2_r1:8;
+               uint64_t wodt_d2_r0:8;
+               uint64_t wodt_d1_r1:8;
+               uint64_t wodt_d1_r0:8;
+               uint64_t wodt_d0_r1:8;
+               uint64_t wodt_d0_r0:8;
+#else
+               uint64_t wodt_d0_r0:8;
+               uint64_t wodt_d0_r1:8;
+               uint64_t wodt_d1_r0:8;
+               uint64_t wodt_d1_r1:8;
+               uint64_t wodt_d2_r0:8;
+               uint64_t wodt_d2_r1:8;
+               uint64_t wodt_d3_r0:8;
+               uint64_t wodt_d3_r1:8;
+#endif
+       } s;
+       struct cvmx_lmcx_wodt_mask_s cn61xx;
+       struct cvmx_lmcx_wodt_mask_s cn63xx;
+       struct cvmx_lmcx_wodt_mask_s cn63xxp1;
+       struct cvmx_lmcx_wodt_mask_s cn66xx;
+       struct cvmx_lmcx_wodt_mask_s cn68xx;
+       struct cvmx_lmcx_wodt_mask_s cn68xxp1;
+       struct cvmx_lmcx_wodt_mask_s cnf71xx;
+};
+
+#endif