uboot/arch/mips/mach-octeon/include/mach/cvmx-npi-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 npi.
   7 */
   8
   9#ifndef __CVMX_NPI_DEFS_H__
  10#define __CVMX_NPI_DEFS_H__
  11
  12#define CVMX_NPI_BASE_ADDR_INPUT0          CVMX_NPI_BASE_ADDR_INPUTX(0)
  13#define CVMX_NPI_BASE_ADDR_INPUT1          CVMX_NPI_BASE_ADDR_INPUTX(1)
  14#define CVMX_NPI_BASE_ADDR_INPUT2          CVMX_NPI_BASE_ADDR_INPUTX(2)
  15#define CVMX_NPI_BASE_ADDR_INPUT3          CVMX_NPI_BASE_ADDR_INPUTX(3)
  16#define CVMX_NPI_BASE_ADDR_INPUTX(offset)  (0x00011F0000000070ull + ((offset) & 3) * 16)
  17#define CVMX_NPI_BASE_ADDR_OUTPUT0         CVMX_NPI_BASE_ADDR_OUTPUTX(0)
  18#define CVMX_NPI_BASE_ADDR_OUTPUT1         CVMX_NPI_BASE_ADDR_OUTPUTX(1)
  19#define CVMX_NPI_BASE_ADDR_OUTPUT2         CVMX_NPI_BASE_ADDR_OUTPUTX(2)
  20#define CVMX_NPI_BASE_ADDR_OUTPUT3         CVMX_NPI_BASE_ADDR_OUTPUTX(3)
  21#define CVMX_NPI_BASE_ADDR_OUTPUTX(offset) (0x00011F00000000B8ull + ((offset) & 3) * 8)
  22#define CVMX_NPI_BIST_STATUS               (0x00011F00000003F8ull)
  23#define CVMX_NPI_BUFF_SIZE_OUTPUT0         CVMX_NPI_BUFF_SIZE_OUTPUTX(0)
  24#define CVMX_NPI_BUFF_SIZE_OUTPUT1         CVMX_NPI_BUFF_SIZE_OUTPUTX(1)
  25#define CVMX_NPI_BUFF_SIZE_OUTPUT2         CVMX_NPI_BUFF_SIZE_OUTPUTX(2)
  26#define CVMX_NPI_BUFF_SIZE_OUTPUT3         CVMX_NPI_BUFF_SIZE_OUTPUTX(3)
  27#define CVMX_NPI_BUFF_SIZE_OUTPUTX(offset) (0x00011F00000000E0ull + ((offset) & 3) * 8)
  28#define CVMX_NPI_COMP_CTL                  (0x00011F0000000218ull)
  29#define CVMX_NPI_CTL_STATUS                (0x00011F0000000010ull)
  30#define CVMX_NPI_DBG_SELECT                (0x00011F0000000008ull)
  31#define CVMX_NPI_DMA_CONTROL               (0x00011F0000000128ull)
  32#define CVMX_NPI_DMA_HIGHP_COUNTS          (0x00011F0000000148ull)
  33#define CVMX_NPI_DMA_HIGHP_NADDR           (0x00011F0000000158ull)
  34#define CVMX_NPI_DMA_LOWP_COUNTS           (0x00011F0000000140ull)
  35#define CVMX_NPI_DMA_LOWP_NADDR            (0x00011F0000000150ull)
  36#define CVMX_NPI_HIGHP_DBELL               (0x00011F0000000120ull)
  37#define CVMX_NPI_HIGHP_IBUFF_SADDR         (0x00011F0000000110ull)
  38#define CVMX_NPI_INPUT_CONTROL             (0x00011F0000000138ull)
  39#define CVMX_NPI_INT_ENB                   (0x00011F0000000020ull)
  40#define CVMX_NPI_INT_SUM                   (0x00011F0000000018ull)
  41#define CVMX_NPI_LOWP_DBELL                (0x00011F0000000118ull)
  42#define CVMX_NPI_LOWP_IBUFF_SADDR          (0x00011F0000000108ull)
  43#define CVMX_NPI_MEM_ACCESS_SUBID3         CVMX_NPI_MEM_ACCESS_SUBIDX(3)
  44#define CVMX_NPI_MEM_ACCESS_SUBID4         CVMX_NPI_MEM_ACCESS_SUBIDX(4)
  45#define CVMX_NPI_MEM_ACCESS_SUBID5         CVMX_NPI_MEM_ACCESS_SUBIDX(5)
  46#define CVMX_NPI_MEM_ACCESS_SUBID6         CVMX_NPI_MEM_ACCESS_SUBIDX(6)
  47#define CVMX_NPI_MEM_ACCESS_SUBIDX(offset) (0x00011F0000000028ull + ((offset) & 7) * 8 - 8 * 3)
  48#define CVMX_NPI_MSI_RCV                   (0x0000000000000190ull)
  49#define CVMX_NPI_NPI_MSI_RCV               (0x00011F0000001190ull)
  50#define CVMX_NPI_NUM_DESC_OUTPUT0          CVMX_NPI_NUM_DESC_OUTPUTX(0)
  51#define CVMX_NPI_NUM_DESC_OUTPUT1          CVMX_NPI_NUM_DESC_OUTPUTX(1)
  52#define CVMX_NPI_NUM_DESC_OUTPUT2          CVMX_NPI_NUM_DESC_OUTPUTX(2)
  53#define CVMX_NPI_NUM_DESC_OUTPUT3          CVMX_NPI_NUM_DESC_OUTPUTX(3)
  54#define CVMX_NPI_NUM_DESC_OUTPUTX(offset)  (0x00011F0000000050ull + ((offset) & 3) * 8)
  55#define CVMX_NPI_OUTPUT_CONTROL            (0x00011F0000000100ull)
  56#define CVMX_NPI_P0_DBPAIR_ADDR            CVMX_NPI_PX_DBPAIR_ADDR(0)
  57#define CVMX_NPI_P0_INSTR_ADDR             CVMX_NPI_PX_INSTR_ADDR(0)
  58#define CVMX_NPI_P0_INSTR_CNTS             CVMX_NPI_PX_INSTR_CNTS(0)
  59#define CVMX_NPI_P0_PAIR_CNTS              CVMX_NPI_PX_PAIR_CNTS(0)
  60#define CVMX_NPI_P1_DBPAIR_ADDR            CVMX_NPI_PX_DBPAIR_ADDR(1)
  61#define CVMX_NPI_P1_INSTR_ADDR             CVMX_NPI_PX_INSTR_ADDR(1)
  62#define CVMX_NPI_P1_INSTR_CNTS             CVMX_NPI_PX_INSTR_CNTS(1)
  63#define CVMX_NPI_P1_PAIR_CNTS              CVMX_NPI_PX_PAIR_CNTS(1)
  64#define CVMX_NPI_P2_DBPAIR_ADDR            CVMX_NPI_PX_DBPAIR_ADDR(2)
  65#define CVMX_NPI_P2_INSTR_ADDR             CVMX_NPI_PX_INSTR_ADDR(2)
  66#define CVMX_NPI_P2_INSTR_CNTS             CVMX_NPI_PX_INSTR_CNTS(2)
  67#define CVMX_NPI_P2_PAIR_CNTS              CVMX_NPI_PX_PAIR_CNTS(2)
  68#define CVMX_NPI_P3_DBPAIR_ADDR            CVMX_NPI_PX_DBPAIR_ADDR(3)
  69#define CVMX_NPI_P3_INSTR_ADDR             CVMX_NPI_PX_INSTR_ADDR(3)
  70#define CVMX_NPI_P3_INSTR_CNTS             CVMX_NPI_PX_INSTR_CNTS(3)
  71#define CVMX_NPI_P3_PAIR_CNTS              CVMX_NPI_PX_PAIR_CNTS(3)
  72#define CVMX_NPI_PCI_BAR1_INDEXX(offset)   (0x00011F0000001100ull + ((offset) & 31) * 4)
  73#define CVMX_NPI_PCI_BIST_REG              (0x00011F00000011C0ull)
  74#define CVMX_NPI_PCI_BURST_SIZE            (0x00011F00000000D8ull)
  75#define CVMX_NPI_PCI_CFG00                 (0x00011F0000001800ull)
  76#define CVMX_NPI_PCI_CFG01                 (0x00011F0000001804ull)
  77#define CVMX_NPI_PCI_CFG02                 (0x00011F0000001808ull)
  78#define CVMX_NPI_PCI_CFG03                 (0x00011F000000180Cull)
  79#define CVMX_NPI_PCI_CFG04                 (0x00011F0000001810ull)
  80#define CVMX_NPI_PCI_CFG05                 (0x00011F0000001814ull)
  81#define CVMX_NPI_PCI_CFG06                 (0x00011F0000001818ull)
  82#define CVMX_NPI_PCI_CFG07                 (0x00011F000000181Cull)
  83#define CVMX_NPI_PCI_CFG08                 (0x00011F0000001820ull)
  84#define CVMX_NPI_PCI_CFG09                 (0x00011F0000001824ull)
  85#define CVMX_NPI_PCI_CFG10                 (0x00011F0000001828ull)
  86#define CVMX_NPI_PCI_CFG11                 (0x00011F000000182Cull)
  87#define CVMX_NPI_PCI_CFG12                 (0x00011F0000001830ull)
  88#define CVMX_NPI_PCI_CFG13                 (0x00011F0000001834ull)
  89#define CVMX_NPI_PCI_CFG15                 (0x00011F000000183Cull)
  90#define CVMX_NPI_PCI_CFG16                 (0x00011F0000001840ull)
  91#define CVMX_NPI_PCI_CFG17                 (0x00011F0000001844ull)
  92#define CVMX_NPI_PCI_CFG18                 (0x00011F0000001848ull)
  93#define CVMX_NPI_PCI_CFG19                 (0x00011F000000184Cull)
  94#define CVMX_NPI_PCI_CFG20                 (0x00011F0000001850ull)
  95#define CVMX_NPI_PCI_CFG21                 (0x00011F0000001854ull)
  96#define CVMX_NPI_PCI_CFG22                 (0x00011F0000001858ull)
  97#define CVMX_NPI_PCI_CFG56                 (0x00011F00000018E0ull)
  98#define CVMX_NPI_PCI_CFG57                 (0x00011F00000018E4ull)
  99#define CVMX_NPI_PCI_CFG58                 (0x00011F00000018E8ull)
 100#define CVMX_NPI_PCI_CFG59                 (0x00011F00000018ECull)
 101#define CVMX_NPI_PCI_CFG60                 (0x00011F00000018F0ull)
 102#define CVMX_NPI_PCI_CFG61                 (0x00011F00000018F4ull)
 103#define CVMX_NPI_PCI_CFG62                 (0x00011F00000018F8ull)
 104#define CVMX_NPI_PCI_CFG63                 (0x00011F00000018FCull)
 105#define CVMX_NPI_PCI_CNT_REG               (0x00011F00000011B8ull)
 106#define CVMX_NPI_PCI_CTL_STATUS_2          (0x00011F000000118Cull)
 107#define CVMX_NPI_PCI_INT_ARB_CFG           (0x00011F0000000130ull)
 108#define CVMX_NPI_PCI_INT_ENB2              (0x00011F00000011A0ull)
 109#define CVMX_NPI_PCI_INT_SUM2              (0x00011F0000001198ull)
 110#define CVMX_NPI_PCI_READ_CMD              (0x00011F0000000048ull)
 111#define CVMX_NPI_PCI_READ_CMD_6            (0x00011F0000001180ull)
 112#define CVMX_NPI_PCI_READ_CMD_C            (0x00011F0000001184ull)
 113#define CVMX_NPI_PCI_READ_CMD_E            (0x00011F0000001188ull)
 114#define CVMX_NPI_PCI_SCM_REG               (0x00011F00000011A8ull)
 115#define CVMX_NPI_PCI_TSR_REG               (0x00011F00000011B0ull)
 116#define CVMX_NPI_PORT32_INSTR_HDR          (0x00011F00000001F8ull)
 117#define CVMX_NPI_PORT33_INSTR_HDR          (0x00011F0000000200ull)
 118#define CVMX_NPI_PORT34_INSTR_HDR          (0x00011F0000000208ull)
 119#define CVMX_NPI_PORT35_INSTR_HDR          (0x00011F0000000210ull)
 120#define CVMX_NPI_PORT_BP_CONTROL           (0x00011F00000001F0ull)
 121#define CVMX_NPI_PX_DBPAIR_ADDR(offset)    (0x00011F0000000180ull + ((offset) & 3) * 8)
 122#define CVMX_NPI_PX_INSTR_ADDR(offset)     (0x00011F00000001C0ull + ((offset) & 3) * 8)
 123#define CVMX_NPI_PX_INSTR_CNTS(offset)     (0x00011F00000001A0ull + ((offset) & 3) * 8)
 124#define CVMX_NPI_PX_PAIR_CNTS(offset)      (0x00011F0000000160ull + ((offset) & 3) * 8)
 125#define CVMX_NPI_RSL_INT_BLOCKS            (0x00011F0000000000ull)
 126#define CVMX_NPI_SIZE_INPUT0               CVMX_NPI_SIZE_INPUTX(0)
 127#define CVMX_NPI_SIZE_INPUT1               CVMX_NPI_SIZE_INPUTX(1)
 128#define CVMX_NPI_SIZE_INPUT2               CVMX_NPI_SIZE_INPUTX(2)
 129#define CVMX_NPI_SIZE_INPUT3               CVMX_NPI_SIZE_INPUTX(3)
 130#define CVMX_NPI_SIZE_INPUTX(offset)       (0x00011F0000000078ull + ((offset) & 3) * 16)
 131#define CVMX_NPI_WIN_READ_TO               (0x00011F00000001E0ull)
 132
 133/**
 134 * cvmx_npi_base_addr_input#
 135 *
 136 * NPI_BASE_ADDR_INPUT0 = NPI's Base Address Input 0 Register
 137 *
 138 * The address to start reading Instructions from for Input-0.
 139 */
 140union cvmx_npi_base_addr_inputx {
 141        u64 u64;
 142        struct cvmx_npi_base_addr_inputx_s {
 143                u64 baddr : 61;
 144                u64 reserved_0_2 : 3;
 145        } s;
 146        struct cvmx_npi_base_addr_inputx_s cn30xx;
 147        struct cvmx_npi_base_addr_inputx_s cn31xx;
 148        struct cvmx_npi_base_addr_inputx_s cn38xx;
 149        struct cvmx_npi_base_addr_inputx_s cn38xxp2;
 150        struct cvmx_npi_base_addr_inputx_s cn50xx;
 151        struct cvmx_npi_base_addr_inputx_s cn58xx;
 152        struct cvmx_npi_base_addr_inputx_s cn58xxp1;
 153};
 154
 155typedef union cvmx_npi_base_addr_inputx cvmx_npi_base_addr_inputx_t;
 156
 157/**
 158 * cvmx_npi_base_addr_output#
 159 *
 160 * NPI_BASE_ADDR_OUTPUT0 = NPI's Base Address Output 0 Register
 161 *
 162 * The address to start reading Instructions from for Output-0.
 163 */
 164union cvmx_npi_base_addr_outputx {
 165        u64 u64;
 166        struct cvmx_npi_base_addr_outputx_s {
 167                u64 baddr : 61;
 168                u64 reserved_0_2 : 3;
 169        } s;
 170        struct cvmx_npi_base_addr_outputx_s cn30xx;
 171        struct cvmx_npi_base_addr_outputx_s cn31xx;
 172        struct cvmx_npi_base_addr_outputx_s cn38xx;
 173        struct cvmx_npi_base_addr_outputx_s cn38xxp2;
 174        struct cvmx_npi_base_addr_outputx_s cn50xx;
 175        struct cvmx_npi_base_addr_outputx_s cn58xx;
 176        struct cvmx_npi_base_addr_outputx_s cn58xxp1;
 177};
 178
 179typedef union cvmx_npi_base_addr_outputx cvmx_npi_base_addr_outputx_t;
 180
 181/**
 182 * cvmx_npi_bist_status
 183 *
 184 * NPI_BIST_STATUS = NPI's BIST Status Register
 185 *
 186 * Results from BIST runs of NPI's memories.
 187 */
 188union cvmx_npi_bist_status {
 189        u64 u64;
 190        struct cvmx_npi_bist_status_s {
 191                u64 reserved_20_63 : 44;
 192                u64 csr_bs : 1;
 193                u64 dif_bs : 1;
 194                u64 rdp_bs : 1;
 195                u64 pcnc_bs : 1;
 196                u64 pcn_bs : 1;
 197                u64 rdn_bs : 1;
 198                u64 pcac_bs : 1;
 199                u64 pcad_bs : 1;
 200                u64 rdnl_bs : 1;
 201                u64 pgf_bs : 1;
 202                u64 pig_bs : 1;
 203                u64 pof0_bs : 1;
 204                u64 pof1_bs : 1;
 205                u64 pof2_bs : 1;
 206                u64 pof3_bs : 1;
 207                u64 pos_bs : 1;
 208                u64 nus_bs : 1;
 209                u64 dob_bs : 1;
 210                u64 pdf_bs : 1;
 211                u64 dpi_bs : 1;
 212        } s;
 213        struct cvmx_npi_bist_status_cn30xx {
 214                u64 reserved_20_63 : 44;
 215                u64 csr_bs : 1;
 216                u64 dif_bs : 1;
 217                u64 rdp_bs : 1;
 218                u64 pcnc_bs : 1;
 219                u64 pcn_bs : 1;
 220                u64 rdn_bs : 1;
 221                u64 pcac_bs : 1;
 222                u64 pcad_bs : 1;
 223                u64 rdnl_bs : 1;
 224                u64 pgf_bs : 1;
 225                u64 pig_bs : 1;
 226                u64 pof0_bs : 1;
 227                u64 reserved_5_7 : 3;
 228                u64 pos_bs : 1;
 229                u64 nus_bs : 1;
 230                u64 dob_bs : 1;
 231                u64 pdf_bs : 1;
 232                u64 dpi_bs : 1;
 233        } cn30xx;
 234        struct cvmx_npi_bist_status_s cn31xx;
 235        struct cvmx_npi_bist_status_s cn38xx;
 236        struct cvmx_npi_bist_status_s cn38xxp2;
 237        struct cvmx_npi_bist_status_cn50xx {
 238                u64 reserved_20_63 : 44;
 239                u64 csr_bs : 1;
 240                u64 dif_bs : 1;
 241                u64 rdp_bs : 1;
 242                u64 pcnc_bs : 1;
 243                u64 pcn_bs : 1;
 244                u64 rdn_bs : 1;
 245                u64 pcac_bs : 1;
 246                u64 pcad_bs : 1;
 247                u64 rdnl_bs : 1;
 248                u64 pgf_bs : 1;
 249                u64 pig_bs : 1;
 250                u64 pof0_bs : 1;
 251                u64 pof1_bs : 1;
 252                u64 reserved_5_6 : 2;
 253                u64 pos_bs : 1;
 254                u64 nus_bs : 1;
 255                u64 dob_bs : 1;
 256                u64 pdf_bs : 1;
 257                u64 dpi_bs : 1;
 258        } cn50xx;
 259        struct cvmx_npi_bist_status_s cn58xx;
 260        struct cvmx_npi_bist_status_s cn58xxp1;
 261};
 262
 263typedef union cvmx_npi_bist_status cvmx_npi_bist_status_t;
 264
 265/**
 266 * cvmx_npi_buff_size_output#
 267 *
 268 * NPI_BUFF_SIZE_OUTPUT0 = NPI's D/I Buffer Sizes For Output 0
 269 *
 270 * The size in bytes of the Data Bufffer and Information Buffer for output 0.
 271 */
 272union cvmx_npi_buff_size_outputx {
 273        u64 u64;
 274        struct cvmx_npi_buff_size_outputx_s {
 275                u64 reserved_23_63 : 41;
 276                u64 isize : 7;
 277                u64 bsize : 16;
 278        } s;
 279        struct cvmx_npi_buff_size_outputx_s cn30xx;
 280        struct cvmx_npi_buff_size_outputx_s cn31xx;
 281        struct cvmx_npi_buff_size_outputx_s cn38xx;
 282        struct cvmx_npi_buff_size_outputx_s cn38xxp2;
 283        struct cvmx_npi_buff_size_outputx_s cn50xx;
 284        struct cvmx_npi_buff_size_outputx_s cn58xx;
 285        struct cvmx_npi_buff_size_outputx_s cn58xxp1;
 286};
 287
 288typedef union cvmx_npi_buff_size_outputx cvmx_npi_buff_size_outputx_t;
 289
 290/**
 291 * cvmx_npi_comp_ctl
 292 *
 293 * NPI_COMP_CTL = PCI Compensation Control
 294 *
 295 * PCI Compensation Control
 296 */
 297union cvmx_npi_comp_ctl {
 298        u64 u64;
 299        struct cvmx_npi_comp_ctl_s {
 300                u64 reserved_10_63 : 54;
 301                u64 pctl : 5;
 302                u64 nctl : 5;
 303        } s;
 304        struct cvmx_npi_comp_ctl_s cn50xx;
 305        struct cvmx_npi_comp_ctl_s cn58xx;
 306        struct cvmx_npi_comp_ctl_s cn58xxp1;
 307};
 308
 309typedef union cvmx_npi_comp_ctl cvmx_npi_comp_ctl_t;
 310
 311/**
 312 * cvmx_npi_ctl_status
 313 *
 314 * NPI_CTL_STATUS = NPI's Control Status Register
 315 *
 316 * Contains control ans status for NPI.
 317 * Writes to this register are not ordered with writes/reads to the PCI Memory space.
 318 * To ensure that a write has completed the user must read the register before
 319 * making an access(i.e. PCI memory space) that requires the value of this register to be updated.
 320 */
 321union cvmx_npi_ctl_status {
 322        u64 u64;
 323        struct cvmx_npi_ctl_status_s {
 324                u64 reserved_63_63 : 1;
 325                u64 chip_rev : 8;
 326                u64 dis_pniw : 1;
 327                u64 out3_enb : 1;
 328                u64 out2_enb : 1;
 329                u64 out1_enb : 1;
 330                u64 out0_enb : 1;
 331                u64 ins3_enb : 1;
 332                u64 ins2_enb : 1;
 333                u64 ins1_enb : 1;
 334                u64 ins0_enb : 1;
 335                u64 ins3_64b : 1;
 336                u64 ins2_64b : 1;
 337                u64 ins1_64b : 1;
 338                u64 ins0_64b : 1;
 339                u64 pci_wdis : 1;
 340                u64 wait_com : 1;
 341                u64 reserved_37_39 : 3;
 342                u64 max_word : 5;
 343                u64 reserved_10_31 : 22;
 344                u64 timer : 10;
 345        } s;
 346        struct cvmx_npi_ctl_status_cn30xx {
 347                u64 reserved_63_63 : 1;
 348                u64 chip_rev : 8;
 349                u64 dis_pniw : 1;
 350                u64 reserved_51_53 : 3;
 351                u64 out0_enb : 1;
 352                u64 reserved_47_49 : 3;
 353                u64 ins0_enb : 1;
 354                u64 reserved_43_45 : 3;
 355                u64 ins0_64b : 1;
 356                u64 pci_wdis : 1;
 357                u64 wait_com : 1;
 358                u64 reserved_37_39 : 3;
 359                u64 max_word : 5;
 360                u64 reserved_10_31 : 22;
 361                u64 timer : 10;
 362        } cn30xx;
 363        struct cvmx_npi_ctl_status_cn31xx {
 364                u64 reserved_63_63 : 1;
 365                u64 chip_rev : 8;
 366                u64 dis_pniw : 1;
 367                u64 reserved_52_53 : 2;
 368                u64 out1_enb : 1;
 369                u64 out0_enb : 1;
 370                u64 reserved_48_49 : 2;
 371                u64 ins1_enb : 1;
 372                u64 ins0_enb : 1;
 373                u64 reserved_44_45 : 2;
 374                u64 ins1_64b : 1;
 375                u64 ins0_64b : 1;
 376                u64 pci_wdis : 1;
 377                u64 wait_com : 1;
 378                u64 reserved_37_39 : 3;
 379                u64 max_word : 5;
 380                u64 reserved_10_31 : 22;
 381                u64 timer : 10;
 382        } cn31xx;
 383        struct cvmx_npi_ctl_status_s cn38xx;
 384        struct cvmx_npi_ctl_status_s cn38xxp2;
 385        struct cvmx_npi_ctl_status_cn31xx cn50xx;
 386        struct cvmx_npi_ctl_status_s cn58xx;
 387        struct cvmx_npi_ctl_status_s cn58xxp1;
 388};
 389
 390typedef union cvmx_npi_ctl_status cvmx_npi_ctl_status_t;
 391
 392/**
 393 * cvmx_npi_dbg_select
 394 *
 395 * NPI_DBG_SELECT = Debug Select Register
 396 *
 397 * Contains the debug select value in last written to the RSLs.
 398 */
 399union cvmx_npi_dbg_select {
 400        u64 u64;
 401        struct cvmx_npi_dbg_select_s {
 402                u64 reserved_16_63 : 48;
 403                u64 dbg_sel : 16;
 404        } s;
 405        struct cvmx_npi_dbg_select_s cn30xx;
 406        struct cvmx_npi_dbg_select_s cn31xx;
 407        struct cvmx_npi_dbg_select_s cn38xx;
 408        struct cvmx_npi_dbg_select_s cn38xxp2;
 409        struct cvmx_npi_dbg_select_s cn50xx;
 410        struct cvmx_npi_dbg_select_s cn58xx;
 411        struct cvmx_npi_dbg_select_s cn58xxp1;
 412};
 413
 414typedef union cvmx_npi_dbg_select cvmx_npi_dbg_select_t;
 415
 416/**
 417 * cvmx_npi_dma_control
 418 *
 419 * NPI_DMA_CONTROL = DMA Control Register
 420 *
 421 * Controls operation of the DMA IN/OUT of the NPI.
 422 */
 423union cvmx_npi_dma_control {
 424        u64 u64;
 425        struct cvmx_npi_dma_control_s {
 426                u64 reserved_36_63 : 28;
 427                u64 b0_lend : 1;
 428                u64 dwb_denb : 1;
 429                u64 dwb_ichk : 9;
 430                u64 fpa_que : 3;
 431                u64 o_add1 : 1;
 432                u64 o_ro : 1;
 433                u64 o_ns : 1;
 434                u64 o_es : 2;
 435                u64 o_mode : 1;
 436                u64 hp_enb : 1;
 437                u64 lp_enb : 1;
 438                u64 csize : 14;
 439        } s;
 440        struct cvmx_npi_dma_control_s cn30xx;
 441        struct cvmx_npi_dma_control_s cn31xx;
 442        struct cvmx_npi_dma_control_s cn38xx;
 443        struct cvmx_npi_dma_control_s cn38xxp2;
 444        struct cvmx_npi_dma_control_s cn50xx;
 445        struct cvmx_npi_dma_control_s cn58xx;
 446        struct cvmx_npi_dma_control_s cn58xxp1;
 447};
 448
 449typedef union cvmx_npi_dma_control cvmx_npi_dma_control_t;
 450
 451/**
 452 * cvmx_npi_dma_highp_counts
 453 *
 454 * NPI_DMA_HIGHP_COUNTS = NPI's High Priority DMA Counts
 455 *
 456 * Values for determing the number of instructions for High Priority DMA in the NPI.
 457 */
 458union cvmx_npi_dma_highp_counts {
 459        u64 u64;
 460        struct cvmx_npi_dma_highp_counts_s {
 461                u64 reserved_39_63 : 25;
 462                u64 fcnt : 7;
 463                u64 dbell : 32;
 464        } s;
 465        struct cvmx_npi_dma_highp_counts_s cn30xx;
 466        struct cvmx_npi_dma_highp_counts_s cn31xx;
 467        struct cvmx_npi_dma_highp_counts_s cn38xx;
 468        struct cvmx_npi_dma_highp_counts_s cn38xxp2;
 469        struct cvmx_npi_dma_highp_counts_s cn50xx;
 470        struct cvmx_npi_dma_highp_counts_s cn58xx;
 471        struct cvmx_npi_dma_highp_counts_s cn58xxp1;
 472};
 473
 474typedef union cvmx_npi_dma_highp_counts cvmx_npi_dma_highp_counts_t;
 475
 476/**
 477 * cvmx_npi_dma_highp_naddr
 478 *
 479 * NPI_DMA_HIGHP_NADDR = NPI's High Priority DMA Next Ichunk Address
 480 *
 481 * Place NPI will read the next Ichunk data from. This is valid when state is 0
 482 */
 483union cvmx_npi_dma_highp_naddr {
 484        u64 u64;
 485        struct cvmx_npi_dma_highp_naddr_s {
 486                u64 reserved_40_63 : 24;
 487                u64 state : 4;
 488                u64 addr : 36;
 489        } s;
 490        struct cvmx_npi_dma_highp_naddr_s cn30xx;
 491        struct cvmx_npi_dma_highp_naddr_s cn31xx;
 492        struct cvmx_npi_dma_highp_naddr_s cn38xx;
 493        struct cvmx_npi_dma_highp_naddr_s cn38xxp2;
 494        struct cvmx_npi_dma_highp_naddr_s cn50xx;
 495        struct cvmx_npi_dma_highp_naddr_s cn58xx;
 496        struct cvmx_npi_dma_highp_naddr_s cn58xxp1;
 497};
 498
 499typedef union cvmx_npi_dma_highp_naddr cvmx_npi_dma_highp_naddr_t;
 500
 501/**
 502 * cvmx_npi_dma_lowp_counts
 503 *
 504 * NPI_DMA_LOWP_COUNTS = NPI's Low Priority DMA Counts
 505 *
 506 * Values for determing the number of instructions for Low Priority DMA in the NPI.
 507 */
 508union cvmx_npi_dma_lowp_counts {
 509        u64 u64;
 510        struct cvmx_npi_dma_lowp_counts_s {
 511                u64 reserved_39_63 : 25;
 512                u64 fcnt : 7;
 513                u64 dbell : 32;
 514        } s;
 515        struct cvmx_npi_dma_lowp_counts_s cn30xx;
 516        struct cvmx_npi_dma_lowp_counts_s cn31xx;
 517        struct cvmx_npi_dma_lowp_counts_s cn38xx;
 518        struct cvmx_npi_dma_lowp_counts_s cn38xxp2;
 519        struct cvmx_npi_dma_lowp_counts_s cn50xx;
 520        struct cvmx_npi_dma_lowp_counts_s cn58xx;
 521        struct cvmx_npi_dma_lowp_counts_s cn58xxp1;
 522};
 523
 524typedef union cvmx_npi_dma_lowp_counts cvmx_npi_dma_lowp_counts_t;
 525
 526/**
 527 * cvmx_npi_dma_lowp_naddr
 528 *
 529 * NPI_DMA_LOWP_NADDR = NPI's Low Priority DMA Next Ichunk Address
 530 *
 531 * Place NPI will read the next Ichunk data from. This is valid when state is 0
 532 */
 533union cvmx_npi_dma_lowp_naddr {
 534        u64 u64;
 535        struct cvmx_npi_dma_lowp_naddr_s {
 536                u64 reserved_40_63 : 24;
 537                u64 state : 4;
 538                u64 addr : 36;
 539        } s;
 540        struct cvmx_npi_dma_lowp_naddr_s cn30xx;
 541        struct cvmx_npi_dma_lowp_naddr_s cn31xx;
 542        struct cvmx_npi_dma_lowp_naddr_s cn38xx;
 543        struct cvmx_npi_dma_lowp_naddr_s cn38xxp2;
 544        struct cvmx_npi_dma_lowp_naddr_s cn50xx;
 545        struct cvmx_npi_dma_lowp_naddr_s cn58xx;
 546        struct cvmx_npi_dma_lowp_naddr_s cn58xxp1;
 547};
 548
 549typedef union cvmx_npi_dma_lowp_naddr cvmx_npi_dma_lowp_naddr_t;
 550
 551/**
 552 * cvmx_npi_highp_dbell
 553 *
 554 * NPI_HIGHP_DBELL = High Priority Door Bell
 555 *
 556 * The door bell register for the high priority DMA queue.
 557 */
 558union cvmx_npi_highp_dbell {
 559        u64 u64;
 560        struct cvmx_npi_highp_dbell_s {
 561                u64 reserved_16_63 : 48;
 562                u64 dbell : 16;
 563        } s;
 564        struct cvmx_npi_highp_dbell_s cn30xx;
 565        struct cvmx_npi_highp_dbell_s cn31xx;
 566        struct cvmx_npi_highp_dbell_s cn38xx;
 567        struct cvmx_npi_highp_dbell_s cn38xxp2;
 568        struct cvmx_npi_highp_dbell_s cn50xx;
 569        struct cvmx_npi_highp_dbell_s cn58xx;
 570        struct cvmx_npi_highp_dbell_s cn58xxp1;
 571};
 572
 573typedef union cvmx_npi_highp_dbell cvmx_npi_highp_dbell_t;
 574
 575/**
 576 * cvmx_npi_highp_ibuff_saddr
 577 *
 578 * NPI_HIGHP_IBUFF_SADDR = DMA High Priority Instruction Buffer Starting Address
 579 *
 580 * The address to start reading Instructions from for HIGHP.
 581 */
 582union cvmx_npi_highp_ibuff_saddr {
 583        u64 u64;
 584        struct cvmx_npi_highp_ibuff_saddr_s {
 585                u64 reserved_36_63 : 28;
 586                u64 saddr : 36;
 587        } s;
 588        struct cvmx_npi_highp_ibuff_saddr_s cn30xx;
 589        struct cvmx_npi_highp_ibuff_saddr_s cn31xx;
 590        struct cvmx_npi_highp_ibuff_saddr_s cn38xx;
 591        struct cvmx_npi_highp_ibuff_saddr_s cn38xxp2;
 592        struct cvmx_npi_highp_ibuff_saddr_s cn50xx;
 593        struct cvmx_npi_highp_ibuff_saddr_s cn58xx;
 594        struct cvmx_npi_highp_ibuff_saddr_s cn58xxp1;
 595};
 596
 597typedef union cvmx_npi_highp_ibuff_saddr cvmx_npi_highp_ibuff_saddr_t;
 598
 599/**
 600 * cvmx_npi_input_control
 601 *
 602 * NPI_INPUT_CONTROL = NPI's Input Control Register
 603 *
 604 * Control for reads for gather list and instructions.
 605 */
 606union cvmx_npi_input_control {
 607        u64 u64;
 608        struct cvmx_npi_input_control_s {
 609                u64 reserved_23_63 : 41;
 610                u64 pkt_rr : 1;
 611                u64 pbp_dhi : 13;
 612                u64 d_nsr : 1;
 613                u64 d_esr : 2;
 614                u64 d_ror : 1;
 615                u64 use_csr : 1;
 616                u64 nsr : 1;
 617                u64 esr : 2;
 618                u64 ror : 1;
 619        } s;
 620        struct cvmx_npi_input_control_cn30xx {
 621                u64 reserved_22_63 : 42;
 622                u64 pbp_dhi : 13;
 623                u64 d_nsr : 1;
 624                u64 d_esr : 2;
 625                u64 d_ror : 1;
 626                u64 use_csr : 1;
 627                u64 nsr : 1;
 628                u64 esr : 2;
 629                u64 ror : 1;
 630        } cn30xx;
 631        struct cvmx_npi_input_control_cn30xx cn31xx;
 632        struct cvmx_npi_input_control_s cn38xx;
 633        struct cvmx_npi_input_control_cn30xx cn38xxp2;
 634        struct cvmx_npi_input_control_s cn50xx;
 635        struct cvmx_npi_input_control_s cn58xx;
 636        struct cvmx_npi_input_control_s cn58xxp1;
 637};
 638
 639typedef union cvmx_npi_input_control cvmx_npi_input_control_t;
 640
 641/**
 642 * cvmx_npi_int_enb
 643 *
 644 * NPI_INTERRUPT_ENB = NPI's Interrupt Enable Register
 645 *
 646 * Used to enable the various interrupting conditions of NPI
 647 */
 648union cvmx_npi_int_enb {
 649        u64 u64;
 650        struct cvmx_npi_int_enb_s {
 651                u64 reserved_62_63 : 2;
 652                u64 q1_a_f : 1;
 653                u64 q1_s_e : 1;
 654                u64 pdf_p_f : 1;
 655                u64 pdf_p_e : 1;
 656                u64 pcf_p_f : 1;
 657                u64 pcf_p_e : 1;
 658                u64 rdx_s_e : 1;
 659                u64 rwx_s_e : 1;
 660                u64 pnc_a_f : 1;
 661                u64 pnc_s_e : 1;
 662                u64 com_a_f : 1;
 663                u64 com_s_e : 1;
 664                u64 q3_a_f : 1;
 665                u64 q3_s_e : 1;
 666                u64 q2_a_f : 1;
 667                u64 q2_s_e : 1;
 668                u64 pcr_a_f : 1;
 669                u64 pcr_s_e : 1;
 670                u64 fcr_a_f : 1;
 671                u64 fcr_s_e : 1;
 672                u64 iobdma : 1;
 673                u64 p_dperr : 1;
 674                u64 win_rto : 1;
 675                u64 i3_pperr : 1;
 676                u64 i2_pperr : 1;
 677                u64 i1_pperr : 1;
 678                u64 i0_pperr : 1;
 679                u64 p3_ptout : 1;
 680                u64 p2_ptout : 1;
 681                u64 p1_ptout : 1;
 682                u64 p0_ptout : 1;
 683                u64 p3_pperr : 1;
 684                u64 p2_pperr : 1;
 685                u64 p1_pperr : 1;
 686                u64 p0_pperr : 1;
 687                u64 g3_rtout : 1;
 688                u64 g2_rtout : 1;
 689                u64 g1_rtout : 1;
 690                u64 g0_rtout : 1;
 691                u64 p3_perr : 1;
 692                u64 p2_perr : 1;
 693                u64 p1_perr : 1;
 694                u64 p0_perr : 1;
 695                u64 p3_rtout : 1;
 696                u64 p2_rtout : 1;
 697                u64 p1_rtout : 1;
 698                u64 p0_rtout : 1;
 699                u64 i3_overf : 1;
 700                u64 i2_overf : 1;
 701                u64 i1_overf : 1;
 702                u64 i0_overf : 1;
 703                u64 i3_rtout : 1;
 704                u64 i2_rtout : 1;
 705                u64 i1_rtout : 1;
 706                u64 i0_rtout : 1;
 707                u64 po3_2sml : 1;
 708                u64 po2_2sml : 1;
 709                u64 po1_2sml : 1;
 710                u64 po0_2sml : 1;
 711                u64 pci_rsl : 1;
 712                u64 rml_wto : 1;
 713                u64 rml_rto : 1;
 714        } s;
 715        struct cvmx_npi_int_enb_cn30xx {
 716                u64 reserved_62_63 : 2;
 717                u64 q1_a_f : 1;
 718                u64 q1_s_e : 1;
 719                u64 pdf_p_f : 1;
 720                u64 pdf_p_e : 1;
 721                u64 pcf_p_f : 1;
 722                u64 pcf_p_e : 1;
 723                u64 rdx_s_e : 1;
 724                u64 rwx_s_e : 1;
 725                u64 pnc_a_f : 1;
 726                u64 pnc_s_e : 1;
 727                u64 com_a_f : 1;
 728                u64 com_s_e : 1;
 729                u64 q3_a_f : 1;
 730                u64 q3_s_e : 1;
 731                u64 q2_a_f : 1;
 732                u64 q2_s_e : 1;
 733                u64 pcr_a_f : 1;
 734                u64 pcr_s_e : 1;
 735                u64 fcr_a_f : 1;
 736                u64 fcr_s_e : 1;
 737                u64 iobdma : 1;
 738                u64 p_dperr : 1;
 739                u64 win_rto : 1;
 740                u64 reserved_36_38 : 3;
 741                u64 i0_pperr : 1;
 742                u64 reserved_32_34 : 3;
 743                u64 p0_ptout : 1;
 744                u64 reserved_28_30 : 3;
 745                u64 p0_pperr : 1;
 746                u64 reserved_24_26 : 3;
 747                u64 g0_rtout : 1;
 748                u64 reserved_20_22 : 3;
 749                u64 p0_perr : 1;
 750                u64 reserved_16_18 : 3;
 751                u64 p0_rtout : 1;
 752                u64 reserved_12_14 : 3;
 753                u64 i0_overf : 1;
 754                u64 reserved_8_10 : 3;
 755                u64 i0_rtout : 1;
 756                u64 reserved_4_6 : 3;
 757                u64 po0_2sml : 1;
 758                u64 pci_rsl : 1;
 759                u64 rml_wto : 1;
 760                u64 rml_rto : 1;
 761        } cn30xx;
 762        struct cvmx_npi_int_enb_cn31xx {
 763                u64 reserved_62_63 : 2;
 764                u64 q1_a_f : 1;
 765                u64 q1_s_e : 1;
 766                u64 pdf_p_f : 1;
 767                u64 pdf_p_e : 1;
 768                u64 pcf_p_f : 1;
 769                u64 pcf_p_e : 1;
 770                u64 rdx_s_e : 1;
 771                u64 rwx_s_e : 1;
 772                u64 pnc_a_f : 1;
 773                u64 pnc_s_e : 1;
 774                u64 com_a_f : 1;
 775                u64 com_s_e : 1;
 776                u64 q3_a_f : 1;
 777                u64 q3_s_e : 1;
 778                u64 q2_a_f : 1;
 779                u64 q2_s_e : 1;
 780                u64 pcr_a_f : 1;
 781                u64 pcr_s_e : 1;
 782                u64 fcr_a_f : 1;
 783                u64 fcr_s_e : 1;
 784                u64 iobdma : 1;
 785                u64 p_dperr : 1;
 786                u64 win_rto : 1;
 787                u64 reserved_37_38 : 2;
 788                u64 i1_pperr : 1;
 789                u64 i0_pperr : 1;
 790                u64 reserved_33_34 : 2;
 791                u64 p1_ptout : 1;
 792                u64 p0_ptout : 1;
 793                u64 reserved_29_30 : 2;
 794                u64 p1_pperr : 1;
 795                u64 p0_pperr : 1;
 796                u64 reserved_25_26 : 2;
 797                u64 g1_rtout : 1;
 798                u64 g0_rtout : 1;
 799                u64 reserved_21_22 : 2;
 800                u64 p1_perr : 1;
 801                u64 p0_perr : 1;
 802                u64 reserved_17_18 : 2;
 803                u64 p1_rtout : 1;
 804                u64 p0_rtout : 1;
 805                u64 reserved_13_14 : 2;
 806                u64 i1_overf : 1;
 807                u64 i0_overf : 1;
 808                u64 reserved_9_10 : 2;
 809                u64 i1_rtout : 1;
 810                u64 i0_rtout : 1;
 811                u64 reserved_5_6 : 2;
 812                u64 po1_2sml : 1;
 813                u64 po0_2sml : 1;
 814                u64 pci_rsl : 1;
 815                u64 rml_wto : 1;
 816                u64 rml_rto : 1;
 817        } cn31xx;
 818        struct cvmx_npi_int_enb_s cn38xx;
 819        struct cvmx_npi_int_enb_cn38xxp2 {
 820                u64 reserved_42_63 : 22;
 821                u64 iobdma : 1;
 822                u64 p_dperr : 1;
 823                u64 win_rto : 1;
 824                u64 i3_pperr : 1;
 825                u64 i2_pperr : 1;
 826                u64 i1_pperr : 1;
 827                u64 i0_pperr : 1;
 828                u64 p3_ptout : 1;
 829                u64 p2_ptout : 1;
 830                u64 p1_ptout : 1;
 831                u64 p0_ptout : 1;
 832                u64 p3_pperr : 1;
 833                u64 p2_pperr : 1;
 834                u64 p1_pperr : 1;
 835                u64 p0_pperr : 1;
 836                u64 g3_rtout : 1;
 837                u64 g2_rtout : 1;
 838                u64 g1_rtout : 1;
 839                u64 g0_rtout : 1;
 840                u64 p3_perr : 1;
 841                u64 p2_perr : 1;
 842                u64 p1_perr : 1;
 843                u64 p0_perr : 1;
 844                u64 p3_rtout : 1;
 845                u64 p2_rtout : 1;
 846                u64 p1_rtout : 1;
 847                u64 p0_rtout : 1;
 848                u64 i3_overf : 1;
 849                u64 i2_overf : 1;
 850                u64 i1_overf : 1;
 851                u64 i0_overf : 1;
 852                u64 i3_rtout : 1;
 853                u64 i2_rtout : 1;
 854                u64 i1_rtout : 1;
 855                u64 i0_rtout : 1;
 856                u64 po3_2sml : 1;
 857                u64 po2_2sml : 1;
 858                u64 po1_2sml : 1;
 859                u64 po0_2sml : 1;
 860                u64 pci_rsl : 1;
 861                u64 rml_wto : 1;
 862                u64 rml_rto : 1;
 863        } cn38xxp2;
 864        struct cvmx_npi_int_enb_cn31xx cn50xx;
 865        struct cvmx_npi_int_enb_s cn58xx;
 866        struct cvmx_npi_int_enb_s cn58xxp1;
 867};
 868
 869typedef union cvmx_npi_int_enb cvmx_npi_int_enb_t;
 870
 871/**
 872 * cvmx_npi_int_sum
 873 *
 874 * NPI_INTERRUPT_SUM = NPI Interrupt Summary Register
 875 *
 876 * Set when an interrupt condition occurs, write '1' to clear.
 877 */
 878union cvmx_npi_int_sum {
 879        u64 u64;
 880        struct cvmx_npi_int_sum_s {
 881                u64 reserved_62_63 : 2;
 882                u64 q1_a_f : 1;
 883                u64 q1_s_e : 1;
 884                u64 pdf_p_f : 1;
 885                u64 pdf_p_e : 1;
 886                u64 pcf_p_f : 1;
 887                u64 pcf_p_e : 1;
 888                u64 rdx_s_e : 1;
 889                u64 rwx_s_e : 1;
 890                u64 pnc_a_f : 1;
 891                u64 pnc_s_e : 1;
 892                u64 com_a_f : 1;
 893                u64 com_s_e : 1;
 894                u64 q3_a_f : 1;
 895                u64 q3_s_e : 1;
 896                u64 q2_a_f : 1;
 897                u64 q2_s_e : 1;
 898                u64 pcr_a_f : 1;
 899                u64 pcr_s_e : 1;
 900                u64 fcr_a_f : 1;
 901                u64 fcr_s_e : 1;
 902                u64 iobdma : 1;
 903                u64 p_dperr : 1;
 904                u64 win_rto : 1;
 905                u64 i3_pperr : 1;
 906                u64 i2_pperr : 1;
 907                u64 i1_pperr : 1;
 908                u64 i0_pperr : 1;
 909                u64 p3_ptout : 1;
 910                u64 p2_ptout : 1;
 911                u64 p1_ptout : 1;
 912                u64 p0_ptout : 1;
 913                u64 p3_pperr : 1;
 914                u64 p2_pperr : 1;
 915                u64 p1_pperr : 1;
 916                u64 p0_pperr : 1;
 917                u64 g3_rtout : 1;
 918                u64 g2_rtout : 1;
 919                u64 g1_rtout : 1;
 920                u64 g0_rtout : 1;
 921                u64 p3_perr : 1;
 922                u64 p2_perr : 1;
 923                u64 p1_perr : 1;
 924                u64 p0_perr : 1;
 925                u64 p3_rtout : 1;
 926                u64 p2_rtout : 1;
 927                u64 p1_rtout : 1;
 928                u64 p0_rtout : 1;
 929                u64 i3_overf : 1;
 930                u64 i2_overf : 1;
 931                u64 i1_overf : 1;
 932                u64 i0_overf : 1;
 933                u64 i3_rtout : 1;
 934                u64 i2_rtout : 1;
 935                u64 i1_rtout : 1;
 936                u64 i0_rtout : 1;
 937                u64 po3_2sml : 1;
 938                u64 po2_2sml : 1;
 939                u64 po1_2sml : 1;
 940                u64 po0_2sml : 1;
 941                u64 pci_rsl : 1;
 942                u64 rml_wto : 1;
 943                u64 rml_rto : 1;
 944        } s;
 945        struct cvmx_npi_int_sum_cn30xx {
 946                u64 reserved_62_63 : 2;
 947                u64 q1_a_f : 1;
 948                u64 q1_s_e : 1;
 949                u64 pdf_p_f : 1;
 950                u64 pdf_p_e : 1;
 951                u64 pcf_p_f : 1;
 952                u64 pcf_p_e : 1;
 953                u64 rdx_s_e : 1;
 954                u64 rwx_s_e : 1;
 955                u64 pnc_a_f : 1;
 956                u64 pnc_s_e : 1;
 957                u64 com_a_f : 1;
 958                u64 com_s_e : 1;
 959                u64 q3_a_f : 1;
 960                u64 q3_s_e : 1;
 961                u64 q2_a_f : 1;
 962                u64 q2_s_e : 1;
 963                u64 pcr_a_f : 1;
 964                u64 pcr_s_e : 1;
 965                u64 fcr_a_f : 1;
 966                u64 fcr_s_e : 1;
 967                u64 iobdma : 1;
 968                u64 p_dperr : 1;
 969                u64 win_rto : 1;
 970                u64 reserved_36_38 : 3;
 971                u64 i0_pperr : 1;
 972                u64 reserved_32_34 : 3;
 973                u64 p0_ptout : 1;
 974                u64 reserved_28_30 : 3;
 975                u64 p0_pperr : 1;
 976                u64 reserved_24_26 : 3;
 977                u64 g0_rtout : 1;
 978                u64 reserved_20_22 : 3;
 979                u64 p0_perr : 1;
 980                u64 reserved_16_18 : 3;
 981                u64 p0_rtout : 1;
 982                u64 reserved_12_14 : 3;
 983                u64 i0_overf : 1;
 984                u64 reserved_8_10 : 3;
 985                u64 i0_rtout : 1;
 986                u64 reserved_4_6 : 3;
 987                u64 po0_2sml : 1;
 988                u64 pci_rsl : 1;
 989                u64 rml_wto : 1;
 990                u64 rml_rto : 1;
 991        } cn30xx;
 992        struct cvmx_npi_int_sum_cn31xx {
 993                u64 reserved_62_63 : 2;
 994                u64 q1_a_f : 1;
 995                u64 q1_s_e : 1;
 996                u64 pdf_p_f : 1;
 997                u64 pdf_p_e : 1;
 998                u64 pcf_p_f : 1;
 999                u64 pcf_p_e : 1;
1000                u64 rdx_s_e : 1;
1001                u64 rwx_s_e : 1;
1002                u64 pnc_a_f : 1;
1003                u64 pnc_s_e : 1;
1004                u64 com_a_f : 1;
1005                u64 com_s_e : 1;
1006                u64 q3_a_f : 1;
1007                u64 q3_s_e : 1;
1008                u64 q2_a_f : 1;
1009                u64 q2_s_e : 1;
1010                u64 pcr_a_f : 1;
1011                u64 pcr_s_e : 1;
1012                u64 fcr_a_f : 1;
1013                u64 fcr_s_e : 1;
1014                u64 iobdma : 1;
1015                u64 p_dperr : 1;
1016                u64 win_rto : 1;
1017                u64 reserved_37_38 : 2;
1018                u64 i1_pperr : 1;
1019                u64 i0_pperr : 1;
1020                u64 reserved_33_34 : 2;
1021                u64 p1_ptout : 1;
1022                u64 p0_ptout : 1;
1023                u64 reserved_29_30 : 2;
1024                u64 p1_pperr : 1;
1025                u64 p0_pperr : 1;
1026                u64 reserved_25_26 : 2;
1027                u64 g1_rtout : 1;
1028                u64 g0_rtout : 1;
1029                u64 reserved_21_22 : 2;
1030                u64 p1_perr : 1;
1031                u64 p0_perr : 1;
1032                u64 reserved_17_18 : 2;
1033                u64 p1_rtout : 1;
1034                u64 p0_rtout : 1;
1035                u64 reserved_13_14 : 2;
1036                u64 i1_overf : 1;
1037                u64 i0_overf : 1;
1038                u64 reserved_9_10 : 2;
1039                u64 i1_rtout : 1;
1040                u64 i0_rtout : 1;
1041                u64 reserved_5_6 : 2;
1042                u64 po1_2sml : 1;
1043                u64 po0_2sml : 1;
1044                u64 pci_rsl : 1;
1045                u64 rml_wto : 1;
1046                u64 rml_rto : 1;
1047        } cn31xx;
1048        struct cvmx_npi_int_sum_s cn38xx;
1049        struct cvmx_npi_int_sum_cn38xxp2 {
1050                u64 reserved_42_63 : 22;
1051                u64 iobdma : 1;
1052                u64 p_dperr : 1;
1053                u64 win_rto : 1;
1054                u64 i3_pperr : 1;
1055                u64 i2_pperr : 1;
1056                u64 i1_pperr : 1;
1057                u64 i0_pperr : 1;
1058                u64 p3_ptout : 1;
1059                u64 p2_ptout : 1;
1060                u64 p1_ptout : 1;
1061                u64 p0_ptout : 1;
1062                u64 p3_pperr : 1;
1063                u64 p2_pperr : 1;
1064                u64 p1_pperr : 1;
1065                u64 p0_pperr : 1;
1066                u64 g3_rtout : 1;
1067                u64 g2_rtout : 1;
1068                u64 g1_rtout : 1;
1069                u64 g0_rtout : 1;
1070                u64 p3_perr : 1;
1071                u64 p2_perr : 1;
1072                u64 p1_perr : 1;
1073                u64 p0_perr : 1;
1074                u64 p3_rtout : 1;
1075                u64 p2_rtout : 1;
1076                u64 p1_rtout : 1;
1077                u64 p0_rtout : 1;
1078                u64 i3_overf : 1;
1079                u64 i2_overf : 1;
1080                u64 i1_overf : 1;
1081                u64 i0_overf : 1;
1082                u64 i3_rtout : 1;
1083                u64 i2_rtout : 1;
1084                u64 i1_rtout : 1;
1085                u64 i0_rtout : 1;
1086                u64 po3_2sml : 1;
1087                u64 po2_2sml : 1;
1088                u64 po1_2sml : 1;
1089                u64 po0_2sml : 1;
1090                u64 pci_rsl : 1;
1091                u64 rml_wto : 1;
1092                u64 rml_rto : 1;
1093        } cn38xxp2;
1094        struct cvmx_npi_int_sum_cn31xx cn50xx;
1095        struct cvmx_npi_int_sum_s cn58xx;
1096        struct cvmx_npi_int_sum_s cn58xxp1;
1097};
1098
1099typedef union cvmx_npi_int_sum cvmx_npi_int_sum_t;
1100
1101/**
1102 * cvmx_npi_lowp_dbell
1103 *
1104 * NPI_LOWP_DBELL = Low Priority Door Bell
1105 *
1106 * The door bell register for the low priority DMA queue.
1107 */
1108union cvmx_npi_lowp_dbell {
1109        u64 u64;
1110        struct cvmx_npi_lowp_dbell_s {
1111                u64 reserved_16_63 : 48;
1112                u64 dbell : 16;
1113        } s;
1114        struct cvmx_npi_lowp_dbell_s cn30xx;
1115        struct cvmx_npi_lowp_dbell_s cn31xx;
1116        struct cvmx_npi_lowp_dbell_s cn38xx;
1117        struct cvmx_npi_lowp_dbell_s cn38xxp2;
1118        struct cvmx_npi_lowp_dbell_s cn50xx;
1119        struct cvmx_npi_lowp_dbell_s cn58xx;
1120        struct cvmx_npi_lowp_dbell_s cn58xxp1;
1121};
1122
1123typedef union cvmx_npi_lowp_dbell cvmx_npi_lowp_dbell_t;
1124
1125/**
1126 * cvmx_npi_lowp_ibuff_saddr
1127 *
1128 * NPI_LOWP_IBUFF_SADDR = DMA Low Priority's Instruction Buffer Starting Address
1129 *
1130 * The address to start reading Instructions from for LOWP.
1131 */
1132union cvmx_npi_lowp_ibuff_saddr {
1133        u64 u64;
1134        struct cvmx_npi_lowp_ibuff_saddr_s {
1135                u64 reserved_36_63 : 28;
1136                u64 saddr : 36;
1137        } s;
1138        struct cvmx_npi_lowp_ibuff_saddr_s cn30xx;
1139        struct cvmx_npi_lowp_ibuff_saddr_s cn31xx;
1140        struct cvmx_npi_lowp_ibuff_saddr_s cn38xx;
1141        struct cvmx_npi_lowp_ibuff_saddr_s cn38xxp2;
1142        struct cvmx_npi_lowp_ibuff_saddr_s cn50xx;
1143        struct cvmx_npi_lowp_ibuff_saddr_s cn58xx;
1144        struct cvmx_npi_lowp_ibuff_saddr_s cn58xxp1;
1145};
1146
1147typedef union cvmx_npi_lowp_ibuff_saddr cvmx_npi_lowp_ibuff_saddr_t;
1148
1149/**
1150 * cvmx_npi_mem_access_subid#
1151 *
1152 * NPI_MEM_ACCESS_SUBID3 = Memory Access SubId 3Register
1153 *
1154 * Carries Read/Write parameters for PP access to PCI memory that use NPI SubId3.
1155 * Writes to this register are not ordered with writes/reads to the PCI Memory space.
1156 * To ensure that a write has completed the user must read the register before
1157 * making an access(i.e. PCI memory space) that requires the value of this register to be updated.
1158 */
1159union cvmx_npi_mem_access_subidx {
1160        u64 u64;
1161        struct cvmx_npi_mem_access_subidx_s {
1162                u64 reserved_38_63 : 26;
1163                u64 shortl : 1;
1164                u64 nmerge : 1;
1165                u64 esr : 2;
1166                u64 esw : 2;
1167                u64 nsr : 1;
1168                u64 nsw : 1;
1169                u64 ror : 1;
1170                u64 row : 1;
1171                u64 ba : 28;
1172        } s;
1173        struct cvmx_npi_mem_access_subidx_s cn30xx;
1174        struct cvmx_npi_mem_access_subidx_cn31xx {
1175                u64 reserved_36_63 : 28;
1176                u64 esr : 2;
1177                u64 esw : 2;
1178                u64 nsr : 1;
1179                u64 nsw : 1;
1180                u64 ror : 1;
1181                u64 row : 1;
1182                u64 ba : 28;
1183        } cn31xx;
1184        struct cvmx_npi_mem_access_subidx_s cn38xx;
1185        struct cvmx_npi_mem_access_subidx_cn31xx cn38xxp2;
1186        struct cvmx_npi_mem_access_subidx_s cn50xx;
1187        struct cvmx_npi_mem_access_subidx_s cn58xx;
1188        struct cvmx_npi_mem_access_subidx_s cn58xxp1;
1189};
1190
1191typedef union cvmx_npi_mem_access_subidx cvmx_npi_mem_access_subidx_t;
1192
1193/**
1194 * cvmx_npi_msi_rcv
1195 *
1196 * NPI_MSI_RCV = NPI MSI Receive Vector Register
1197 *
1198 * A bit is set in this register relative to the vector received during a MSI. And cleared by a W1 to the register.
1199 */
1200union cvmx_npi_msi_rcv {
1201        u64 u64;
1202        struct cvmx_npi_msi_rcv_s {
1203                u64 int_vec : 64;
1204        } s;
1205        struct cvmx_npi_msi_rcv_s cn30xx;
1206        struct cvmx_npi_msi_rcv_s cn31xx;
1207        struct cvmx_npi_msi_rcv_s cn38xx;
1208        struct cvmx_npi_msi_rcv_s cn38xxp2;
1209        struct cvmx_npi_msi_rcv_s cn50xx;
1210        struct cvmx_npi_msi_rcv_s cn58xx;
1211        struct cvmx_npi_msi_rcv_s cn58xxp1;
1212};
1213
1214typedef union cvmx_npi_msi_rcv cvmx_npi_msi_rcv_t;
1215
1216/**
1217 * cvmx_npi_num_desc_output#
1218 *
1219 * NUM_DESC_OUTPUT0 = Number Of Descriptors Available For Output 0
1220 *
1221 * The size of the Buffer/Info Pointer Pair ring for Output-0.
1222 */
1223union cvmx_npi_num_desc_outputx {
1224        u64 u64;
1225        struct cvmx_npi_num_desc_outputx_s {
1226                u64 reserved_32_63 : 32;
1227                u64 size : 32;
1228        } s;
1229        struct cvmx_npi_num_desc_outputx_s cn30xx;
1230        struct cvmx_npi_num_desc_outputx_s cn31xx;
1231        struct cvmx_npi_num_desc_outputx_s cn38xx;
1232        struct cvmx_npi_num_desc_outputx_s cn38xxp2;
1233        struct cvmx_npi_num_desc_outputx_s cn50xx;
1234        struct cvmx_npi_num_desc_outputx_s cn58xx;
1235        struct cvmx_npi_num_desc_outputx_s cn58xxp1;
1236};
1237
1238typedef union cvmx_npi_num_desc_outputx cvmx_npi_num_desc_outputx_t;
1239
1240/**
1241 * cvmx_npi_output_control
1242 *
1243 * NPI_OUTPUT_CONTROL = NPI's Output Control Register
1244 *
1245 * The address to start reading Instructions from for Output-3.
1246 */
1247union cvmx_npi_output_control {
1248        u64 u64;
1249        struct cvmx_npi_output_control_s {
1250                u64 reserved_49_63 : 15;
1251                u64 pkt_rr : 1;
1252                u64 p3_bmode : 1;
1253                u64 p2_bmode : 1;
1254                u64 p1_bmode : 1;
1255                u64 p0_bmode : 1;
1256                u64 o3_es : 2;
1257                u64 o3_ns : 1;
1258                u64 o3_ro : 1;
1259                u64 o2_es : 2;
1260                u64 o2_ns : 1;
1261                u64 o2_ro : 1;
1262                u64 o1_es : 2;
1263                u64 o1_ns : 1;
1264                u64 o1_ro : 1;
1265                u64 o0_es : 2;
1266                u64 o0_ns : 1;
1267                u64 o0_ro : 1;
1268                u64 o3_csrm : 1;
1269                u64 o2_csrm : 1;
1270                u64 o1_csrm : 1;
1271                u64 o0_csrm : 1;
1272                u64 reserved_20_23 : 4;
1273                u64 iptr_o3 : 1;
1274                u64 iptr_o2 : 1;
1275                u64 iptr_o1 : 1;
1276                u64 iptr_o0 : 1;
1277                u64 esr_sl3 : 2;
1278                u64 nsr_sl3 : 1;
1279                u64 ror_sl3 : 1;
1280                u64 esr_sl2 : 2;
1281                u64 nsr_sl2 : 1;
1282                u64 ror_sl2 : 1;
1283                u64 esr_sl1 : 2;
1284                u64 nsr_sl1 : 1;
1285                u64 ror_sl1 : 1;
1286                u64 esr_sl0 : 2;
1287                u64 nsr_sl0 : 1;
1288                u64 ror_sl0 : 1;
1289        } s;
1290        struct cvmx_npi_output_control_cn30xx {
1291                u64 reserved_45_63 : 19;
1292                u64 p0_bmode : 1;
1293                u64 reserved_32_43 : 12;
1294                u64 o0_es : 2;
1295                u64 o0_ns : 1;
1296                u64 o0_ro : 1;
1297                u64 reserved_25_27 : 3;
1298                u64 o0_csrm : 1;
1299                u64 reserved_17_23 : 7;
1300                u64 iptr_o0 : 1;
1301                u64 reserved_4_15 : 12;
1302                u64 esr_sl0 : 2;
1303                u64 nsr_sl0 : 1;
1304                u64 ror_sl0 : 1;
1305        } cn30xx;
1306        struct cvmx_npi_output_control_cn31xx {
1307                u64 reserved_46_63 : 18;
1308                u64 p1_bmode : 1;
1309                u64 p0_bmode : 1;
1310                u64 reserved_36_43 : 8;
1311                u64 o1_es : 2;
1312                u64 o1_ns : 1;
1313                u64 o1_ro : 1;
1314                u64 o0_es : 2;
1315                u64 o0_ns : 1;
1316                u64 o0_ro : 1;
1317                u64 reserved_26_27 : 2;
1318                u64 o1_csrm : 1;
1319                u64 o0_csrm : 1;
1320                u64 reserved_18_23 : 6;
1321                u64 iptr_o1 : 1;
1322                u64 iptr_o0 : 1;
1323                u64 reserved_8_15 : 8;
1324                u64 esr_sl1 : 2;
1325                u64 nsr_sl1 : 1;
1326                u64 ror_sl1 : 1;
1327                u64 esr_sl0 : 2;
1328                u64 nsr_sl0 : 1;
1329                u64 ror_sl0 : 1;
1330        } cn31xx;
1331        struct cvmx_npi_output_control_s cn38xx;
1332        struct cvmx_npi_output_control_cn38xxp2 {
1333                u64 reserved_48_63 : 16;
1334                u64 p3_bmode : 1;
1335                u64 p2_bmode : 1;
1336                u64 p1_bmode : 1;
1337                u64 p0_bmode : 1;
1338                u64 o3_es : 2;
1339                u64 o3_ns : 1;
1340                u64 o3_ro : 1;
1341                u64 o2_es : 2;
1342                u64 o2_ns : 1;
1343                u64 o2_ro : 1;
1344                u64 o1_es : 2;
1345                u64 o1_ns : 1;
1346                u64 o1_ro : 1;
1347                u64 o0_es : 2;
1348                u64 o0_ns : 1;
1349                u64 o0_ro : 1;
1350                u64 o3_csrm : 1;
1351                u64 o2_csrm : 1;
1352                u64 o1_csrm : 1;
1353                u64 o0_csrm : 1;
1354                u64 reserved_20_23 : 4;
1355                u64 iptr_o3 : 1;
1356                u64 iptr_o2 : 1;
1357                u64 iptr_o1 : 1;
1358                u64 iptr_o0 : 1;
1359                u64 esr_sl3 : 2;
1360                u64 nsr_sl3 : 1;
1361                u64 ror_sl3 : 1;
1362                u64 esr_sl2 : 2;
1363                u64 nsr_sl2 : 1;
1364                u64 ror_sl2 : 1;
1365                u64 esr_sl1 : 2;
1366                u64 nsr_sl1 : 1;
1367                u64 ror_sl1 : 1;
1368                u64 esr_sl0 : 2;
1369                u64 nsr_sl0 : 1;
1370                u64 ror_sl0 : 1;
1371        } cn38xxp2;
1372        struct cvmx_npi_output_control_cn50xx {
1373                u64 reserved_49_63 : 15;
1374                u64 pkt_rr : 1;
1375                u64 reserved_46_47 : 2;
1376                u64 p1_bmode : 1;
1377                u64 p0_bmode : 1;
1378                u64 reserved_36_43 : 8;
1379                u64 o1_es : 2;
1380                u64 o1_ns : 1;
1381                u64 o1_ro : 1;
1382                u64 o0_es : 2;
1383                u64 o0_ns : 1;
1384                u64 o0_ro : 1;
1385                u64 reserved_26_27 : 2;
1386                u64 o1_csrm : 1;
1387                u64 o0_csrm : 1;
1388                u64 reserved_18_23 : 6;
1389                u64 iptr_o1 : 1;
1390                u64 iptr_o0 : 1;
1391                u64 reserved_8_15 : 8;
1392                u64 esr_sl1 : 2;
1393                u64 nsr_sl1 : 1;
1394                u64 ror_sl1 : 1;
1395                u64 esr_sl0 : 2;
1396                u64 nsr_sl0 : 1;
1397                u64 ror_sl0 : 1;
1398        } cn50xx;
1399        struct cvmx_npi_output_control_s cn58xx;
1400        struct cvmx_npi_output_control_s cn58xxp1;
1401};
1402
1403typedef union cvmx_npi_output_control cvmx_npi_output_control_t;
1404
1405/**
1406 * cvmx_npi_p#_dbpair_addr
1407 *
1408 * NPI_P0_DBPAIR_ADDR = NPI's Port-0 DATA-BUFFER Pair Next Read Address.
1409 *
1410 * Contains the next address to read for Port's-0 Data/Buffer Pair.
1411 */
1412union cvmx_npi_px_dbpair_addr {
1413        u64 u64;
1414        struct cvmx_npi_px_dbpair_addr_s {
1415                u64 reserved_63_63 : 1;
1416                u64 state : 2;
1417                u64 naddr : 61;
1418        } s;
1419        struct cvmx_npi_px_dbpair_addr_s cn30xx;
1420        struct cvmx_npi_px_dbpair_addr_s cn31xx;
1421        struct cvmx_npi_px_dbpair_addr_s cn38xx;
1422        struct cvmx_npi_px_dbpair_addr_s cn38xxp2;
1423        struct cvmx_npi_px_dbpair_addr_s cn50xx;
1424        struct cvmx_npi_px_dbpair_addr_s cn58xx;
1425        struct cvmx_npi_px_dbpair_addr_s cn58xxp1;
1426};
1427
1428typedef union cvmx_npi_px_dbpair_addr cvmx_npi_px_dbpair_addr_t;
1429
1430/**
1431 * cvmx_npi_p#_instr_addr
1432 *
1433 * NPI_P0_INSTR_ADDR = NPI's Port-0 Instruction Next Read Address.
1434 *
1435 * Contains the next address to read for Port's-0 Instructions.
1436 */
1437union cvmx_npi_px_instr_addr {
1438        u64 u64;
1439        struct cvmx_npi_px_instr_addr_s {
1440                u64 state : 3;
1441                u64 naddr : 61;
1442        } s;
1443        struct cvmx_npi_px_instr_addr_s cn30xx;
1444        struct cvmx_npi_px_instr_addr_s cn31xx;
1445        struct cvmx_npi_px_instr_addr_s cn38xx;
1446        struct cvmx_npi_px_instr_addr_s cn38xxp2;
1447        struct cvmx_npi_px_instr_addr_s cn50xx;
1448        struct cvmx_npi_px_instr_addr_s cn58xx;
1449        struct cvmx_npi_px_instr_addr_s cn58xxp1;
1450};
1451
1452typedef union cvmx_npi_px_instr_addr cvmx_npi_px_instr_addr_t;
1453
1454/**
1455 * cvmx_npi_p#_instr_cnts
1456 *
1457 * NPI_P0_INSTR_CNTS = NPI's Port-0 Instruction Counts For Packets In.
1458 *
1459 * Used to determine the number of instruction in the NPI and to be fetched for Input-Packets.
1460 */
1461union cvmx_npi_px_instr_cnts {
1462        u64 u64;
1463        struct cvmx_npi_px_instr_cnts_s {
1464                u64 reserved_38_63 : 26;
1465                u64 fcnt : 6;
1466                u64 avail : 32;
1467        } s;
1468        struct cvmx_npi_px_instr_cnts_s cn30xx;
1469        struct cvmx_npi_px_instr_cnts_s cn31xx;
1470        struct cvmx_npi_px_instr_cnts_s cn38xx;
1471        struct cvmx_npi_px_instr_cnts_s cn38xxp2;
1472        struct cvmx_npi_px_instr_cnts_s cn50xx;
1473        struct cvmx_npi_px_instr_cnts_s cn58xx;
1474        struct cvmx_npi_px_instr_cnts_s cn58xxp1;
1475};
1476
1477typedef union cvmx_npi_px_instr_cnts cvmx_npi_px_instr_cnts_t;
1478
1479/**
1480 * cvmx_npi_p#_pair_cnts
1481 *
1482 * NPI_P0_PAIR_CNTS = NPI's Port-0 Instruction Counts For Packets Out.
1483 *
1484 * Used to determine the number of instruction in the NPI and to be fetched for Output-Packets.
1485 */
1486union cvmx_npi_px_pair_cnts {
1487        u64 u64;
1488        struct cvmx_npi_px_pair_cnts_s {
1489                u64 reserved_37_63 : 27;
1490                u64 fcnt : 5;
1491                u64 avail : 32;
1492        } s;
1493        struct cvmx_npi_px_pair_cnts_s cn30xx;
1494        struct cvmx_npi_px_pair_cnts_s cn31xx;
1495        struct cvmx_npi_px_pair_cnts_s cn38xx;
1496        struct cvmx_npi_px_pair_cnts_s cn38xxp2;
1497        struct cvmx_npi_px_pair_cnts_s cn50xx;
1498        struct cvmx_npi_px_pair_cnts_s cn58xx;
1499        struct cvmx_npi_px_pair_cnts_s cn58xxp1;
1500};
1501
1502typedef union cvmx_npi_px_pair_cnts cvmx_npi_px_pair_cnts_t;
1503
1504/**
1505 * cvmx_npi_pci_burst_size
1506 *
1507 * NPI_PCI_BURST_SIZE = NPI PCI Burst Size Register
1508 *
1509 * Control the number of words the NPI will attempt to read / write to/from the PCI.
1510 */
1511union cvmx_npi_pci_burst_size {
1512        u64 u64;
1513        struct cvmx_npi_pci_burst_size_s {
1514                u64 reserved_14_63 : 50;
1515                u64 wr_brst : 7;
1516                u64 rd_brst : 7;
1517        } s;
1518        struct cvmx_npi_pci_burst_size_s cn30xx;
1519        struct cvmx_npi_pci_burst_size_s cn31xx;
1520        struct cvmx_npi_pci_burst_size_s cn38xx;
1521        struct cvmx_npi_pci_burst_size_s cn38xxp2;
1522        struct cvmx_npi_pci_burst_size_s cn50xx;
1523        struct cvmx_npi_pci_burst_size_s cn58xx;
1524        struct cvmx_npi_pci_burst_size_s cn58xxp1;
1525};
1526
1527typedef union cvmx_npi_pci_burst_size cvmx_npi_pci_burst_size_t;
1528
1529/**
1530 * cvmx_npi_pci_int_arb_cfg
1531 *
1532 * NPI_PCI_INT_ARB_CFG = Configuration For PCI Arbiter
1533 *
1534 * Controls operation of the Internal PCI Arbiter.  This register should
1535 * only be written when PRST# is asserted.  NPI_PCI_INT_ARB_CFG[EN] should
1536 * only be set when Octane is a host.
1537 */
1538union cvmx_npi_pci_int_arb_cfg {
1539        u64 u64;
1540        struct cvmx_npi_pci_int_arb_cfg_s {
1541                u64 reserved_13_63 : 51;
1542                u64 hostmode : 1;
1543                u64 pci_ovr : 4;
1544                u64 reserved_5_7 : 3;
1545                u64 en : 1;
1546                u64 park_mod : 1;
1547                u64 park_dev : 3;
1548        } s;
1549        struct cvmx_npi_pci_int_arb_cfg_cn30xx {
1550                u64 reserved_5_63 : 59;
1551                u64 en : 1;
1552                u64 park_mod : 1;
1553                u64 park_dev : 3;
1554        } cn30xx;
1555        struct cvmx_npi_pci_int_arb_cfg_cn30xx cn31xx;
1556        struct cvmx_npi_pci_int_arb_cfg_cn30xx cn38xx;
1557        struct cvmx_npi_pci_int_arb_cfg_cn30xx cn38xxp2;
1558        struct cvmx_npi_pci_int_arb_cfg_s cn50xx;
1559        struct cvmx_npi_pci_int_arb_cfg_s cn58xx;
1560        struct cvmx_npi_pci_int_arb_cfg_s cn58xxp1;
1561};
1562
1563typedef union cvmx_npi_pci_int_arb_cfg cvmx_npi_pci_int_arb_cfg_t;
1564
1565/**
1566 * cvmx_npi_pci_read_cmd
1567 *
1568 * NPI_PCI_READ_CMD = NPI PCI Read Command Register
1569 *
1570 * Controls the type of read command sent.
1571 * Writes to this register are not ordered with writes/reads to the PCI Memory space.
1572 * To ensure that a write has completed the user must read the register before
1573 * making an access(i.e. PCI memory space) that requires the value of this register to be updated.
1574 * Also any previously issued reads/writes to PCI memory space, still stored in the outbound
1575 * FIFO will use the value of this register after it has been updated.
1576 */
1577union cvmx_npi_pci_read_cmd {
1578        u64 u64;
1579        struct cvmx_npi_pci_read_cmd_s {
1580                u64 reserved_11_63 : 53;
1581                u64 cmd_size : 11;
1582        } s;
1583        struct cvmx_npi_pci_read_cmd_s cn30xx;
1584        struct cvmx_npi_pci_read_cmd_s cn31xx;
1585        struct cvmx_npi_pci_read_cmd_s cn38xx;
1586        struct cvmx_npi_pci_read_cmd_s cn38xxp2;
1587        struct cvmx_npi_pci_read_cmd_s cn50xx;
1588        struct cvmx_npi_pci_read_cmd_s cn58xx;
1589        struct cvmx_npi_pci_read_cmd_s cn58xxp1;
1590};
1591
1592typedef union cvmx_npi_pci_read_cmd cvmx_npi_pci_read_cmd_t;
1593
1594/**
1595 * cvmx_npi_port32_instr_hdr
1596 *
1597 * NPI_PORT32_INSTR_HDR = NPI Port 32 Instruction Header
1598 *
1599 * Contains bits [62:42] of the Instruction Header for port 32.
1600 */
1601union cvmx_npi_port32_instr_hdr {
1602        u64 u64;
1603        struct cvmx_npi_port32_instr_hdr_s {
1604                u64 reserved_44_63 : 20;
1605                u64 pbp : 1;
1606                u64 rsv_f : 5;
1607                u64 rparmode : 2;
1608                u64 rsv_e : 1;
1609                u64 rskp_len : 7;
1610                u64 rsv_d : 6;
1611                u64 use_ihdr : 1;
1612                u64 rsv_c : 5;
1613                u64 par_mode : 2;
1614                u64 rsv_b : 1;
1615                u64 skp_len : 7;
1616                u64 rsv_a : 6;
1617        } s;
1618        struct cvmx_npi_port32_instr_hdr_s cn30xx;
1619        struct cvmx_npi_port32_instr_hdr_s cn31xx;
1620        struct cvmx_npi_port32_instr_hdr_s cn38xx;
1621        struct cvmx_npi_port32_instr_hdr_s cn38xxp2;
1622        struct cvmx_npi_port32_instr_hdr_s cn50xx;
1623        struct cvmx_npi_port32_instr_hdr_s cn58xx;
1624        struct cvmx_npi_port32_instr_hdr_s cn58xxp1;
1625};
1626
1627typedef union cvmx_npi_port32_instr_hdr cvmx_npi_port32_instr_hdr_t;
1628
1629/**
1630 * cvmx_npi_port33_instr_hdr
1631 *
1632 * NPI_PORT33_INSTR_HDR = NPI Port 33 Instruction Header
1633 *
1634 * Contains bits [62:42] of the Instruction Header for port 33.
1635 */
1636union cvmx_npi_port33_instr_hdr {
1637        u64 u64;
1638        struct cvmx_npi_port33_instr_hdr_s {
1639                u64 reserved_44_63 : 20;
1640                u64 pbp : 1;
1641                u64 rsv_f : 5;
1642                u64 rparmode : 2;
1643                u64 rsv_e : 1;
1644                u64 rskp_len : 7;
1645                u64 rsv_d : 6;
1646                u64 use_ihdr : 1;
1647                u64 rsv_c : 5;
1648                u64 par_mode : 2;
1649                u64 rsv_b : 1;
1650                u64 skp_len : 7;
1651                u64 rsv_a : 6;
1652        } s;
1653        struct cvmx_npi_port33_instr_hdr_s cn31xx;
1654        struct cvmx_npi_port33_instr_hdr_s cn38xx;
1655        struct cvmx_npi_port33_instr_hdr_s cn38xxp2;
1656        struct cvmx_npi_port33_instr_hdr_s cn50xx;
1657        struct cvmx_npi_port33_instr_hdr_s cn58xx;
1658        struct cvmx_npi_port33_instr_hdr_s cn58xxp1;
1659};
1660
1661typedef union cvmx_npi_port33_instr_hdr cvmx_npi_port33_instr_hdr_t;
1662
1663/**
1664 * cvmx_npi_port34_instr_hdr
1665 *
1666 * NPI_PORT34_INSTR_HDR = NPI Port 34 Instruction Header
1667 *
1668 * Contains bits [62:42] of the Instruction Header for port 34. Added for PASS-2.
1669 */
1670union cvmx_npi_port34_instr_hdr {
1671        u64 u64;
1672        struct cvmx_npi_port34_instr_hdr_s {
1673                u64 reserved_44_63 : 20;
1674                u64 pbp : 1;
1675                u64 rsv_f : 5;
1676                u64 rparmode : 2;
1677                u64 rsv_e : 1;
1678                u64 rskp_len : 7;
1679                u64 rsv_d : 6;
1680                u64 use_ihdr : 1;
1681                u64 rsv_c : 5;
1682                u64 par_mode : 2;
1683                u64 rsv_b : 1;
1684                u64 skp_len : 7;
1685                u64 rsv_a : 6;
1686        } s;
1687        struct cvmx_npi_port34_instr_hdr_s cn38xx;
1688        struct cvmx_npi_port34_instr_hdr_s cn38xxp2;
1689        struct cvmx_npi_port34_instr_hdr_s cn58xx;
1690        struct cvmx_npi_port34_instr_hdr_s cn58xxp1;
1691};
1692
1693typedef union cvmx_npi_port34_instr_hdr cvmx_npi_port34_instr_hdr_t;
1694
1695/**
1696 * cvmx_npi_port35_instr_hdr
1697 *
1698 * NPI_PORT35_INSTR_HDR = NPI Port 35 Instruction Header
1699 *
1700 * Contains bits [62:42] of the Instruction Header for port 35. Added for PASS-2.
1701 */
1702union cvmx_npi_port35_instr_hdr {
1703        u64 u64;
1704        struct cvmx_npi_port35_instr_hdr_s {
1705                u64 reserved_44_63 : 20;
1706                u64 pbp : 1;
1707                u64 rsv_f : 5;
1708                u64 rparmode : 2;
1709                u64 rsv_e : 1;
1710                u64 rskp_len : 7;
1711                u64 rsv_d : 6;
1712                u64 use_ihdr : 1;
1713                u64 rsv_c : 5;
1714                u64 par_mode : 2;
1715                u64 rsv_b : 1;
1716                u64 skp_len : 7;
1717                u64 rsv_a : 6;
1718        } s;
1719        struct cvmx_npi_port35_instr_hdr_s cn38xx;
1720        struct cvmx_npi_port35_instr_hdr_s cn38xxp2;
1721        struct cvmx_npi_port35_instr_hdr_s cn58xx;
1722        struct cvmx_npi_port35_instr_hdr_s cn58xxp1;
1723};
1724
1725typedef union cvmx_npi_port35_instr_hdr cvmx_npi_port35_instr_hdr_t;
1726
1727/**
1728 * cvmx_npi_port_bp_control
1729 *
1730 * NPI_PORT_BP_CONTROL = Port Backpressure Control
1731 *
1732 * Enables Port Level Backpressure
1733 */
1734union cvmx_npi_port_bp_control {
1735        u64 u64;
1736        struct cvmx_npi_port_bp_control_s {
1737                u64 reserved_8_63 : 56;
1738                u64 bp_on : 4;
1739                u64 enb : 4;
1740        } s;
1741        struct cvmx_npi_port_bp_control_s cn30xx;
1742        struct cvmx_npi_port_bp_control_s cn31xx;
1743        struct cvmx_npi_port_bp_control_s cn38xx;
1744        struct cvmx_npi_port_bp_control_s cn38xxp2;
1745        struct cvmx_npi_port_bp_control_s cn50xx;
1746        struct cvmx_npi_port_bp_control_s cn58xx;
1747        struct cvmx_npi_port_bp_control_s cn58xxp1;
1748};
1749
1750typedef union cvmx_npi_port_bp_control cvmx_npi_port_bp_control_t;
1751
1752/**
1753 * cvmx_npi_rsl_int_blocks
1754 *
1755 * RSL_INT_BLOCKS = RSL Interrupt Blocks Register
1756 *
1757 * Reading this register will return a vector with a bit set '1' for a corresponding RSL block
1758 * that presently has an interrupt pending. The Field Description below supplies the name of the
1759 * register that software should read to find out why that intterupt bit is set.
1760 */
1761union cvmx_npi_rsl_int_blocks {
1762        u64 u64;
1763        struct cvmx_npi_rsl_int_blocks_s {
1764                u64 reserved_32_63 : 32;
1765                u64 rint_31 : 1;
1766                u64 iob : 1;
1767                u64 reserved_28_29 : 2;
1768                u64 rint_27 : 1;
1769                u64 rint_26 : 1;
1770                u64 rint_25 : 1;
1771                u64 rint_24 : 1;
1772                u64 asx1 : 1;
1773                u64 asx0 : 1;
1774                u64 rint_21 : 1;
1775                u64 pip : 1;
1776                u64 spx1 : 1;
1777                u64 spx0 : 1;
1778                u64 lmc : 1;
1779                u64 l2c : 1;
1780                u64 rint_15 : 1;
1781                u64 reserved_13_14 : 2;
1782                u64 pow : 1;
1783                u64 tim : 1;
1784                u64 pko : 1;
1785                u64 ipd : 1;
1786                u64 rint_8 : 1;
1787                u64 zip : 1;
1788                u64 dfa : 1;
1789                u64 fpa : 1;
1790                u64 key : 1;
1791                u64 npi : 1;
1792                u64 gmx1 : 1;
1793                u64 gmx0 : 1;
1794                u64 mio : 1;
1795        } s;
1796        struct cvmx_npi_rsl_int_blocks_cn30xx {
1797                u64 reserved_32_63 : 32;
1798                u64 rint_31 : 1;
1799                u64 iob : 1;
1800                u64 rint_29 : 1;
1801                u64 rint_28 : 1;
1802                u64 rint_27 : 1;
1803                u64 rint_26 : 1;
1804                u64 rint_25 : 1;
1805                u64 rint_24 : 1;
1806                u64 asx1 : 1;
1807                u64 asx0 : 1;
1808                u64 rint_21 : 1;
1809                u64 pip : 1;
1810                u64 spx1 : 1;
1811                u64 spx0 : 1;
1812                u64 lmc : 1;
1813                u64 l2c : 1;
1814                u64 rint_15 : 1;
1815                u64 rint_14 : 1;
1816                u64 usb : 1;
1817                u64 pow : 1;
1818                u64 tim : 1;
1819                u64 pko : 1;
1820                u64 ipd : 1;
1821                u64 rint_8 : 1;
1822                u64 zip : 1;
1823                u64 dfa : 1;
1824                u64 fpa : 1;
1825                u64 key : 1;
1826                u64 npi : 1;
1827                u64 gmx1 : 1;
1828                u64 gmx0 : 1;
1829                u64 mio : 1;
1830        } cn30xx;
1831        struct cvmx_npi_rsl_int_blocks_cn30xx cn31xx;
1832        struct cvmx_npi_rsl_int_blocks_cn38xx {
1833                u64 reserved_32_63 : 32;
1834                u64 rint_31 : 1;
1835                u64 iob : 1;
1836                u64 rint_29 : 1;
1837                u64 rint_28 : 1;
1838                u64 rint_27 : 1;
1839                u64 rint_26 : 1;
1840                u64 rint_25 : 1;
1841                u64 rint_24 : 1;
1842                u64 asx1 : 1;
1843                u64 asx0 : 1;
1844                u64 rint_21 : 1;
1845                u64 pip : 1;
1846                u64 spx1 : 1;
1847                u64 spx0 : 1;
1848                u64 lmc : 1;
1849                u64 l2c : 1;
1850                u64 rint_15 : 1;
1851                u64 rint_14 : 1;
1852                u64 rint_13 : 1;
1853                u64 pow : 1;
1854                u64 tim : 1;
1855                u64 pko : 1;
1856                u64 ipd : 1;
1857                u64 rint_8 : 1;
1858                u64 zip : 1;
1859                u64 dfa : 1;
1860                u64 fpa : 1;
1861                u64 key : 1;
1862                u64 npi : 1;
1863                u64 gmx1 : 1;
1864                u64 gmx0 : 1;
1865                u64 mio : 1;
1866        } cn38xx;
1867        struct cvmx_npi_rsl_int_blocks_cn38xx cn38xxp2;
1868        struct cvmx_npi_rsl_int_blocks_cn50xx {
1869                u64 reserved_31_63 : 33;
1870                u64 iob : 1;
1871                u64 lmc1 : 1;
1872                u64 agl : 1;
1873                u64 reserved_24_27 : 4;
1874                u64 asx1 : 1;
1875                u64 asx0 : 1;
1876                u64 reserved_21_21 : 1;
1877                u64 pip : 1;
1878                u64 spx1 : 1;
1879                u64 spx0 : 1;
1880                u64 lmc : 1;
1881                u64 l2c : 1;
1882                u64 reserved_15_15 : 1;
1883                u64 rad : 1;
1884                u64 usb : 1;
1885                u64 pow : 1;
1886                u64 tim : 1;
1887                u64 pko : 1;
1888                u64 ipd : 1;
1889                u64 reserved_8_8 : 1;
1890                u64 zip : 1;
1891                u64 dfa : 1;
1892                u64 fpa : 1;
1893                u64 key : 1;
1894                u64 npi : 1;
1895                u64 gmx1 : 1;
1896                u64 gmx0 : 1;
1897                u64 mio : 1;
1898        } cn50xx;
1899        struct cvmx_npi_rsl_int_blocks_cn38xx cn58xx;
1900        struct cvmx_npi_rsl_int_blocks_cn38xx cn58xxp1;
1901};
1902
1903typedef union cvmx_npi_rsl_int_blocks cvmx_npi_rsl_int_blocks_t;
1904
1905/**
1906 * cvmx_npi_size_input#
1907 *
1908 * NPI_SIZE_INPUT0 = NPI's Size for Input 0 Register
1909 *
1910 * The size (in instructions) of Instruction Queue-0.
1911 */
1912union cvmx_npi_size_inputx {
1913        u64 u64;
1914        struct cvmx_npi_size_inputx_s {
1915                u64 reserved_32_63 : 32;
1916                u64 size : 32;
1917        } s;
1918        struct cvmx_npi_size_inputx_s cn30xx;
1919        struct cvmx_npi_size_inputx_s cn31xx;
1920        struct cvmx_npi_size_inputx_s cn38xx;
1921        struct cvmx_npi_size_inputx_s cn38xxp2;
1922        struct cvmx_npi_size_inputx_s cn50xx;
1923        struct cvmx_npi_size_inputx_s cn58xx;
1924        struct cvmx_npi_size_inputx_s cn58xxp1;
1925};
1926
1927typedef union cvmx_npi_size_inputx cvmx_npi_size_inputx_t;
1928
1929/**
1930 * cvmx_npi_win_read_to
1931 *
1932 * NPI_WIN_READ_TO = NPI WINDOW READ Timeout Register
1933 *
1934 * Number of core clocks to wait before timing out on a WINDOW-READ to the NCB.
1935 */
1936union cvmx_npi_win_read_to {
1937        u64 u64;
1938        struct cvmx_npi_win_read_to_s {
1939                u64 reserved_32_63 : 32;
1940                u64 time : 32;
1941        } s;
1942        struct cvmx_npi_win_read_to_s cn30xx;
1943        struct cvmx_npi_win_read_to_s cn31xx;
1944        struct cvmx_npi_win_read_to_s cn38xx;
1945        struct cvmx_npi_win_read_to_s cn38xxp2;
1946        struct cvmx_npi_win_read_to_s cn50xx;
1947        struct cvmx_npi_win_read_to_s cn58xx;
1948        struct cvmx_npi_win_read_to_s cn58xxp1;
1949};
1950
1951typedef union cvmx_npi_win_read_to cvmx_npi_win_read_to_t;
1952
1953#endif
1954