uboot/arch/mips/mach-octeon/include/mach/cvmx-dpi-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 dpi.
   7 */
   8
   9#ifndef __CVMX_DPI_DEFS_H__
  10#define __CVMX_DPI_DEFS_H__
  11
  12#define CVMX_DPI_BIST_STATUS                 (0x0001DF0000000000ull)
  13#define CVMX_DPI_CTL                         (0x0001DF0000000040ull)
  14#define CVMX_DPI_DMAX_COUNTS(offset)         (0x0001DF0000000300ull + ((offset) & 7) * 8)
  15#define CVMX_DPI_DMAX_DBELL(offset)          (0x0001DF0000000200ull + ((offset) & 7) * 8)
  16#define CVMX_DPI_DMAX_ERR_RSP_STATUS(offset) (0x0001DF0000000A80ull + ((offset) & 7) * 8)
  17#define CVMX_DPI_DMAX_IBUFF_SADDR(offset)    (0x0001DF0000000280ull + ((offset) & 7) * 8)
  18#define CVMX_DPI_DMAX_IFLIGHT(offset)        (0x0001DF0000000A00ull + ((offset) & 7) * 8)
  19#define CVMX_DPI_DMAX_NADDR(offset)          (0x0001DF0000000380ull + ((offset) & 7) * 8)
  20#define CVMX_DPI_DMAX_REQBNK0(offset)        (0x0001DF0000000400ull + ((offset) & 7) * 8)
  21#define CVMX_DPI_DMAX_REQBNK1(offset)        (0x0001DF0000000480ull + ((offset) & 7) * 8)
  22#define CVMX_DPI_DMAX_REQQ_CTL(offset)       (0x0001DF0000000180ull + ((offset) & 7) * 8)
  23#define CVMX_DPI_DMA_CONTROL                 (0x0001DF0000000048ull)
  24#define CVMX_DPI_DMA_ENGX_EN(offset)         (0x0001DF0000000080ull + ((offset) & 7) * 8)
  25static inline u64 CVMX_DPI_DMA_PPX_CNT(unsigned long offset)
  26{
  27        switch (cvmx_get_octeon_family()) {
  28        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
  29        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
  30        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
  31                return 0x0001DF0000000B00ull + (offset) * 8;
  32        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
  33                return 0x0001DF0000000B00ull + (offset) * 8;
  34        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
  35        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
  36                return 0x0001DF0000000C00ull + (offset) * 8;
  37        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
  38                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
  39                        return 0x0001DF0000000C00ull + (offset) * 8;
  40                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
  41                        return 0x0001DF0000000C00ull + (offset) * 8;
  42        }
  43        return 0x0001DF0000000C00ull + (offset) * 8;
  44}
  45
  46#define CVMX_DPI_DMA_PP_INT           (0x0001DF0000000038ull)
  47#define CVMX_DPI_ECC_CTL              (0x0001DF0000000018ull)
  48#define CVMX_DPI_ECC_INT              (0x0001DF0000000020ull)
  49#define CVMX_DPI_ENGX_BUF(offset)     (0x0001DF0000000880ull + ((offset) & 7) * 8)
  50#define CVMX_DPI_INFO_REG             (0x0001DF0000000980ull)
  51#define CVMX_DPI_INT_EN               (0x0001DF0000000010ull)
  52#define CVMX_DPI_INT_REG              (0x0001DF0000000008ull)
  53#define CVMX_DPI_NCBX_CFG(offset)     (0x0001DF0000000800ull)
  54#define CVMX_DPI_NCB_CTL              (0x0001DF0000000028ull)
  55#define CVMX_DPI_PINT_INFO            (0x0001DF0000000830ull)
  56#define CVMX_DPI_PKT_ERR_RSP          (0x0001DF0000000078ull)
  57#define CVMX_DPI_REQ_ERR_RSP          (0x0001DF0000000058ull)
  58#define CVMX_DPI_REQ_ERR_RSP_EN       (0x0001DF0000000068ull)
  59#define CVMX_DPI_REQ_ERR_RST          (0x0001DF0000000060ull)
  60#define CVMX_DPI_REQ_ERR_RST_EN       (0x0001DF0000000070ull)
  61#define CVMX_DPI_REQ_ERR_SKIP_COMP    (0x0001DF0000000838ull)
  62#define CVMX_DPI_REQ_GBL_EN           (0x0001DF0000000050ull)
  63#define CVMX_DPI_SLI_PRTX_CFG(offset) (0x0001DF0000000900ull + ((offset) & 3) * 8)
  64static inline u64 CVMX_DPI_SLI_PRTX_ERR(unsigned long offset)
  65{
  66        switch (cvmx_get_octeon_family()) {
  67        case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
  68        case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
  69        case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
  70        case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
  71                if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
  72                        return 0x0001DF0000000920ull + (offset) * 8;
  73                if (OCTEON_IS_MODEL(OCTEON_CN78XX))
  74                        return 0x0001DF0000000920ull + (offset) * 8;
  75                return 0x0001DF0000000920ull + (offset) * 8;
  76        case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
  77        case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
  78        case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
  79
  80                if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS1))
  81                        return 0x0001DF0000000928ull + (offset) * 8;
  82
  83                if (OCTEON_IS_MODEL(OCTEON_CN68XX_PASS2))
  84                        return 0x0001DF0000000920ull + (offset) * 8;
  85                return 0x0001DF0000000920ull + (offset) * 8;
  86        case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
  87                return 0x0001DF0000000920ull + (offset) * 8;
  88        case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
  89                return 0x0001DF0000000928ull + (offset) * 8;
  90        }
  91        return 0x0001DF0000000920ull + (offset) * 8;
  92}
  93
  94#define CVMX_DPI_SLI_PRTX_ERR_INFO(offset) (0x0001DF0000000940ull + ((offset) & 3) * 8)
  95#define CVMX_DPI_SRIO_RX_BELLX(offset)     (0x0001DF0000080200ull + ((offset) & 31) * 8)
  96#define CVMX_DPI_SRIO_RX_BELL_SEQX(offset) (0x0001DF0000080400ull + ((offset) & 31) * 8)
  97#define CVMX_DPI_SWA_Q_VMID                (0x0001DF0000000030ull)
  98
  99/**
 100 * cvmx_dpi_bist_status
 101 *
 102 * This is the built-in self-test (BIST) status register. Each bit is the BIST result of an
 103 * individual memory (per bit, 0 = pass and 1 = fail).
 104 */
 105union cvmx_dpi_bist_status {
 106        u64 u64;
 107        struct cvmx_dpi_bist_status_s {
 108                u64 reserved_57_63 : 7;
 109                u64 bist : 57;
 110        } s;
 111        struct cvmx_dpi_bist_status_cn61xx {
 112                u64 reserved_47_63 : 17;
 113                u64 bist : 47;
 114        } cn61xx;
 115        struct cvmx_dpi_bist_status_cn63xx {
 116                u64 reserved_45_63 : 19;
 117                u64 bist : 45;
 118        } cn63xx;
 119        struct cvmx_dpi_bist_status_cn63xxp1 {
 120                u64 reserved_37_63 : 27;
 121                u64 bist : 37;
 122        } cn63xxp1;
 123        struct cvmx_dpi_bist_status_cn61xx cn66xx;
 124        struct cvmx_dpi_bist_status_cn63xx cn68xx;
 125        struct cvmx_dpi_bist_status_cn63xx cn68xxp1;
 126        struct cvmx_dpi_bist_status_cn61xx cn70xx;
 127        struct cvmx_dpi_bist_status_cn61xx cn70xxp1;
 128        struct cvmx_dpi_bist_status_s cn73xx;
 129        struct cvmx_dpi_bist_status_s cn78xx;
 130        struct cvmx_dpi_bist_status_cn78xxp1 {
 131                u64 reserved_51_63 : 13;
 132                u64 bist : 51;
 133        } cn78xxp1;
 134        struct cvmx_dpi_bist_status_cn61xx cnf71xx;
 135        struct cvmx_dpi_bist_status_s cnf75xx;
 136};
 137
 138typedef union cvmx_dpi_bist_status cvmx_dpi_bist_status_t;
 139
 140/**
 141 * cvmx_dpi_ctl
 142 *
 143 * This register provides the enable bit for the DMA and packet state machines.
 144 *
 145 */
 146union cvmx_dpi_ctl {
 147        u64 u64;
 148        struct cvmx_dpi_ctl_s {
 149                u64 reserved_2_63 : 62;
 150                u64 clk : 1;
 151                u64 en : 1;
 152        } s;
 153        struct cvmx_dpi_ctl_cn61xx {
 154                u64 reserved_1_63 : 63;
 155                u64 en : 1;
 156        } cn61xx;
 157        struct cvmx_dpi_ctl_s cn63xx;
 158        struct cvmx_dpi_ctl_s cn63xxp1;
 159        struct cvmx_dpi_ctl_s cn66xx;
 160        struct cvmx_dpi_ctl_s cn68xx;
 161        struct cvmx_dpi_ctl_s cn68xxp1;
 162        struct cvmx_dpi_ctl_cn61xx cn70xx;
 163        struct cvmx_dpi_ctl_cn61xx cn70xxp1;
 164        struct cvmx_dpi_ctl_cn61xx cn73xx;
 165        struct cvmx_dpi_ctl_cn61xx cn78xx;
 166        struct cvmx_dpi_ctl_cn61xx cn78xxp1;
 167        struct cvmx_dpi_ctl_cn61xx cnf71xx;
 168        struct cvmx_dpi_ctl_cn61xx cnf75xx;
 169};
 170
 171typedef union cvmx_dpi_ctl cvmx_dpi_ctl_t;
 172
 173/**
 174 * cvmx_dpi_dma#_counts
 175 *
 176 * These registers provide values for determining the number of instructions in the local
 177 * instruction FIFO.
 178 */
 179union cvmx_dpi_dmax_counts {
 180        u64 u64;
 181        struct cvmx_dpi_dmax_counts_s {
 182                u64 reserved_39_63 : 25;
 183                u64 fcnt : 7;
 184                u64 dbell : 32;
 185        } s;
 186        struct cvmx_dpi_dmax_counts_s cn61xx;
 187        struct cvmx_dpi_dmax_counts_s cn63xx;
 188        struct cvmx_dpi_dmax_counts_s cn63xxp1;
 189        struct cvmx_dpi_dmax_counts_s cn66xx;
 190        struct cvmx_dpi_dmax_counts_s cn68xx;
 191        struct cvmx_dpi_dmax_counts_s cn68xxp1;
 192        struct cvmx_dpi_dmax_counts_s cn70xx;
 193        struct cvmx_dpi_dmax_counts_s cn70xxp1;
 194        struct cvmx_dpi_dmax_counts_s cn73xx;
 195        struct cvmx_dpi_dmax_counts_s cn78xx;
 196        struct cvmx_dpi_dmax_counts_s cn78xxp1;
 197        struct cvmx_dpi_dmax_counts_s cnf71xx;
 198        struct cvmx_dpi_dmax_counts_s cnf75xx;
 199};
 200
 201typedef union cvmx_dpi_dmax_counts cvmx_dpi_dmax_counts_t;
 202
 203/**
 204 * cvmx_dpi_dma#_dbell
 205 *
 206 * This is the door bell register for the eight DMA instruction queues.
 207 *
 208 */
 209union cvmx_dpi_dmax_dbell {
 210        u64 u64;
 211        struct cvmx_dpi_dmax_dbell_s {
 212                u64 reserved_16_63 : 48;
 213                u64 dbell : 16;
 214        } s;
 215        struct cvmx_dpi_dmax_dbell_s cn61xx;
 216        struct cvmx_dpi_dmax_dbell_s cn63xx;
 217        struct cvmx_dpi_dmax_dbell_s cn63xxp1;
 218        struct cvmx_dpi_dmax_dbell_s cn66xx;
 219        struct cvmx_dpi_dmax_dbell_s cn68xx;
 220        struct cvmx_dpi_dmax_dbell_s cn68xxp1;
 221        struct cvmx_dpi_dmax_dbell_s cn70xx;
 222        struct cvmx_dpi_dmax_dbell_s cn70xxp1;
 223        struct cvmx_dpi_dmax_dbell_s cn73xx;
 224        struct cvmx_dpi_dmax_dbell_s cn78xx;
 225        struct cvmx_dpi_dmax_dbell_s cn78xxp1;
 226        struct cvmx_dpi_dmax_dbell_s cnf71xx;
 227        struct cvmx_dpi_dmax_dbell_s cnf75xx;
 228};
 229
 230typedef union cvmx_dpi_dmax_dbell cvmx_dpi_dmax_dbell_t;
 231
 232/**
 233 * cvmx_dpi_dma#_err_rsp_status
 234 */
 235union cvmx_dpi_dmax_err_rsp_status {
 236        u64 u64;
 237        struct cvmx_dpi_dmax_err_rsp_status_s {
 238                u64 reserved_6_63 : 58;
 239                u64 status : 6;
 240        } s;
 241        struct cvmx_dpi_dmax_err_rsp_status_s cn61xx;
 242        struct cvmx_dpi_dmax_err_rsp_status_s cn66xx;
 243        struct cvmx_dpi_dmax_err_rsp_status_s cn68xx;
 244        struct cvmx_dpi_dmax_err_rsp_status_s cn68xxp1;
 245        struct cvmx_dpi_dmax_err_rsp_status_s cn70xx;
 246        struct cvmx_dpi_dmax_err_rsp_status_s cn70xxp1;
 247        struct cvmx_dpi_dmax_err_rsp_status_s cn73xx;
 248        struct cvmx_dpi_dmax_err_rsp_status_s cn78xx;
 249        struct cvmx_dpi_dmax_err_rsp_status_s cn78xxp1;
 250        struct cvmx_dpi_dmax_err_rsp_status_s cnf71xx;
 251        struct cvmx_dpi_dmax_err_rsp_status_s cnf75xx;
 252};
 253
 254typedef union cvmx_dpi_dmax_err_rsp_status cvmx_dpi_dmax_err_rsp_status_t;
 255
 256/**
 257 * cvmx_dpi_dma#_ibuff_saddr
 258 *
 259 * These registers provide the address to start reading instructions for the eight DMA
 260 * instruction queues.
 261 */
 262union cvmx_dpi_dmax_ibuff_saddr {
 263        u64 u64;
 264        struct cvmx_dpi_dmax_ibuff_saddr_s {
 265                u64 reserved_62_63 : 2;
 266                u64 csize : 14;
 267                u64 reserved_0_47 : 48;
 268        } s;
 269        struct cvmx_dpi_dmax_ibuff_saddr_cn61xx {
 270                u64 reserved_62_63 : 2;
 271                u64 csize : 14;
 272                u64 reserved_41_47 : 7;
 273                u64 idle : 1;
 274                u64 reserved_36_39 : 4;
 275                u64 saddr : 29;
 276                u64 reserved_0_6 : 7;
 277        } cn61xx;
 278        struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xx;
 279        struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn63xxp1;
 280        struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn66xx;
 281        struct cvmx_dpi_dmax_ibuff_saddr_cn68xx {
 282                u64 reserved_62_63 : 2;
 283                u64 csize : 14;
 284                u64 reserved_41_47 : 7;
 285                u64 idle : 1;
 286                u64 saddr : 33;
 287                u64 reserved_0_6 : 7;
 288        } cn68xx;
 289        struct cvmx_dpi_dmax_ibuff_saddr_cn68xx cn68xxp1;
 290        struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn70xx;
 291        struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cn70xxp1;
 292        struct cvmx_dpi_dmax_ibuff_saddr_cn73xx {
 293                u64 idle : 1;
 294                u64 reserved_62_62 : 1;
 295                u64 csize : 14;
 296                u64 reserved_42_47 : 6;
 297                u64 saddr : 35;
 298                u64 reserved_0_6 : 7;
 299        } cn73xx;
 300        struct cvmx_dpi_dmax_ibuff_saddr_cn73xx cn78xx;
 301        struct cvmx_dpi_dmax_ibuff_saddr_cn73xx cn78xxp1;
 302        struct cvmx_dpi_dmax_ibuff_saddr_cn61xx cnf71xx;
 303        struct cvmx_dpi_dmax_ibuff_saddr_cn73xx cnf75xx;
 304};
 305
 306typedef union cvmx_dpi_dmax_ibuff_saddr cvmx_dpi_dmax_ibuff_saddr_t;
 307
 308/**
 309 * cvmx_dpi_dma#_iflight
 310 */
 311union cvmx_dpi_dmax_iflight {
 312        u64 u64;
 313        struct cvmx_dpi_dmax_iflight_s {
 314                u64 reserved_3_63 : 61;
 315                u64 cnt : 3;
 316        } s;
 317        struct cvmx_dpi_dmax_iflight_s cn61xx;
 318        struct cvmx_dpi_dmax_iflight_s cn66xx;
 319        struct cvmx_dpi_dmax_iflight_s cn68xx;
 320        struct cvmx_dpi_dmax_iflight_s cn68xxp1;
 321        struct cvmx_dpi_dmax_iflight_s cn70xx;
 322        struct cvmx_dpi_dmax_iflight_s cn70xxp1;
 323        struct cvmx_dpi_dmax_iflight_s cn73xx;
 324        struct cvmx_dpi_dmax_iflight_s cn78xx;
 325        struct cvmx_dpi_dmax_iflight_s cn78xxp1;
 326        struct cvmx_dpi_dmax_iflight_s cnf71xx;
 327        struct cvmx_dpi_dmax_iflight_s cnf75xx;
 328};
 329
 330typedef union cvmx_dpi_dmax_iflight cvmx_dpi_dmax_iflight_t;
 331
 332/**
 333 * cvmx_dpi_dma#_naddr
 334 *
 335 * These registers provide the L2C addresses to read the next Ichunk data.
 336 *
 337 */
 338union cvmx_dpi_dmax_naddr {
 339        u64 u64;
 340        struct cvmx_dpi_dmax_naddr_s {
 341                u64 reserved_42_63 : 22;
 342                u64 addr : 42;
 343        } s;
 344        struct cvmx_dpi_dmax_naddr_cn61xx {
 345                u64 reserved_36_63 : 28;
 346                u64 addr : 36;
 347        } cn61xx;
 348        struct cvmx_dpi_dmax_naddr_cn61xx cn63xx;
 349        struct cvmx_dpi_dmax_naddr_cn61xx cn63xxp1;
 350        struct cvmx_dpi_dmax_naddr_cn61xx cn66xx;
 351        struct cvmx_dpi_dmax_naddr_cn68xx {
 352                u64 reserved_40_63 : 24;
 353                u64 addr : 40;
 354        } cn68xx;
 355        struct cvmx_dpi_dmax_naddr_cn68xx cn68xxp1;
 356        struct cvmx_dpi_dmax_naddr_cn61xx cn70xx;
 357        struct cvmx_dpi_dmax_naddr_cn61xx cn70xxp1;
 358        struct cvmx_dpi_dmax_naddr_s cn73xx;
 359        struct cvmx_dpi_dmax_naddr_s cn78xx;
 360        struct cvmx_dpi_dmax_naddr_s cn78xxp1;
 361        struct cvmx_dpi_dmax_naddr_cn61xx cnf71xx;
 362        struct cvmx_dpi_dmax_naddr_s cnf75xx;
 363};
 364
 365typedef union cvmx_dpi_dmax_naddr cvmx_dpi_dmax_naddr_t;
 366
 367/**
 368 * cvmx_dpi_dma#_reqbnk0
 369 *
 370 * These registers provide the current contents of the request state machine, bank 0.
 371 *
 372 */
 373union cvmx_dpi_dmax_reqbnk0 {
 374        u64 u64;
 375        struct cvmx_dpi_dmax_reqbnk0_s {
 376                u64 state : 64;
 377        } s;
 378        struct cvmx_dpi_dmax_reqbnk0_s cn61xx;
 379        struct cvmx_dpi_dmax_reqbnk0_s cn63xx;
 380        struct cvmx_dpi_dmax_reqbnk0_s cn63xxp1;
 381        struct cvmx_dpi_dmax_reqbnk0_s cn66xx;
 382        struct cvmx_dpi_dmax_reqbnk0_s cn68xx;
 383        struct cvmx_dpi_dmax_reqbnk0_s cn68xxp1;
 384        struct cvmx_dpi_dmax_reqbnk0_s cn70xx;
 385        struct cvmx_dpi_dmax_reqbnk0_s cn70xxp1;
 386        struct cvmx_dpi_dmax_reqbnk0_s cn73xx;
 387        struct cvmx_dpi_dmax_reqbnk0_s cn78xx;
 388        struct cvmx_dpi_dmax_reqbnk0_s cn78xxp1;
 389        struct cvmx_dpi_dmax_reqbnk0_s cnf71xx;
 390        struct cvmx_dpi_dmax_reqbnk0_s cnf75xx;
 391};
 392
 393typedef union cvmx_dpi_dmax_reqbnk0 cvmx_dpi_dmax_reqbnk0_t;
 394
 395/**
 396 * cvmx_dpi_dma#_reqbnk1
 397 *
 398 * These registers provide the current contents of the request state machine, bank 1.
 399 *
 400 */
 401union cvmx_dpi_dmax_reqbnk1 {
 402        u64 u64;
 403        struct cvmx_dpi_dmax_reqbnk1_s {
 404                u64 state : 64;
 405        } s;
 406        struct cvmx_dpi_dmax_reqbnk1_s cn61xx;
 407        struct cvmx_dpi_dmax_reqbnk1_s cn63xx;
 408        struct cvmx_dpi_dmax_reqbnk1_s cn63xxp1;
 409        struct cvmx_dpi_dmax_reqbnk1_s cn66xx;
 410        struct cvmx_dpi_dmax_reqbnk1_s cn68xx;
 411        struct cvmx_dpi_dmax_reqbnk1_s cn68xxp1;
 412        struct cvmx_dpi_dmax_reqbnk1_s cn70xx;
 413        struct cvmx_dpi_dmax_reqbnk1_s cn70xxp1;
 414        struct cvmx_dpi_dmax_reqbnk1_s cn73xx;
 415        struct cvmx_dpi_dmax_reqbnk1_s cn78xx;
 416        struct cvmx_dpi_dmax_reqbnk1_s cn78xxp1;
 417        struct cvmx_dpi_dmax_reqbnk1_s cnf71xx;
 418        struct cvmx_dpi_dmax_reqbnk1_s cnf75xx;
 419};
 420
 421typedef union cvmx_dpi_dmax_reqbnk1 cvmx_dpi_dmax_reqbnk1_t;
 422
 423/**
 424 * cvmx_dpi_dma#_reqq_ctl
 425 *
 426 * This register contains the control bits for transactions on the eight request queues.
 427 *
 428 */
 429union cvmx_dpi_dmax_reqq_ctl {
 430        u64 u64;
 431        struct cvmx_dpi_dmax_reqq_ctl_s {
 432                u64 reserved_9_63 : 55;
 433                u64 st_cmd : 1;
 434                u64 reserved_2_7 : 6;
 435                u64 ld_cmd : 2;
 436        } s;
 437        struct cvmx_dpi_dmax_reqq_ctl_s cn73xx;
 438        struct cvmx_dpi_dmax_reqq_ctl_s cn78xx;
 439        struct cvmx_dpi_dmax_reqq_ctl_s cn78xxp1;
 440        struct cvmx_dpi_dmax_reqq_ctl_s cnf75xx;
 441};
 442
 443typedef union cvmx_dpi_dmax_reqq_ctl cvmx_dpi_dmax_reqq_ctl_t;
 444
 445/**
 446 * cvmx_dpi_dma_control
 447 *
 448 * This register controls the operation of DMA input and output.
 449 *
 450 */
 451union cvmx_dpi_dma_control {
 452        u64 u64;
 453        struct cvmx_dpi_dma_control_s {
 454                u64 reserved_62_63 : 2;
 455                u64 dici_mode : 1;
 456                u64 pkt_en1 : 1;
 457                u64 ffp_dis : 1;
 458                u64 commit_mode : 1;
 459                u64 pkt_hp : 1;
 460                u64 pkt_en : 1;
 461                u64 reserved_54_55 : 2;
 462                u64 dma_enb : 6;
 463                u64 wqecsdis : 1;
 464                u64 wqecsoff : 7;
 465                u64 zbwcsen : 1;
 466                u64 wqecsmode : 2;
 467                u64 reserved_35_36 : 2;
 468                u64 ncb_tag : 1;
 469                u64 b0_lend : 1;
 470                u64 reserved_20_32 : 13;
 471                u64 o_add1 : 1;
 472                u64 o_ro : 1;
 473                u64 o_ns : 1;
 474                u64 o_es : 2;
 475                u64 o_mode : 1;
 476                u64 reserved_0_13 : 14;
 477        } s;
 478        struct cvmx_dpi_dma_control_cn61xx {
 479                u64 reserved_62_63 : 2;
 480                u64 dici_mode : 1;
 481                u64 pkt_en1 : 1;
 482                u64 ffp_dis : 1;
 483                u64 commit_mode : 1;
 484                u64 pkt_hp : 1;
 485                u64 pkt_en : 1;
 486                u64 reserved_54_55 : 2;
 487                u64 dma_enb : 6;
 488                u64 reserved_34_47 : 14;
 489                u64 b0_lend : 1;
 490                u64 dwb_denb : 1;
 491                u64 dwb_ichk : 9;
 492                u64 fpa_que : 3;
 493                u64 o_add1 : 1;
 494                u64 o_ro : 1;
 495                u64 o_ns : 1;
 496                u64 o_es : 2;
 497                u64 o_mode : 1;
 498                u64 reserved_0_13 : 14;
 499        } cn61xx;
 500        struct cvmx_dpi_dma_control_cn63xx {
 501                u64 reserved_61_63 : 3;
 502                u64 pkt_en1 : 1;
 503                u64 ffp_dis : 1;
 504                u64 commit_mode : 1;
 505                u64 pkt_hp : 1;
 506                u64 pkt_en : 1;
 507                u64 reserved_54_55 : 2;
 508                u64 dma_enb : 6;
 509                u64 reserved_34_47 : 14;
 510                u64 b0_lend : 1;
 511                u64 dwb_denb : 1;
 512                u64 dwb_ichk : 9;
 513                u64 fpa_que : 3;
 514                u64 o_add1 : 1;
 515                u64 o_ro : 1;
 516                u64 o_ns : 1;
 517                u64 o_es : 2;
 518                u64 o_mode : 1;
 519                u64 reserved_0_13 : 14;
 520        } cn63xx;
 521        struct cvmx_dpi_dma_control_cn63xxp1 {
 522                u64 reserved_59_63 : 5;
 523                u64 commit_mode : 1;
 524                u64 pkt_hp : 1;
 525                u64 pkt_en : 1;
 526                u64 reserved_54_55 : 2;
 527                u64 dma_enb : 6;
 528                u64 reserved_34_47 : 14;
 529                u64 b0_lend : 1;
 530                u64 dwb_denb : 1;
 531                u64 dwb_ichk : 9;
 532                u64 fpa_que : 3;
 533                u64 o_add1 : 1;
 534                u64 o_ro : 1;
 535                u64 o_ns : 1;
 536                u64 o_es : 2;
 537                u64 o_mode : 1;
 538                u64 reserved_0_13 : 14;
 539        } cn63xxp1;
 540        struct cvmx_dpi_dma_control_cn63xx cn66xx;
 541        struct cvmx_dpi_dma_control_cn61xx cn68xx;
 542        struct cvmx_dpi_dma_control_cn63xx cn68xxp1;
 543        struct cvmx_dpi_dma_control_cn61xx cn70xx;
 544        struct cvmx_dpi_dma_control_cn61xx cn70xxp1;
 545        struct cvmx_dpi_dma_control_cn73xx {
 546                u64 reserved_60_63 : 4;
 547                u64 ffp_dis : 1;
 548                u64 commit_mode : 1;
 549                u64 reserved_57_57 : 1;
 550                u64 pkt_en : 1;
 551                u64 reserved_54_55 : 2;
 552                u64 dma_enb : 6;
 553                u64 wqecsdis : 1;
 554                u64 wqecsoff : 7;
 555                u64 zbwcsen : 1;
 556                u64 wqecsmode : 2;
 557                u64 reserved_35_36 : 2;
 558                u64 ncb_tag : 1;
 559                u64 b0_lend : 1;
 560                u64 ldwb : 1;
 561                u64 aura_ichk : 12;
 562                u64 o_add1 : 1;
 563                u64 o_ro : 1;
 564                u64 o_ns : 1;
 565                u64 o_es : 2;
 566                u64 o_mode : 1;
 567                u64 reserved_0_13 : 14;
 568        } cn73xx;
 569        struct cvmx_dpi_dma_control_cn73xx cn78xx;
 570        struct cvmx_dpi_dma_control_cn73xx cn78xxp1;
 571        struct cvmx_dpi_dma_control_cn61xx cnf71xx;
 572        struct cvmx_dpi_dma_control_cn73xx cnf75xx;
 573};
 574
 575typedef union cvmx_dpi_dma_control cvmx_dpi_dma_control_t;
 576
 577/**
 578 * cvmx_dpi_dma_eng#_en
 579 *
 580 * These registers provide control for the DMA engines.
 581 *
 582 */
 583union cvmx_dpi_dma_engx_en {
 584        u64 u64;
 585        struct cvmx_dpi_dma_engx_en_s {
 586                u64 reserved_39_63 : 25;
 587                u64 eng_molr : 7;
 588                u64 reserved_8_31 : 24;
 589                u64 qen : 8;
 590        } s;
 591        struct cvmx_dpi_dma_engx_en_cn61xx {
 592                u64 reserved_8_63 : 56;
 593                u64 qen : 8;
 594        } cn61xx;
 595        struct cvmx_dpi_dma_engx_en_cn61xx cn63xx;
 596        struct cvmx_dpi_dma_engx_en_cn61xx cn63xxp1;
 597        struct cvmx_dpi_dma_engx_en_cn61xx cn66xx;
 598        struct cvmx_dpi_dma_engx_en_cn61xx cn68xx;
 599        struct cvmx_dpi_dma_engx_en_cn61xx cn68xxp1;
 600        struct cvmx_dpi_dma_engx_en_cn61xx cn70xx;
 601        struct cvmx_dpi_dma_engx_en_cn61xx cn70xxp1;
 602        struct cvmx_dpi_dma_engx_en_s cn73xx;
 603        struct cvmx_dpi_dma_engx_en_s cn78xx;
 604        struct cvmx_dpi_dma_engx_en_s cn78xxp1;
 605        struct cvmx_dpi_dma_engx_en_cn61xx cnf71xx;
 606        struct cvmx_dpi_dma_engx_en_s cnf75xx;
 607};
 608
 609typedef union cvmx_dpi_dma_engx_en cvmx_dpi_dma_engx_en_t;
 610
 611/**
 612 * cvmx_dpi_dma_pp#_cnt
 613 *
 614 * DPI_DMA_PP[0..3]_CNT  = DMA per PP Instr Done Counter
 615 * When DMA Instruction Completion Interrupt Mode DPI_DMA_CONTROL.DICI_MODE is enabled, every dma
 616 * instruction
 617 * that has the WQP=0 and a PTR value of 1..4 will incremrement DPI_DMA_PPx_CNT value-1 counter.
 618 * Instructions with WQP=0 and PTR values higher then 0x3F will still send a zero byte write.
 619 * Hardware reserves that values 5..63 for future use and will treat them as a PTR of 0 and do
 620 * nothing.
 621 */
 622union cvmx_dpi_dma_ppx_cnt {
 623        u64 u64;
 624        struct cvmx_dpi_dma_ppx_cnt_s {
 625                u64 reserved_16_63 : 48;
 626                u64 cnt : 16;
 627        } s;
 628        struct cvmx_dpi_dma_ppx_cnt_s cn61xx;
 629        struct cvmx_dpi_dma_ppx_cnt_s cn68xx;
 630        struct cvmx_dpi_dma_ppx_cnt_s cn70xx;
 631        struct cvmx_dpi_dma_ppx_cnt_s cn70xxp1;
 632        struct cvmx_dpi_dma_ppx_cnt_s cn73xx;
 633        struct cvmx_dpi_dma_ppx_cnt_s cn78xx;
 634        struct cvmx_dpi_dma_ppx_cnt_s cn78xxp1;
 635        struct cvmx_dpi_dma_ppx_cnt_s cnf71xx;
 636        struct cvmx_dpi_dma_ppx_cnt_s cnf75xx;
 637};
 638
 639typedef union cvmx_dpi_dma_ppx_cnt cvmx_dpi_dma_ppx_cnt_t;
 640
 641/**
 642 * cvmx_dpi_dma_pp_int
 643 */
 644union cvmx_dpi_dma_pp_int {
 645        u64 u64;
 646        struct cvmx_dpi_dma_pp_int_s {
 647                u64 reserved_48_63 : 16;
 648                u64 complete : 48;
 649        } s;
 650        struct cvmx_dpi_dma_pp_int_cn73xx {
 651                u64 reserved_16_63 : 48;
 652                u64 complete : 16;
 653        } cn73xx;
 654        struct cvmx_dpi_dma_pp_int_s cn78xx;
 655        struct cvmx_dpi_dma_pp_int_s cn78xxp1;
 656        struct cvmx_dpi_dma_pp_int_cn73xx cnf75xx;
 657};
 658
 659typedef union cvmx_dpi_dma_pp_int cvmx_dpi_dma_pp_int_t;
 660
 661/**
 662 * cvmx_dpi_ecc_ctl
 663 *
 664 * This register allows inserting ECC errors for testing.
 665 *
 666 */
 667union cvmx_dpi_ecc_ctl {
 668        u64 u64;
 669        struct cvmx_dpi_ecc_ctl_s {
 670                u64 reserved_33_63 : 31;
 671                u64 ram_cdis : 1;
 672                u64 reserved_17_31 : 15;
 673                u64 ram_flip1 : 1;
 674                u64 reserved_1_15 : 15;
 675                u64 ram_flip0 : 1;
 676        } s;
 677        struct cvmx_dpi_ecc_ctl_s cn73xx;
 678        struct cvmx_dpi_ecc_ctl_s cn78xx;
 679        struct cvmx_dpi_ecc_ctl_s cn78xxp1;
 680        struct cvmx_dpi_ecc_ctl_s cnf75xx;
 681};
 682
 683typedef union cvmx_dpi_ecc_ctl cvmx_dpi_ecc_ctl_t;
 684
 685/**
 686 * cvmx_dpi_ecc_int
 687 *
 688 * This register contains ECC error interrupt summary bits.
 689 *
 690 */
 691union cvmx_dpi_ecc_int {
 692        u64 u64;
 693        struct cvmx_dpi_ecc_int_s {
 694                u64 reserved_47_63 : 17;
 695                u64 ram_sbe : 15;
 696                u64 reserved_15_31 : 17;
 697                u64 ram_dbe : 15;
 698        } s;
 699        struct cvmx_dpi_ecc_int_s cn73xx;
 700        struct cvmx_dpi_ecc_int_s cn78xx;
 701        struct cvmx_dpi_ecc_int_s cn78xxp1;
 702        struct cvmx_dpi_ecc_int_s cnf75xx;
 703};
 704
 705typedef union cvmx_dpi_ecc_int cvmx_dpi_ecc_int_t;
 706
 707/**
 708 * cvmx_dpi_eng#_buf
 709 *
 710 * Notes:
 711 * The total amount of storage allocated to the 6 DPI DMA engines (via DPI_ENG*_BUF[BLKS]) must not exceed 8KB.
 712 *
 713 */
 714union cvmx_dpi_engx_buf {
 715        u64 u64;
 716        struct cvmx_dpi_engx_buf_s {
 717                u64 reserved_38_63 : 26;
 718                u64 compblks : 6;
 719                u64 reserved_10_31 : 22;
 720                u64 base : 6;
 721                u64 blks : 4;
 722        } s;
 723        struct cvmx_dpi_engx_buf_cn61xx {
 724                u64 reserved_37_63 : 27;
 725                u64 compblks : 5;
 726                u64 reserved_9_31 : 23;
 727                u64 base : 5;
 728                u64 blks : 4;
 729        } cn61xx;
 730        struct cvmx_dpi_engx_buf_cn63xx {
 731                u64 reserved_8_63 : 56;
 732                u64 base : 4;
 733                u64 blks : 4;
 734        } cn63xx;
 735        struct cvmx_dpi_engx_buf_cn63xx cn63xxp1;
 736        struct cvmx_dpi_engx_buf_cn61xx cn66xx;
 737        struct cvmx_dpi_engx_buf_cn61xx cn68xx;
 738        struct cvmx_dpi_engx_buf_cn61xx cn68xxp1;
 739        struct cvmx_dpi_engx_buf_cn61xx cn70xx;
 740        struct cvmx_dpi_engx_buf_cn61xx cn70xxp1;
 741        struct cvmx_dpi_engx_buf_s cn73xx;
 742        struct cvmx_dpi_engx_buf_s cn78xx;
 743        struct cvmx_dpi_engx_buf_s cn78xxp1;
 744        struct cvmx_dpi_engx_buf_cn61xx cnf71xx;
 745        struct cvmx_dpi_engx_buf_s cnf75xx;
 746};
 747
 748typedef union cvmx_dpi_engx_buf cvmx_dpi_engx_buf_t;
 749
 750/**
 751 * cvmx_dpi_info_reg
 752 */
 753union cvmx_dpi_info_reg {
 754        u64 u64;
 755        struct cvmx_dpi_info_reg_s {
 756                u64 reserved_8_63 : 56;
 757                u64 ffp : 4;
 758                u64 reserved_2_3 : 2;
 759                u64 ncb : 1;
 760                u64 rsl : 1;
 761        } s;
 762        struct cvmx_dpi_info_reg_s cn61xx;
 763        struct cvmx_dpi_info_reg_s cn63xx;
 764        struct cvmx_dpi_info_reg_cn63xxp1 {
 765                u64 reserved_2_63 : 62;
 766                u64 ncb : 1;
 767                u64 rsl : 1;
 768        } cn63xxp1;
 769        struct cvmx_dpi_info_reg_s cn66xx;
 770        struct cvmx_dpi_info_reg_s cn68xx;
 771        struct cvmx_dpi_info_reg_s cn68xxp1;
 772        struct cvmx_dpi_info_reg_s cn70xx;
 773        struct cvmx_dpi_info_reg_s cn70xxp1;
 774        struct cvmx_dpi_info_reg_s cn73xx;
 775        struct cvmx_dpi_info_reg_s cn78xx;
 776        struct cvmx_dpi_info_reg_s cn78xxp1;
 777        struct cvmx_dpi_info_reg_s cnf71xx;
 778        struct cvmx_dpi_info_reg_s cnf75xx;
 779};
 780
 781typedef union cvmx_dpi_info_reg cvmx_dpi_info_reg_t;
 782
 783/**
 784 * cvmx_dpi_int_en
 785 */
 786union cvmx_dpi_int_en {
 787        u64 u64;
 788        struct cvmx_dpi_int_en_s {
 789                u64 reserved_28_63 : 36;
 790                u64 sprt3_rst : 1;
 791                u64 sprt2_rst : 1;
 792                u64 sprt1_rst : 1;
 793                u64 sprt0_rst : 1;
 794                u64 reserved_23_23 : 1;
 795                u64 req_badfil : 1;
 796                u64 req_inull : 1;
 797                u64 req_anull : 1;
 798                u64 req_undflw : 1;
 799                u64 req_ovrflw : 1;
 800                u64 req_badlen : 1;
 801                u64 req_badadr : 1;
 802                u64 dmadbo : 8;
 803                u64 reserved_2_7 : 6;
 804                u64 nfovr : 1;
 805                u64 nderr : 1;
 806        } s;
 807        struct cvmx_dpi_int_en_s cn61xx;
 808        struct cvmx_dpi_int_en_cn63xx {
 809                u64 reserved_26_63 : 38;
 810                u64 sprt1_rst : 1;
 811                u64 sprt0_rst : 1;
 812                u64 reserved_23_23 : 1;
 813                u64 req_badfil : 1;
 814                u64 req_inull : 1;
 815                u64 req_anull : 1;
 816                u64 req_undflw : 1;
 817                u64 req_ovrflw : 1;
 818                u64 req_badlen : 1;
 819                u64 req_badadr : 1;
 820                u64 dmadbo : 8;
 821                u64 reserved_2_7 : 6;
 822                u64 nfovr : 1;
 823                u64 nderr : 1;
 824        } cn63xx;
 825        struct cvmx_dpi_int_en_cn63xx cn63xxp1;
 826        struct cvmx_dpi_int_en_s cn66xx;
 827        struct cvmx_dpi_int_en_cn63xx cn68xx;
 828        struct cvmx_dpi_int_en_cn63xx cn68xxp1;
 829        struct cvmx_dpi_int_en_cn70xx {
 830                u64 reserved_28_63 : 36;
 831                u64 sprt3_rst : 1;
 832                u64 sprt2_rst : 1;
 833                u64 sprt1_rst : 1;
 834                u64 sprt0_rst : 1;
 835                u64 reserved_23_23 : 1;
 836                u64 req_badfil : 1;
 837                u64 req_inull : 1;
 838                u64 req_anull : 1;
 839                u64 req_undflw : 1;
 840                u64 req_ovrflw : 1;
 841                u64 req_badlen : 1;
 842                u64 req_badadr : 1;
 843                u64 dmadbo : 8;
 844                u64 reserved_7_2 : 6;
 845                u64 nfovr : 1;
 846                u64 nderr : 1;
 847        } cn70xx;
 848        struct cvmx_dpi_int_en_cn70xx cn70xxp1;
 849        struct cvmx_dpi_int_en_s cnf71xx;
 850};
 851
 852typedef union cvmx_dpi_int_en cvmx_dpi_int_en_t;
 853
 854/**
 855 * cvmx_dpi_int_reg
 856 *
 857 * This register contains error flags for DPI.
 858 *
 859 */
 860union cvmx_dpi_int_reg {
 861        u64 u64;
 862        struct cvmx_dpi_int_reg_s {
 863                u64 reserved_28_63 : 36;
 864                u64 sprt3_rst : 1;
 865                u64 sprt2_rst : 1;
 866                u64 sprt1_rst : 1;
 867                u64 sprt0_rst : 1;
 868                u64 reserved_23_23 : 1;
 869                u64 req_badfil : 1;
 870                u64 req_inull : 1;
 871                u64 req_anull : 1;
 872                u64 req_undflw : 1;
 873                u64 req_ovrflw : 1;
 874                u64 req_badlen : 1;
 875                u64 req_badadr : 1;
 876                u64 dmadbo : 8;
 877                u64 reserved_2_7 : 6;
 878                u64 nfovr : 1;
 879                u64 nderr : 1;
 880        } s;
 881        struct cvmx_dpi_int_reg_s cn61xx;
 882        struct cvmx_dpi_int_reg_cn63xx {
 883                u64 reserved_26_63 : 38;
 884                u64 sprt1_rst : 1;
 885                u64 sprt0_rst : 1;
 886                u64 reserved_23_23 : 1;
 887                u64 req_badfil : 1;
 888                u64 req_inull : 1;
 889                u64 req_anull : 1;
 890                u64 req_undflw : 1;
 891                u64 req_ovrflw : 1;
 892                u64 req_badlen : 1;
 893                u64 req_badadr : 1;
 894                u64 dmadbo : 8;
 895                u64 reserved_2_7 : 6;
 896                u64 nfovr : 1;
 897                u64 nderr : 1;
 898        } cn63xx;
 899        struct cvmx_dpi_int_reg_cn63xx cn63xxp1;
 900        struct cvmx_dpi_int_reg_s cn66xx;
 901        struct cvmx_dpi_int_reg_cn63xx cn68xx;
 902        struct cvmx_dpi_int_reg_cn63xx cn68xxp1;
 903        struct cvmx_dpi_int_reg_s cn70xx;
 904        struct cvmx_dpi_int_reg_s cn70xxp1;
 905        struct cvmx_dpi_int_reg_cn73xx {
 906                u64 reserved_23_63 : 41;
 907                u64 req_badfil : 1;
 908                u64 req_inull : 1;
 909                u64 req_anull : 1;
 910                u64 req_undflw : 1;
 911                u64 req_ovrflw : 1;
 912                u64 req_badlen : 1;
 913                u64 req_badadr : 1;
 914                u64 dmadbo : 8;
 915                u64 reserved_2_7 : 6;
 916                u64 nfovr : 1;
 917                u64 nderr : 1;
 918        } cn73xx;
 919        struct cvmx_dpi_int_reg_cn73xx cn78xx;
 920        struct cvmx_dpi_int_reg_s cn78xxp1;
 921        struct cvmx_dpi_int_reg_s cnf71xx;
 922        struct cvmx_dpi_int_reg_cn73xx cnf75xx;
 923};
 924
 925typedef union cvmx_dpi_int_reg cvmx_dpi_int_reg_t;
 926
 927/**
 928 * cvmx_dpi_ncb#_cfg
 929 */
 930union cvmx_dpi_ncbx_cfg {
 931        u64 u64;
 932        struct cvmx_dpi_ncbx_cfg_s {
 933                u64 reserved_6_63 : 58;
 934                u64 molr : 6;
 935        } s;
 936        struct cvmx_dpi_ncbx_cfg_s cn61xx;
 937        struct cvmx_dpi_ncbx_cfg_s cn66xx;
 938        struct cvmx_dpi_ncbx_cfg_s cn68xx;
 939        struct cvmx_dpi_ncbx_cfg_s cn70xx;
 940        struct cvmx_dpi_ncbx_cfg_s cn70xxp1;
 941        struct cvmx_dpi_ncbx_cfg_s cn73xx;
 942        struct cvmx_dpi_ncbx_cfg_s cn78xx;
 943        struct cvmx_dpi_ncbx_cfg_s cn78xxp1;
 944        struct cvmx_dpi_ncbx_cfg_s cnf71xx;
 945        struct cvmx_dpi_ncbx_cfg_s cnf75xx;
 946};
 947
 948typedef union cvmx_dpi_ncbx_cfg cvmx_dpi_ncbx_cfg_t;
 949
 950/**
 951 * cvmx_dpi_ncb_ctl
 952 *
 953 * This register chooses which NCB interface DPI uses for L2/DRAM reads/writes.
 954 *
 955 */
 956union cvmx_dpi_ncb_ctl {
 957        u64 u64;
 958        struct cvmx_dpi_ncb_ctl_s {
 959                u64 reserved_25_63 : 39;
 960                u64 ncbsel_prt_xor_dis : 1;
 961                u64 reserved_21_23 : 3;
 962                u64 ncbsel_zbw : 1;
 963                u64 reserved_17_19 : 3;
 964                u64 ncbsel_req : 1;
 965                u64 reserved_13_15 : 3;
 966                u64 ncbsel_dst : 1;
 967                u64 reserved_9_11 : 3;
 968                u64 ncbsel_src : 1;
 969                u64 reserved_1_7 : 7;
 970                u64 prt : 1;
 971        } s;
 972        struct cvmx_dpi_ncb_ctl_cn73xx {
 973                u64 reserved_25_63 : 39;
 974                u64 ncbsel_prt_xor_dis : 1;
 975                u64 reserved_21_23 : 3;
 976                u64 ncbsel_zbw : 1;
 977                u64 reserved_17_19 : 3;
 978                u64 ncbsel_req : 1;
 979                u64 reserved_13_15 : 3;
 980                u64 ncbsel_dst : 1;
 981                u64 reserved_9_11 : 3;
 982                u64 ncbsel_src : 1;
 983                u64 reserved_0_7 : 8;
 984        } cn73xx;
 985        struct cvmx_dpi_ncb_ctl_s cn78xx;
 986        struct cvmx_dpi_ncb_ctl_s cn78xxp1;
 987        struct cvmx_dpi_ncb_ctl_cn73xx cnf75xx;
 988};
 989
 990typedef union cvmx_dpi_ncb_ctl cvmx_dpi_ncb_ctl_t;
 991
 992/**
 993 * cvmx_dpi_pint_info
 994 *
 995 * This register provides DPI packet interrupt information.
 996 *
 997 */
 998union cvmx_dpi_pint_info {
 999        u64 u64;
1000        struct cvmx_dpi_pint_info_s {
1001                u64 reserved_14_63 : 50;
1002                u64 iinfo : 6;
1003                u64 reserved_6_7 : 2;
1004                u64 sinfo : 6;
1005        } s;
1006        struct cvmx_dpi_pint_info_s cn61xx;
1007        struct cvmx_dpi_pint_info_s cn63xx;
1008        struct cvmx_dpi_pint_info_s cn63xxp1;
1009        struct cvmx_dpi_pint_info_s cn66xx;
1010        struct cvmx_dpi_pint_info_s cn68xx;
1011        struct cvmx_dpi_pint_info_s cn68xxp1;
1012        struct cvmx_dpi_pint_info_s cn70xx;
1013        struct cvmx_dpi_pint_info_s cn70xxp1;
1014        struct cvmx_dpi_pint_info_s cn73xx;
1015        struct cvmx_dpi_pint_info_s cn78xx;
1016        struct cvmx_dpi_pint_info_s cn78xxp1;
1017        struct cvmx_dpi_pint_info_s cnf71xx;
1018        struct cvmx_dpi_pint_info_s cnf75xx;
1019};
1020
1021typedef union cvmx_dpi_pint_info cvmx_dpi_pint_info_t;
1022
1023/**
1024 * cvmx_dpi_pkt_err_rsp
1025 */
1026union cvmx_dpi_pkt_err_rsp {
1027        u64 u64;
1028        struct cvmx_dpi_pkt_err_rsp_s {
1029                u64 reserved_1_63 : 63;
1030                u64 pkterr : 1;
1031        } s;
1032        struct cvmx_dpi_pkt_err_rsp_s cn61xx;
1033        struct cvmx_dpi_pkt_err_rsp_s cn63xx;
1034        struct cvmx_dpi_pkt_err_rsp_s cn63xxp1;
1035        struct cvmx_dpi_pkt_err_rsp_s cn66xx;
1036        struct cvmx_dpi_pkt_err_rsp_s cn68xx;
1037        struct cvmx_dpi_pkt_err_rsp_s cn68xxp1;
1038        struct cvmx_dpi_pkt_err_rsp_s cn70xx;
1039        struct cvmx_dpi_pkt_err_rsp_s cn70xxp1;
1040        struct cvmx_dpi_pkt_err_rsp_s cn73xx;
1041        struct cvmx_dpi_pkt_err_rsp_s cn78xx;
1042        struct cvmx_dpi_pkt_err_rsp_s cn78xxp1;
1043        struct cvmx_dpi_pkt_err_rsp_s cnf71xx;
1044        struct cvmx_dpi_pkt_err_rsp_s cnf75xx;
1045};
1046
1047typedef union cvmx_dpi_pkt_err_rsp cvmx_dpi_pkt_err_rsp_t;
1048
1049/**
1050 * cvmx_dpi_req_err_rsp
1051 */
1052union cvmx_dpi_req_err_rsp {
1053        u64 u64;
1054        struct cvmx_dpi_req_err_rsp_s {
1055                u64 reserved_8_63 : 56;
1056                u64 qerr : 8;
1057        } s;
1058        struct cvmx_dpi_req_err_rsp_s cn61xx;
1059        struct cvmx_dpi_req_err_rsp_s cn63xx;
1060        struct cvmx_dpi_req_err_rsp_s cn63xxp1;
1061        struct cvmx_dpi_req_err_rsp_s cn66xx;
1062        struct cvmx_dpi_req_err_rsp_s cn68xx;
1063        struct cvmx_dpi_req_err_rsp_s cn68xxp1;
1064        struct cvmx_dpi_req_err_rsp_s cn70xx;
1065        struct cvmx_dpi_req_err_rsp_s cn70xxp1;
1066        struct cvmx_dpi_req_err_rsp_s cn73xx;
1067        struct cvmx_dpi_req_err_rsp_s cn78xx;
1068        struct cvmx_dpi_req_err_rsp_s cn78xxp1;
1069        struct cvmx_dpi_req_err_rsp_s cnf71xx;
1070        struct cvmx_dpi_req_err_rsp_s cnf75xx;
1071};
1072
1073typedef union cvmx_dpi_req_err_rsp cvmx_dpi_req_err_rsp_t;
1074
1075/**
1076 * cvmx_dpi_req_err_rsp_en
1077 */
1078union cvmx_dpi_req_err_rsp_en {
1079        u64 u64;
1080        struct cvmx_dpi_req_err_rsp_en_s {
1081                u64 reserved_8_63 : 56;
1082                u64 en : 8;
1083        } s;
1084        struct cvmx_dpi_req_err_rsp_en_s cn61xx;
1085        struct cvmx_dpi_req_err_rsp_en_s cn63xx;
1086        struct cvmx_dpi_req_err_rsp_en_s cn63xxp1;
1087        struct cvmx_dpi_req_err_rsp_en_s cn66xx;
1088        struct cvmx_dpi_req_err_rsp_en_s cn68xx;
1089        struct cvmx_dpi_req_err_rsp_en_s cn68xxp1;
1090        struct cvmx_dpi_req_err_rsp_en_s cn70xx;
1091        struct cvmx_dpi_req_err_rsp_en_s cn70xxp1;
1092        struct cvmx_dpi_req_err_rsp_en_s cn73xx;
1093        struct cvmx_dpi_req_err_rsp_en_s cn78xx;
1094        struct cvmx_dpi_req_err_rsp_en_s cn78xxp1;
1095        struct cvmx_dpi_req_err_rsp_en_s cnf71xx;
1096        struct cvmx_dpi_req_err_rsp_en_s cnf75xx;
1097};
1098
1099typedef union cvmx_dpi_req_err_rsp_en cvmx_dpi_req_err_rsp_en_t;
1100
1101/**
1102 * cvmx_dpi_req_err_rst
1103 */
1104union cvmx_dpi_req_err_rst {
1105        u64 u64;
1106        struct cvmx_dpi_req_err_rst_s {
1107                u64 reserved_8_63 : 56;
1108                u64 qerr : 8;
1109        } s;
1110        struct cvmx_dpi_req_err_rst_s cn61xx;
1111        struct cvmx_dpi_req_err_rst_s cn63xx;
1112        struct cvmx_dpi_req_err_rst_s cn63xxp1;
1113        struct cvmx_dpi_req_err_rst_s cn66xx;
1114        struct cvmx_dpi_req_err_rst_s cn68xx;
1115        struct cvmx_dpi_req_err_rst_s cn68xxp1;
1116        struct cvmx_dpi_req_err_rst_s cn70xx;
1117        struct cvmx_dpi_req_err_rst_s cn70xxp1;
1118        struct cvmx_dpi_req_err_rst_s cn73xx;
1119        struct cvmx_dpi_req_err_rst_s cn78xx;
1120        struct cvmx_dpi_req_err_rst_s cn78xxp1;
1121        struct cvmx_dpi_req_err_rst_s cnf71xx;
1122        struct cvmx_dpi_req_err_rst_s cnf75xx;
1123};
1124
1125typedef union cvmx_dpi_req_err_rst cvmx_dpi_req_err_rst_t;
1126
1127/**
1128 * cvmx_dpi_req_err_rst_en
1129 */
1130union cvmx_dpi_req_err_rst_en {
1131        u64 u64;
1132        struct cvmx_dpi_req_err_rst_en_s {
1133                u64 reserved_8_63 : 56;
1134                u64 en : 8;
1135        } s;
1136        struct cvmx_dpi_req_err_rst_en_s cn61xx;
1137        struct cvmx_dpi_req_err_rst_en_s cn63xx;
1138        struct cvmx_dpi_req_err_rst_en_s cn63xxp1;
1139        struct cvmx_dpi_req_err_rst_en_s cn66xx;
1140        struct cvmx_dpi_req_err_rst_en_s cn68xx;
1141        struct cvmx_dpi_req_err_rst_en_s cn68xxp1;
1142        struct cvmx_dpi_req_err_rst_en_s cn70xx;
1143        struct cvmx_dpi_req_err_rst_en_s cn70xxp1;
1144        struct cvmx_dpi_req_err_rst_en_s cn73xx;
1145        struct cvmx_dpi_req_err_rst_en_s cn78xx;
1146        struct cvmx_dpi_req_err_rst_en_s cn78xxp1;
1147        struct cvmx_dpi_req_err_rst_en_s cnf71xx;
1148        struct cvmx_dpi_req_err_rst_en_s cnf75xx;
1149};
1150
1151typedef union cvmx_dpi_req_err_rst_en cvmx_dpi_req_err_rst_en_t;
1152
1153/**
1154 * cvmx_dpi_req_err_skip_comp
1155 */
1156union cvmx_dpi_req_err_skip_comp {
1157        u64 u64;
1158        struct cvmx_dpi_req_err_skip_comp_s {
1159                u64 reserved_24_63 : 40;
1160                u64 en_rst : 8;
1161                u64 reserved_8_15 : 8;
1162                u64 en_rsp : 8;
1163        } s;
1164        struct cvmx_dpi_req_err_skip_comp_s cn61xx;
1165        struct cvmx_dpi_req_err_skip_comp_s cn66xx;
1166        struct cvmx_dpi_req_err_skip_comp_s cn68xx;
1167        struct cvmx_dpi_req_err_skip_comp_s cn68xxp1;
1168        struct cvmx_dpi_req_err_skip_comp_s cn70xx;
1169        struct cvmx_dpi_req_err_skip_comp_s cn70xxp1;
1170        struct cvmx_dpi_req_err_skip_comp_s cn73xx;
1171        struct cvmx_dpi_req_err_skip_comp_s cn78xx;
1172        struct cvmx_dpi_req_err_skip_comp_s cn78xxp1;
1173        struct cvmx_dpi_req_err_skip_comp_s cnf71xx;
1174        struct cvmx_dpi_req_err_skip_comp_s cnf75xx;
1175};
1176
1177typedef union cvmx_dpi_req_err_skip_comp cvmx_dpi_req_err_skip_comp_t;
1178
1179/**
1180 * cvmx_dpi_req_gbl_en
1181 */
1182union cvmx_dpi_req_gbl_en {
1183        u64 u64;
1184        struct cvmx_dpi_req_gbl_en_s {
1185                u64 reserved_8_63 : 56;
1186                u64 qen : 8;
1187        } s;
1188        struct cvmx_dpi_req_gbl_en_s cn61xx;
1189        struct cvmx_dpi_req_gbl_en_s cn63xx;
1190        struct cvmx_dpi_req_gbl_en_s cn63xxp1;
1191        struct cvmx_dpi_req_gbl_en_s cn66xx;
1192        struct cvmx_dpi_req_gbl_en_s cn68xx;
1193        struct cvmx_dpi_req_gbl_en_s cn68xxp1;
1194        struct cvmx_dpi_req_gbl_en_s cn70xx;
1195        struct cvmx_dpi_req_gbl_en_s cn70xxp1;
1196        struct cvmx_dpi_req_gbl_en_s cn73xx;
1197        struct cvmx_dpi_req_gbl_en_s cn78xx;
1198        struct cvmx_dpi_req_gbl_en_s cn78xxp1;
1199        struct cvmx_dpi_req_gbl_en_s cnf71xx;
1200        struct cvmx_dpi_req_gbl_en_s cnf75xx;
1201};
1202
1203typedef union cvmx_dpi_req_gbl_en cvmx_dpi_req_gbl_en_t;
1204
1205/**
1206 * cvmx_dpi_sli_prt#_cfg
1207 *
1208 * This register configures the max read request size, max payload size, and max number of SLI
1209 * tags in use. Indexed by SLI_PORT_E.
1210 */
1211union cvmx_dpi_sli_prtx_cfg {
1212        u64 u64;
1213        struct cvmx_dpi_sli_prtx_cfg_s {
1214                u64 reserved_29_63 : 35;
1215                u64 ncbsel : 1;
1216                u64 reserved_25_27 : 3;
1217                u64 halt : 1;
1218                u64 qlm_cfg : 4;
1219                u64 reserved_17_19 : 3;
1220                u64 rd_mode : 1;
1221                u64 reserved_15_15 : 1;
1222                u64 molr : 7;
1223                u64 mps_lim : 1;
1224                u64 reserved_5_6 : 2;
1225                u64 mps : 1;
1226                u64 mrrs_lim : 1;
1227                u64 reserved_2_2 : 1;
1228                u64 mrrs : 2;
1229        } s;
1230        struct cvmx_dpi_sli_prtx_cfg_cn61xx {
1231                u64 reserved_25_63 : 39;
1232                u64 halt : 1;
1233                u64 qlm_cfg : 4;
1234                u64 reserved_17_19 : 3;
1235                u64 rd_mode : 1;
1236                u64 reserved_14_15 : 2;
1237                u64 molr : 6;
1238                u64 mps_lim : 1;
1239                u64 reserved_5_6 : 2;
1240                u64 mps : 1;
1241                u64 mrrs_lim : 1;
1242                u64 reserved_2_2 : 1;
1243                u64 mrrs : 2;
1244        } cn61xx;
1245        struct cvmx_dpi_sli_prtx_cfg_cn63xx {
1246                u64 reserved_25_63 : 39;
1247                u64 halt : 1;
1248                u64 reserved_21_23 : 3;
1249                u64 qlm_cfg : 1;
1250                u64 reserved_17_19 : 3;
1251                u64 rd_mode : 1;
1252                u64 reserved_14_15 : 2;
1253                u64 molr : 6;
1254                u64 mps_lim : 1;
1255                u64 reserved_5_6 : 2;
1256                u64 mps : 1;
1257                u64 mrrs_lim : 1;
1258                u64 reserved_2_2 : 1;
1259                u64 mrrs : 2;
1260        } cn63xx;
1261        struct cvmx_dpi_sli_prtx_cfg_cn63xx cn63xxp1;
1262        struct cvmx_dpi_sli_prtx_cfg_cn61xx cn66xx;
1263        struct cvmx_dpi_sli_prtx_cfg_cn63xx cn68xx;
1264        struct cvmx_dpi_sli_prtx_cfg_cn63xx cn68xxp1;
1265        struct cvmx_dpi_sli_prtx_cfg_cn70xx {
1266                u64 reserved_25_63 : 39;
1267                u64 halt : 1;
1268                u64 reserved_17_23 : 7;
1269                u64 rd_mode : 1;
1270                u64 reserved_14_15 : 2;
1271                u64 molr : 6;
1272                u64 mps_lim : 1;
1273                u64 reserved_5_6 : 2;
1274                u64 mps : 1;
1275                u64 mrrs_lim : 1;
1276                u64 reserved_2_2 : 1;
1277                u64 mrrs : 2;
1278        } cn70xx;
1279        struct cvmx_dpi_sli_prtx_cfg_cn70xx cn70xxp1;
1280        struct cvmx_dpi_sli_prtx_cfg_cn73xx {
1281                u64 reserved_29_63 : 35;
1282                u64 ncbsel : 1;
1283                u64 reserved_25_27 : 3;
1284                u64 halt : 1;
1285                u64 reserved_21_23 : 3;
1286                u64 qlm_cfg : 1;
1287                u64 reserved_17_19 : 3;
1288                u64 rd_mode : 1;
1289                u64 reserved_15_15 : 1;
1290                u64 molr : 7;
1291                u64 mps_lim : 1;
1292                u64 reserved_5_6 : 2;
1293                u64 mps : 1;
1294                u64 mrrs_lim : 1;
1295                u64 reserved_2_2 : 1;
1296                u64 mrrs : 2;
1297        } cn73xx;
1298        struct cvmx_dpi_sli_prtx_cfg_cn73xx cn78xx;
1299        struct cvmx_dpi_sli_prtx_cfg_cn73xx cn78xxp1;
1300        struct cvmx_dpi_sli_prtx_cfg_cn61xx cnf71xx;
1301        struct cvmx_dpi_sli_prtx_cfg_cn73xx cnf75xx;
1302};
1303
1304typedef union cvmx_dpi_sli_prtx_cfg cvmx_dpi_sli_prtx_cfg_t;
1305
1306/**
1307 * cvmx_dpi_sli_prt#_err
1308 *
1309 * This register logs the address associated with the reported SLI error response.
1310 * Indexed by SLI_PORT_E.
1311 */
1312union cvmx_dpi_sli_prtx_err {
1313        u64 u64;
1314        struct cvmx_dpi_sli_prtx_err_s {
1315                u64 addr : 61;
1316                u64 reserved_0_2 : 3;
1317        } s;
1318        struct cvmx_dpi_sli_prtx_err_s cn61xx;
1319        struct cvmx_dpi_sli_prtx_err_s cn63xx;
1320        struct cvmx_dpi_sli_prtx_err_s cn63xxp1;
1321        struct cvmx_dpi_sli_prtx_err_s cn66xx;
1322        struct cvmx_dpi_sli_prtx_err_s cn68xx;
1323        struct cvmx_dpi_sli_prtx_err_s cn68xxp1;
1324        struct cvmx_dpi_sli_prtx_err_s cn70xx;
1325        struct cvmx_dpi_sli_prtx_err_s cn70xxp1;
1326        struct cvmx_dpi_sli_prtx_err_s cn73xx;
1327        struct cvmx_dpi_sli_prtx_err_s cn78xx;
1328        struct cvmx_dpi_sli_prtx_err_s cn78xxp1;
1329        struct cvmx_dpi_sli_prtx_err_s cnf71xx;
1330        struct cvmx_dpi_sli_prtx_err_s cnf75xx;
1331};
1332
1333typedef union cvmx_dpi_sli_prtx_err cvmx_dpi_sli_prtx_err_t;
1334
1335/**
1336 * cvmx_dpi_sli_prt#_err_info
1337 *
1338 * This register logs information associated with the reported SLI error response.
1339 * Indexed by SLI_PORT_E.
1340 */
1341union cvmx_dpi_sli_prtx_err_info {
1342        u64 u64;
1343        struct cvmx_dpi_sli_prtx_err_info_s {
1344                u64 reserved_9_63 : 55;
1345                u64 lock : 1;
1346                u64 reserved_5_7 : 3;
1347                u64 type : 1;
1348                u64 reserved_3_3 : 1;
1349                u64 reqq : 3;
1350        } s;
1351        struct cvmx_dpi_sli_prtx_err_info_s cn61xx;
1352        struct cvmx_dpi_sli_prtx_err_info_s cn63xx;
1353        struct cvmx_dpi_sli_prtx_err_info_s cn63xxp1;
1354        struct cvmx_dpi_sli_prtx_err_info_s cn66xx;
1355        struct cvmx_dpi_sli_prtx_err_info_s cn68xx;
1356        struct cvmx_dpi_sli_prtx_err_info_s cn68xxp1;
1357        struct cvmx_dpi_sli_prtx_err_info_s cn70xx;
1358        struct cvmx_dpi_sli_prtx_err_info_s cn70xxp1;
1359        struct cvmx_dpi_sli_prtx_err_info_cn73xx {
1360                u64 reserved_32_63 : 32;
1361                u64 pvf : 16;
1362                u64 reserved_9_15 : 7;
1363                u64 lock : 1;
1364                u64 reserved_5_7 : 3;
1365                u64 type : 1;
1366                u64 reserved_3_3 : 1;
1367                u64 reqq : 3;
1368        } cn73xx;
1369        struct cvmx_dpi_sli_prtx_err_info_cn73xx cn78xx;
1370        struct cvmx_dpi_sli_prtx_err_info_cn78xxp1 {
1371                u64 reserved_23_63 : 41;
1372                u64 vf : 7;
1373                u64 reserved_9_15 : 7;
1374                u64 lock : 1;
1375                u64 reserved_5_7 : 3;
1376                u64 type : 1;
1377                u64 reserved_3_3 : 1;
1378                u64 reqq : 3;
1379        } cn78xxp1;
1380        struct cvmx_dpi_sli_prtx_err_info_s cnf71xx;
1381        struct cvmx_dpi_sli_prtx_err_info_cn73xx cnf75xx;
1382};
1383
1384typedef union cvmx_dpi_sli_prtx_err_info cvmx_dpi_sli_prtx_err_info_t;
1385
1386/**
1387 * cvmx_dpi_srio_rx_bell#
1388 *
1389 * Reading this register pops an entry off the corresponding SRIO RX doorbell FIFO.
1390 * The chip supports 16 FIFOs per SRIO interface for a total of 32 FIFOs/Registers.
1391 * The MSB of the registers indicates the MAC while the 4 LSBs indicate the FIFO.
1392 * Information on the doorbell allocation can be found in SRIO()_RX_BELL_CTRL.
1393 */
1394union cvmx_dpi_srio_rx_bellx {
1395        u64 u64;
1396        struct cvmx_dpi_srio_rx_bellx_s {
1397                u64 reserved_48_63 : 16;
1398                u64 data : 16;
1399                u64 sid : 16;
1400                u64 count : 8;
1401                u64 reserved_5_7 : 3;
1402                u64 dest_id : 1;
1403                u64 id16 : 1;
1404                u64 reserved_2_2 : 1;
1405                u64 dpriority : 2;
1406        } s;
1407        struct cvmx_dpi_srio_rx_bellx_s cnf75xx;
1408};
1409
1410typedef union cvmx_dpi_srio_rx_bellx cvmx_dpi_srio_rx_bellx_t;
1411
1412/**
1413 * cvmx_dpi_srio_rx_bell_seq#
1414 *
1415 * This register contains the value of the sequence counter when the doorbell
1416 * was received and a shadow copy of the Bell FIFO Count that can be read without
1417 * emptying the FIFO.  This register must be read prior to corresponding
1418 * DPI_SRIO_RX_BELL register to link the doorbell and sequence number.
1419 *
1420 * Information on the Doorbell Allocation can be found in SRIO()_RX_BELL_CTRL.
1421 */
1422union cvmx_dpi_srio_rx_bell_seqx {
1423        u64 u64;
1424        struct cvmx_dpi_srio_rx_bell_seqx_s {
1425                u64 reserved_40_63 : 24;
1426                u64 count : 8;
1427                u64 sid : 32;
1428        } s;
1429        struct cvmx_dpi_srio_rx_bell_seqx_s cnf75xx;
1430};
1431
1432typedef union cvmx_dpi_srio_rx_bell_seqx cvmx_dpi_srio_rx_bell_seqx_t;
1433
1434/**
1435 * cvmx_dpi_swa_q_vmid
1436 *
1437 * Not used.
1438 *
1439 */
1440union cvmx_dpi_swa_q_vmid {
1441        u64 u64;
1442        struct cvmx_dpi_swa_q_vmid_s {
1443                u64 vmid7 : 8;
1444                u64 vmid6 : 8;
1445                u64 vmid5 : 8;
1446                u64 vmid4 : 8;
1447                u64 vmid3 : 8;
1448                u64 vmid2 : 8;
1449                u64 vmid1 : 8;
1450                u64 vmid0 : 8;
1451        } s;
1452        struct cvmx_dpi_swa_q_vmid_s cn73xx;
1453        struct cvmx_dpi_swa_q_vmid_s cn78xx;
1454        struct cvmx_dpi_swa_q_vmid_s cn78xxp1;
1455        struct cvmx_dpi_swa_q_vmid_s cnf75xx;
1456};
1457
1458typedef union cvmx_dpi_swa_q_vmid cvmx_dpi_swa_q_vmid_t;
1459
1460#endif
1461