uboot/arch/mips/mach-octeon/include/mach/cvmx-pemx-defs.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Copyright (C) 2020 Marvell International Ltd.
   4 *
   5 * Configuration and status register (CSR) type definitions for
   6 * Octeon pemx.
   7 */
   8
   9#ifndef __CVMX_PEMX_DEFS_H__
  10#define __CVMX_PEMX_DEFS_H__
  11
  12static inline u64 CVMX_PEMX_BAR1_INDEXX(unsigned long offset, unsigned long block_id)
  13{
  14        switch (cvmx_get_octeon_family()) {
  15        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
  16                return 0x00011800C0000100ull + ((offset) + (block_id) * 0x200000ull) * 8;
  17        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
  18                return 0x00011800C0000100ull + ((offset) + (block_id) * 0x200000ull) * 8;
  19        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
  20                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
  21                        return 0x00011800C0000100ull + ((offset) + (block_id) * 0x200000ull) * 8;
  22                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
  23                        return 0x00011800C0000100ull + ((offset) + (block_id) * 0x200000ull) * 8;
  24        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
  25                return 0x00011800C0000100ull + ((offset) + (block_id) * 0x200000ull) * 8;
  26        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
  27        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
  28        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
  29        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
  30        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
  31                return 0x00011800C00000A8ull + ((offset) + (block_id) * 0x200000ull) * 8;
  32        }
  33        return 0x00011800C0000100ull + ((offset) + (block_id) * 0x200000ull) * 8;
  34}
  35
  36static inline u64 CVMX_PEMX_BAR2_MASK(unsigned long offset)
  37{
  38        switch (cvmx_get_octeon_family()) {
  39        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
  40                return 0x00011800C00000B0ull + (offset) * 0x1000000ull;
  41        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
  42                return 0x00011800C00000B0ull + (offset) * 0x1000000ull;
  43        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
  44                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
  45                        return 0x00011800C00000B0ull + (offset) * 0x1000000ull;
  46                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
  47                        return 0x00011800C00000B0ull + (offset) * 0x1000000ull;
  48        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
  49                return 0x00011800C10000B0ull + (offset) * 0x1000000ull - 16777216 * 1;
  50        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
  51        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
  52        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
  53        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
  54                return 0x00011800C0000130ull + (offset) * 0x1000000ull;
  55        }
  56        return 0x00011800C00000B0ull + (offset) * 0x1000000ull;
  57}
  58
  59static inline u64 CVMX_PEMX_BAR_CTL(unsigned long offset)
  60{
  61        switch (cvmx_get_octeon_family()) {
  62        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
  63                return 0x00011800C00000A8ull + (offset) * 0x1000000ull;
  64        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
  65                return 0x00011800C00000A8ull + (offset) * 0x1000000ull;
  66        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
  67                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
  68                        return 0x00011800C00000A8ull + (offset) * 0x1000000ull;
  69                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
  70                        return 0x00011800C00000A8ull + (offset) * 0x1000000ull;
  71        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
  72                return 0x00011800C10000A8ull + (offset) * 0x1000000ull - 16777216 * 1;
  73        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
  74        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
  75        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
  76        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
  77        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
  78                return 0x00011800C0000128ull + (offset) * 0x1000000ull;
  79        }
  80        return 0x00011800C00000A8ull + (offset) * 0x1000000ull;
  81}
  82
  83static inline u64 CVMX_PEMX_BIST_STATUS(unsigned long offset)
  84{
  85        switch (cvmx_get_octeon_family()) {
  86        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
  87        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
  88        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
  89        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
  90        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
  91                return 0x00011800C0000018ull + (offset) * 0x1000000ull;
  92        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
  93                return 0x00011800C0000018ull + (offset) * 0x1000000ull;
  94        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
  95                return 0x00011800C0000440ull + (offset) * 0x1000000ull;
  96        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
  97                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
  98                        return 0x00011800C0000440ull + (offset) * 0x1000000ull;
  99                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
 100                        return 0x00011800C0000440ull + (offset) * 0x1000000ull;
 101        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
 102                return 0x00011800C1000440ull + (offset) * 0x1000000ull - 16777216 * 1;
 103        }
 104        return 0x00011800C0000440ull + (offset) * 0x1000000ull;
 105}
 106
 107static inline u64 CVMX_PEMX_BIST_STATUS2(unsigned long offset)
 108{
 109        switch (cvmx_get_octeon_family()) {
 110        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
 111        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
 112        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
 113        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
 114        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
 115                return 0x00011800C0000420ull + (offset) * 0x1000000ull;
 116        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
 117                return 0x00011800C0000440ull + (offset) * 0x1000000ull;
 118        }
 119        return 0x00011800C0000420ull + (offset) * 0x1000000ull;
 120}
 121
 122#define CVMX_PEMX_CFG(offset)           (0x00011800C0000410ull + ((offset) & 3) * 0x1000000ull)
 123#define CVMX_PEMX_CFG_RD(offset)        (0x00011800C0000030ull + ((offset) & 3) * 0x1000000ull)
 124#define CVMX_PEMX_CFG_WR(offset)        (0x00011800C0000028ull + ((offset) & 3) * 0x1000000ull)
 125#define CVMX_PEMX_CLK_EN(offset)        (0x00011800C0000400ull + ((offset) & 3) * 0x1000000ull)
 126#define CVMX_PEMX_CPL_LUT_VALID(offset) (0x00011800C0000098ull + ((offset) & 3) * 0x1000000ull)
 127#define CVMX_PEMX_CTL_STATUS(offset)    (0x00011800C0000000ull + ((offset) & 3) * 0x1000000ull)
 128#define CVMX_PEMX_CTL_STATUS2(offset)   (0x00011800C0000008ull + ((offset) & 3) * 0x1000000ull)
 129static inline u64 CVMX_PEMX_DBG_INFO(unsigned long offset)
 130{
 131        switch (cvmx_get_octeon_family()) {
 132        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
 133                return 0x00011800C00000D0ull + (offset) * 0x1000000ull;
 134        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
 135                return 0x00011800C00000D0ull + (offset) * 0x1000000ull;
 136        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
 137                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
 138                        return 0x00011800C00000D0ull + (offset) * 0x1000000ull;
 139                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
 140                        return 0x00011800C00000D0ull + (offset) * 0x1000000ull;
 141        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
 142                return 0x00011800C10000D0ull + (offset) * 0x1000000ull - 16777216 * 1;
 143        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
 144        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
 145        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
 146        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
 147        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
 148                return 0x00011800C0000008ull + (offset) * 0x1000000ull;
 149        }
 150        return 0x00011800C00000D0ull + (offset) * 0x1000000ull;
 151}
 152
 153#define CVMX_PEMX_DBG_INFO_EN(offset) (0x00011800C00000A0ull + ((offset) & 3) * 0x1000000ull)
 154#define CVMX_PEMX_DIAG_STATUS(offset) (0x00011800C0000020ull + ((offset) & 3) * 0x1000000ull)
 155static inline u64 CVMX_PEMX_ECC_ENA(unsigned long offset)
 156{
 157        switch (cvmx_get_octeon_family()) {
 158        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
 159                return 0x00011800C0000448ull + (offset) * 0x1000000ull;
 160        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
 161                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
 162                        return 0x00011800C0000448ull + (offset) * 0x1000000ull;
 163                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
 164                        return 0x00011800C0000448ull + (offset) * 0x1000000ull;
 165        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
 166                return 0x00011800C1000448ull + (offset) * 0x1000000ull - 16777216 * 1;
 167        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
 168                return 0x00011800C00000C0ull + (offset) * 0x1000000ull;
 169        }
 170        return 0x00011800C0000448ull + (offset) * 0x1000000ull;
 171}
 172
 173static inline u64 CVMX_PEMX_ECC_SYND_CTRL(unsigned long offset)
 174{
 175        switch (cvmx_get_octeon_family()) {
 176        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
 177                return 0x00011800C0000450ull + (offset) * 0x1000000ull;
 178        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
 179                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
 180                        return 0x00011800C0000450ull + (offset) * 0x1000000ull;
 181                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
 182                        return 0x00011800C0000450ull + (offset) * 0x1000000ull;
 183        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
 184                return 0x00011800C1000450ull + (offset) * 0x1000000ull - 16777216 * 1;
 185        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
 186                return 0x00011800C00000C8ull + (offset) * 0x1000000ull;
 187        }
 188        return 0x00011800C0000450ull + (offset) * 0x1000000ull;
 189}
 190
 191#define CVMX_PEMX_ECO(offset)                (0x00011800C0000010ull + ((offset) & 3) * 0x1000000ull)
 192#define CVMX_PEMX_FLR_GLBLCNT_CTL(offset)    (0x00011800C0000210ull + ((offset) & 3) * 0x1000000ull)
 193#define CVMX_PEMX_FLR_PF0_VF_STOPREQ(offset) (0x00011800C0000220ull + ((offset) & 3) * 0x1000000ull)
 194#define CVMX_PEMX_FLR_PF_STOPREQ(offset)     (0x00011800C0000218ull + ((offset) & 3) * 0x1000000ull)
 195#define CVMX_PEMX_FLR_STOPREQ_CTL(offset)    (0x00011800C0000238ull + ((offset) & 3) * 0x1000000ull)
 196#define CVMX_PEMX_FLR_ZOMBIE_CTL(offset)     (0x00011800C0000230ull + ((offset) & 3) * 0x1000000ull)
 197static inline u64 CVMX_PEMX_INB_READ_CREDITS(unsigned long offset)
 198{
 199        switch (cvmx_get_octeon_family()) {
 200        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
 201                return 0x00011800C00000B8ull + (offset) * 0x1000000ull;
 202        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
 203                return 0x00011800C00000B8ull + (offset) * 0x1000000ull;
 204        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
 205                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
 206                        return 0x00011800C00000B8ull + (offset) * 0x1000000ull;
 207                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
 208                        return 0x00011800C00000B8ull + (offset) * 0x1000000ull;
 209        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
 210                return 0x00011800C10000B8ull + (offset) * 0x1000000ull - 16777216 * 1;
 211        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
 212        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
 213        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
 214        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
 215                return 0x00011800C0000138ull + (offset) * 0x1000000ull;
 216        }
 217        return 0x00011800C00000B8ull + (offset) * 0x1000000ull;
 218}
 219
 220static inline u64 CVMX_PEMX_INT_ENB(unsigned long offset)
 221{
 222        switch (cvmx_get_octeon_family()) {
 223        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
 224        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
 225        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
 226        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
 227        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
 228                return 0x00011800C0000410ull + (offset) * 0x1000000ull;
 229        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
 230                return 0x00011800C0000430ull + (offset) * 0x1000000ull;
 231        }
 232        return 0x00011800C0000410ull + (offset) * 0x1000000ull;
 233}
 234
 235static inline u64 CVMX_PEMX_INT_ENB_INT(unsigned long offset)
 236{
 237        switch (cvmx_get_octeon_family()) {
 238        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
 239        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
 240        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
 241        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
 242        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
 243                return 0x00011800C0000418ull + (offset) * 0x1000000ull;
 244        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
 245                return 0x00011800C0000438ull + (offset) * 0x1000000ull;
 246        }
 247        return 0x00011800C0000418ull + (offset) * 0x1000000ull;
 248}
 249
 250static inline u64 CVMX_PEMX_INT_SUM(unsigned long offset)
 251{
 252        switch (cvmx_get_octeon_family()) {
 253        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
 254                return 0x00011800C0000428ull + (offset) * 0x1000000ull;
 255        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
 256                return 0x00011800C0000428ull + (offset) * 0x1000000ull;
 257        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
 258                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
 259                        return 0x00011800C0000428ull + (offset) * 0x1000000ull;
 260                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
 261                        return 0x00011800C0000428ull + (offset) * 0x1000000ull;
 262        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
 263                return 0x00011800C1000428ull + (offset) * 0x1000000ull - 16777216 * 1;
 264        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
 265        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
 266        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
 267        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
 268        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
 269                return 0x00011800C0000408ull + (offset) * 0x1000000ull;
 270        }
 271        return 0x00011800C0000428ull + (offset) * 0x1000000ull;
 272}
 273
 274#define CVMX_PEMX_ON(offset)             (0x00011800C0000420ull + ((offset) & 3) * 0x1000000ull)
 275#define CVMX_PEMX_P2N_BAR0_START(offset) (0x00011800C0000080ull + ((offset) & 3) * 0x1000000ull)
 276#define CVMX_PEMX_P2N_BAR1_START(offset) (0x00011800C0000088ull + ((offset) & 3) * 0x1000000ull)
 277#define CVMX_PEMX_P2N_BAR2_START(offset) (0x00011800C0000090ull + ((offset) & 3) * 0x1000000ull)
 278#define CVMX_PEMX_P2P_BARX_END(offset, block_id)                                                   \
 279        (0x00011800C0000048ull + (((offset) & 3) + ((block_id) & 3) * 0x100000ull) * 16)
 280#define CVMX_PEMX_P2P_BARX_START(offset, block_id)                                                 \
 281        (0x00011800C0000040ull + (((offset) & 3) + ((block_id) & 3) * 0x100000ull) * 16)
 282#define CVMX_PEMX_QLM(offset)         (0x00011800C0000418ull + ((offset) & 3) * 0x1000000ull)
 283#define CVMX_PEMX_SPI_CTL(offset)     (0x00011800C0000180ull + ((offset) & 3) * 0x1000000ull)
 284#define CVMX_PEMX_SPI_DATA(offset)    (0x00011800C0000188ull + ((offset) & 3) * 0x1000000ull)
 285#define CVMX_PEMX_STRAP(offset)       (0x00011800C0000408ull + ((offset) & 3) * 0x1000000ull)
 286#define CVMX_PEMX_TLP_CREDITS(offset) (0x00011800C0000038ull + ((offset) & 3) * 0x1000000ull)
 287
 288/**
 289 * cvmx_pem#_bar1_index#
 290 *
 291 * This register contains the address index and control bits for access to memory ranges of BAR1.
 292 * The index is built from supplied address [25:22].
 293 */
 294union cvmx_pemx_bar1_indexx {
 295        u64 u64;
 296        struct cvmx_pemx_bar1_indexx_s {
 297                u64 reserved_24_63 : 40;
 298                u64 addr_idx : 20;
 299                u64 ca : 1;
 300                u64 end_swp : 2;
 301                u64 addr_v : 1;
 302        } s;
 303        struct cvmx_pemx_bar1_indexx_cn61xx {
 304                u64 reserved_20_63 : 44;
 305                u64 addr_idx : 16;
 306                u64 ca : 1;
 307                u64 end_swp : 2;
 308                u64 addr_v : 1;
 309        } cn61xx;
 310        struct cvmx_pemx_bar1_indexx_cn61xx cn63xx;
 311        struct cvmx_pemx_bar1_indexx_cn61xx cn63xxp1;
 312        struct cvmx_pemx_bar1_indexx_cn61xx cn66xx;
 313        struct cvmx_pemx_bar1_indexx_cn61xx cn68xx;
 314        struct cvmx_pemx_bar1_indexx_cn61xx cn68xxp1;
 315        struct cvmx_pemx_bar1_indexx_s cn70xx;
 316        struct cvmx_pemx_bar1_indexx_s cn70xxp1;
 317        struct cvmx_pemx_bar1_indexx_s cn73xx;
 318        struct cvmx_pemx_bar1_indexx_s cn78xx;
 319        struct cvmx_pemx_bar1_indexx_s cn78xxp1;
 320        struct cvmx_pemx_bar1_indexx_cn61xx cnf71xx;
 321        struct cvmx_pemx_bar1_indexx_s cnf75xx;
 322};
 323
 324typedef union cvmx_pemx_bar1_indexx cvmx_pemx_bar1_indexx_t;
 325
 326/**
 327 * cvmx_pem#_bar2_mask
 328 *
 329 * This register contains the mask pattern that is ANDed with the address from the PCIe core for
 330 * BAR2 hits. This allows the effective size of RC BAR2 to be shrunk. Must not be changed
 331 * from its reset value in EP mode.
 332 */
 333union cvmx_pemx_bar2_mask {
 334        u64 u64;
 335        struct cvmx_pemx_bar2_mask_s {
 336                u64 reserved_45_63 : 19;
 337                u64 mask : 42;
 338                u64 reserved_0_2 : 3;
 339        } s;
 340        struct cvmx_pemx_bar2_mask_cn61xx {
 341                u64 reserved_38_63 : 26;
 342                u64 mask : 35;
 343                u64 reserved_0_2 : 3;
 344        } cn61xx;
 345        struct cvmx_pemx_bar2_mask_cn61xx cn66xx;
 346        struct cvmx_pemx_bar2_mask_cn61xx cn68xx;
 347        struct cvmx_pemx_bar2_mask_cn61xx cn68xxp1;
 348        struct cvmx_pemx_bar2_mask_cn61xx cn70xx;
 349        struct cvmx_pemx_bar2_mask_cn61xx cn70xxp1;
 350        struct cvmx_pemx_bar2_mask_cn73xx {
 351                u64 reserved_42_63 : 22;
 352                u64 mask : 39;
 353                u64 reserved_0_2 : 3;
 354        } cn73xx;
 355        struct cvmx_pemx_bar2_mask_s cn78xx;
 356        struct cvmx_pemx_bar2_mask_cn73xx cn78xxp1;
 357        struct cvmx_pemx_bar2_mask_cn61xx cnf71xx;
 358        struct cvmx_pemx_bar2_mask_cn73xx cnf75xx;
 359};
 360
 361typedef union cvmx_pemx_bar2_mask cvmx_pemx_bar2_mask_t;
 362
 363/**
 364 * cvmx_pem#_bar_ctl
 365 *
 366 * This register contains control for BAR accesses.
 367 *
 368 */
 369union cvmx_pemx_bar_ctl {
 370        u64 u64;
 371        struct cvmx_pemx_bar_ctl_s {
 372                u64 reserved_7_63 : 57;
 373                u64 bar1_siz : 3;
 374                u64 bar2_enb : 1;
 375                u64 bar2_esx : 2;
 376                u64 bar2_cax : 1;
 377        } s;
 378        struct cvmx_pemx_bar_ctl_s cn61xx;
 379        struct cvmx_pemx_bar_ctl_s cn63xx;
 380        struct cvmx_pemx_bar_ctl_s cn63xxp1;
 381        struct cvmx_pemx_bar_ctl_s cn66xx;
 382        struct cvmx_pemx_bar_ctl_s cn68xx;
 383        struct cvmx_pemx_bar_ctl_s cn68xxp1;
 384        struct cvmx_pemx_bar_ctl_s cn70xx;
 385        struct cvmx_pemx_bar_ctl_s cn70xxp1;
 386        struct cvmx_pemx_bar_ctl_s cn73xx;
 387        struct cvmx_pemx_bar_ctl_s cn78xx;
 388        struct cvmx_pemx_bar_ctl_s cn78xxp1;
 389        struct cvmx_pemx_bar_ctl_s cnf71xx;
 390        struct cvmx_pemx_bar_ctl_s cnf75xx;
 391};
 392
 393typedef union cvmx_pemx_bar_ctl cvmx_pemx_bar_ctl_t;
 394
 395/**
 396 * cvmx_pem#_bist_status
 397 *
 398 * This register contains results from BIST runs of PEM's memories.
 399 *
 400 */
 401union cvmx_pemx_bist_status {
 402        u64 u64;
 403        struct cvmx_pemx_bist_status_s {
 404                u64 reserved_16_63 : 48;
 405                u64 retryc : 1;
 406                u64 reserved_14_14 : 1;
 407                u64 rqhdrb0 : 1;
 408                u64 rqhdrb1 : 1;
 409                u64 rqdatab0 : 1;
 410                u64 rqdatab1 : 1;
 411                u64 tlpn_d0 : 1;
 412                u64 tlpn_d1 : 1;
 413                u64 reserved_0_7 : 8;
 414        } s;
 415        struct cvmx_pemx_bist_status_cn61xx {
 416                u64 reserved_8_63 : 56;
 417                u64 retry : 1;
 418                u64 rqdata0 : 1;
 419                u64 rqdata1 : 1;
 420                u64 rqdata2 : 1;
 421                u64 rqdata3 : 1;
 422                u64 rqhdr1 : 1;
 423                u64 rqhdr0 : 1;
 424                u64 sot : 1;
 425        } cn61xx;
 426        struct cvmx_pemx_bist_status_cn61xx cn63xx;
 427        struct cvmx_pemx_bist_status_cn61xx cn63xxp1;
 428        struct cvmx_pemx_bist_status_cn61xx cn66xx;
 429        struct cvmx_pemx_bist_status_cn61xx cn68xx;
 430        struct cvmx_pemx_bist_status_cn61xx cn68xxp1;
 431        struct cvmx_pemx_bist_status_cn70xx {
 432                u64 reserved_6_63 : 58;
 433                u64 retry : 1;
 434                u64 sot : 1;
 435                u64 rqhdr0 : 1;
 436                u64 rqhdr1 : 1;
 437                u64 rqdata0 : 1;
 438                u64 rqdata1 : 1;
 439        } cn70xx;
 440        struct cvmx_pemx_bist_status_cn70xx cn70xxp1;
 441        struct cvmx_pemx_bist_status_cn73xx {
 442                u64 reserved_16_63 : 48;
 443                u64 retryc : 1;
 444                u64 sot : 1;
 445                u64 rqhdrb0 : 1;
 446                u64 rqhdrb1 : 1;
 447                u64 rqdatab0 : 1;
 448                u64 rqdatab1 : 1;
 449                u64 tlpn_d0 : 1;
 450                u64 tlpn_d1 : 1;
 451                u64 tlpn_ctl : 1;
 452                u64 tlpp_d0 : 1;
 453                u64 tlpp_d1 : 1;
 454                u64 tlpp_ctl : 1;
 455                u64 tlpc_d0 : 1;
 456                u64 tlpc_d1 : 1;
 457                u64 tlpc_ctl : 1;
 458                u64 m2s : 1;
 459        } cn73xx;
 460        struct cvmx_pemx_bist_status_cn73xx cn78xx;
 461        struct cvmx_pemx_bist_status_cn73xx cn78xxp1;
 462        struct cvmx_pemx_bist_status_cn61xx cnf71xx;
 463        struct cvmx_pemx_bist_status_cn73xx cnf75xx;
 464};
 465
 466typedef union cvmx_pemx_bist_status cvmx_pemx_bist_status_t;
 467
 468/**
 469 * cvmx_pem#_bist_status2
 470 *
 471 * "PEM#_BIST_STATUS2 = PEM BIST Status Register
 472 * Results from BIST runs of PEM's memories."
 473 */
 474union cvmx_pemx_bist_status2 {
 475        u64 u64;
 476        struct cvmx_pemx_bist_status2_s {
 477                u64 reserved_13_63 : 51;
 478                u64 tlpn_d : 1;
 479                u64 tlpn_ctl : 1;
 480                u64 tlpp_d : 1;
 481                u64 reserved_0_9 : 10;
 482        } s;
 483        struct cvmx_pemx_bist_status2_cn61xx {
 484                u64 reserved_10_63 : 54;
 485                u64 e2p_cpl : 1;
 486                u64 e2p_n : 1;
 487                u64 e2p_p : 1;
 488                u64 peai_p2e : 1;
 489                u64 pef_tpf1 : 1;
 490                u64 pef_tpf0 : 1;
 491                u64 pef_tnf : 1;
 492                u64 pef_tcf1 : 1;
 493                u64 pef_tc0 : 1;
 494                u64 ppf : 1;
 495        } cn61xx;
 496        struct cvmx_pemx_bist_status2_cn61xx cn63xx;
 497        struct cvmx_pemx_bist_status2_cn61xx cn63xxp1;
 498        struct cvmx_pemx_bist_status2_cn61xx cn66xx;
 499        struct cvmx_pemx_bist_status2_cn61xx cn68xx;
 500        struct cvmx_pemx_bist_status2_cn61xx cn68xxp1;
 501        struct cvmx_pemx_bist_status2_cn70xx {
 502                u64 reserved_14_63 : 50;
 503                u64 peai_p2e : 1;
 504                u64 tlpn_d : 1;
 505                u64 tlpn_ctl : 1;
 506                u64 tlpp_d : 1;
 507                u64 tlpp_ctl : 1;
 508                u64 tlpc_d : 1;
 509                u64 tlpc_ctl : 1;
 510                u64 tlpan_d : 1;
 511                u64 tlpan_ctl : 1;
 512                u64 tlpap_d : 1;
 513                u64 tlpap_ctl : 1;
 514                u64 tlpac_d : 1;
 515                u64 tlpac_ctl : 1;
 516                u64 m2s : 1;
 517        } cn70xx;
 518        struct cvmx_pemx_bist_status2_cn70xx cn70xxp1;
 519        struct cvmx_pemx_bist_status2_cn61xx cnf71xx;
 520};
 521
 522typedef union cvmx_pemx_bist_status2 cvmx_pemx_bist_status2_t;
 523
 524/**
 525 * cvmx_pem#_cfg
 526 *
 527 * Configuration of the PCIe Application.
 528 *
 529 */
 530union cvmx_pemx_cfg {
 531        u64 u64;
 532        struct cvmx_pemx_cfg_s {
 533                u64 reserved_5_63 : 59;
 534                u64 laneswap : 1;
 535                u64 reserved_2_3 : 2;
 536                u64 md : 2;
 537        } s;
 538        struct cvmx_pemx_cfg_cn70xx {
 539                u64 reserved_5_63 : 59;
 540                u64 laneswap : 1;
 541                u64 hostmd : 1;
 542                u64 md : 3;
 543        } cn70xx;
 544        struct cvmx_pemx_cfg_cn70xx cn70xxp1;
 545        struct cvmx_pemx_cfg_cn73xx {
 546                u64 reserved_5_63 : 59;
 547                u64 laneswap : 1;
 548                u64 lanes8 : 1;
 549                u64 hostmd : 1;
 550                u64 md : 2;
 551        } cn73xx;
 552        struct cvmx_pemx_cfg_cn73xx cn78xx;
 553        struct cvmx_pemx_cfg_cn73xx cn78xxp1;
 554        struct cvmx_pemx_cfg_cn73xx cnf75xx;
 555};
 556
 557typedef union cvmx_pemx_cfg cvmx_pemx_cfg_t;
 558
 559/**
 560 * cvmx_pem#_cfg_rd
 561 *
 562 * This register allows read access to the configuration in the PCIe core.
 563 *
 564 */
 565union cvmx_pemx_cfg_rd {
 566        u64 u64;
 567        struct cvmx_pemx_cfg_rd_s {
 568                u64 data : 32;
 569                u64 addr : 32;
 570        } s;
 571        struct cvmx_pemx_cfg_rd_s cn61xx;
 572        struct cvmx_pemx_cfg_rd_s cn63xx;
 573        struct cvmx_pemx_cfg_rd_s cn63xxp1;
 574        struct cvmx_pemx_cfg_rd_s cn66xx;
 575        struct cvmx_pemx_cfg_rd_s cn68xx;
 576        struct cvmx_pemx_cfg_rd_s cn68xxp1;
 577        struct cvmx_pemx_cfg_rd_s cn70xx;
 578        struct cvmx_pemx_cfg_rd_s cn70xxp1;
 579        struct cvmx_pemx_cfg_rd_s cn73xx;
 580        struct cvmx_pemx_cfg_rd_s cn78xx;
 581        struct cvmx_pemx_cfg_rd_s cn78xxp1;
 582        struct cvmx_pemx_cfg_rd_s cnf71xx;
 583        struct cvmx_pemx_cfg_rd_s cnf75xx;
 584};
 585
 586typedef union cvmx_pemx_cfg_rd cvmx_pemx_cfg_rd_t;
 587
 588/**
 589 * cvmx_pem#_cfg_wr
 590 *
 591 * This register allows write access to the configuration in the PCIe core.
 592 *
 593 */
 594union cvmx_pemx_cfg_wr {
 595        u64 u64;
 596        struct cvmx_pemx_cfg_wr_s {
 597                u64 data : 32;
 598                u64 addr : 32;
 599        } s;
 600        struct cvmx_pemx_cfg_wr_s cn61xx;
 601        struct cvmx_pemx_cfg_wr_s cn63xx;
 602        struct cvmx_pemx_cfg_wr_s cn63xxp1;
 603        struct cvmx_pemx_cfg_wr_s cn66xx;
 604        struct cvmx_pemx_cfg_wr_s cn68xx;
 605        struct cvmx_pemx_cfg_wr_s cn68xxp1;
 606        struct cvmx_pemx_cfg_wr_s cn70xx;
 607        struct cvmx_pemx_cfg_wr_s cn70xxp1;
 608        struct cvmx_pemx_cfg_wr_s cn73xx;
 609        struct cvmx_pemx_cfg_wr_s cn78xx;
 610        struct cvmx_pemx_cfg_wr_s cn78xxp1;
 611        struct cvmx_pemx_cfg_wr_s cnf71xx;
 612        struct cvmx_pemx_cfg_wr_s cnf75xx;
 613};
 614
 615typedef union cvmx_pemx_cfg_wr cvmx_pemx_cfg_wr_t;
 616
 617/**
 618 * cvmx_pem#_clk_en
 619 *
 620 * This register contains the clock enable for ECLK and PCE_CLK.
 621 *
 622 */
 623union cvmx_pemx_clk_en {
 624        u64 u64;
 625        struct cvmx_pemx_clk_en_s {
 626                u64 reserved_2_63 : 62;
 627                u64 pceclk_gate : 1;
 628                u64 csclk_gate : 1;
 629        } s;
 630        struct cvmx_pemx_clk_en_s cn70xx;
 631        struct cvmx_pemx_clk_en_s cn70xxp1;
 632        struct cvmx_pemx_clk_en_s cn73xx;
 633        struct cvmx_pemx_clk_en_s cn78xx;
 634        struct cvmx_pemx_clk_en_s cn78xxp1;
 635        struct cvmx_pemx_clk_en_s cnf75xx;
 636};
 637
 638typedef union cvmx_pemx_clk_en cvmx_pemx_clk_en_t;
 639
 640/**
 641 * cvmx_pem#_cpl_lut_valid
 642 *
 643 * This register specifies the bit set for an outstanding tag read.
 644 *
 645 */
 646union cvmx_pemx_cpl_lut_valid {
 647        u64 u64;
 648        struct cvmx_pemx_cpl_lut_valid_s {
 649                u64 tag : 64;
 650        } s;
 651        struct cvmx_pemx_cpl_lut_valid_cn61xx {
 652                u64 reserved_32_63 : 32;
 653                u64 tag : 32;
 654        } cn61xx;
 655        struct cvmx_pemx_cpl_lut_valid_cn61xx cn63xx;
 656        struct cvmx_pemx_cpl_lut_valid_cn61xx cn63xxp1;
 657        struct cvmx_pemx_cpl_lut_valid_cn61xx cn66xx;
 658        struct cvmx_pemx_cpl_lut_valid_cn61xx cn68xx;
 659        struct cvmx_pemx_cpl_lut_valid_cn61xx cn68xxp1;
 660        struct cvmx_pemx_cpl_lut_valid_cn61xx cn70xx;
 661        struct cvmx_pemx_cpl_lut_valid_cn61xx cn70xxp1;
 662        struct cvmx_pemx_cpl_lut_valid_s cn73xx;
 663        struct cvmx_pemx_cpl_lut_valid_s cn78xx;
 664        struct cvmx_pemx_cpl_lut_valid_s cn78xxp1;
 665        struct cvmx_pemx_cpl_lut_valid_cn61xx cnf71xx;
 666        struct cvmx_pemx_cpl_lut_valid_s cnf75xx;
 667};
 668
 669typedef union cvmx_pemx_cpl_lut_valid cvmx_pemx_cpl_lut_valid_t;
 670
 671/**
 672 * cvmx_pem#_ctl_status
 673 *
 674 * This is a general control and status register of the PEM.
 675 *
 676 */
 677union cvmx_pemx_ctl_status {
 678        u64 u64;
 679        struct cvmx_pemx_ctl_status_s {
 680                u64 reserved_51_63 : 13;
 681                u64 inv_dpar : 1;
 682                u64 inv_hpar : 1;
 683                u64 inv_rpar : 1;
 684                u64 auto_sd : 1;
 685                u64 dnum : 5;
 686                u64 pbus : 8;
 687                u64 reserved_32_33 : 2;
 688                u64 cfg_rtry : 16;
 689                u64 reserved_12_15 : 4;
 690                u64 pm_xtoff : 1;
 691                u64 pm_xpme : 1;
 692                u64 ob_p_cmd : 1;
 693                u64 reserved_7_8 : 2;
 694                u64 nf_ecrc : 1;
 695                u64 dly_one : 1;
 696                u64 lnk_enb : 1;
 697                u64 ro_ctlp : 1;
 698                u64 fast_lm : 1;
 699                u64 inv_ecrc : 1;
 700                u64 inv_lcrc : 1;
 701        } s;
 702        struct cvmx_pemx_ctl_status_cn61xx {
 703                u64 reserved_48_63 : 16;
 704                u64 auto_sd : 1;
 705                u64 dnum : 5;
 706                u64 pbus : 8;
 707                u64 reserved_32_33 : 2;
 708                u64 cfg_rtry : 16;
 709                u64 reserved_12_15 : 4;
 710                u64 pm_xtoff : 1;
 711                u64 pm_xpme : 1;
 712                u64 ob_p_cmd : 1;
 713                u64 reserved_7_8 : 2;
 714                u64 nf_ecrc : 1;
 715                u64 dly_one : 1;
 716                u64 lnk_enb : 1;
 717                u64 ro_ctlp : 1;
 718                u64 fast_lm : 1;
 719                u64 inv_ecrc : 1;
 720                u64 inv_lcrc : 1;
 721        } cn61xx;
 722        struct cvmx_pemx_ctl_status_cn61xx cn63xx;
 723        struct cvmx_pemx_ctl_status_cn61xx cn63xxp1;
 724        struct cvmx_pemx_ctl_status_cn61xx cn66xx;
 725        struct cvmx_pemx_ctl_status_cn61xx cn68xx;
 726        struct cvmx_pemx_ctl_status_cn61xx cn68xxp1;
 727        struct cvmx_pemx_ctl_status_s cn70xx;
 728        struct cvmx_pemx_ctl_status_s cn70xxp1;
 729        struct cvmx_pemx_ctl_status_cn73xx {
 730                u64 reserved_51_63 : 13;
 731                u64 inv_dpar : 1;
 732                u64 reserved_48_49 : 2;
 733                u64 auto_sd : 1;
 734                u64 dnum : 5;
 735                u64 pbus : 8;
 736                u64 reserved_32_33 : 2;
 737                u64 cfg_rtry : 16;
 738                u64 reserved_12_15 : 4;
 739                u64 pm_xtoff : 1;
 740                u64 pm_xpme : 1;
 741                u64 ob_p_cmd : 1;
 742                u64 reserved_7_8 : 2;
 743                u64 nf_ecrc : 1;
 744                u64 dly_one : 1;
 745                u64 lnk_enb : 1;
 746                u64 ro_ctlp : 1;
 747                u64 fast_lm : 1;
 748                u64 inv_ecrc : 1;
 749                u64 inv_lcrc : 1;
 750        } cn73xx;
 751        struct cvmx_pemx_ctl_status_cn73xx cn78xx;
 752        struct cvmx_pemx_ctl_status_cn73xx cn78xxp1;
 753        struct cvmx_pemx_ctl_status_cn61xx cnf71xx;
 754        struct cvmx_pemx_ctl_status_cn73xx cnf75xx;
 755};
 756
 757typedef union cvmx_pemx_ctl_status cvmx_pemx_ctl_status_t;
 758
 759/**
 760 * cvmx_pem#_ctl_status2
 761 *
 762 * This register contains additional general control and status of the PEM.
 763 *
 764 */
 765union cvmx_pemx_ctl_status2 {
 766        u64 u64;
 767        struct cvmx_pemx_ctl_status2_s {
 768                u64 reserved_16_63 : 48;
 769                u64 no_fwd_prg : 16;
 770        } s;
 771        struct cvmx_pemx_ctl_status2_s cn73xx;
 772        struct cvmx_pemx_ctl_status2_s cn78xx;
 773        struct cvmx_pemx_ctl_status2_s cn78xxp1;
 774        struct cvmx_pemx_ctl_status2_s cnf75xx;
 775};
 776
 777typedef union cvmx_pemx_ctl_status2 cvmx_pemx_ctl_status2_t;
 778
 779/**
 780 * cvmx_pem#_dbg_info
 781 *
 782 * This is a debug information register of the PEM.
 783 *
 784 */
 785union cvmx_pemx_dbg_info {
 786        u64 u64;
 787        struct cvmx_pemx_dbg_info_s {
 788                u64 reserved_62_63 : 2;
 789                u64 m2s_c_dbe : 1;
 790                u64 m2s_c_sbe : 1;
 791                u64 m2s_d_dbe : 1;
 792                u64 m2s_d_sbe : 1;
 793                u64 qhdr_b1_dbe : 1;
 794                u64 qhdr_b1_sbe : 1;
 795                u64 qhdr_b0_dbe : 1;
 796                u64 qhdr_b0_sbe : 1;
 797                u64 rtry_dbe : 1;
 798                u64 rtry_sbe : 1;
 799                u64 reserved_50_51 : 2;
 800                u64 c_d1_dbe : 1;
 801                u64 c_d1_sbe : 1;
 802                u64 c_d0_dbe : 1;
 803                u64 c_d0_sbe : 1;
 804                u64 reserved_34_45 : 12;
 805                u64 datq_pe : 1;
 806                u64 reserved_31_32 : 2;
 807                u64 ecrc_e : 1;
 808                u64 rawwpp : 1;
 809                u64 racpp : 1;
 810                u64 ramtlp : 1;
 811                u64 rarwdns : 1;
 812                u64 caar : 1;
 813                u64 racca : 1;
 814                u64 racur : 1;
 815                u64 rauc : 1;
 816                u64 rqo : 1;
 817                u64 fcuv : 1;
 818                u64 rpe : 1;
 819                u64 fcpvwt : 1;
 820                u64 dpeoosd : 1;
 821                u64 rtwdle : 1;
 822                u64 rdwdle : 1;
 823                u64 mre : 1;
 824                u64 rte : 1;
 825                u64 acto : 1;
 826                u64 rvdm : 1;
 827                u64 rumep : 1;
 828                u64 rptamrc : 1;
 829                u64 rpmerc : 1;
 830                u64 rfemrc : 1;
 831                u64 rnfemrc : 1;
 832                u64 rcemrc : 1;
 833                u64 rpoison : 1;
 834                u64 recrce : 1;
 835                u64 rtlplle : 1;
 836                u64 rtlpmal : 1;
 837                u64 spoison : 1;
 838        } s;
 839        struct cvmx_pemx_dbg_info_cn61xx {
 840                u64 reserved_31_63 : 33;
 841                u64 ecrc_e : 1;
 842                u64 rawwpp : 1;
 843                u64 racpp : 1;
 844                u64 ramtlp : 1;
 845                u64 rarwdns : 1;
 846                u64 caar : 1;
 847                u64 racca : 1;
 848                u64 racur : 1;
 849                u64 rauc : 1;
 850                u64 rqo : 1;
 851                u64 fcuv : 1;
 852                u64 rpe : 1;
 853                u64 fcpvwt : 1;
 854                u64 dpeoosd : 1;
 855                u64 rtwdle : 1;
 856                u64 rdwdle : 1;
 857                u64 mre : 1;
 858                u64 rte : 1;
 859                u64 acto : 1;
 860                u64 rvdm : 1;
 861                u64 rumep : 1;
 862                u64 rptamrc : 1;
 863                u64 rpmerc : 1;
 864                u64 rfemrc : 1;
 865                u64 rnfemrc : 1;
 866                u64 rcemrc : 1;
 867                u64 rpoison : 1;
 868                u64 recrce : 1;
 869                u64 rtlplle : 1;
 870                u64 rtlpmal : 1;
 871                u64 spoison : 1;
 872        } cn61xx;
 873        struct cvmx_pemx_dbg_info_cn61xx cn63xx;
 874        struct cvmx_pemx_dbg_info_cn61xx cn63xxp1;
 875        struct cvmx_pemx_dbg_info_cn61xx cn66xx;
 876        struct cvmx_pemx_dbg_info_cn61xx cn68xx;
 877        struct cvmx_pemx_dbg_info_cn61xx cn68xxp1;
 878        struct cvmx_pemx_dbg_info_cn70xx {
 879                u64 reserved_46_63 : 18;
 880                u64 c_c_dbe : 1;
 881                u64 c_c_sbe : 1;
 882                u64 c_d_dbe : 1;
 883                u64 c_d_sbe : 1;
 884                u64 n_c_dbe : 1;
 885                u64 n_c_sbe : 1;
 886                u64 n_d_dbe : 1;
 887                u64 n_d_sbe : 1;
 888                u64 p_c_dbe : 1;
 889                u64 p_c_sbe : 1;
 890                u64 p_d_dbe : 1;
 891                u64 p_d_sbe : 1;
 892                u64 datq_pe : 1;
 893                u64 hdrq_pe : 1;
 894                u64 rtry_pe : 1;
 895                u64 ecrc_e : 1;
 896                u64 rawwpp : 1;
 897                u64 racpp : 1;
 898                u64 ramtlp : 1;
 899                u64 rarwdns : 1;
 900                u64 caar : 1;
 901                u64 racca : 1;
 902                u64 racur : 1;
 903                u64 rauc : 1;
 904                u64 rqo : 1;
 905                u64 fcuv : 1;
 906                u64 rpe : 1;
 907                u64 fcpvwt : 1;
 908                u64 dpeoosd : 1;
 909                u64 rtwdle : 1;
 910                u64 rdwdle : 1;
 911                u64 mre : 1;
 912                u64 rte : 1;
 913                u64 acto : 1;
 914                u64 rvdm : 1;
 915                u64 rumep : 1;
 916                u64 rptamrc : 1;
 917                u64 rpmerc : 1;
 918                u64 rfemrc : 1;
 919                u64 rnfemrc : 1;
 920                u64 rcemrc : 1;
 921                u64 rpoison : 1;
 922                u64 recrce : 1;
 923                u64 rtlplle : 1;
 924                u64 rtlpmal : 1;
 925                u64 spoison : 1;
 926        } cn70xx;
 927        struct cvmx_pemx_dbg_info_cn70xx cn70xxp1;
 928        struct cvmx_pemx_dbg_info_cn73xx {
 929                u64 reserved_62_63 : 2;
 930                u64 m2s_c_dbe : 1;
 931                u64 m2s_c_sbe : 1;
 932                u64 m2s_d_dbe : 1;
 933                u64 m2s_d_sbe : 1;
 934                u64 qhdr_b1_dbe : 1;
 935                u64 qhdr_b1_sbe : 1;
 936                u64 qhdr_b0_dbe : 1;
 937                u64 qhdr_b0_sbe : 1;
 938                u64 rtry_dbe : 1;
 939                u64 rtry_sbe : 1;
 940                u64 c_c_dbe : 1;
 941                u64 c_c_sbe : 1;
 942                u64 c_d1_dbe : 1;
 943                u64 c_d1_sbe : 1;
 944                u64 c_d0_dbe : 1;
 945                u64 c_d0_sbe : 1;
 946                u64 n_c_dbe : 1;
 947                u64 n_c_sbe : 1;
 948                u64 n_d1_dbe : 1;
 949                u64 n_d1_sbe : 1;
 950                u64 n_d0_dbe : 1;
 951                u64 n_d0_sbe : 1;
 952                u64 p_c_dbe : 1;
 953                u64 p_c_sbe : 1;
 954                u64 p_d1_dbe : 1;
 955                u64 p_d1_sbe : 1;
 956                u64 p_d0_dbe : 1;
 957                u64 p_d0_sbe : 1;
 958                u64 datq_pe : 1;
 959                u64 bmd_e : 1;
 960                u64 lofp : 1;
 961                u64 ecrc_e : 1;
 962                u64 rawwpp : 1;
 963                u64 racpp : 1;
 964                u64 ramtlp : 1;
 965                u64 rarwdns : 1;
 966                u64 caar : 1;
 967                u64 racca : 1;
 968                u64 racur : 1;
 969                u64 rauc : 1;
 970                u64 rqo : 1;
 971                u64 fcuv : 1;
 972                u64 rpe : 1;
 973                u64 fcpvwt : 1;
 974                u64 dpeoosd : 1;
 975                u64 rtwdle : 1;
 976                u64 rdwdle : 1;
 977                u64 mre : 1;
 978                u64 rte : 1;
 979                u64 acto : 1;
 980                u64 rvdm : 1;
 981                u64 rumep : 1;
 982                u64 rptamrc : 1;
 983                u64 rpmerc : 1;
 984                u64 rfemrc : 1;
 985                u64 rnfemrc : 1;
 986                u64 rcemrc : 1;
 987                u64 rpoison : 1;
 988                u64 recrce : 1;
 989                u64 rtlplle : 1;
 990                u64 rtlpmal : 1;
 991                u64 spoison : 1;
 992        } cn73xx;
 993        struct cvmx_pemx_dbg_info_cn73xx cn78xx;
 994        struct cvmx_pemx_dbg_info_cn78xxp1 {
 995                u64 reserved_58_63 : 6;
 996                u64 qhdr_b1_dbe : 1;
 997                u64 qhdr_b1_sbe : 1;
 998                u64 qhdr_b0_dbe : 1;
 999                u64 qhdr_b0_sbe : 1;
1000                u64 rtry_dbe : 1;
1001                u64 rtry_sbe : 1;
1002                u64 c_c_dbe : 1;
1003                u64 c_c_sbe : 1;
1004                u64 c_d1_dbe : 1;
1005                u64 c_d1_sbe : 1;
1006                u64 c_d0_dbe : 1;
1007                u64 c_d0_sbe : 1;
1008                u64 n_c_dbe : 1;
1009                u64 n_c_sbe : 1;
1010                u64 n_d1_dbe : 1;
1011                u64 n_d1_sbe : 1;
1012                u64 n_d0_dbe : 1;
1013                u64 n_d0_sbe : 1;
1014                u64 p_c_dbe : 1;
1015                u64 p_c_sbe : 1;
1016                u64 p_d1_dbe : 1;
1017                u64 p_d1_sbe : 1;
1018                u64 p_d0_dbe : 1;
1019                u64 p_d0_sbe : 1;
1020                u64 datq_pe : 1;
1021                u64 reserved_32_32 : 1;
1022                u64 lofp : 1;
1023                u64 ecrc_e : 1;
1024                u64 rawwpp : 1;
1025                u64 racpp : 1;
1026                u64 ramtlp : 1;
1027                u64 rarwdns : 1;
1028                u64 caar : 1;
1029                u64 racca : 1;
1030                u64 racur : 1;
1031                u64 rauc : 1;
1032                u64 rqo : 1;
1033                u64 fcuv : 1;
1034                u64 rpe : 1;
1035                u64 fcpvwt : 1;
1036                u64 dpeoosd : 1;
1037                u64 rtwdle : 1;
1038                u64 rdwdle : 1;
1039                u64 mre : 1;
1040                u64 rte : 1;
1041                u64 acto : 1;
1042                u64 rvdm : 1;
1043                u64 rumep : 1;
1044                u64 rptamrc : 1;
1045                u64 rpmerc : 1;
1046                u64 rfemrc : 1;
1047                u64 rnfemrc : 1;
1048                u64 rcemrc : 1;
1049                u64 rpoison : 1;
1050                u64 recrce : 1;
1051                u64 rtlplle : 1;
1052                u64 rtlpmal : 1;
1053                u64 spoison : 1;
1054        } cn78xxp1;
1055        struct cvmx_pemx_dbg_info_cn61xx cnf71xx;
1056        struct cvmx_pemx_dbg_info_cn73xx cnf75xx;
1057};
1058
1059typedef union cvmx_pemx_dbg_info cvmx_pemx_dbg_info_t;
1060
1061/**
1062 * cvmx_pem#_dbg_info_en
1063 *
1064 * "PEM#_DBG_INFO_EN = PEM Debug Information Enable
1065 * Allows PEM_DBG_INFO to generate interrupts when cooresponding enable bit is set."
1066 */
1067union cvmx_pemx_dbg_info_en {
1068        u64 u64;
1069        struct cvmx_pemx_dbg_info_en_s {
1070                u64 reserved_46_63 : 18;
1071                u64 tpcdbe1 : 1;
1072                u64 tpcsbe1 : 1;
1073                u64 tpcdbe0 : 1;
1074                u64 tpcsbe0 : 1;
1075                u64 tnfdbe1 : 1;
1076                u64 tnfsbe1 : 1;
1077                u64 tnfdbe0 : 1;
1078                u64 tnfsbe0 : 1;
1079                u64 tpfdbe1 : 1;
1080                u64 tpfsbe1 : 1;
1081                u64 tpfdbe0 : 1;
1082                u64 tpfsbe0 : 1;
1083                u64 datq_pe : 1;
1084                u64 hdrq_pe : 1;
1085                u64 rtry_pe : 1;
1086                u64 ecrc_e : 1;
1087                u64 rawwpp : 1;
1088                u64 racpp : 1;
1089                u64 ramtlp : 1;
1090                u64 rarwdns : 1;
1091                u64 caar : 1;
1092                u64 racca : 1;
1093                u64 racur : 1;
1094                u64 rauc : 1;
1095                u64 rqo : 1;
1096                u64 fcuv : 1;
1097                u64 rpe : 1;
1098                u64 fcpvwt : 1;
1099                u64 dpeoosd : 1;
1100                u64 rtwdle : 1;
1101                u64 rdwdle : 1;
1102                u64 mre : 1;
1103                u64 rte : 1;
1104                u64 acto : 1;
1105                u64 rvdm : 1;
1106                u64 rumep : 1;
1107                u64 rptamrc : 1;
1108                u64 rpmerc : 1;
1109                u64 rfemrc : 1;
1110                u64 rnfemrc : 1;
1111                u64 rcemrc : 1;
1112                u64 rpoison : 1;
1113                u64 recrce : 1;
1114                u64 rtlplle : 1;
1115                u64 rtlpmal : 1;
1116                u64 spoison : 1;
1117        } s;
1118        struct cvmx_pemx_dbg_info_en_cn61xx {
1119                u64 reserved_31_63 : 33;
1120                u64 ecrc_e : 1;
1121                u64 rawwpp : 1;
1122                u64 racpp : 1;
1123                u64 ramtlp : 1;
1124                u64 rarwdns : 1;
1125                u64 caar : 1;
1126                u64 racca : 1;
1127                u64 racur : 1;
1128                u64 rauc : 1;
1129                u64 rqo : 1;
1130                u64 fcuv : 1;
1131                u64 rpe : 1;
1132                u64 fcpvwt : 1;
1133                u64 dpeoosd : 1;
1134                u64 rtwdle : 1;
1135                u64 rdwdle : 1;
1136                u64 mre : 1;
1137                u64 rte : 1;
1138                u64 acto : 1;
1139                u64 rvdm : 1;
1140                u64 rumep : 1;
1141                u64 rptamrc : 1;
1142                u64 rpmerc : 1;
1143                u64 rfemrc : 1;
1144                u64 rnfemrc : 1;
1145                u64 rcemrc : 1;
1146                u64 rpoison : 1;
1147                u64 recrce : 1;
1148                u64 rtlplle : 1;
1149                u64 rtlpmal : 1;
1150                u64 spoison : 1;
1151        } cn61xx;
1152        struct cvmx_pemx_dbg_info_en_cn61xx cn63xx;
1153        struct cvmx_pemx_dbg_info_en_cn61xx cn63xxp1;
1154        struct cvmx_pemx_dbg_info_en_cn61xx cn66xx;
1155        struct cvmx_pemx_dbg_info_en_cn61xx cn68xx;
1156        struct cvmx_pemx_dbg_info_en_cn61xx cn68xxp1;
1157        struct cvmx_pemx_dbg_info_en_s cn70xx;
1158        struct cvmx_pemx_dbg_info_en_s cn70xxp1;
1159        struct cvmx_pemx_dbg_info_en_cn61xx cnf71xx;
1160};
1161
1162typedef union cvmx_pemx_dbg_info_en cvmx_pemx_dbg_info_en_t;
1163
1164/**
1165 * cvmx_pem#_diag_status
1166 *
1167 * This register contains selection control for the core diagnostic bus.
1168 *
1169 */
1170union cvmx_pemx_diag_status {
1171        u64 u64;
1172        struct cvmx_pemx_diag_status_s {
1173                u64 reserved_9_63 : 55;
1174                u64 pwrdwn : 3;
1175                u64 pm_dst : 3;
1176                u64 pm_stat : 1;
1177                u64 pm_en : 1;
1178                u64 aux_en : 1;
1179        } s;
1180        struct cvmx_pemx_diag_status_cn61xx {
1181                u64 reserved_4_63 : 60;
1182                u64 pm_dst : 1;
1183                u64 pm_stat : 1;
1184                u64 pm_en : 1;
1185                u64 aux_en : 1;
1186        } cn61xx;
1187        struct cvmx_pemx_diag_status_cn61xx cn63xx;
1188        struct cvmx_pemx_diag_status_cn61xx cn63xxp1;
1189        struct cvmx_pemx_diag_status_cn61xx cn66xx;
1190        struct cvmx_pemx_diag_status_cn61xx cn68xx;
1191        struct cvmx_pemx_diag_status_cn61xx cn68xxp1;
1192        struct cvmx_pemx_diag_status_cn70xx {
1193                u64 reserved_63_6 : 58;
1194                u64 pm_dst : 3;
1195                u64 pm_stat : 1;
1196                u64 pm_en : 1;
1197                u64 aux_en : 1;
1198        } cn70xx;
1199        struct cvmx_pemx_diag_status_cn70xx cn70xxp1;
1200        struct cvmx_pemx_diag_status_cn73xx {
1201                u64 reserved_63_9 : 55;
1202                u64 pwrdwn : 3;
1203                u64 pm_dst : 3;
1204                u64 pm_stat : 1;
1205                u64 pm_en : 1;
1206                u64 aux_en : 1;
1207        } cn73xx;
1208        struct cvmx_pemx_diag_status_cn73xx cn78xx;
1209        struct cvmx_pemx_diag_status_cn73xx cn78xxp1;
1210        struct cvmx_pemx_diag_status_cn61xx cnf71xx;
1211        struct cvmx_pemx_diag_status_cn73xx cnf75xx;
1212};
1213
1214typedef union cvmx_pemx_diag_status cvmx_pemx_diag_status_t;
1215
1216/**
1217 * cvmx_pem#_ecc_ena
1218 *
1219 * Contains enables for TLP FIFO ECC RAMs.
1220 *
1221 */
1222union cvmx_pemx_ecc_ena {
1223        u64 u64;
1224        struct cvmx_pemx_ecc_ena_s {
1225                u64 reserved_35_63 : 29;
1226                u64 qhdr_b1_ena : 1;
1227                u64 qhdr_b0_ena : 1;
1228                u64 rtry_ena : 1;
1229                u64 reserved_11_31 : 21;
1230                u64 m2s_c_ena : 1;
1231                u64 m2s_d_ena : 1;
1232                u64 c_c_ena : 1;
1233                u64 c_d1_ena : 1;
1234                u64 c_d0_ena : 1;
1235                u64 reserved_0_5 : 6;
1236        } s;
1237        struct cvmx_pemx_ecc_ena_cn70xx {
1238                u64 reserved_6_63 : 58;
1239                u64 tlp_nc_ena : 1;
1240                u64 tlp_nd_ena : 1;
1241                u64 tlp_pc_ena : 1;
1242                u64 tlp_pd_ena : 1;
1243                u64 tlp_cc_ena : 1;
1244                u64 tlp_cd_ena : 1;
1245        } cn70xx;
1246        struct cvmx_pemx_ecc_ena_cn70xx cn70xxp1;
1247        struct cvmx_pemx_ecc_ena_cn73xx {
1248                u64 reserved_35_63 : 29;
1249                u64 qhdr_b1_ena : 1;
1250                u64 qhdr_b0_ena : 1;
1251                u64 rtry_ena : 1;
1252                u64 reserved_11_31 : 21;
1253                u64 m2s_c_ena : 1;
1254                u64 m2s_d_ena : 1;
1255                u64 c_c_ena : 1;
1256                u64 c_d1_ena : 1;
1257                u64 c_d0_ena : 1;
1258                u64 n_c_ena : 1;
1259                u64 n_d1_ena : 1;
1260                u64 n_d0_ena : 1;
1261                u64 p_c_ena : 1;
1262                u64 p_d1_ena : 1;
1263                u64 p_d0_ena : 1;
1264        } cn73xx;
1265        struct cvmx_pemx_ecc_ena_cn73xx cn78xx;
1266        struct cvmx_pemx_ecc_ena_cn78xxp1 {
1267                u64 reserved_35_63 : 29;
1268                u64 qhdr_b1_ena : 1;
1269                u64 qhdr_b0_ena : 1;
1270                u64 rtry_ena : 1;
1271                u64 reserved_9_31 : 23;
1272                u64 c_c_ena : 1;
1273                u64 c_d1_ena : 1;
1274                u64 c_d0_ena : 1;
1275                u64 n_c_ena : 1;
1276                u64 n_d1_ena : 1;
1277                u64 n_d0_ena : 1;
1278                u64 p_c_ena : 1;
1279                u64 p_d1_ena : 1;
1280                u64 p_d0_ena : 1;
1281        } cn78xxp1;
1282        struct cvmx_pemx_ecc_ena_cn73xx cnf75xx;
1283};
1284
1285typedef union cvmx_pemx_ecc_ena cvmx_pemx_ecc_ena_t;
1286
1287/**
1288 * cvmx_pem#_ecc_synd_ctrl
1289 *
1290 * This register contains syndrome control for TLP FIFO ECC RAMs.
1291 *
1292 */
1293union cvmx_pemx_ecc_synd_ctrl {
1294        u64 u64;
1295        struct cvmx_pemx_ecc_synd_ctrl_s {
1296                u64 reserved_38_63 : 26;
1297                u64 qhdr_b1_syn : 2;
1298                u64 qhdr_b0_syn : 2;
1299                u64 rtry_syn : 2;
1300                u64 reserved_22_31 : 10;
1301                u64 m2s_c_syn : 2;
1302                u64 m2s_d_syn : 2;
1303                u64 c_c_syn : 2;
1304                u64 c_d1_syn : 2;
1305                u64 c_d0_syn : 2;
1306                u64 reserved_0_11 : 12;
1307        } s;
1308        struct cvmx_pemx_ecc_synd_ctrl_cn70xx {
1309                u64 reserved_12_63 : 52;
1310                u64 tlp_nc_syn : 2;
1311                u64 tlp_nd_syn : 2;
1312                u64 tlp_pc_syn : 2;
1313                u64 tlp_pd_syn : 2;
1314                u64 tlp_cc_syn : 2;
1315                u64 tlp_cd_syn : 2;
1316        } cn70xx;
1317        struct cvmx_pemx_ecc_synd_ctrl_cn70xx cn70xxp1;
1318        struct cvmx_pemx_ecc_synd_ctrl_cn73xx {
1319                u64 reserved_38_63 : 26;
1320                u64 qhdr_b1_syn : 2;
1321                u64 qhdr_b0_syn : 2;
1322                u64 rtry_syn : 2;
1323                u64 reserved_22_31 : 10;
1324                u64 m2s_c_syn : 2;
1325                u64 m2s_d_syn : 2;
1326                u64 c_c_syn : 2;
1327                u64 c_d1_syn : 2;
1328                u64 c_d0_syn : 2;
1329                u64 n_c_syn : 2;
1330                u64 n_d1_syn : 2;
1331                u64 n_d0_syn : 2;
1332                u64 p_c_syn : 2;
1333                u64 p_d1_syn : 2;
1334                u64 p_d0_syn : 2;
1335        } cn73xx;
1336        struct cvmx_pemx_ecc_synd_ctrl_cn73xx cn78xx;
1337        struct cvmx_pemx_ecc_synd_ctrl_cn78xxp1 {
1338                u64 reserved_38_63 : 26;
1339                u64 qhdr_b1_syn : 2;
1340                u64 qhdr_b0_syn : 2;
1341                u64 rtry_syn : 2;
1342                u64 reserved_18_31 : 14;
1343                u64 c_c_syn : 2;
1344                u64 c_d1_syn : 2;
1345                u64 c_d0_syn : 2;
1346                u64 n_c_syn : 2;
1347                u64 n_d1_syn : 2;
1348                u64 n_d0_syn : 2;
1349                u64 p_c_syn : 2;
1350                u64 p_d1_syn : 2;
1351                u64 p_d0_syn : 2;
1352        } cn78xxp1;
1353        struct cvmx_pemx_ecc_synd_ctrl_cn73xx cnf75xx;
1354};
1355
1356typedef union cvmx_pemx_ecc_synd_ctrl cvmx_pemx_ecc_synd_ctrl_t;
1357
1358/**
1359 * cvmx_pem#_eco
1360 */
1361union cvmx_pemx_eco {
1362        u64 u64;
1363        struct cvmx_pemx_eco_s {
1364                u64 reserved_8_63 : 56;
1365                u64 eco_rw : 8;
1366        } s;
1367        struct cvmx_pemx_eco_s cn73xx;
1368        struct cvmx_pemx_eco_s cn78xx;
1369        struct cvmx_pemx_eco_s cnf75xx;
1370};
1371
1372typedef union cvmx_pemx_eco cvmx_pemx_eco_t;
1373
1374/**
1375 * cvmx_pem#_flr_glblcnt_ctl
1376 */
1377union cvmx_pemx_flr_glblcnt_ctl {
1378        u64 u64;
1379        struct cvmx_pemx_flr_glblcnt_ctl_s {
1380                u64 reserved_4_63 : 60;
1381                u64 chge : 1;
1382                u64 inc : 1;
1383                u64 delta : 2;
1384        } s;
1385        struct cvmx_pemx_flr_glblcnt_ctl_s cn73xx;
1386        struct cvmx_pemx_flr_glblcnt_ctl_s cn78xx;
1387        struct cvmx_pemx_flr_glblcnt_ctl_s cnf75xx;
1388};
1389
1390typedef union cvmx_pemx_flr_glblcnt_ctl cvmx_pemx_flr_glblcnt_ctl_t;
1391
1392/**
1393 * cvmx_pem#_flr_pf0_vf_stopreq
1394 *
1395 * Hardware automatically sets the STOPREQ bit for the VF when it enters a
1396 * Function Level Reset (FLR).  Software is responsible for clearing the STOPREQ
1397 * bit but must not do so prior to hardware taking down the FLR, which could be
1398 * as long as 100ms.  It may be appropriate for software to wait longer before clearing
1399 * STOPREQ, software may need to drain deep DPI queues for example.
1400 * Whenever PEM receives a request mastered by CNXXXX over S2M (i.e. P or NP),
1401 * when STOPREQ is set for the function, PEM will discard the outgoing request
1402 * before sending it to the PCIe core.  If a NP, PEM will schedule an immediate
1403 * SWI_RSP_ERROR completion for the request - no timeout is required.
1404 *
1405 * STOPREQ mimics the behavior of PCIEEPVF()_CFG001[ME] for outbound requests that will
1406 * master the PCIe bus (P and NP).
1407 *
1408 * Note that STOPREQ will have no effect on completions returned by CNXXXX over the S2M,
1409 * nor on M2S traffic.
1410 */
1411union cvmx_pemx_flr_pf0_vf_stopreq {
1412        u64 u64;
1413        struct cvmx_pemx_flr_pf0_vf_stopreq_s {
1414                u64 vf_stopreq : 64;
1415        } s;
1416        struct cvmx_pemx_flr_pf0_vf_stopreq_s cn73xx;
1417        struct cvmx_pemx_flr_pf0_vf_stopreq_s cn78xx;
1418        struct cvmx_pemx_flr_pf0_vf_stopreq_s cnf75xx;
1419};
1420
1421typedef union cvmx_pemx_flr_pf0_vf_stopreq cvmx_pemx_flr_pf0_vf_stopreq_t;
1422
1423/**
1424 * cvmx_pem#_flr_pf_stopreq
1425 *
1426 * Hardware automatically sets the STOPREQ bit for the PF when it enters a
1427 * Function Level Reset (FLR).  Software is responsible for clearing the STOPREQ
1428 * bit but must not do so prior to hardware taking down the FLR, which could be
1429 * as long as 100ms.  It may be appropriate for software to wait longer before clearing
1430 * STOPREQ, software may need to drain deep DPI queues for example.
1431 * Whenever PEM receives a PF or child VF request mastered by CNXXXX over S2M (i.e. P or NP),
1432 * when STOPREQ is set for the function, PEM will discard the outgoing request
1433 * before sending it to the PCIe core.  If a NP, PEM will schedule an immediate
1434 * SWI_RSP_ERROR completion for the request - no timeout is required.
1435 *
1436 * STOPREQ mimics the behavior of PCIEEP()_CFG001[ME] for outbound requests that will
1437 * master the PCIe bus (P and NP).
1438 *
1439 * STOPREQ will have no effect on completions returned by CNXXXX over the S2M,
1440 * nor on M2S traffic.
1441 *
1442 * When a PF()_STOPREQ is set, none of the associated
1443 * PEM()_FLR_PF()_VF_STOPREQ[VF_STOPREQ] will be set.
1444 *
1445 * STOPREQ is reset when the MAC is reset, and is not reset after a chip soft reset.
1446 */
1447union cvmx_pemx_flr_pf_stopreq {
1448        u64 u64;
1449        struct cvmx_pemx_flr_pf_stopreq_s {
1450                u64 reserved_1_63 : 63;
1451                u64 pf0_stopreq : 1;
1452        } s;
1453        struct cvmx_pemx_flr_pf_stopreq_s cn73xx;
1454        struct cvmx_pemx_flr_pf_stopreq_s cn78xx;
1455        struct cvmx_pemx_flr_pf_stopreq_s cnf75xx;
1456};
1457
1458typedef union cvmx_pemx_flr_pf_stopreq cvmx_pemx_flr_pf_stopreq_t;
1459
1460/**
1461 * cvmx_pem#_flr_stopreq_ctl
1462 */
1463union cvmx_pemx_flr_stopreq_ctl {
1464        u64 u64;
1465        struct cvmx_pemx_flr_stopreq_ctl_s {
1466                u64 reserved_1_63 : 63;
1467                u64 stopreqclr : 1;
1468        } s;
1469        struct cvmx_pemx_flr_stopreq_ctl_s cn78xx;
1470        struct cvmx_pemx_flr_stopreq_ctl_s cnf75xx;
1471};
1472
1473typedef union cvmx_pemx_flr_stopreq_ctl cvmx_pemx_flr_stopreq_ctl_t;
1474
1475/**
1476 * cvmx_pem#_flr_zombie_ctl
1477 */
1478union cvmx_pemx_flr_zombie_ctl {
1479        u64 u64;
1480        struct cvmx_pemx_flr_zombie_ctl_s {
1481                u64 reserved_10_63 : 54;
1482                u64 exp : 10;
1483        } s;
1484        struct cvmx_pemx_flr_zombie_ctl_s cn73xx;
1485        struct cvmx_pemx_flr_zombie_ctl_s cn78xx;
1486        struct cvmx_pemx_flr_zombie_ctl_s cnf75xx;
1487};
1488
1489typedef union cvmx_pemx_flr_zombie_ctl cvmx_pemx_flr_zombie_ctl_t;
1490
1491/**
1492 * cvmx_pem#_inb_read_credits
1493 *
1494 * This register contains the number of in-flight read operations from PCIe core to SLI.
1495 *
1496 */
1497union cvmx_pemx_inb_read_credits {
1498        u64 u64;
1499        struct cvmx_pemx_inb_read_credits_s {
1500                u64 reserved_7_63 : 57;
1501                u64 num : 7;
1502        } s;
1503        struct cvmx_pemx_inb_read_credits_cn61xx {
1504                u64 reserved_6_63 : 58;
1505                u64 num : 6;
1506        } cn61xx;
1507        struct cvmx_pemx_inb_read_credits_cn61xx cn66xx;
1508        struct cvmx_pemx_inb_read_credits_cn61xx cn68xx;
1509        struct cvmx_pemx_inb_read_credits_cn61xx cn70xx;
1510        struct cvmx_pemx_inb_read_credits_cn61xx cn70xxp1;
1511        struct cvmx_pemx_inb_read_credits_s cn73xx;
1512        struct cvmx_pemx_inb_read_credits_s cn78xx;
1513        struct cvmx_pemx_inb_read_credits_s cn78xxp1;
1514        struct cvmx_pemx_inb_read_credits_cn61xx cnf71xx;
1515        struct cvmx_pemx_inb_read_credits_s cnf75xx;
1516};
1517
1518typedef union cvmx_pemx_inb_read_credits cvmx_pemx_inb_read_credits_t;
1519
1520/**
1521 * cvmx_pem#_int_enb
1522 *
1523 * "PEM#_INT_ENB = PEM Interrupt Enable
1524 * Enables interrupt conditions for the PEM to generate an RSL interrupt."
1525 */
1526union cvmx_pemx_int_enb {
1527        u64 u64;
1528        struct cvmx_pemx_int_enb_s {
1529                u64 reserved_14_63 : 50;
1530                u64 crs_dr : 1;
1531                u64 crs_er : 1;
1532                u64 rdlk : 1;
1533                u64 exc : 1;
1534                u64 un_bx : 1;
1535                u64 un_b2 : 1;
1536                u64 un_b1 : 1;
1537                u64 up_bx : 1;
1538                u64 up_b2 : 1;
1539                u64 up_b1 : 1;
1540                u64 pmem : 1;
1541                u64 pmei : 1;
1542                u64 se : 1;
1543                u64 aeri : 1;
1544        } s;
1545        struct cvmx_pemx_int_enb_s cn61xx;
1546        struct cvmx_pemx_int_enb_s cn63xx;
1547        struct cvmx_pemx_int_enb_s cn63xxp1;
1548        struct cvmx_pemx_int_enb_s cn66xx;
1549        struct cvmx_pemx_int_enb_s cn68xx;
1550        struct cvmx_pemx_int_enb_s cn68xxp1;
1551        struct cvmx_pemx_int_enb_s cn70xx;
1552        struct cvmx_pemx_int_enb_s cn70xxp1;
1553        struct cvmx_pemx_int_enb_s cnf71xx;
1554};
1555
1556typedef union cvmx_pemx_int_enb cvmx_pemx_int_enb_t;
1557
1558/**
1559 * cvmx_pem#_int_enb_int
1560 *
1561 * "PEM#_INT_ENB_INT = PEM Interrupt Enable
1562 * Enables interrupt conditions for the PEM to generate an RSL interrupt."
1563 */
1564union cvmx_pemx_int_enb_int {
1565        u64 u64;
1566        struct cvmx_pemx_int_enb_int_s {
1567                u64 reserved_14_63 : 50;
1568                u64 crs_dr : 1;
1569                u64 crs_er : 1;
1570                u64 rdlk : 1;
1571                u64 exc : 1;
1572                u64 un_bx : 1;
1573                u64 un_b2 : 1;
1574                u64 un_b1 : 1;
1575                u64 up_bx : 1;
1576                u64 up_b2 : 1;
1577                u64 up_b1 : 1;
1578                u64 pmem : 1;
1579                u64 pmei : 1;
1580                u64 se : 1;
1581                u64 aeri : 1;
1582        } s;
1583        struct cvmx_pemx_int_enb_int_s cn61xx;
1584        struct cvmx_pemx_int_enb_int_s cn63xx;
1585        struct cvmx_pemx_int_enb_int_s cn63xxp1;
1586        struct cvmx_pemx_int_enb_int_s cn66xx;
1587        struct cvmx_pemx_int_enb_int_s cn68xx;
1588        struct cvmx_pemx_int_enb_int_s cn68xxp1;
1589        struct cvmx_pemx_int_enb_int_s cn70xx;
1590        struct cvmx_pemx_int_enb_int_s cn70xxp1;
1591        struct cvmx_pemx_int_enb_int_s cnf71xx;
1592};
1593
1594typedef union cvmx_pemx_int_enb_int cvmx_pemx_int_enb_int_t;
1595
1596/**
1597 * cvmx_pem#_int_sum
1598 *
1599 * This register contains the different interrupt summary bits of the PEM.
1600 *
1601 */
1602union cvmx_pemx_int_sum {
1603        u64 u64;
1604        struct cvmx_pemx_int_sum_s {
1605                u64 intd : 1;
1606                u64 intc : 1;
1607                u64 intb : 1;
1608                u64 inta : 1;
1609                u64 reserved_14_59 : 46;
1610                u64 crs_dr : 1;
1611                u64 crs_er : 1;
1612                u64 rdlk : 1;
1613                u64 exc : 1;
1614                u64 un_bx : 1;
1615                u64 un_b2 : 1;
1616                u64 un_b1 : 1;
1617                u64 up_bx : 1;
1618                u64 up_b2 : 1;
1619                u64 up_b1 : 1;
1620                u64 pmem : 1;
1621                u64 pmei : 1;
1622                u64 se : 1;
1623                u64 aeri : 1;
1624        } s;
1625        struct cvmx_pemx_int_sum_cn61xx {
1626                u64 reserved_14_63 : 50;
1627                u64 crs_dr : 1;
1628                u64 crs_er : 1;
1629                u64 rdlk : 1;
1630                u64 exc : 1;
1631                u64 un_bx : 1;
1632                u64 un_b2 : 1;
1633                u64 un_b1 : 1;
1634                u64 up_bx : 1;
1635                u64 up_b2 : 1;
1636                u64 up_b1 : 1;
1637                u64 pmem : 1;
1638                u64 pmei : 1;
1639                u64 se : 1;
1640                u64 aeri : 1;
1641        } cn61xx;
1642        struct cvmx_pemx_int_sum_cn61xx cn63xx;
1643        struct cvmx_pemx_int_sum_cn61xx cn63xxp1;
1644        struct cvmx_pemx_int_sum_cn61xx cn66xx;
1645        struct cvmx_pemx_int_sum_cn61xx cn68xx;
1646        struct cvmx_pemx_int_sum_cn61xx cn68xxp1;
1647        struct cvmx_pemx_int_sum_cn61xx cn70xx;
1648        struct cvmx_pemx_int_sum_cn61xx cn70xxp1;
1649        struct cvmx_pemx_int_sum_cn73xx {
1650                u64 intd : 1;
1651                u64 intc : 1;
1652                u64 intb : 1;
1653                u64 inta : 1;
1654                u64 reserved_14_59 : 46;
1655                u64 crs_dr : 1;
1656                u64 crs_er : 1;
1657                u64 rdlk : 1;
1658                u64 reserved_10_10 : 1;
1659                u64 un_bx : 1;
1660                u64 un_b2 : 1;
1661                u64 un_b1 : 1;
1662                u64 up_bx : 1;
1663                u64 up_b2 : 1;
1664                u64 up_b1 : 1;
1665                u64 reserved_3_3 : 1;
1666                u64 pmei : 1;
1667                u64 se : 1;
1668                u64 aeri : 1;
1669        } cn73xx;
1670        struct cvmx_pemx_int_sum_cn73xx cn78xx;
1671        struct cvmx_pemx_int_sum_cn73xx cn78xxp1;
1672        struct cvmx_pemx_int_sum_cn61xx cnf71xx;
1673        struct cvmx_pemx_int_sum_cn73xx cnf75xx;
1674};
1675
1676typedef union cvmx_pemx_int_sum cvmx_pemx_int_sum_t;
1677
1678/**
1679 * cvmx_pem#_on
1680 *
1681 * This register indicates that PEM is configured and ready.
1682 *
1683 */
1684union cvmx_pemx_on {
1685        u64 u64;
1686        struct cvmx_pemx_on_s {
1687                u64 reserved_2_63 : 62;
1688                u64 pemoor : 1;
1689                u64 pemon : 1;
1690        } s;
1691        struct cvmx_pemx_on_s cn70xx;
1692        struct cvmx_pemx_on_s cn70xxp1;
1693        struct cvmx_pemx_on_s cn73xx;
1694        struct cvmx_pemx_on_s cn78xx;
1695        struct cvmx_pemx_on_s cn78xxp1;
1696        struct cvmx_pemx_on_s cnf75xx;
1697};
1698
1699typedef union cvmx_pemx_on cvmx_pemx_on_t;
1700
1701/**
1702 * cvmx_pem#_p2n_bar0_start
1703 *
1704 * This register specifies the starting address for memory requests that are to be forwarded to
1705 * the SLI in RC mode.
1706 */
1707union cvmx_pemx_p2n_bar0_start {
1708        u64 u64;
1709        struct cvmx_pemx_p2n_bar0_start_s {
1710                u64 reserved_0_63 : 64;
1711        } s;
1712        struct cvmx_pemx_p2n_bar0_start_cn61xx {
1713                u64 addr : 50;
1714                u64 reserved_0_13 : 14;
1715        } cn61xx;
1716        struct cvmx_pemx_p2n_bar0_start_cn61xx cn63xx;
1717        struct cvmx_pemx_p2n_bar0_start_cn61xx cn63xxp1;
1718        struct cvmx_pemx_p2n_bar0_start_cn61xx cn66xx;
1719        struct cvmx_pemx_p2n_bar0_start_cn61xx cn68xx;
1720        struct cvmx_pemx_p2n_bar0_start_cn61xx cn68xxp1;
1721        struct cvmx_pemx_p2n_bar0_start_cn61xx cn70xx;
1722        struct cvmx_pemx_p2n_bar0_start_cn61xx cn70xxp1;
1723        struct cvmx_pemx_p2n_bar0_start_cn73xx {
1724                u64 addr : 41;
1725                u64 reserved_0_22 : 23;
1726        } cn73xx;
1727        struct cvmx_pemx_p2n_bar0_start_cn73xx cn78xx;
1728        struct cvmx_pemx_p2n_bar0_start_cn78xxp1 {
1729                u64 addr : 49;
1730                u64 reserved_0_14 : 15;
1731        } cn78xxp1;
1732        struct cvmx_pemx_p2n_bar0_start_cn61xx cnf71xx;
1733        struct cvmx_pemx_p2n_bar0_start_cn73xx cnf75xx;
1734};
1735
1736typedef union cvmx_pemx_p2n_bar0_start cvmx_pemx_p2n_bar0_start_t;
1737
1738/**
1739 * cvmx_pem#_p2n_bar1_start
1740 *
1741 * This register specifies the starting address for memory requests that are to be forwarded to
1742 * the SLI in RC mode.
1743 */
1744union cvmx_pemx_p2n_bar1_start {
1745        u64 u64;
1746        struct cvmx_pemx_p2n_bar1_start_s {
1747                u64 addr : 38;
1748                u64 reserved_0_25 : 26;
1749        } s;
1750        struct cvmx_pemx_p2n_bar1_start_s cn61xx;
1751        struct cvmx_pemx_p2n_bar1_start_s cn63xx;
1752        struct cvmx_pemx_p2n_bar1_start_s cn63xxp1;
1753        struct cvmx_pemx_p2n_bar1_start_s cn66xx;
1754        struct cvmx_pemx_p2n_bar1_start_s cn68xx;
1755        struct cvmx_pemx_p2n_bar1_start_s cn68xxp1;
1756        struct cvmx_pemx_p2n_bar1_start_s cn70xx;
1757        struct cvmx_pemx_p2n_bar1_start_s cn70xxp1;
1758        struct cvmx_pemx_p2n_bar1_start_s cn73xx;
1759        struct cvmx_pemx_p2n_bar1_start_s cn78xx;
1760        struct cvmx_pemx_p2n_bar1_start_s cn78xxp1;
1761        struct cvmx_pemx_p2n_bar1_start_s cnf71xx;
1762        struct cvmx_pemx_p2n_bar1_start_s cnf75xx;
1763};
1764
1765typedef union cvmx_pemx_p2n_bar1_start cvmx_pemx_p2n_bar1_start_t;
1766
1767/**
1768 * cvmx_pem#_p2n_bar2_start
1769 *
1770 * This register specifies the starting address for memory requests that are to be forwarded to
1771 * the SLI in RC mode.
1772 */
1773union cvmx_pemx_p2n_bar2_start {
1774        u64 u64;
1775        struct cvmx_pemx_p2n_bar2_start_s {
1776                u64 reserved_0_63 : 64;
1777        } s;
1778        struct cvmx_pemx_p2n_bar2_start_cn61xx {
1779                u64 addr : 23;
1780                u64 reserved_0_40 : 41;
1781        } cn61xx;
1782        struct cvmx_pemx_p2n_bar2_start_cn61xx cn63xx;
1783        struct cvmx_pemx_p2n_bar2_start_cn61xx cn63xxp1;
1784        struct cvmx_pemx_p2n_bar2_start_cn61xx cn66xx;
1785        struct cvmx_pemx_p2n_bar2_start_cn61xx cn68xx;
1786        struct cvmx_pemx_p2n_bar2_start_cn61xx cn68xxp1;
1787        struct cvmx_pemx_p2n_bar2_start_cn61xx cn70xx;
1788        struct cvmx_pemx_p2n_bar2_start_cn61xx cn70xxp1;
1789        struct cvmx_pemx_p2n_bar2_start_cn73xx {
1790                u64 addr : 19;
1791                u64 reserved_0_44 : 45;
1792        } cn73xx;
1793        struct cvmx_pemx_p2n_bar2_start_cn73xx cn78xx;
1794        struct cvmx_pemx_p2n_bar2_start_cn73xx cn78xxp1;
1795        struct cvmx_pemx_p2n_bar2_start_cn61xx cnf71xx;
1796        struct cvmx_pemx_p2n_bar2_start_cn73xx cnf75xx;
1797};
1798
1799typedef union cvmx_pemx_p2n_bar2_start cvmx_pemx_p2n_bar2_start_t;
1800
1801/**
1802 * cvmx_pem#_p2p_bar#_end
1803 *
1804 * This register specifies the ending address for memory requests that are to be forwarded to the
1805 * PCIe peer port.
1806 */
1807union cvmx_pemx_p2p_barx_end {
1808        u64 u64;
1809        struct cvmx_pemx_p2p_barx_end_s {
1810                u64 addr : 52;
1811                u64 reserved_0_11 : 12;
1812        } s;
1813        struct cvmx_pemx_p2p_barx_end_s cn63xx;
1814        struct cvmx_pemx_p2p_barx_end_s cn63xxp1;
1815        struct cvmx_pemx_p2p_barx_end_s cn66xx;
1816        struct cvmx_pemx_p2p_barx_end_s cn68xx;
1817        struct cvmx_pemx_p2p_barx_end_s cn68xxp1;
1818        struct cvmx_pemx_p2p_barx_end_s cn73xx;
1819        struct cvmx_pemx_p2p_barx_end_s cn78xx;
1820        struct cvmx_pemx_p2p_barx_end_s cn78xxp1;
1821        struct cvmx_pemx_p2p_barx_end_s cnf75xx;
1822};
1823
1824typedef union cvmx_pemx_p2p_barx_end cvmx_pemx_p2p_barx_end_t;
1825
1826/**
1827 * cvmx_pem#_p2p_bar#_start
1828 *
1829 * This register specifies the starting address for memory requests that are to be forwarded to
1830 * the PCIe peer port.
1831 */
1832union cvmx_pemx_p2p_barx_start {
1833        u64 u64;
1834        struct cvmx_pemx_p2p_barx_start_s {
1835                u64 addr : 52;
1836                u64 reserved_2_11 : 10;
1837                u64 dst : 2;
1838        } s;
1839        struct cvmx_pemx_p2p_barx_start_cn63xx {
1840                u64 addr : 52;
1841                u64 reserved_0_11 : 12;
1842        } cn63xx;
1843        struct cvmx_pemx_p2p_barx_start_cn63xx cn63xxp1;
1844        struct cvmx_pemx_p2p_barx_start_cn63xx cn66xx;
1845        struct cvmx_pemx_p2p_barx_start_cn63xx cn68xx;
1846        struct cvmx_pemx_p2p_barx_start_cn63xx cn68xxp1;
1847        struct cvmx_pemx_p2p_barx_start_s cn73xx;
1848        struct cvmx_pemx_p2p_barx_start_s cn78xx;
1849        struct cvmx_pemx_p2p_barx_start_s cn78xxp1;
1850        struct cvmx_pemx_p2p_barx_start_s cnf75xx;
1851};
1852
1853typedef union cvmx_pemx_p2p_barx_start cvmx_pemx_p2p_barx_start_t;
1854
1855/**
1856 * cvmx_pem#_qlm
1857 *
1858 * This register configures the PEM3 QLM.
1859 *
1860 */
1861union cvmx_pemx_qlm {
1862        u64 u64;
1863        struct cvmx_pemx_qlm_s {
1864                u64 reserved_0_63 : 64;
1865        } s;
1866        struct cvmx_pemx_qlm_cn73xx {
1867                u64 reserved_1_63 : 63;
1868                u64 pemdlmsel : 1;
1869        } cn73xx;
1870        struct cvmx_pemx_qlm_cn78xx {
1871                u64 reserved_1_63 : 63;
1872                u64 pem3qlm : 1;
1873        } cn78xx;
1874        struct cvmx_pemx_qlm_cn78xx cn78xxp1;
1875        struct cvmx_pemx_qlm_cn73xx cnf75xx;
1876};
1877
1878typedef union cvmx_pemx_qlm cvmx_pemx_qlm_t;
1879
1880/**
1881 * cvmx_pem#_spi_ctl
1882 *
1883 * PEM#_SPI_CTL register.
1884 *
1885 */
1886union cvmx_pemx_spi_ctl {
1887        u64 u64;
1888        struct cvmx_pemx_spi_ctl_s {
1889                u64 reserved_14_63 : 50;
1890                u64 start_busy : 1;
1891                u64 tvalid : 1;
1892                u64 cmd : 3;
1893                u64 adr : 9;
1894        } s;
1895        struct cvmx_pemx_spi_ctl_s cn70xx;
1896        struct cvmx_pemx_spi_ctl_s cn70xxp1;
1897        struct cvmx_pemx_spi_ctl_s cn73xx;
1898        struct cvmx_pemx_spi_ctl_s cn78xx;
1899        struct cvmx_pemx_spi_ctl_s cn78xxp1;
1900        struct cvmx_pemx_spi_ctl_s cnf75xx;
1901};
1902
1903typedef union cvmx_pemx_spi_ctl cvmx_pemx_spi_ctl_t;
1904
1905/**
1906 * cvmx_pem#_spi_data
1907 *
1908 * This register contains the most recently read or written SPI data and is unpredictable upon
1909 * power-up. Is valid after a PEM()_SPI_CTL[CMD]=READ/RDSR when hardware clears
1910 * PEM()_SPI_CTL[START_BUSY]. Is written after a PEM()_SPI_CTL[CMD]=WRITE/WRSR
1911 * when hardware clears PEM()_SPI_CTL[START_BUSY].
1912 */
1913union cvmx_pemx_spi_data {
1914        u64 u64;
1915        struct cvmx_pemx_spi_data_s {
1916                u64 preamble : 16;
1917                u64 reserved_45_47 : 3;
1918                u64 cs2 : 1;
1919                u64 adr : 12;
1920                u64 data : 32;
1921        } s;
1922        struct cvmx_pemx_spi_data_s cn70xx;
1923        struct cvmx_pemx_spi_data_s cn70xxp1;
1924        struct cvmx_pemx_spi_data_s cn73xx;
1925        struct cvmx_pemx_spi_data_s cn78xx;
1926        struct cvmx_pemx_spi_data_s cn78xxp1;
1927        struct cvmx_pemx_spi_data_s cnf75xx;
1928};
1929
1930typedef union cvmx_pemx_spi_data cvmx_pemx_spi_data_t;
1931
1932/**
1933 * cvmx_pem#_strap
1934 *
1935 * "Below are in pesc_csr
1936 * The input strapping pins"
1937 */
1938union cvmx_pemx_strap {
1939        u64 u64;
1940        struct cvmx_pemx_strap_s {
1941                u64 reserved_5_63 : 59;
1942                u64 miopem2dlm5sel : 1;
1943                u64 pilaneswap : 1;
1944                u64 reserved_0_2 : 3;
1945        } s;
1946        struct cvmx_pemx_strap_cn70xx {
1947                u64 reserved_4_63 : 60;
1948                u64 pilaneswap : 1;
1949                u64 pimode : 3;
1950        } cn70xx;
1951        struct cvmx_pemx_strap_cn70xx cn70xxp1;
1952        struct cvmx_pemx_strap_cn73xx {
1953                u64 reserved_5_63 : 59;
1954                u64 miopem2dlm5sel : 1;
1955                u64 pilaneswap : 1;
1956                u64 pilanes8 : 1;
1957                u64 pimode : 2;
1958        } cn73xx;
1959        struct cvmx_pemx_strap_cn78xx {
1960                u64 reserved_4_63 : 60;
1961                u64 pilaneswap : 1;
1962                u64 pilanes8 : 1;
1963                u64 pimode : 2;
1964        } cn78xx;
1965        struct cvmx_pemx_strap_cn78xx cn78xxp1;
1966        struct cvmx_pemx_strap_cnf75xx {
1967                u64 reserved_5_63 : 59;
1968                u64 miopem2dlm5sel : 1;
1969                u64 pilaneswap : 1;
1970                u64 pilanes4 : 1;
1971                u64 pimode : 2;
1972        } cnf75xx;
1973};
1974
1975typedef union cvmx_pemx_strap cvmx_pemx_strap_t;
1976
1977/**
1978 * cvmx_pem#_tlp_credits
1979 *
1980 * This register specifies the number of credits for use in moving TLPs. When this register is
1981 * written, the credit values are reset to the register value. A write to this register should
1982 * take place before traffic flow starts.
1983 */
1984union cvmx_pemx_tlp_credits {
1985        u64 u64;
1986        struct cvmx_pemx_tlp_credits_s {
1987                u64 reserved_56_63 : 8;
1988                u64 peai_ppf : 8;
1989                u64 pem_cpl : 8;
1990                u64 pem_np : 8;
1991                u64 pem_p : 8;
1992                u64 sli_cpl : 8;
1993                u64 sli_np : 8;
1994                u64 sli_p : 8;
1995        } s;
1996        struct cvmx_pemx_tlp_credits_cn61xx {
1997                u64 reserved_56_63 : 8;
1998                u64 peai_ppf : 8;
1999                u64 reserved_24_47 : 24;
2000                u64 sli_cpl : 8;
2001                u64 sli_np : 8;
2002                u64 sli_p : 8;
2003        } cn61xx;
2004        struct cvmx_pemx_tlp_credits_s cn63xx;
2005        struct cvmx_pemx_tlp_credits_s cn63xxp1;
2006        struct cvmx_pemx_tlp_credits_s cn66xx;
2007        struct cvmx_pemx_tlp_credits_s cn68xx;
2008        struct cvmx_pemx_tlp_credits_s cn68xxp1;
2009        struct cvmx_pemx_tlp_credits_cn61xx cn70xx;
2010        struct cvmx_pemx_tlp_credits_cn61xx cn70xxp1;
2011        struct cvmx_pemx_tlp_credits_cn73xx {
2012                u64 reserved_48_63 : 16;
2013                u64 pem_cpl : 8;
2014                u64 pem_np : 8;
2015                u64 pem_p : 8;
2016                u64 sli_cpl : 8;
2017                u64 sli_np : 8;
2018                u64 sli_p : 8;
2019        } cn73xx;
2020        struct cvmx_pemx_tlp_credits_cn73xx cn78xx;
2021        struct cvmx_pemx_tlp_credits_cn73xx cn78xxp1;
2022        struct cvmx_pemx_tlp_credits_cn61xx cnf71xx;
2023        struct cvmx_pemx_tlp_credits_cn73xx cnf75xx;
2024};
2025
2026typedef union cvmx_pemx_tlp_credits cvmx_pemx_tlp_credits_t;
2027
2028#endif
2029