1/***********************license start*************** 2 * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights 3 * reserved. 4 * 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: 9 * 10 * * Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * * Redistributions in binary form must reproduce the above 14 * copyright notice, this list of conditions and the following 15 * disclaimer in the documentation and/or other materials provided 16 * with the distribution. 17 18 * * Neither the name of Cavium Inc. nor the names of 19 * its contributors may be used to endorse or promote products 20 * derived from this software without specific prior written 21 * permission. 22 23 * This Software, including technical data, may be subject to U.S. export control 24 * laws, including the U.S. Export Administration Act and its associated 25 * regulations, and may be subject to export or import regulations in other 26 * countries. 27 28 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" 29 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR 30 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO 31 * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR 32 * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM 33 * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE, 34 * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF 35 * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR 36 * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR 37 * PERFORMANCE OF THE SOFTWARE LIES WITH YOU. 38 ***********************license end**************************************/ 39 40 41/** 42 * cvmx-npi-defs.h 43 * 44 * Configuration and status register (CSR) type definitions for 45 * Octeon npi. 46 * 47 * This file is auto generated. Do not edit. 48 * 49 * <hr>$Revision$<hr> 50 * 51 */ 52#ifndef __CVMX_NPI_DEFS_H__ 53#define __CVMX_NPI_DEFS_H__ 54 55#define CVMX_NPI_BASE_ADDR_INPUT0 CVMX_NPI_BASE_ADDR_INPUTX(0) 56#define CVMX_NPI_BASE_ADDR_INPUT1 CVMX_NPI_BASE_ADDR_INPUTX(1) 57#define CVMX_NPI_BASE_ADDR_INPUT2 CVMX_NPI_BASE_ADDR_INPUTX(2) 58#define CVMX_NPI_BASE_ADDR_INPUT3 CVMX_NPI_BASE_ADDR_INPUTX(3) 59#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 60static inline uint64_t CVMX_NPI_BASE_ADDR_INPUTX(unsigned long offset) 61{ 62 if (!( 63 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 64 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 65 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 66 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 67 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 68 cvmx_warn("CVMX_NPI_BASE_ADDR_INPUTX(%lu) is invalid on this chip\n", offset); 69 return CVMX_ADD_IO_SEG(0x00011F0000000070ull) + ((offset) & 3) * 16; 70} 71#else 72#define CVMX_NPI_BASE_ADDR_INPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F0000000070ull) + ((offset) & 3) * 16) 73#endif 74#define CVMX_NPI_BASE_ADDR_OUTPUT0 CVMX_NPI_BASE_ADDR_OUTPUTX(0) 75#define CVMX_NPI_BASE_ADDR_OUTPUT1 CVMX_NPI_BASE_ADDR_OUTPUTX(1) 76#define CVMX_NPI_BASE_ADDR_OUTPUT2 CVMX_NPI_BASE_ADDR_OUTPUTX(2) 77#define CVMX_NPI_BASE_ADDR_OUTPUT3 CVMX_NPI_BASE_ADDR_OUTPUTX(3) 78#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 79static inline uint64_t CVMX_NPI_BASE_ADDR_OUTPUTX(unsigned long offset) 80{ 81 if (!( 82 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 83 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 84 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 85 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 86 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 87 cvmx_warn("CVMX_NPI_BASE_ADDR_OUTPUTX(%lu) is invalid on this chip\n", offset); 88 return CVMX_ADD_IO_SEG(0x00011F00000000B8ull) + ((offset) & 3) * 8; 89} 90#else 91#define CVMX_NPI_BASE_ADDR_OUTPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F00000000B8ull) + ((offset) & 3) * 8) 92#endif 93#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 94#define CVMX_NPI_BIST_STATUS CVMX_NPI_BIST_STATUS_FUNC() 95static inline uint64_t CVMX_NPI_BIST_STATUS_FUNC(void) 96{ 97 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 98 cvmx_warn("CVMX_NPI_BIST_STATUS not supported on this chip\n"); 99 return CVMX_ADD_IO_SEG(0x00011F00000003F8ull); 100} 101#else 102#define CVMX_NPI_BIST_STATUS (CVMX_ADD_IO_SEG(0x00011F00000003F8ull)) 103#endif 104#define CVMX_NPI_BUFF_SIZE_OUTPUT0 CVMX_NPI_BUFF_SIZE_OUTPUTX(0) 105#define CVMX_NPI_BUFF_SIZE_OUTPUT1 CVMX_NPI_BUFF_SIZE_OUTPUTX(1) 106#define CVMX_NPI_BUFF_SIZE_OUTPUT2 CVMX_NPI_BUFF_SIZE_OUTPUTX(2) 107#define CVMX_NPI_BUFF_SIZE_OUTPUT3 CVMX_NPI_BUFF_SIZE_OUTPUTX(3) 108#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 109static inline uint64_t CVMX_NPI_BUFF_SIZE_OUTPUTX(unsigned long offset) 110{ 111 if (!( 112 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 113 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 114 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 115 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 116 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 117 cvmx_warn("CVMX_NPI_BUFF_SIZE_OUTPUTX(%lu) is invalid on this chip\n", offset); 118 return CVMX_ADD_IO_SEG(0x00011F00000000E0ull) + ((offset) & 3) * 8; 119} 120#else 121#define CVMX_NPI_BUFF_SIZE_OUTPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F00000000E0ull) + ((offset) & 3) * 8) 122#endif 123#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 124#define CVMX_NPI_COMP_CTL CVMX_NPI_COMP_CTL_FUNC() 125static inline uint64_t CVMX_NPI_COMP_CTL_FUNC(void) 126{ 127 if (!(OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 128 cvmx_warn("CVMX_NPI_COMP_CTL not supported on this chip\n"); 129 return CVMX_ADD_IO_SEG(0x00011F0000000218ull); 130} 131#else 132#define CVMX_NPI_COMP_CTL (CVMX_ADD_IO_SEG(0x00011F0000000218ull)) 133#endif 134#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 135#define CVMX_NPI_CTL_STATUS CVMX_NPI_CTL_STATUS_FUNC() 136static inline uint64_t CVMX_NPI_CTL_STATUS_FUNC(void) 137{ 138 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 139 cvmx_warn("CVMX_NPI_CTL_STATUS not supported on this chip\n"); 140 return CVMX_ADD_IO_SEG(0x00011F0000000010ull); 141} 142#else 143#define CVMX_NPI_CTL_STATUS (CVMX_ADD_IO_SEG(0x00011F0000000010ull)) 144#endif 145#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 146#define CVMX_NPI_DBG_SELECT CVMX_NPI_DBG_SELECT_FUNC() 147static inline uint64_t CVMX_NPI_DBG_SELECT_FUNC(void) 148{ 149 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 150 cvmx_warn("CVMX_NPI_DBG_SELECT not supported on this chip\n"); 151 return CVMX_ADD_IO_SEG(0x00011F0000000008ull); 152} 153#else 154#define CVMX_NPI_DBG_SELECT (CVMX_ADD_IO_SEG(0x00011F0000000008ull)) 155#endif 156#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 157#define CVMX_NPI_DMA_CONTROL CVMX_NPI_DMA_CONTROL_FUNC() 158static inline uint64_t CVMX_NPI_DMA_CONTROL_FUNC(void) 159{ 160 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 161 cvmx_warn("CVMX_NPI_DMA_CONTROL not supported on this chip\n"); 162 return CVMX_ADD_IO_SEG(0x00011F0000000128ull); 163} 164#else 165#define CVMX_NPI_DMA_CONTROL (CVMX_ADD_IO_SEG(0x00011F0000000128ull)) 166#endif 167#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 168#define CVMX_NPI_DMA_HIGHP_COUNTS CVMX_NPI_DMA_HIGHP_COUNTS_FUNC() 169static inline uint64_t CVMX_NPI_DMA_HIGHP_COUNTS_FUNC(void) 170{ 171 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 172 cvmx_warn("CVMX_NPI_DMA_HIGHP_COUNTS not supported on this chip\n"); 173 return CVMX_ADD_IO_SEG(0x00011F0000000148ull); 174} 175#else 176#define CVMX_NPI_DMA_HIGHP_COUNTS (CVMX_ADD_IO_SEG(0x00011F0000000148ull)) 177#endif 178#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 179#define CVMX_NPI_DMA_HIGHP_NADDR CVMX_NPI_DMA_HIGHP_NADDR_FUNC() 180static inline uint64_t CVMX_NPI_DMA_HIGHP_NADDR_FUNC(void) 181{ 182 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 183 cvmx_warn("CVMX_NPI_DMA_HIGHP_NADDR not supported on this chip\n"); 184 return CVMX_ADD_IO_SEG(0x00011F0000000158ull); 185} 186#else 187#define CVMX_NPI_DMA_HIGHP_NADDR (CVMX_ADD_IO_SEG(0x00011F0000000158ull)) 188#endif 189#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 190#define CVMX_NPI_DMA_LOWP_COUNTS CVMX_NPI_DMA_LOWP_COUNTS_FUNC() 191static inline uint64_t CVMX_NPI_DMA_LOWP_COUNTS_FUNC(void) 192{ 193 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 194 cvmx_warn("CVMX_NPI_DMA_LOWP_COUNTS not supported on this chip\n"); 195 return CVMX_ADD_IO_SEG(0x00011F0000000140ull); 196} 197#else 198#define CVMX_NPI_DMA_LOWP_COUNTS (CVMX_ADD_IO_SEG(0x00011F0000000140ull)) 199#endif 200#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 201#define CVMX_NPI_DMA_LOWP_NADDR CVMX_NPI_DMA_LOWP_NADDR_FUNC() 202static inline uint64_t CVMX_NPI_DMA_LOWP_NADDR_FUNC(void) 203{ 204 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 205 cvmx_warn("CVMX_NPI_DMA_LOWP_NADDR not supported on this chip\n"); 206 return CVMX_ADD_IO_SEG(0x00011F0000000150ull); 207} 208#else 209#define CVMX_NPI_DMA_LOWP_NADDR (CVMX_ADD_IO_SEG(0x00011F0000000150ull)) 210#endif 211#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 212#define CVMX_NPI_HIGHP_DBELL CVMX_NPI_HIGHP_DBELL_FUNC() 213static inline uint64_t CVMX_NPI_HIGHP_DBELL_FUNC(void) 214{ 215 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 216 cvmx_warn("CVMX_NPI_HIGHP_DBELL not supported on this chip\n"); 217 return CVMX_ADD_IO_SEG(0x00011F0000000120ull); 218} 219#else 220#define CVMX_NPI_HIGHP_DBELL (CVMX_ADD_IO_SEG(0x00011F0000000120ull)) 221#endif 222#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 223#define CVMX_NPI_HIGHP_IBUFF_SADDR CVMX_NPI_HIGHP_IBUFF_SADDR_FUNC() 224static inline uint64_t CVMX_NPI_HIGHP_IBUFF_SADDR_FUNC(void) 225{ 226 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 227 cvmx_warn("CVMX_NPI_HIGHP_IBUFF_SADDR not supported on this chip\n"); 228 return CVMX_ADD_IO_SEG(0x00011F0000000110ull); 229} 230#else 231#define CVMX_NPI_HIGHP_IBUFF_SADDR (CVMX_ADD_IO_SEG(0x00011F0000000110ull)) 232#endif 233#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 234#define CVMX_NPI_INPUT_CONTROL CVMX_NPI_INPUT_CONTROL_FUNC() 235static inline uint64_t CVMX_NPI_INPUT_CONTROL_FUNC(void) 236{ 237 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 238 cvmx_warn("CVMX_NPI_INPUT_CONTROL not supported on this chip\n"); 239 return CVMX_ADD_IO_SEG(0x00011F0000000138ull); 240} 241#else 242#define CVMX_NPI_INPUT_CONTROL (CVMX_ADD_IO_SEG(0x00011F0000000138ull)) 243#endif 244#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 245#define CVMX_NPI_INT_ENB CVMX_NPI_INT_ENB_FUNC() 246static inline uint64_t CVMX_NPI_INT_ENB_FUNC(void) 247{ 248 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 249 cvmx_warn("CVMX_NPI_INT_ENB not supported on this chip\n"); 250 return CVMX_ADD_IO_SEG(0x00011F0000000020ull); 251} 252#else 253#define CVMX_NPI_INT_ENB (CVMX_ADD_IO_SEG(0x00011F0000000020ull)) 254#endif 255#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 256#define CVMX_NPI_INT_SUM CVMX_NPI_INT_SUM_FUNC() 257static inline uint64_t CVMX_NPI_INT_SUM_FUNC(void) 258{ 259 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 260 cvmx_warn("CVMX_NPI_INT_SUM not supported on this chip\n"); 261 return CVMX_ADD_IO_SEG(0x00011F0000000018ull); 262} 263#else 264#define CVMX_NPI_INT_SUM (CVMX_ADD_IO_SEG(0x00011F0000000018ull)) 265#endif 266#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 267#define CVMX_NPI_LOWP_DBELL CVMX_NPI_LOWP_DBELL_FUNC() 268static inline uint64_t CVMX_NPI_LOWP_DBELL_FUNC(void) 269{ 270 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 271 cvmx_warn("CVMX_NPI_LOWP_DBELL not supported on this chip\n"); 272 return CVMX_ADD_IO_SEG(0x00011F0000000118ull); 273} 274#else 275#define CVMX_NPI_LOWP_DBELL (CVMX_ADD_IO_SEG(0x00011F0000000118ull)) 276#endif 277#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 278#define CVMX_NPI_LOWP_IBUFF_SADDR CVMX_NPI_LOWP_IBUFF_SADDR_FUNC() 279static inline uint64_t CVMX_NPI_LOWP_IBUFF_SADDR_FUNC(void) 280{ 281 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 282 cvmx_warn("CVMX_NPI_LOWP_IBUFF_SADDR not supported on this chip\n"); 283 return CVMX_ADD_IO_SEG(0x00011F0000000108ull); 284} 285#else 286#define CVMX_NPI_LOWP_IBUFF_SADDR (CVMX_ADD_IO_SEG(0x00011F0000000108ull)) 287#endif 288#define CVMX_NPI_MEM_ACCESS_SUBID3 CVMX_NPI_MEM_ACCESS_SUBIDX(3) 289#define CVMX_NPI_MEM_ACCESS_SUBID4 CVMX_NPI_MEM_ACCESS_SUBIDX(4) 290#define CVMX_NPI_MEM_ACCESS_SUBID5 CVMX_NPI_MEM_ACCESS_SUBIDX(5) 291#define CVMX_NPI_MEM_ACCESS_SUBID6 CVMX_NPI_MEM_ACCESS_SUBIDX(6) 292#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 293static inline uint64_t CVMX_NPI_MEM_ACCESS_SUBIDX(unsigned long offset) 294{ 295 if (!( 296 (OCTEON_IS_MODEL(OCTEON_CN30XX) && (((offset >= 3) && (offset <= 6)))) || 297 (OCTEON_IS_MODEL(OCTEON_CN31XX) && (((offset >= 3) && (offset <= 6)))) || 298 (OCTEON_IS_MODEL(OCTEON_CN38XX) && (((offset >= 3) && (offset <= 6)))) || 299 (OCTEON_IS_MODEL(OCTEON_CN50XX) && (((offset >= 3) && (offset <= 6)))) || 300 (OCTEON_IS_MODEL(OCTEON_CN58XX) && (((offset >= 3) && (offset <= 6)))))) 301 cvmx_warn("CVMX_NPI_MEM_ACCESS_SUBIDX(%lu) is invalid on this chip\n", offset); 302 return CVMX_ADD_IO_SEG(0x00011F0000000028ull) + ((offset) & 7) * 8 - 8*3; 303} 304#else 305#define CVMX_NPI_MEM_ACCESS_SUBIDX(offset) (CVMX_ADD_IO_SEG(0x00011F0000000028ull) + ((offset) & 7) * 8 - 8*3) 306#endif 307#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 308#define CVMX_NPI_MSI_RCV CVMX_NPI_MSI_RCV_FUNC() 309static inline uint64_t CVMX_NPI_MSI_RCV_FUNC(void) 310{ 311 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 312 cvmx_warn("CVMX_NPI_MSI_RCV not supported on this chip\n"); 313 return 0x0000000000000190ull; 314} 315#else 316#define CVMX_NPI_MSI_RCV (0x0000000000000190ull) 317#endif 318#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 319#define CVMX_NPI_NPI_MSI_RCV CVMX_NPI_NPI_MSI_RCV_FUNC() 320static inline uint64_t CVMX_NPI_NPI_MSI_RCV_FUNC(void) 321{ 322 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 323 cvmx_warn("CVMX_NPI_NPI_MSI_RCV not supported on this chip\n"); 324 return CVMX_ADD_IO_SEG(0x00011F0000001190ull); 325} 326#else 327#define CVMX_NPI_NPI_MSI_RCV (CVMX_ADD_IO_SEG(0x00011F0000001190ull)) 328#endif 329#define CVMX_NPI_NUM_DESC_OUTPUT0 CVMX_NPI_NUM_DESC_OUTPUTX(0) 330#define CVMX_NPI_NUM_DESC_OUTPUT1 CVMX_NPI_NUM_DESC_OUTPUTX(1) 331#define CVMX_NPI_NUM_DESC_OUTPUT2 CVMX_NPI_NUM_DESC_OUTPUTX(2) 332#define CVMX_NPI_NUM_DESC_OUTPUT3 CVMX_NPI_NUM_DESC_OUTPUTX(3) 333#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 334static inline uint64_t CVMX_NPI_NUM_DESC_OUTPUTX(unsigned long offset) 335{ 336 if (!( 337 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 338 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 339 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 340 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 341 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 342 cvmx_warn("CVMX_NPI_NUM_DESC_OUTPUTX(%lu) is invalid on this chip\n", offset); 343 return CVMX_ADD_IO_SEG(0x00011F0000000050ull) + ((offset) & 3) * 8; 344} 345#else 346#define CVMX_NPI_NUM_DESC_OUTPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F0000000050ull) + ((offset) & 3) * 8) 347#endif 348#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 349#define CVMX_NPI_OUTPUT_CONTROL CVMX_NPI_OUTPUT_CONTROL_FUNC() 350static inline uint64_t CVMX_NPI_OUTPUT_CONTROL_FUNC(void) 351{ 352 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 353 cvmx_warn("CVMX_NPI_OUTPUT_CONTROL not supported on this chip\n"); 354 return CVMX_ADD_IO_SEG(0x00011F0000000100ull); 355} 356#else 357#define CVMX_NPI_OUTPUT_CONTROL (CVMX_ADD_IO_SEG(0x00011F0000000100ull)) 358#endif 359#define CVMX_NPI_P0_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(0) 360#define CVMX_NPI_P0_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(0) 361#define CVMX_NPI_P0_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(0) 362#define CVMX_NPI_P0_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(0) 363#define CVMX_NPI_P1_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(1) 364#define CVMX_NPI_P1_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(1) 365#define CVMX_NPI_P1_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(1) 366#define CVMX_NPI_P1_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(1) 367#define CVMX_NPI_P2_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(2) 368#define CVMX_NPI_P2_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(2) 369#define CVMX_NPI_P2_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(2) 370#define CVMX_NPI_P2_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(2) 371#define CVMX_NPI_P3_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(3) 372#define CVMX_NPI_P3_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(3) 373#define CVMX_NPI_P3_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(3) 374#define CVMX_NPI_P3_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(3) 375#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 376static inline uint64_t CVMX_NPI_PCI_BAR1_INDEXX(unsigned long offset) 377{ 378 if (!( 379 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 31))) || 380 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 31))) || 381 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 31))) || 382 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 31))) || 383 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 31))))) 384 cvmx_warn("CVMX_NPI_PCI_BAR1_INDEXX(%lu) is invalid on this chip\n", offset); 385 return CVMX_ADD_IO_SEG(0x00011F0000001100ull) + ((offset) & 31) * 4; 386} 387#else 388#define CVMX_NPI_PCI_BAR1_INDEXX(offset) (CVMX_ADD_IO_SEG(0x00011F0000001100ull) + ((offset) & 31) * 4) 389#endif 390#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 391#define CVMX_NPI_PCI_BIST_REG CVMX_NPI_PCI_BIST_REG_FUNC() 392static inline uint64_t CVMX_NPI_PCI_BIST_REG_FUNC(void) 393{ 394 if (!(OCTEON_IS_MODEL(OCTEON_CN50XX))) 395 cvmx_warn("CVMX_NPI_PCI_BIST_REG not supported on this chip\n"); 396 return CVMX_ADD_IO_SEG(0x00011F00000011C0ull); 397} 398#else 399#define CVMX_NPI_PCI_BIST_REG (CVMX_ADD_IO_SEG(0x00011F00000011C0ull)) 400#endif 401#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 402#define CVMX_NPI_PCI_BURST_SIZE CVMX_NPI_PCI_BURST_SIZE_FUNC() 403static inline uint64_t CVMX_NPI_PCI_BURST_SIZE_FUNC(void) 404{ 405 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 406 cvmx_warn("CVMX_NPI_PCI_BURST_SIZE not supported on this chip\n"); 407 return CVMX_ADD_IO_SEG(0x00011F00000000D8ull); 408} 409#else 410#define CVMX_NPI_PCI_BURST_SIZE (CVMX_ADD_IO_SEG(0x00011F00000000D8ull)) 411#endif 412#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 413#define CVMX_NPI_PCI_CFG00 CVMX_NPI_PCI_CFG00_FUNC() 414static inline uint64_t CVMX_NPI_PCI_CFG00_FUNC(void) 415{ 416 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 417 cvmx_warn("CVMX_NPI_PCI_CFG00 not supported on this chip\n"); 418 return CVMX_ADD_IO_SEG(0x00011F0000001800ull); 419} 420#else 421#define CVMX_NPI_PCI_CFG00 (CVMX_ADD_IO_SEG(0x00011F0000001800ull)) 422#endif 423#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 424#define CVMX_NPI_PCI_CFG01 CVMX_NPI_PCI_CFG01_FUNC() 425static inline uint64_t CVMX_NPI_PCI_CFG01_FUNC(void) 426{ 427 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 428 cvmx_warn("CVMX_NPI_PCI_CFG01 not supported on this chip\n"); 429 return CVMX_ADD_IO_SEG(0x00011F0000001804ull); 430} 431#else 432#define CVMX_NPI_PCI_CFG01 (CVMX_ADD_IO_SEG(0x00011F0000001804ull)) 433#endif 434#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 435#define CVMX_NPI_PCI_CFG02 CVMX_NPI_PCI_CFG02_FUNC() 436static inline uint64_t CVMX_NPI_PCI_CFG02_FUNC(void) 437{ 438 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 439 cvmx_warn("CVMX_NPI_PCI_CFG02 not supported on this chip\n"); 440 return CVMX_ADD_IO_SEG(0x00011F0000001808ull); 441} 442#else 443#define CVMX_NPI_PCI_CFG02 (CVMX_ADD_IO_SEG(0x00011F0000001808ull)) 444#endif 445#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 446#define CVMX_NPI_PCI_CFG03 CVMX_NPI_PCI_CFG03_FUNC() 447static inline uint64_t CVMX_NPI_PCI_CFG03_FUNC(void) 448{ 449 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 450 cvmx_warn("CVMX_NPI_PCI_CFG03 not supported on this chip\n"); 451 return CVMX_ADD_IO_SEG(0x00011F000000180Cull); 452} 453#else 454#define CVMX_NPI_PCI_CFG03 (CVMX_ADD_IO_SEG(0x00011F000000180Cull)) 455#endif 456#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 457#define CVMX_NPI_PCI_CFG04 CVMX_NPI_PCI_CFG04_FUNC() 458static inline uint64_t CVMX_NPI_PCI_CFG04_FUNC(void) 459{ 460 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 461 cvmx_warn("CVMX_NPI_PCI_CFG04 not supported on this chip\n"); 462 return CVMX_ADD_IO_SEG(0x00011F0000001810ull); 463} 464#else 465#define CVMX_NPI_PCI_CFG04 (CVMX_ADD_IO_SEG(0x00011F0000001810ull)) 466#endif 467#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 468#define CVMX_NPI_PCI_CFG05 CVMX_NPI_PCI_CFG05_FUNC() 469static inline uint64_t CVMX_NPI_PCI_CFG05_FUNC(void) 470{ 471 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 472 cvmx_warn("CVMX_NPI_PCI_CFG05 not supported on this chip\n"); 473 return CVMX_ADD_IO_SEG(0x00011F0000001814ull); 474} 475#else 476#define CVMX_NPI_PCI_CFG05 (CVMX_ADD_IO_SEG(0x00011F0000001814ull)) 477#endif 478#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 479#define CVMX_NPI_PCI_CFG06 CVMX_NPI_PCI_CFG06_FUNC() 480static inline uint64_t CVMX_NPI_PCI_CFG06_FUNC(void) 481{ 482 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 483 cvmx_warn("CVMX_NPI_PCI_CFG06 not supported on this chip\n"); 484 return CVMX_ADD_IO_SEG(0x00011F0000001818ull); 485} 486#else 487#define CVMX_NPI_PCI_CFG06 (CVMX_ADD_IO_SEG(0x00011F0000001818ull)) 488#endif 489#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 490#define CVMX_NPI_PCI_CFG07 CVMX_NPI_PCI_CFG07_FUNC() 491static inline uint64_t CVMX_NPI_PCI_CFG07_FUNC(void) 492{ 493 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 494 cvmx_warn("CVMX_NPI_PCI_CFG07 not supported on this chip\n"); 495 return CVMX_ADD_IO_SEG(0x00011F000000181Cull); 496} 497#else 498#define CVMX_NPI_PCI_CFG07 (CVMX_ADD_IO_SEG(0x00011F000000181Cull)) 499#endif 500#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 501#define CVMX_NPI_PCI_CFG08 CVMX_NPI_PCI_CFG08_FUNC() 502static inline uint64_t CVMX_NPI_PCI_CFG08_FUNC(void) 503{ 504 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 505 cvmx_warn("CVMX_NPI_PCI_CFG08 not supported on this chip\n"); 506 return CVMX_ADD_IO_SEG(0x00011F0000001820ull); 507} 508#else 509#define CVMX_NPI_PCI_CFG08 (CVMX_ADD_IO_SEG(0x00011F0000001820ull)) 510#endif 511#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 512#define CVMX_NPI_PCI_CFG09 CVMX_NPI_PCI_CFG09_FUNC() 513static inline uint64_t CVMX_NPI_PCI_CFG09_FUNC(void) 514{ 515 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 516 cvmx_warn("CVMX_NPI_PCI_CFG09 not supported on this chip\n"); 517 return CVMX_ADD_IO_SEG(0x00011F0000001824ull); 518} 519#else 520#define CVMX_NPI_PCI_CFG09 (CVMX_ADD_IO_SEG(0x00011F0000001824ull)) 521#endif 522#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 523#define CVMX_NPI_PCI_CFG10 CVMX_NPI_PCI_CFG10_FUNC() 524static inline uint64_t CVMX_NPI_PCI_CFG10_FUNC(void) 525{ 526 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 527 cvmx_warn("CVMX_NPI_PCI_CFG10 not supported on this chip\n"); 528 return CVMX_ADD_IO_SEG(0x00011F0000001828ull); 529} 530#else 531#define CVMX_NPI_PCI_CFG10 (CVMX_ADD_IO_SEG(0x00011F0000001828ull)) 532#endif 533#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 534#define CVMX_NPI_PCI_CFG11 CVMX_NPI_PCI_CFG11_FUNC() 535static inline uint64_t CVMX_NPI_PCI_CFG11_FUNC(void) 536{ 537 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 538 cvmx_warn("CVMX_NPI_PCI_CFG11 not supported on this chip\n"); 539 return CVMX_ADD_IO_SEG(0x00011F000000182Cull); 540} 541#else 542#define CVMX_NPI_PCI_CFG11 (CVMX_ADD_IO_SEG(0x00011F000000182Cull)) 543#endif 544#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 545#define CVMX_NPI_PCI_CFG12 CVMX_NPI_PCI_CFG12_FUNC() 546static inline uint64_t CVMX_NPI_PCI_CFG12_FUNC(void) 547{ 548 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 549 cvmx_warn("CVMX_NPI_PCI_CFG12 not supported on this chip\n"); 550 return CVMX_ADD_IO_SEG(0x00011F0000001830ull); 551} 552#else 553#define CVMX_NPI_PCI_CFG12 (CVMX_ADD_IO_SEG(0x00011F0000001830ull)) 554#endif 555#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 556#define CVMX_NPI_PCI_CFG13 CVMX_NPI_PCI_CFG13_FUNC() 557static inline uint64_t CVMX_NPI_PCI_CFG13_FUNC(void) 558{ 559 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 560 cvmx_warn("CVMX_NPI_PCI_CFG13 not supported on this chip\n"); 561 return CVMX_ADD_IO_SEG(0x00011F0000001834ull); 562} 563#else 564#define CVMX_NPI_PCI_CFG13 (CVMX_ADD_IO_SEG(0x00011F0000001834ull)) 565#endif 566#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 567#define CVMX_NPI_PCI_CFG15 CVMX_NPI_PCI_CFG15_FUNC() 568static inline uint64_t CVMX_NPI_PCI_CFG15_FUNC(void) 569{ 570 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 571 cvmx_warn("CVMX_NPI_PCI_CFG15 not supported on this chip\n"); 572 return CVMX_ADD_IO_SEG(0x00011F000000183Cull); 573} 574#else 575#define CVMX_NPI_PCI_CFG15 (CVMX_ADD_IO_SEG(0x00011F000000183Cull)) 576#endif 577#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 578#define CVMX_NPI_PCI_CFG16 CVMX_NPI_PCI_CFG16_FUNC() 579static inline uint64_t CVMX_NPI_PCI_CFG16_FUNC(void) 580{ 581 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 582 cvmx_warn("CVMX_NPI_PCI_CFG16 not supported on this chip\n"); 583 return CVMX_ADD_IO_SEG(0x00011F0000001840ull); 584} 585#else 586#define CVMX_NPI_PCI_CFG16 (CVMX_ADD_IO_SEG(0x00011F0000001840ull)) 587#endif 588#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 589#define CVMX_NPI_PCI_CFG17 CVMX_NPI_PCI_CFG17_FUNC() 590static inline uint64_t CVMX_NPI_PCI_CFG17_FUNC(void) 591{ 592 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 593 cvmx_warn("CVMX_NPI_PCI_CFG17 not supported on this chip\n"); 594 return CVMX_ADD_IO_SEG(0x00011F0000001844ull); 595} 596#else 597#define CVMX_NPI_PCI_CFG17 (CVMX_ADD_IO_SEG(0x00011F0000001844ull)) 598#endif 599#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 600#define CVMX_NPI_PCI_CFG18 CVMX_NPI_PCI_CFG18_FUNC() 601static inline uint64_t CVMX_NPI_PCI_CFG18_FUNC(void) 602{ 603 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 604 cvmx_warn("CVMX_NPI_PCI_CFG18 not supported on this chip\n"); 605 return CVMX_ADD_IO_SEG(0x00011F0000001848ull); 606} 607#else 608#define CVMX_NPI_PCI_CFG18 (CVMX_ADD_IO_SEG(0x00011F0000001848ull)) 609#endif 610#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 611#define CVMX_NPI_PCI_CFG19 CVMX_NPI_PCI_CFG19_FUNC() 612static inline uint64_t CVMX_NPI_PCI_CFG19_FUNC(void) 613{ 614 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 615 cvmx_warn("CVMX_NPI_PCI_CFG19 not supported on this chip\n"); 616 return CVMX_ADD_IO_SEG(0x00011F000000184Cull); 617} 618#else 619#define CVMX_NPI_PCI_CFG19 (CVMX_ADD_IO_SEG(0x00011F000000184Cull)) 620#endif 621#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 622#define CVMX_NPI_PCI_CFG20 CVMX_NPI_PCI_CFG20_FUNC() 623static inline uint64_t CVMX_NPI_PCI_CFG20_FUNC(void) 624{ 625 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 626 cvmx_warn("CVMX_NPI_PCI_CFG20 not supported on this chip\n"); 627 return CVMX_ADD_IO_SEG(0x00011F0000001850ull); 628} 629#else 630#define CVMX_NPI_PCI_CFG20 (CVMX_ADD_IO_SEG(0x00011F0000001850ull)) 631#endif 632#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 633#define CVMX_NPI_PCI_CFG21 CVMX_NPI_PCI_CFG21_FUNC() 634static inline uint64_t CVMX_NPI_PCI_CFG21_FUNC(void) 635{ 636 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 637 cvmx_warn("CVMX_NPI_PCI_CFG21 not supported on this chip\n"); 638 return CVMX_ADD_IO_SEG(0x00011F0000001854ull); 639} 640#else 641#define CVMX_NPI_PCI_CFG21 (CVMX_ADD_IO_SEG(0x00011F0000001854ull)) 642#endif 643#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 644#define CVMX_NPI_PCI_CFG22 CVMX_NPI_PCI_CFG22_FUNC() 645static inline uint64_t CVMX_NPI_PCI_CFG22_FUNC(void) 646{ 647 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 648 cvmx_warn("CVMX_NPI_PCI_CFG22 not supported on this chip\n"); 649 return CVMX_ADD_IO_SEG(0x00011F0000001858ull); 650} 651#else 652#define CVMX_NPI_PCI_CFG22 (CVMX_ADD_IO_SEG(0x00011F0000001858ull)) 653#endif 654#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 655#define CVMX_NPI_PCI_CFG56 CVMX_NPI_PCI_CFG56_FUNC() 656static inline uint64_t CVMX_NPI_PCI_CFG56_FUNC(void) 657{ 658 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 659 cvmx_warn("CVMX_NPI_PCI_CFG56 not supported on this chip\n"); 660 return CVMX_ADD_IO_SEG(0x00011F00000018E0ull); 661} 662#else 663#define CVMX_NPI_PCI_CFG56 (CVMX_ADD_IO_SEG(0x00011F00000018E0ull)) 664#endif 665#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 666#define CVMX_NPI_PCI_CFG57 CVMX_NPI_PCI_CFG57_FUNC() 667static inline uint64_t CVMX_NPI_PCI_CFG57_FUNC(void) 668{ 669 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 670 cvmx_warn("CVMX_NPI_PCI_CFG57 not supported on this chip\n"); 671 return CVMX_ADD_IO_SEG(0x00011F00000018E4ull); 672} 673#else 674#define CVMX_NPI_PCI_CFG57 (CVMX_ADD_IO_SEG(0x00011F00000018E4ull)) 675#endif 676#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 677#define CVMX_NPI_PCI_CFG58 CVMX_NPI_PCI_CFG58_FUNC() 678static inline uint64_t CVMX_NPI_PCI_CFG58_FUNC(void) 679{ 680 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 681 cvmx_warn("CVMX_NPI_PCI_CFG58 not supported on this chip\n"); 682 return CVMX_ADD_IO_SEG(0x00011F00000018E8ull); 683} 684#else 685#define CVMX_NPI_PCI_CFG58 (CVMX_ADD_IO_SEG(0x00011F00000018E8ull)) 686#endif 687#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 688#define CVMX_NPI_PCI_CFG59 CVMX_NPI_PCI_CFG59_FUNC() 689static inline uint64_t CVMX_NPI_PCI_CFG59_FUNC(void) 690{ 691 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 692 cvmx_warn("CVMX_NPI_PCI_CFG59 not supported on this chip\n"); 693 return CVMX_ADD_IO_SEG(0x00011F00000018ECull); 694} 695#else 696#define CVMX_NPI_PCI_CFG59 (CVMX_ADD_IO_SEG(0x00011F00000018ECull)) 697#endif 698#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 699#define CVMX_NPI_PCI_CFG60 CVMX_NPI_PCI_CFG60_FUNC() 700static inline uint64_t CVMX_NPI_PCI_CFG60_FUNC(void) 701{ 702 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 703 cvmx_warn("CVMX_NPI_PCI_CFG60 not supported on this chip\n"); 704 return CVMX_ADD_IO_SEG(0x00011F00000018F0ull); 705} 706#else 707#define CVMX_NPI_PCI_CFG60 (CVMX_ADD_IO_SEG(0x00011F00000018F0ull)) 708#endif 709#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 710#define CVMX_NPI_PCI_CFG61 CVMX_NPI_PCI_CFG61_FUNC() 711static inline uint64_t CVMX_NPI_PCI_CFG61_FUNC(void) 712{ 713 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 714 cvmx_warn("CVMX_NPI_PCI_CFG61 not supported on this chip\n"); 715 return CVMX_ADD_IO_SEG(0x00011F00000018F4ull); 716} 717#else 718#define CVMX_NPI_PCI_CFG61 (CVMX_ADD_IO_SEG(0x00011F00000018F4ull)) 719#endif 720#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 721#define CVMX_NPI_PCI_CFG62 CVMX_NPI_PCI_CFG62_FUNC() 722static inline uint64_t CVMX_NPI_PCI_CFG62_FUNC(void) 723{ 724 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 725 cvmx_warn("CVMX_NPI_PCI_CFG62 not supported on this chip\n"); 726 return CVMX_ADD_IO_SEG(0x00011F00000018F8ull); 727} 728#else 729#define CVMX_NPI_PCI_CFG62 (CVMX_ADD_IO_SEG(0x00011F00000018F8ull)) 730#endif 731#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 732#define CVMX_NPI_PCI_CFG63 CVMX_NPI_PCI_CFG63_FUNC() 733static inline uint64_t CVMX_NPI_PCI_CFG63_FUNC(void) 734{ 735 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 736 cvmx_warn("CVMX_NPI_PCI_CFG63 not supported on this chip\n"); 737 return CVMX_ADD_IO_SEG(0x00011F00000018FCull); 738} 739#else 740#define CVMX_NPI_PCI_CFG63 (CVMX_ADD_IO_SEG(0x00011F00000018FCull)) 741#endif 742#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 743#define CVMX_NPI_PCI_CNT_REG CVMX_NPI_PCI_CNT_REG_FUNC() 744static inline uint64_t CVMX_NPI_PCI_CNT_REG_FUNC(void) 745{ 746 if (!(OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 747 cvmx_warn("CVMX_NPI_PCI_CNT_REG not supported on this chip\n"); 748 return CVMX_ADD_IO_SEG(0x00011F00000011B8ull); 749} 750#else 751#define CVMX_NPI_PCI_CNT_REG (CVMX_ADD_IO_SEG(0x00011F00000011B8ull)) 752#endif 753#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 754#define CVMX_NPI_PCI_CTL_STATUS_2 CVMX_NPI_PCI_CTL_STATUS_2_FUNC() 755static inline uint64_t CVMX_NPI_PCI_CTL_STATUS_2_FUNC(void) 756{ 757 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 758 cvmx_warn("CVMX_NPI_PCI_CTL_STATUS_2 not supported on this chip\n"); 759 return CVMX_ADD_IO_SEG(0x00011F000000118Cull); 760} 761#else 762#define CVMX_NPI_PCI_CTL_STATUS_2 (CVMX_ADD_IO_SEG(0x00011F000000118Cull)) 763#endif 764#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 765#define CVMX_NPI_PCI_INT_ARB_CFG CVMX_NPI_PCI_INT_ARB_CFG_FUNC() 766static inline uint64_t CVMX_NPI_PCI_INT_ARB_CFG_FUNC(void) 767{ 768 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 769 cvmx_warn("CVMX_NPI_PCI_INT_ARB_CFG not supported on this chip\n"); 770 return CVMX_ADD_IO_SEG(0x00011F0000000130ull); 771} 772#else 773#define CVMX_NPI_PCI_INT_ARB_CFG (CVMX_ADD_IO_SEG(0x00011F0000000130ull)) 774#endif 775#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 776#define CVMX_NPI_PCI_INT_ENB2 CVMX_NPI_PCI_INT_ENB2_FUNC() 777static inline uint64_t CVMX_NPI_PCI_INT_ENB2_FUNC(void) 778{ 779 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 780 cvmx_warn("CVMX_NPI_PCI_INT_ENB2 not supported on this chip\n"); 781 return CVMX_ADD_IO_SEG(0x00011F00000011A0ull); 782} 783#else 784#define CVMX_NPI_PCI_INT_ENB2 (CVMX_ADD_IO_SEG(0x00011F00000011A0ull)) 785#endif 786#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 787#define CVMX_NPI_PCI_INT_SUM2 CVMX_NPI_PCI_INT_SUM2_FUNC() 788static inline uint64_t CVMX_NPI_PCI_INT_SUM2_FUNC(void) 789{ 790 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 791 cvmx_warn("CVMX_NPI_PCI_INT_SUM2 not supported on this chip\n"); 792 return CVMX_ADD_IO_SEG(0x00011F0000001198ull); 793} 794#else 795#define CVMX_NPI_PCI_INT_SUM2 (CVMX_ADD_IO_SEG(0x00011F0000001198ull)) 796#endif 797#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 798#define CVMX_NPI_PCI_READ_CMD CVMX_NPI_PCI_READ_CMD_FUNC() 799static inline uint64_t CVMX_NPI_PCI_READ_CMD_FUNC(void) 800{ 801 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 802 cvmx_warn("CVMX_NPI_PCI_READ_CMD not supported on this chip\n"); 803 return CVMX_ADD_IO_SEG(0x00011F0000000048ull); 804} 805#else 806#define CVMX_NPI_PCI_READ_CMD (CVMX_ADD_IO_SEG(0x00011F0000000048ull)) 807#endif 808#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 809#define CVMX_NPI_PCI_READ_CMD_6 CVMX_NPI_PCI_READ_CMD_6_FUNC() 810static inline uint64_t CVMX_NPI_PCI_READ_CMD_6_FUNC(void) 811{ 812 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 813 cvmx_warn("CVMX_NPI_PCI_READ_CMD_6 not supported on this chip\n"); 814 return CVMX_ADD_IO_SEG(0x00011F0000001180ull); 815} 816#else 817#define CVMX_NPI_PCI_READ_CMD_6 (CVMX_ADD_IO_SEG(0x00011F0000001180ull)) 818#endif 819#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 820#define CVMX_NPI_PCI_READ_CMD_C CVMX_NPI_PCI_READ_CMD_C_FUNC() 821static inline uint64_t CVMX_NPI_PCI_READ_CMD_C_FUNC(void) 822{ 823 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 824 cvmx_warn("CVMX_NPI_PCI_READ_CMD_C not supported on this chip\n"); 825 return CVMX_ADD_IO_SEG(0x00011F0000001184ull); 826} 827#else 828#define CVMX_NPI_PCI_READ_CMD_C (CVMX_ADD_IO_SEG(0x00011F0000001184ull)) 829#endif 830#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 831#define CVMX_NPI_PCI_READ_CMD_E CVMX_NPI_PCI_READ_CMD_E_FUNC() 832static inline uint64_t CVMX_NPI_PCI_READ_CMD_E_FUNC(void) 833{ 834 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 835 cvmx_warn("CVMX_NPI_PCI_READ_CMD_E not supported on this chip\n"); 836 return CVMX_ADD_IO_SEG(0x00011F0000001188ull); 837} 838#else 839#define CVMX_NPI_PCI_READ_CMD_E (CVMX_ADD_IO_SEG(0x00011F0000001188ull)) 840#endif 841#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 842#define CVMX_NPI_PCI_SCM_REG CVMX_NPI_PCI_SCM_REG_FUNC() 843static inline uint64_t CVMX_NPI_PCI_SCM_REG_FUNC(void) 844{ 845 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 846 cvmx_warn("CVMX_NPI_PCI_SCM_REG not supported on this chip\n"); 847 return CVMX_ADD_IO_SEG(0x00011F00000011A8ull); 848} 849#else 850#define CVMX_NPI_PCI_SCM_REG (CVMX_ADD_IO_SEG(0x00011F00000011A8ull)) 851#endif 852#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 853#define CVMX_NPI_PCI_TSR_REG CVMX_NPI_PCI_TSR_REG_FUNC() 854static inline uint64_t CVMX_NPI_PCI_TSR_REG_FUNC(void) 855{ 856 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 857 cvmx_warn("CVMX_NPI_PCI_TSR_REG not supported on this chip\n"); 858 return CVMX_ADD_IO_SEG(0x00011F00000011B0ull); 859} 860#else 861#define CVMX_NPI_PCI_TSR_REG (CVMX_ADD_IO_SEG(0x00011F00000011B0ull)) 862#endif 863#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 864#define CVMX_NPI_PORT32_INSTR_HDR CVMX_NPI_PORT32_INSTR_HDR_FUNC() 865static inline uint64_t CVMX_NPI_PORT32_INSTR_HDR_FUNC(void) 866{ 867 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 868 cvmx_warn("CVMX_NPI_PORT32_INSTR_HDR not supported on this chip\n"); 869 return CVMX_ADD_IO_SEG(0x00011F00000001F8ull); 870} 871#else 872#define CVMX_NPI_PORT32_INSTR_HDR (CVMX_ADD_IO_SEG(0x00011F00000001F8ull)) 873#endif 874#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 875#define CVMX_NPI_PORT33_INSTR_HDR CVMX_NPI_PORT33_INSTR_HDR_FUNC() 876static inline uint64_t CVMX_NPI_PORT33_INSTR_HDR_FUNC(void) 877{ 878 if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 879 cvmx_warn("CVMX_NPI_PORT33_INSTR_HDR not supported on this chip\n"); 880 return CVMX_ADD_IO_SEG(0x00011F0000000200ull); 881} 882#else 883#define CVMX_NPI_PORT33_INSTR_HDR (CVMX_ADD_IO_SEG(0x00011F0000000200ull)) 884#endif 885#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 886#define CVMX_NPI_PORT34_INSTR_HDR CVMX_NPI_PORT34_INSTR_HDR_FUNC() 887static inline uint64_t CVMX_NPI_PORT34_INSTR_HDR_FUNC(void) 888{ 889 if (!(OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 890 cvmx_warn("CVMX_NPI_PORT34_INSTR_HDR not supported on this chip\n"); 891 return CVMX_ADD_IO_SEG(0x00011F0000000208ull); 892} 893#else 894#define CVMX_NPI_PORT34_INSTR_HDR (CVMX_ADD_IO_SEG(0x00011F0000000208ull)) 895#endif 896#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 897#define CVMX_NPI_PORT35_INSTR_HDR CVMX_NPI_PORT35_INSTR_HDR_FUNC() 898static inline uint64_t CVMX_NPI_PORT35_INSTR_HDR_FUNC(void) 899{ 900 if (!(OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 901 cvmx_warn("CVMX_NPI_PORT35_INSTR_HDR not supported on this chip\n"); 902 return CVMX_ADD_IO_SEG(0x00011F0000000210ull); 903} 904#else 905#define CVMX_NPI_PORT35_INSTR_HDR (CVMX_ADD_IO_SEG(0x00011F0000000210ull)) 906#endif 907#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 908#define CVMX_NPI_PORT_BP_CONTROL CVMX_NPI_PORT_BP_CONTROL_FUNC() 909static inline uint64_t CVMX_NPI_PORT_BP_CONTROL_FUNC(void) 910{ 911 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 912 cvmx_warn("CVMX_NPI_PORT_BP_CONTROL not supported on this chip\n"); 913 return CVMX_ADD_IO_SEG(0x00011F00000001F0ull); 914} 915#else 916#define CVMX_NPI_PORT_BP_CONTROL (CVMX_ADD_IO_SEG(0x00011F00000001F0ull)) 917#endif 918#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 919static inline uint64_t CVMX_NPI_PX_DBPAIR_ADDR(unsigned long offset) 920{ 921 if (!( 922 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 923 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 924 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 925 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 926 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 927 cvmx_warn("CVMX_NPI_PX_DBPAIR_ADDR(%lu) is invalid on this chip\n", offset); 928 return CVMX_ADD_IO_SEG(0x00011F0000000180ull) + ((offset) & 3) * 8; 929} 930#else 931#define CVMX_NPI_PX_DBPAIR_ADDR(offset) (CVMX_ADD_IO_SEG(0x00011F0000000180ull) + ((offset) & 3) * 8) 932#endif 933#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 934static inline uint64_t CVMX_NPI_PX_INSTR_ADDR(unsigned long offset) 935{ 936 if (!( 937 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 938 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 939 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 940 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 941 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 942 cvmx_warn("CVMX_NPI_PX_INSTR_ADDR(%lu) is invalid on this chip\n", offset); 943 return CVMX_ADD_IO_SEG(0x00011F00000001C0ull) + ((offset) & 3) * 8; 944} 945#else 946#define CVMX_NPI_PX_INSTR_ADDR(offset) (CVMX_ADD_IO_SEG(0x00011F00000001C0ull) + ((offset) & 3) * 8) 947#endif 948#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 949static inline uint64_t CVMX_NPI_PX_INSTR_CNTS(unsigned long offset) 950{ 951 if (!( 952 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 953 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 954 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 955 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 956 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 957 cvmx_warn("CVMX_NPI_PX_INSTR_CNTS(%lu) is invalid on this chip\n", offset); 958 return CVMX_ADD_IO_SEG(0x00011F00000001A0ull) + ((offset) & 3) * 8; 959} 960#else 961#define CVMX_NPI_PX_INSTR_CNTS(offset) (CVMX_ADD_IO_SEG(0x00011F00000001A0ull) + ((offset) & 3) * 8) 962#endif 963#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 964static inline uint64_t CVMX_NPI_PX_PAIR_CNTS(unsigned long offset) 965{ 966 if (!( 967 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 968 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 969 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 970 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 971 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 972 cvmx_warn("CVMX_NPI_PX_PAIR_CNTS(%lu) is invalid on this chip\n", offset); 973 return CVMX_ADD_IO_SEG(0x00011F0000000160ull) + ((offset) & 3) * 8; 974} 975#else 976#define CVMX_NPI_PX_PAIR_CNTS(offset) (CVMX_ADD_IO_SEG(0x00011F0000000160ull) + ((offset) & 3) * 8) 977#endif 978#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 979#define CVMX_NPI_RSL_INT_BLOCKS CVMX_NPI_RSL_INT_BLOCKS_FUNC() 980static inline uint64_t CVMX_NPI_RSL_INT_BLOCKS_FUNC(void) 981{ 982 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 983 cvmx_warn("CVMX_NPI_RSL_INT_BLOCKS not supported on this chip\n"); 984 return CVMX_ADD_IO_SEG(0x00011F0000000000ull); 985} 986#else 987#define CVMX_NPI_RSL_INT_BLOCKS (CVMX_ADD_IO_SEG(0x00011F0000000000ull)) 988#endif 989#define CVMX_NPI_SIZE_INPUT0 CVMX_NPI_SIZE_INPUTX(0) 990#define CVMX_NPI_SIZE_INPUT1 CVMX_NPI_SIZE_INPUTX(1) 991#define CVMX_NPI_SIZE_INPUT2 CVMX_NPI_SIZE_INPUTX(2) 992#define CVMX_NPI_SIZE_INPUT3 CVMX_NPI_SIZE_INPUTX(3) 993#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 994static inline uint64_t CVMX_NPI_SIZE_INPUTX(unsigned long offset) 995{ 996 if (!( 997 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset == 0))) || 998 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 1))) || 999 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 3))) || 1000 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 1))) || 1001 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 3))))) 1002 cvmx_warn("CVMX_NPI_SIZE_INPUTX(%lu) is invalid on this chip\n", offset); 1003 return CVMX_ADD_IO_SEG(0x00011F0000000078ull) + ((offset) & 3) * 16; 1004} 1005#else 1006#define CVMX_NPI_SIZE_INPUTX(offset) (CVMX_ADD_IO_SEG(0x00011F0000000078ull) + ((offset) & 3) * 16) 1007#endif 1008#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 1009#define CVMX_NPI_WIN_READ_TO CVMX_NPI_WIN_READ_TO_FUNC() 1010static inline uint64_t CVMX_NPI_WIN_READ_TO_FUNC(void) 1011{ 1012 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN50XX) || OCTEON_IS_MODEL(OCTEON_CN58XX))) 1013 cvmx_warn("CVMX_NPI_WIN_READ_TO not supported on this chip\n"); 1014 return CVMX_ADD_IO_SEG(0x00011F00000001E0ull); 1015} 1016#else 1017#define CVMX_NPI_WIN_READ_TO (CVMX_ADD_IO_SEG(0x00011F00000001E0ull)) 1018#endif 1019 1020/** 1021 * cvmx_npi_base_addr_input# 1022 * 1023 * NPI_BASE_ADDR_INPUT0 = NPI's Base Address Input 0 Register 1024 * 1025 * The address to start reading Instructions from for Input-0. 1026 */ 1027union cvmx_npi_base_addr_inputx { 1028 uint64_t u64; 1029 struct cvmx_npi_base_addr_inputx_s { 1030#ifdef __BIG_ENDIAN_BITFIELD 1031 uint64_t baddr : 61; /**< The address to read Instruction from for output 0. 1032 This address is 8-byte aligned, for this reason 1033 address bits [2:0] will always be zero. */ 1034 uint64_t reserved_0_2 : 3; 1035#else 1036 uint64_t reserved_0_2 : 3; 1037 uint64_t baddr : 61; 1038#endif 1039 } s; 1040 struct cvmx_npi_base_addr_inputx_s cn30xx; 1041 struct cvmx_npi_base_addr_inputx_s cn31xx; 1042 struct cvmx_npi_base_addr_inputx_s cn38xx; 1043 struct cvmx_npi_base_addr_inputx_s cn38xxp2; 1044 struct cvmx_npi_base_addr_inputx_s cn50xx; 1045 struct cvmx_npi_base_addr_inputx_s cn58xx; 1046 struct cvmx_npi_base_addr_inputx_s cn58xxp1; 1047}; 1048typedef union cvmx_npi_base_addr_inputx cvmx_npi_base_addr_inputx_t; 1049 1050/** 1051 * cvmx_npi_base_addr_output# 1052 * 1053 * NPI_BASE_ADDR_OUTPUT0 = NPI's Base Address Output 0 Register 1054 * 1055 * The address to start reading Instructions from for Output-0. 1056 */ 1057union cvmx_npi_base_addr_outputx { 1058 uint64_t u64; 1059 struct cvmx_npi_base_addr_outputx_s { 1060#ifdef __BIG_ENDIAN_BITFIELD 1061 uint64_t baddr : 61; /**< The address to read Instruction from for output 0. 1062 This address is 8-byte aligned, for this reason 1063 address bits [2:0] will always be zero. */ 1064 uint64_t reserved_0_2 : 3; 1065#else 1066 uint64_t reserved_0_2 : 3; 1067 uint64_t baddr : 61; 1068#endif 1069 } s; 1070 struct cvmx_npi_base_addr_outputx_s cn30xx; 1071 struct cvmx_npi_base_addr_outputx_s cn31xx; 1072 struct cvmx_npi_base_addr_outputx_s cn38xx; 1073 struct cvmx_npi_base_addr_outputx_s cn38xxp2; 1074 struct cvmx_npi_base_addr_outputx_s cn50xx; 1075 struct cvmx_npi_base_addr_outputx_s cn58xx; 1076 struct cvmx_npi_base_addr_outputx_s cn58xxp1; 1077}; 1078typedef union cvmx_npi_base_addr_outputx cvmx_npi_base_addr_outputx_t; 1079 1080/** 1081 * cvmx_npi_bist_status 1082 * 1083 * NPI_BIST_STATUS = NPI's BIST Status Register 1084 * 1085 * Results from BIST runs of NPI's memories. 1086 */ 1087union cvmx_npi_bist_status { 1088 uint64_t u64; 1089 struct cvmx_npi_bist_status_s { 1090#ifdef __BIG_ENDIAN_BITFIELD 1091 uint64_t reserved_20_63 : 44; 1092 uint64_t csr_bs : 1; /**< BIST Status for the csr_fifo */ 1093 uint64_t dif_bs : 1; /**< BIST Status for the dif_fifo */ 1094 uint64_t rdp_bs : 1; /**< BIST Status for the rdp_fifo */ 1095 uint64_t pcnc_bs : 1; /**< BIST Status for the pcn_cnt_fifo */ 1096 uint64_t pcn_bs : 1; /**< BIST Status for the pcn_fifo */ 1097 uint64_t rdn_bs : 1; /**< BIST Status for the rdn_fifo */ 1098 uint64_t pcac_bs : 1; /**< BIST Status for the pca_cmd_fifo */ 1099 uint64_t pcad_bs : 1; /**< BIST Status for the pca_data_fifo */ 1100 uint64_t rdnl_bs : 1; /**< BIST Status for the rdn_length_fifo */ 1101 uint64_t pgf_bs : 1; /**< BIST Status for the pgf_fifo */ 1102 uint64_t pig_bs : 1; /**< BIST Status for the pig_fifo */ 1103 uint64_t pof0_bs : 1; /**< BIST Status for the pof0_fifo */ 1104 uint64_t pof1_bs : 1; /**< BIST Status for the pof1_fifo */ 1105 uint64_t pof2_bs : 1; /**< BIST Status for the pof2_fifo */ 1106 uint64_t pof3_bs : 1; /**< BIST Status for the pof3_fifo */ 1107 uint64_t pos_bs : 1; /**< BIST Status for the pos_fifo */ 1108 uint64_t nus_bs : 1; /**< BIST Status for the nus_fifo */ 1109 uint64_t dob_bs : 1; /**< BIST Status for the dob_fifo */ 1110 uint64_t pdf_bs : 1; /**< BIST Status for the pdf_fifo */ 1111 uint64_t dpi_bs : 1; /**< BIST Status for the dpi_fifo */ 1112#else 1113 uint64_t dpi_bs : 1; 1114 uint64_t pdf_bs : 1; 1115 uint64_t dob_bs : 1; 1116 uint64_t nus_bs : 1; 1117 uint64_t pos_bs : 1; 1118 uint64_t pof3_bs : 1; 1119 uint64_t pof2_bs : 1; 1120 uint64_t pof1_bs : 1; 1121 uint64_t pof0_bs : 1; 1122 uint64_t pig_bs : 1; 1123 uint64_t pgf_bs : 1; 1124 uint64_t rdnl_bs : 1; 1125 uint64_t pcad_bs : 1; 1126 uint64_t pcac_bs : 1; 1127 uint64_t rdn_bs : 1; 1128 uint64_t pcn_bs : 1; 1129 uint64_t pcnc_bs : 1; 1130 uint64_t rdp_bs : 1; 1131 uint64_t dif_bs : 1; 1132 uint64_t csr_bs : 1; 1133 uint64_t reserved_20_63 : 44; 1134#endif 1135 } s; 1136 struct cvmx_npi_bist_status_cn30xx { 1137#ifdef __BIG_ENDIAN_BITFIELD 1138 uint64_t reserved_20_63 : 44; 1139 uint64_t csr_bs : 1; /**< BIST Status for the csr_fifo */ 1140 uint64_t dif_bs : 1; /**< BIST Status for the dif_fifo */ 1141 uint64_t rdp_bs : 1; /**< BIST Status for the rdp_fifo */ 1142 uint64_t pcnc_bs : 1; /**< BIST Status for the pcn_cnt_fifo */ 1143 uint64_t pcn_bs : 1; /**< BIST Status for the pcn_fifo */ 1144 uint64_t rdn_bs : 1; /**< BIST Status for the rdn_fifo */ 1145 uint64_t pcac_bs : 1; /**< BIST Status for the pca_cmd_fifo */ 1146 uint64_t pcad_bs : 1; /**< BIST Status for the pca_data_fifo */ 1147 uint64_t rdnl_bs : 1; /**< BIST Status for the rdn_length_fifo */ 1148 uint64_t pgf_bs : 1; /**< BIST Status for the pgf_fifo */ 1149 uint64_t pig_bs : 1; /**< BIST Status for the pig_fifo */ 1150 uint64_t pof0_bs : 1; /**< BIST Status for the pof0_fifo */ 1151 uint64_t reserved_5_7 : 3; 1152 uint64_t pos_bs : 1; /**< BIST Status for the pos_fifo */ 1153 uint64_t nus_bs : 1; /**< BIST Status for the nus_fifo */ 1154 uint64_t dob_bs : 1; /**< BIST Status for the dob_fifo */ 1155 uint64_t pdf_bs : 1; /**< BIST Status for the pdf_fifo */ 1156 uint64_t dpi_bs : 1; /**< BIST Status for the dpi_fifo */ 1157#else 1158 uint64_t dpi_bs : 1; 1159 uint64_t pdf_bs : 1; 1160 uint64_t dob_bs : 1; 1161 uint64_t nus_bs : 1; 1162 uint64_t pos_bs : 1; 1163 uint64_t reserved_5_7 : 3; 1164 uint64_t pof0_bs : 1; 1165 uint64_t pig_bs : 1; 1166 uint64_t pgf_bs : 1; 1167 uint64_t rdnl_bs : 1; 1168 uint64_t pcad_bs : 1; 1169 uint64_t pcac_bs : 1; 1170 uint64_t rdn_bs : 1; 1171 uint64_t pcn_bs : 1; 1172 uint64_t pcnc_bs : 1; 1173 uint64_t rdp_bs : 1; 1174 uint64_t dif_bs : 1; 1175 uint64_t csr_bs : 1; 1176 uint64_t reserved_20_63 : 44; 1177#endif 1178 } cn30xx; 1179 struct cvmx_npi_bist_status_s cn31xx; 1180 struct cvmx_npi_bist_status_s cn38xx; 1181 struct cvmx_npi_bist_status_s cn38xxp2; 1182 struct cvmx_npi_bist_status_cn50xx { 1183#ifdef __BIG_ENDIAN_BITFIELD 1184 uint64_t reserved_20_63 : 44; 1185 uint64_t csr_bs : 1; /**< BIST Status for the csr_fifo */ 1186 uint64_t dif_bs : 1; /**< BIST Status for the dif_fifo */ 1187 uint64_t rdp_bs : 1; /**< BIST Status for the rdp_fifo */ 1188 uint64_t pcnc_bs : 1; /**< BIST Status for the pcn_cnt_fifo */ 1189 uint64_t pcn_bs : 1; /**< BIST Status for the pcn_fifo */ 1190 uint64_t rdn_bs : 1; /**< BIST Status for the rdn_fifo */ 1191 uint64_t pcac_bs : 1; /**< BIST Status for the pca_cmd_fifo */ 1192 uint64_t pcad_bs : 1; /**< BIST Status for the pca_data_fifo */ 1193 uint64_t rdnl_bs : 1; /**< BIST Status for the rdn_length_fifo */ 1194 uint64_t pgf_bs : 1; /**< BIST Status for the pgf_fifo */ 1195 uint64_t pig_bs : 1; /**< BIST Status for the pig_fifo */ 1196 uint64_t pof0_bs : 1; /**< BIST Status for the pof0_fifo */ 1197 uint64_t pof1_bs : 1; /**< BIST Status for the pof1_fifo */ 1198 uint64_t reserved_5_6 : 2; 1199 uint64_t pos_bs : 1; /**< BIST Status for the pos_fifo */ 1200 uint64_t nus_bs : 1; /**< BIST Status for the nus_fifo */ 1201 uint64_t dob_bs : 1; /**< BIST Status for the dob_fifo */ 1202 uint64_t pdf_bs : 1; /**< BIST Status for the pdf_fifo */ 1203 uint64_t dpi_bs : 1; /**< BIST Status for the dpi_fifo */ 1204#else 1205 uint64_t dpi_bs : 1; 1206 uint64_t pdf_bs : 1; 1207 uint64_t dob_bs : 1; 1208 uint64_t nus_bs : 1; 1209 uint64_t pos_bs : 1; 1210 uint64_t reserved_5_6 : 2; 1211 uint64_t pof1_bs : 1; 1212 uint64_t pof0_bs : 1; 1213 uint64_t pig_bs : 1; 1214 uint64_t pgf_bs : 1; 1215 uint64_t rdnl_bs : 1; 1216 uint64_t pcad_bs : 1; 1217 uint64_t pcac_bs : 1; 1218 uint64_t rdn_bs : 1; 1219 uint64_t pcn_bs : 1; 1220 uint64_t pcnc_bs : 1; 1221 uint64_t rdp_bs : 1; 1222 uint64_t dif_bs : 1; 1223 uint64_t csr_bs : 1; 1224 uint64_t reserved_20_63 : 44; 1225#endif 1226 } cn50xx; 1227 struct cvmx_npi_bist_status_s cn58xx; 1228 struct cvmx_npi_bist_status_s cn58xxp1; 1229}; 1230typedef union cvmx_npi_bist_status cvmx_npi_bist_status_t; 1231 1232/** 1233 * cvmx_npi_buff_size_output# 1234 * 1235 * NPI_BUFF_SIZE_OUTPUT0 = NPI's D/I Buffer Sizes For Output 0 1236 * 1237 * The size in bytes of the Data Bufffer and Information Buffer for output 0. 1238 */ 1239union cvmx_npi_buff_size_outputx { 1240 uint64_t u64; 1241 struct cvmx_npi_buff_size_outputx_s { 1242#ifdef __BIG_ENDIAN_BITFIELD 1243 uint64_t reserved_23_63 : 41; 1244 uint64_t isize : 7; /**< The number of bytes to move to the Info-Pointer 1245 from the front of the packet. 1246 Legal values are 0-120. */ 1247 uint64_t bsize : 16; /**< The size in bytes of the area pointed to by 1248 buffer pointer for output packet data. */ 1249#else 1250 uint64_t bsize : 16; 1251 uint64_t isize : 7; 1252 uint64_t reserved_23_63 : 41; 1253#endif 1254 } s; 1255 struct cvmx_npi_buff_size_outputx_s cn30xx; 1256 struct cvmx_npi_buff_size_outputx_s cn31xx; 1257 struct cvmx_npi_buff_size_outputx_s cn38xx; 1258 struct cvmx_npi_buff_size_outputx_s cn38xxp2; 1259 struct cvmx_npi_buff_size_outputx_s cn50xx; 1260 struct cvmx_npi_buff_size_outputx_s cn58xx; 1261 struct cvmx_npi_buff_size_outputx_s cn58xxp1; 1262}; 1263typedef union cvmx_npi_buff_size_outputx cvmx_npi_buff_size_outputx_t; 1264 1265/** 1266 * cvmx_npi_comp_ctl 1267 * 1268 * NPI_COMP_CTL = PCI Compensation Control 1269 * 1270 * PCI Compensation Control 1271 */ 1272union cvmx_npi_comp_ctl { 1273 uint64_t u64; 1274 struct cvmx_npi_comp_ctl_s { 1275#ifdef __BIG_ENDIAN_BITFIELD 1276 uint64_t reserved_10_63 : 54; 1277 uint64_t pctl : 5; /**< Bypass value for PCTL */ 1278 uint64_t nctl : 5; /**< Bypass value for NCTL */ 1279#else 1280 uint64_t nctl : 5; 1281 uint64_t pctl : 5; 1282 uint64_t reserved_10_63 : 54; 1283#endif 1284 } s; 1285 struct cvmx_npi_comp_ctl_s cn50xx; 1286 struct cvmx_npi_comp_ctl_s cn58xx; 1287 struct cvmx_npi_comp_ctl_s cn58xxp1; 1288}; 1289typedef union cvmx_npi_comp_ctl cvmx_npi_comp_ctl_t; 1290 1291/** 1292 * cvmx_npi_ctl_status 1293 * 1294 * NPI_CTL_STATUS = NPI's Control Status Register 1295 * 1296 * Contains control ans status for NPI. 1297 * Writes to this register are not ordered with writes/reads to the PCI Memory space. 1298 * To ensure that a write has completed the user must read the register before 1299 * making an access(i.e. PCI memory space) that requires the value of this register to be updated. 1300 */ 1301union cvmx_npi_ctl_status { 1302 uint64_t u64; 1303 struct cvmx_npi_ctl_status_s { 1304#ifdef __BIG_ENDIAN_BITFIELD 1305 uint64_t reserved_63_63 : 1; 1306 uint64_t chip_rev : 8; /**< The revision of the N3. */ 1307 uint64_t dis_pniw : 1; /**< When asserted '1' access from the PNI Window 1308 Registers are disabled. */ 1309 uint64_t out3_enb : 1; /**< When asserted '1' the output3 engine is enabled. 1310 After enabling the values of the associated 1311 Address and Size Register should not be changed. */ 1312 uint64_t out2_enb : 1; /**< When asserted '1' the output2 engine is enabled. 1313 After enabling the values of the associated 1314 Address and Size Register should not be changed. */ 1315 uint64_t out1_enb : 1; /**< When asserted '1' the output1 engine is enabled. 1316 After enabling the values of the associated 1317 Address and Size Register should not be changed. */ 1318 uint64_t out0_enb : 1; /**< When asserted '1' the output0 engine is enabled. 1319 After enabling the values of the associated 1320 Address and Size Register should not be changed. */ 1321 uint64_t ins3_enb : 1; /**< When asserted '1' the gather3 engine is enabled. 1322 After enabling the values of the associated 1323 Address and Size Register should not be changed. */ 1324 uint64_t ins2_enb : 1; /**< When asserted '1' the gather2 engine is enabled. 1325 After enabling the values of the associated 1326 Address and Size Register should not be changed. */ 1327 uint64_t ins1_enb : 1; /**< When asserted '1' the gather1 engine is enabled. 1328 After enabling the values of the associated 1329 Address and Size Register should not be changed. */ 1330 uint64_t ins0_enb : 1; /**< When asserted '1' the gather0 engine is enabled. 1331 After enabling the values of the associated 1332 Address and Size Register should not be changed. */ 1333 uint64_t ins3_64b : 1; /**< When asserted '1' the instructions read by the 1334 gather3 engine are 64-Byte instructions, when 1335 de-asserted '0' instructions are 32-byte. */ 1336 uint64_t ins2_64b : 1; /**< When asserted '1' the instructions read by the 1337 gather2 engine are 64-Byte instructions, when 1338 de-asserted '0' instructions are 32-byte. */ 1339 uint64_t ins1_64b : 1; /**< When asserted '1' the instructions read by the 1340 gather1 engine are 64-Byte instructions, when 1341 de-asserted '0' instructions are 32-byte. */ 1342 uint64_t ins0_64b : 1; /**< When asserted '1' the instructions read by the 1343 gather0 engine are 64-Byte instructions, when 1344 de-asserted '0' instructions are 32-byte. */ 1345 uint64_t pci_wdis : 1; /**< When set '1' disables access to registers in 1346 PNI address range 0x1000 - 0x17FF from the PCI. */ 1347 uint64_t wait_com : 1; /**< When set '1' casues the NPI to wait for a commit 1348 from the L2C before sending additional access to 1349 the L2C from the PCI. */ 1350 uint64_t reserved_37_39 : 3; 1351 uint64_t max_word : 5; /**< The maximum number of words to merge into a single 1352 write operation from the PPs to the PCI. Legal 1353 values are 1 to 32, where a '0' is treated as 32. */ 1354 uint64_t reserved_10_31 : 22; 1355 uint64_t timer : 10; /**< When the NPI starts a PP to PCI write it will wait 1356 no longer than the value of TIMER in eclks to 1357 merge additional writes from the PPs into 1 1358 large write. The values for this field is 1 to 1359 1024 where a value of '0' is treated as 1024. */ 1360#else 1361 uint64_t timer : 10; 1362 uint64_t reserved_10_31 : 22; 1363 uint64_t max_word : 5; 1364 uint64_t reserved_37_39 : 3; 1365 uint64_t wait_com : 1; 1366 uint64_t pci_wdis : 1; 1367 uint64_t ins0_64b : 1; 1368 uint64_t ins1_64b : 1; 1369 uint64_t ins2_64b : 1; 1370 uint64_t ins3_64b : 1; 1371 uint64_t ins0_enb : 1; 1372 uint64_t ins1_enb : 1; 1373 uint64_t ins2_enb : 1; 1374 uint64_t ins3_enb : 1; 1375 uint64_t out0_enb : 1; 1376 uint64_t out1_enb : 1; 1377 uint64_t out2_enb : 1; 1378 uint64_t out3_enb : 1; 1379 uint64_t dis_pniw : 1; 1380 uint64_t chip_rev : 8; 1381 uint64_t reserved_63_63 : 1; 1382#endif 1383 } s; 1384 struct cvmx_npi_ctl_status_cn30xx { 1385#ifdef __BIG_ENDIAN_BITFIELD 1386 uint64_t reserved_63_63 : 1; 1387 uint64_t chip_rev : 8; /**< The revision of the N3. */ 1388 uint64_t dis_pniw : 1; /**< When asserted '1' access from the PNI Window 1389 Registers are disabled. */ 1390 uint64_t reserved_51_53 : 3; 1391 uint64_t out0_enb : 1; /**< When asserted '1' the output0 engine is enabled. 1392 After enabling the values of the associated 1393 Address and Size Register should not be changed. */ 1394 uint64_t reserved_47_49 : 3; 1395 uint64_t ins0_enb : 1; /**< When asserted '1' the gather0 engine is enabled. 1396 After enabling the values of the associated 1397 Address and Size Register should not be changed. */ 1398 uint64_t reserved_43_45 : 3; 1399 uint64_t ins0_64b : 1; /**< When asserted '1' the instructions read by the 1400 gather0 engine are 64-Byte instructions, when 1401 de-asserted '0' instructions are 32-byte. */ 1402 uint64_t pci_wdis : 1; /**< When set '1' disables access to registers in 1403 PNI address range 0x1000 - 0x17FF from the PCI. */ 1404 uint64_t wait_com : 1; /**< When set '1' casues the NPI to wait for a commit 1405 from the L2C before sending additional access to 1406 the L2C from the PCI. */ 1407 uint64_t reserved_37_39 : 3; 1408 uint64_t max_word : 5; /**< The maximum number of words to merge into a single 1409 write operation from the PPs to the PCI. Legal 1410 values are 1 to 32, where a '0' is treated as 32. */ 1411 uint64_t reserved_10_31 : 22; 1412 uint64_t timer : 10; /**< When the NPI starts a PP to PCI write it will wait 1413 no longer than the value of TIMER in eclks to 1414 merge additional writes from the PPs into 1 1415 large write. The values for this field is 1 to 1416 1024 where a value of '0' is treated as 1024. */ 1417#else 1418 uint64_t timer : 10; 1419 uint64_t reserved_10_31 : 22; 1420 uint64_t max_word : 5; 1421 uint64_t reserved_37_39 : 3; 1422 uint64_t wait_com : 1; 1423 uint64_t pci_wdis : 1; 1424 uint64_t ins0_64b : 1; 1425 uint64_t reserved_43_45 : 3; 1426 uint64_t ins0_enb : 1; 1427 uint64_t reserved_47_49 : 3; 1428 uint64_t out0_enb : 1; 1429 uint64_t reserved_51_53 : 3; 1430 uint64_t dis_pniw : 1; 1431 uint64_t chip_rev : 8; 1432 uint64_t reserved_63_63 : 1; 1433#endif 1434 } cn30xx; 1435 struct cvmx_npi_ctl_status_cn31xx { 1436#ifdef __BIG_ENDIAN_BITFIELD 1437 uint64_t reserved_63_63 : 1; 1438 uint64_t chip_rev : 8; /**< The revision of the N3. 1439 0 => pass1.x, 1 => 2.0 */ 1440 uint64_t dis_pniw : 1; /**< When asserted '1' access from the PNI Window 1441 Registers are disabled. */ 1442 uint64_t reserved_52_53 : 2; 1443 uint64_t out1_enb : 1; /**< When asserted '1' the output1 engine is enabled. 1444 After enabling the values of the associated 1445 Address and Size Register should not be changed. */ 1446 uint64_t out0_enb : 1; /**< When asserted '1' the output0 engine is enabled. 1447 After enabling the values of the associated 1448 Address and Size Register should not be changed. */ 1449 uint64_t reserved_48_49 : 2; 1450 uint64_t ins1_enb : 1; /**< When asserted '1' the gather1 engine is enabled. 1451 After enabling the values of the associated 1452 Address and Size Register should not be changed. */ 1453 uint64_t ins0_enb : 1; /**< When asserted '1' the gather0 engine is enabled. 1454 After enabling the values of the associated 1455 Address and Size Register should not be changed. */ 1456 uint64_t reserved_44_45 : 2; 1457 uint64_t ins1_64b : 1; /**< When asserted '1' the instructions read by the 1458 gather1 engine are 64-Byte instructions, when 1459 de-asserted '0' instructions are 32-byte. */ 1460 uint64_t ins0_64b : 1; /**< When asserted '1' the instructions read by the 1461 gather0 engine are 64-Byte instructions, when 1462 de-asserted '0' instructions are 32-byte. */ 1463 uint64_t pci_wdis : 1; /**< When set '1' disables access to registers in 1464 PNI address range 0x1000 - 0x17FF from the PCI. */ 1465 uint64_t wait_com : 1; /**< When set '1' casues the NPI to wait for a commit 1466 from the L2C before sending additional access to 1467 the L2C from the PCI. */ 1468 uint64_t reserved_37_39 : 3; 1469 uint64_t max_word : 5; /**< The maximum number of words to merge into a single 1470 write operation from the PPs to the PCI. Legal 1471 values are 1 to 32, where a '0' is treated as 32. */ 1472 uint64_t reserved_10_31 : 22; 1473 uint64_t timer : 10; /**< When the NPI starts a PP to PCI write it will wait 1474 no longer than the value of TIMER in eclks to 1475 merge additional writes from the PPs into 1 1476 large write. The values for this field is 1 to 1477 1024 where a value of '0' is treated as 1024. */ 1478#else 1479 uint64_t timer : 10; 1480 uint64_t reserved_10_31 : 22; 1481 uint64_t max_word : 5; 1482 uint64_t reserved_37_39 : 3; 1483 uint64_t wait_com : 1; 1484 uint64_t pci_wdis : 1; 1485 uint64_t ins0_64b : 1; 1486 uint64_t ins1_64b : 1; 1487 uint64_t reserved_44_45 : 2; 1488 uint64_t ins0_enb : 1; 1489 uint64_t ins1_enb : 1; 1490 uint64_t reserved_48_49 : 2; 1491 uint64_t out0_enb : 1; 1492 uint64_t out1_enb : 1; 1493 uint64_t reserved_52_53 : 2; 1494 uint64_t dis_pniw : 1; 1495 uint64_t chip_rev : 8; 1496 uint64_t reserved_63_63 : 1; 1497#endif 1498 } cn31xx; 1499 struct cvmx_npi_ctl_status_s cn38xx; 1500 struct cvmx_npi_ctl_status_s cn38xxp2; 1501 struct cvmx_npi_ctl_status_cn31xx cn50xx; 1502 struct cvmx_npi_ctl_status_s cn58xx; 1503 struct cvmx_npi_ctl_status_s cn58xxp1; 1504}; 1505typedef union cvmx_npi_ctl_status cvmx_npi_ctl_status_t; 1506 1507/** 1508 * cvmx_npi_dbg_select 1509 * 1510 * NPI_DBG_SELECT = Debug Select Register 1511 * 1512 * Contains the debug select value in last written to the RSLs. 1513 */ 1514union cvmx_npi_dbg_select { 1515 uint64_t u64; 1516 struct cvmx_npi_dbg_select_s { 1517#ifdef __BIG_ENDIAN_BITFIELD 1518 uint64_t reserved_16_63 : 48; 1519 uint64_t dbg_sel : 16; /**< When this register is written its value is sent to 1520 all RSLs. */ 1521#else 1522 uint64_t dbg_sel : 16; 1523 uint64_t reserved_16_63 : 48; 1524#endif 1525 } s; 1526 struct cvmx_npi_dbg_select_s cn30xx; 1527 struct cvmx_npi_dbg_select_s cn31xx; 1528 struct cvmx_npi_dbg_select_s cn38xx; 1529 struct cvmx_npi_dbg_select_s cn38xxp2; 1530 struct cvmx_npi_dbg_select_s cn50xx; 1531 struct cvmx_npi_dbg_select_s cn58xx; 1532 struct cvmx_npi_dbg_select_s cn58xxp1; 1533}; 1534typedef union cvmx_npi_dbg_select cvmx_npi_dbg_select_t; 1535 1536/** 1537 * cvmx_npi_dma_control 1538 * 1539 * NPI_DMA_CONTROL = DMA Control Register 1540 * 1541 * Controls operation of the DMA IN/OUT of the NPI. 1542 */ 1543union cvmx_npi_dma_control { 1544 uint64_t u64; 1545 struct cvmx_npi_dma_control_s { 1546#ifdef __BIG_ENDIAN_BITFIELD 1547 uint64_t reserved_36_63 : 28; 1548 uint64_t b0_lend : 1; /**< When set '1' and the NPI is in the mode to write 1549 0 to L2C memory when a DMA is done, the address 1550 to be written to will be treated as a Little 1551 Endian address. This field is new to PASS-2. */ 1552 uint64_t dwb_denb : 1; /**< When set '1' the NPI will send a value in the DWB 1553 field for a free page operation for the memory 1554 that contained the data in N3. */ 1555 uint64_t dwb_ichk : 9; /**< When Instruction Chunks for DMA operations are freed 1556 this value is used for the DWB field of the 1557 operation. */ 1558 uint64_t fpa_que : 3; /**< The FPA queue that the instruction-chunk page will 1559 be returned to when used. */ 1560 uint64_t o_add1 : 1; /**< When set '1' 1 will be added to the DMA counters, 1561 if '0' then the number of bytes in the dma transfer 1562 will be added to the count register. */ 1563 uint64_t o_ro : 1; /**< Relaxed Ordering Mode for DMA. */ 1564 uint64_t o_ns : 1; /**< Nosnoop For DMA. */ 1565 uint64_t o_es : 2; /**< Endian Swap Mode for DMA. */ 1566 uint64_t o_mode : 1; /**< Select PCI_POINTER MODE to be used. 1567 '1' use pointer values for address and register 1568 values for RO, ES, and NS, '0' use register 1569 values for address and pointer values for 1570 RO, ES, and NS. */ 1571 uint64_t hp_enb : 1; /**< Enables the High Priority DMA. 1572 While this bit is disabled '0' then the value 1573 in the NPI_HIGHP_IBUFF_SADDR is re-loaded to the 1574 starting address of the High Priority DMA engine. 1575 CSIZE field will be reloaded, for the High Priority 1576 DMA Engine. */ 1577 uint64_t lp_enb : 1; /**< Enables the Low Priority DMA. 1578 While this bit is disabled '0' then the value 1579 in the NPI_LOWP_IBUFF_SADDR is re-loaded to the 1580 starting address of the Low Priority DMA engine. 1581 PASS-2: When this bit is '0' the value in the 1582 CSIZE field will be reloaded, for the Low Priority 1583 DMA Engine. */ 1584 uint64_t csize : 14; /**< The size in words of the DMA Instruction Chunk. 1585 This value should only be written once. After 1586 writing this value a new value will not be 1587 recognized until the end of the DMA I-Chunk is 1588 reached. */ 1589#else 1590 uint64_t csize : 14; 1591 uint64_t lp_enb : 1; 1592 uint64_t hp_enb : 1; 1593 uint64_t o_mode : 1; 1594 uint64_t o_es : 2; 1595 uint64_t o_ns : 1; 1596 uint64_t o_ro : 1; 1597 uint64_t o_add1 : 1; 1598 uint64_t fpa_que : 3; 1599 uint64_t dwb_ichk : 9; 1600 uint64_t dwb_denb : 1; 1601 uint64_t b0_lend : 1; 1602 uint64_t reserved_36_63 : 28; 1603#endif 1604 } s; 1605 struct cvmx_npi_dma_control_s cn30xx; 1606 struct cvmx_npi_dma_control_s cn31xx; 1607 struct cvmx_npi_dma_control_s cn38xx; 1608 struct cvmx_npi_dma_control_s cn38xxp2; 1609 struct cvmx_npi_dma_control_s cn50xx; 1610 struct cvmx_npi_dma_control_s cn58xx; 1611 struct cvmx_npi_dma_control_s cn58xxp1; 1612}; 1613typedef union cvmx_npi_dma_control cvmx_npi_dma_control_t; 1614 1615/** 1616 * cvmx_npi_dma_highp_counts 1617 * 1618 * NPI_DMA_HIGHP_COUNTS = NPI's High Priority DMA Counts 1619 * 1620 * Values for determing the number of instructions for High Priority DMA in the NPI. 1621 */ 1622union cvmx_npi_dma_highp_counts { 1623 uint64_t u64; 1624 struct cvmx_npi_dma_highp_counts_s { 1625#ifdef __BIG_ENDIAN_BITFIELD 1626 uint64_t reserved_39_63 : 25; 1627 uint64_t fcnt : 7; /**< Number of words in the Instruction FIFO. */ 1628 uint64_t dbell : 32; /**< Number of available words of Instructions to read. */ 1629#else 1630 uint64_t dbell : 32; 1631 uint64_t fcnt : 7; 1632 uint64_t reserved_39_63 : 25; 1633#endif 1634 } s; 1635 struct cvmx_npi_dma_highp_counts_s cn30xx; 1636 struct cvmx_npi_dma_highp_counts_s cn31xx; 1637 struct cvmx_npi_dma_highp_counts_s cn38xx; 1638 struct cvmx_npi_dma_highp_counts_s cn38xxp2; 1639 struct cvmx_npi_dma_highp_counts_s cn50xx; 1640 struct cvmx_npi_dma_highp_counts_s cn58xx; 1641 struct cvmx_npi_dma_highp_counts_s cn58xxp1; 1642}; 1643typedef union cvmx_npi_dma_highp_counts cvmx_npi_dma_highp_counts_t; 1644 1645/** 1646 * cvmx_npi_dma_highp_naddr 1647 * 1648 * NPI_DMA_HIGHP_NADDR = NPI's High Priority DMA Next Ichunk Address 1649 * 1650 * Place NPI will read the next Ichunk data from. This is valid when state is 0 1651 */ 1652union cvmx_npi_dma_highp_naddr { 1653 uint64_t u64; 1654 struct cvmx_npi_dma_highp_naddr_s { 1655#ifdef __BIG_ENDIAN_BITFIELD 1656 uint64_t reserved_40_63 : 24; 1657 uint64_t state : 4; /**< The DMA instruction engine state vector. 1658 Typical value is 0 (IDLE). */ 1659 uint64_t addr : 36; /**< The next L2C address to read DMA instructions 1660 from for the High Priority DMA engine. */ 1661#else 1662 uint64_t addr : 36; 1663 uint64_t state : 4; 1664 uint64_t reserved_40_63 : 24; 1665#endif 1666 } s; 1667 struct cvmx_npi_dma_highp_naddr_s cn30xx; 1668 struct cvmx_npi_dma_highp_naddr_s cn31xx; 1669 struct cvmx_npi_dma_highp_naddr_s cn38xx; 1670 struct cvmx_npi_dma_highp_naddr_s cn38xxp2; 1671 struct cvmx_npi_dma_highp_naddr_s cn50xx; 1672 struct cvmx_npi_dma_highp_naddr_s cn58xx; 1673 struct cvmx_npi_dma_highp_naddr_s cn58xxp1; 1674}; 1675typedef union cvmx_npi_dma_highp_naddr cvmx_npi_dma_highp_naddr_t; 1676 1677/** 1678 * cvmx_npi_dma_lowp_counts 1679 * 1680 * NPI_DMA_LOWP_COUNTS = NPI's Low Priority DMA Counts 1681 * 1682 * Values for determing the number of instructions for Low Priority DMA in the NPI. 1683 */ 1684union cvmx_npi_dma_lowp_counts { 1685 uint64_t u64; 1686 struct cvmx_npi_dma_lowp_counts_s { 1687#ifdef __BIG_ENDIAN_BITFIELD 1688 uint64_t reserved_39_63 : 25; 1689 uint64_t fcnt : 7; /**< Number of words in the Instruction FIFO. */ 1690 uint64_t dbell : 32; /**< Number of available words of Instructions to read. */ 1691#else 1692 uint64_t dbell : 32; 1693 uint64_t fcnt : 7; 1694 uint64_t reserved_39_63 : 25; 1695#endif 1696 } s; 1697 struct cvmx_npi_dma_lowp_counts_s cn30xx; 1698 struct cvmx_npi_dma_lowp_counts_s cn31xx; 1699 struct cvmx_npi_dma_lowp_counts_s cn38xx; 1700 struct cvmx_npi_dma_lowp_counts_s cn38xxp2; 1701 struct cvmx_npi_dma_lowp_counts_s cn50xx; 1702 struct cvmx_npi_dma_lowp_counts_s cn58xx; 1703 struct cvmx_npi_dma_lowp_counts_s cn58xxp1; 1704}; 1705typedef union cvmx_npi_dma_lowp_counts cvmx_npi_dma_lowp_counts_t; 1706 1707/** 1708 * cvmx_npi_dma_lowp_naddr 1709 * 1710 * NPI_DMA_LOWP_NADDR = NPI's Low Priority DMA Next Ichunk Address 1711 * 1712 * Place NPI will read the next Ichunk data from. This is valid when state is 0 1713 */ 1714union cvmx_npi_dma_lowp_naddr { 1715 uint64_t u64; 1716 struct cvmx_npi_dma_lowp_naddr_s { 1717#ifdef __BIG_ENDIAN_BITFIELD 1718 uint64_t reserved_40_63 : 24; 1719 uint64_t state : 4; /**< The DMA instruction engine state vector. 1720 Typical value is 0 (IDLE). */ 1721 uint64_t addr : 36; /**< The next L2C address to read DMA instructions 1722 from for the Low Priority DMA engine. */ 1723#else 1724 uint64_t addr : 36; 1725 uint64_t state : 4; 1726 uint64_t reserved_40_63 : 24; 1727#endif 1728 } s; 1729 struct cvmx_npi_dma_lowp_naddr_s cn30xx; 1730 struct cvmx_npi_dma_lowp_naddr_s cn31xx; 1731 struct cvmx_npi_dma_lowp_naddr_s cn38xx; 1732 struct cvmx_npi_dma_lowp_naddr_s cn38xxp2; 1733 struct cvmx_npi_dma_lowp_naddr_s cn50xx; 1734 struct cvmx_npi_dma_lowp_naddr_s cn58xx; 1735 struct cvmx_npi_dma_lowp_naddr_s cn58xxp1; 1736}; 1737typedef union cvmx_npi_dma_lowp_naddr cvmx_npi_dma_lowp_naddr_t; 1738 1739/** 1740 * cvmx_npi_highp_dbell 1741 * 1742 * NPI_HIGHP_DBELL = High Priority Door Bell 1743 * 1744 * The door bell register for the high priority DMA queue. 1745 */ 1746union cvmx_npi_highp_dbell { 1747 uint64_t u64; 1748 struct cvmx_npi_highp_dbell_s { 1749#ifdef __BIG_ENDIAN_BITFIELD 1750 uint64_t reserved_16_63 : 48; 1751 uint64_t dbell : 16; /**< The value written to this register is added to the 1752 number of 8byte words to be read and processes for 1753 the high priority dma queue. */ 1754#else 1755 uint64_t dbell : 16; 1756 uint64_t reserved_16_63 : 48; 1757#endif 1758 } s; 1759 struct cvmx_npi_highp_dbell_s cn30xx; 1760 struct cvmx_npi_highp_dbell_s cn31xx; 1761 struct cvmx_npi_highp_dbell_s cn38xx; 1762 struct cvmx_npi_highp_dbell_s cn38xxp2; 1763 struct cvmx_npi_highp_dbell_s cn50xx; 1764 struct cvmx_npi_highp_dbell_s cn58xx; 1765 struct cvmx_npi_highp_dbell_s cn58xxp1; 1766}; 1767typedef union cvmx_npi_highp_dbell cvmx_npi_highp_dbell_t; 1768 1769/** 1770 * cvmx_npi_highp_ibuff_saddr 1771 * 1772 * NPI_HIGHP_IBUFF_SADDR = DMA High Priority Instruction Buffer Starting Address 1773 * 1774 * The address to start reading Instructions from for HIGHP. 1775 */ 1776union cvmx_npi_highp_ibuff_saddr { 1777 uint64_t u64; 1778 struct cvmx_npi_highp_ibuff_saddr_s { 1779#ifdef __BIG_ENDIAN_BITFIELD 1780 uint64_t reserved_36_63 : 28; 1781 uint64_t saddr : 36; /**< The starting address to read the first instruction. */ 1782#else 1783 uint64_t saddr : 36; 1784 uint64_t reserved_36_63 : 28; 1785#endif 1786 } s; 1787 struct cvmx_npi_highp_ibuff_saddr_s cn30xx; 1788 struct cvmx_npi_highp_ibuff_saddr_s cn31xx; 1789 struct cvmx_npi_highp_ibuff_saddr_s cn38xx; 1790 struct cvmx_npi_highp_ibuff_saddr_s cn38xxp2; 1791 struct cvmx_npi_highp_ibuff_saddr_s cn50xx; 1792 struct cvmx_npi_highp_ibuff_saddr_s cn58xx; 1793 struct cvmx_npi_highp_ibuff_saddr_s cn58xxp1; 1794}; 1795typedef union cvmx_npi_highp_ibuff_saddr cvmx_npi_highp_ibuff_saddr_t; 1796 1797/** 1798 * cvmx_npi_input_control 1799 * 1800 * NPI_INPUT_CONTROL = NPI's Input Control Register 1801 * 1802 * Control for reads for gather list and instructions. 1803 */ 1804union cvmx_npi_input_control { 1805 uint64_t u64; 1806 struct cvmx_npi_input_control_s { 1807#ifdef __BIG_ENDIAN_BITFIELD 1808 uint64_t reserved_23_63 : 41; 1809 uint64_t pkt_rr : 1; /**< When set '1' the input packet selection will be 1810 made with a Round Robin arbitration. When '0' 1811 the input packet port is fixed in priority, 1812 where the lower port number has higher priority. 1813 PASS3 Field */ 1814 uint64_t pbp_dhi : 13; /**< Field when in [PBP] is set to be used in 1815 calculating a DPTR. */ 1816 uint64_t d_nsr : 1; /**< Enables '1' NoSnoop for reading of 1817 gather data. */ 1818 uint64_t d_esr : 2; /**< The Endian-Swap-Mode for reading of 1819 gather data. */ 1820 uint64_t d_ror : 1; /**< Enables '1' Relaxed Ordering for reading of 1821 gather data. */ 1822 uint64_t use_csr : 1; /**< When set '1' the csr value will be used for 1823 ROR, ESR, and NSR. When clear '0' the value in 1824 DPTR will be used. In turn the bits not used for 1825 ROR, ESR, and NSR, will be used for bits [63:60] 1826 of the address used to fetch packet data. */ 1827 uint64_t nsr : 1; /**< Enables '1' NoSnoop for reading of 1828 gather list and gather instruction. */ 1829 uint64_t esr : 2; /**< The Endian-Swap-Mode for reading of 1830 gather list and gather instruction. */ 1831 uint64_t ror : 1; /**< Enables '1' Relaxed Ordering for reading of 1832 gather list and gather instruction. */ 1833#else 1834 uint64_t ror : 1; 1835 uint64_t esr : 2; 1836 uint64_t nsr : 1; 1837 uint64_t use_csr : 1; 1838 uint64_t d_ror : 1; 1839 uint64_t d_esr : 2; 1840 uint64_t d_nsr : 1; 1841 uint64_t pbp_dhi : 13; 1842 uint64_t pkt_rr : 1; 1843 uint64_t reserved_23_63 : 41; 1844#endif 1845 } s; 1846 struct cvmx_npi_input_control_cn30xx { 1847#ifdef __BIG_ENDIAN_BITFIELD 1848 uint64_t reserved_22_63 : 42; 1849 uint64_t pbp_dhi : 13; /**< Field when in [PBP] is set to be used in 1850 calculating a DPTR. */ 1851 uint64_t d_nsr : 1; /**< Enables '1' NoSnoop for reading of 1852 gather data. */ 1853 uint64_t d_esr : 2; /**< The Endian-Swap-Mode for reading of 1854 gather data. */ 1855 uint64_t d_ror : 1; /**< Enables '1' Relaxed Ordering for reading of 1856 gather data. */ 1857 uint64_t use_csr : 1; /**< When set '1' the csr value will be used for 1858 ROR, ESR, and NSR. When clear '0' the value in 1859 DPTR will be used. In turn the bits not used for 1860 ROR, ESR, and NSR, will be used for bits [63:60] 1861 of the address used to fetch packet data. */ 1862 uint64_t nsr : 1; /**< Enables '1' NoSnoop for reading of 1863 gather list and gather instruction. */ 1864 uint64_t esr : 2; /**< The Endian-Swap-Mode for reading of 1865 gather list and gather instruction. */ 1866 uint64_t ror : 1; /**< Enables '1' Relaxed Ordering for reading of 1867 gather list and gather instruction. */ 1868#else 1869 uint64_t ror : 1; 1870 uint64_t esr : 2; 1871 uint64_t nsr : 1; 1872 uint64_t use_csr : 1; 1873 uint64_t d_ror : 1; 1874 uint64_t d_esr : 2; 1875 uint64_t d_nsr : 1; 1876 uint64_t pbp_dhi : 13; 1877 uint64_t reserved_22_63 : 42; 1878#endif 1879 } cn30xx; 1880 struct cvmx_npi_input_control_cn30xx cn31xx; 1881 struct cvmx_npi_input_control_s cn38xx; 1882 struct cvmx_npi_input_control_cn30xx cn38xxp2; 1883 struct cvmx_npi_input_control_s cn50xx; 1884 struct cvmx_npi_input_control_s cn58xx; 1885 struct cvmx_npi_input_control_s cn58xxp1; 1886}; 1887typedef union cvmx_npi_input_control cvmx_npi_input_control_t; 1888 1889/** 1890 * cvmx_npi_int_enb 1891 * 1892 * NPI_INTERRUPT_ENB = NPI's Interrupt Enable Register 1893 * 1894 * Used to enable the various interrupting conditions of NPI 1895 */ 1896union cvmx_npi_int_enb { 1897 uint64_t u64; 1898 struct cvmx_npi_int_enb_s { 1899#ifdef __BIG_ENDIAN_BITFIELD 1900 uint64_t reserved_62_63 : 2; 1901 uint64_t q1_a_f : 1; /**< Enables NPI_INT_SUM[Q1_A_F] to generate an 1902 interrupt. */ 1903 uint64_t q1_s_e : 1; /**< Enables NPI_INT_SUM[Q1_S_E] to generate an 1904 interrupt. */ 1905 uint64_t pdf_p_f : 1; /**< Enables NPI_INT_SUM[PDF_P_F] to generate an 1906 interrupt. */ 1907 uint64_t pdf_p_e : 1; /**< Enables NPI_INT_SUM[PDF_P_E] to generate an 1908 interrupt. */ 1909 uint64_t pcf_p_f : 1; /**< Enables NPI_INT_SUM[PCF_P_F] to generate an 1910 interrupt. */ 1911 uint64_t pcf_p_e : 1; /**< Enables NPI_INT_SUM[PCF_P_E] to generate an 1912 interrupt. */ 1913 uint64_t rdx_s_e : 1; /**< Enables NPI_INT_SUM[RDX_S_E] to generate an 1914 interrupt. */ 1915 uint64_t rwx_s_e : 1; /**< Enables NPI_INT_SUM[RWX_S_E] to generate an 1916 interrupt. */ 1917 uint64_t pnc_a_f : 1; /**< Enables NPI_INT_SUM[PNC_A_F] to generate an 1918 interrupt. */ 1919 uint64_t pnc_s_e : 1; /**< Enables NPI_INT_SUM[PNC_S_E] to generate an 1920 interrupt. */ 1921 uint64_t com_a_f : 1; /**< Enables NPI_INT_SUM[COM_A_F] to generate an 1922 interrupt. */ 1923 uint64_t com_s_e : 1; /**< Enables NPI_INT_SUM[COM_S_E] to generate an 1924 interrupt. */ 1925 uint64_t q3_a_f : 1; /**< Enables NPI_INT_SUM[Q3_A_F] to generate an 1926 interrupt. */ 1927 uint64_t q3_s_e : 1; /**< Enables NPI_INT_SUM[Q3_S_E] to generate an 1928 interrupt. */ 1929 uint64_t q2_a_f : 1; /**< Enables NPI_INT_SUM[Q2_A_F] to generate an 1930 interrupt. */ 1931 uint64_t q2_s_e : 1; /**< Enables NPI_INT_SUM[Q2_S_E] to generate an 1932 interrupt. */ 1933 uint64_t pcr_a_f : 1; /**< Enables NPI_INT_SUM[PCR_A_F] to generate an 1934 interrupt. */ 1935 uint64_t pcr_s_e : 1; /**< Enables NPI_INT_SUM[PCR_S_E] to generate an 1936 interrupt. */ 1937 uint64_t fcr_a_f : 1; /**< Enables NPI_INT_SUM[FCR_A_F] to generate an 1938 interrupt. */ 1939 uint64_t fcr_s_e : 1; /**< Enables NPI_INT_SUM[FCR_S_E] to generate an 1940 interrupt. */ 1941 uint64_t iobdma : 1; /**< Enables NPI_INT_SUM[IOBDMA] to generate an 1942 interrupt. */ 1943 uint64_t p_dperr : 1; /**< Enables NPI_INT_SUM[P_DPERR] to generate an 1944 interrupt. */ 1945 uint64_t win_rto : 1; /**< Enables NPI_INT_SUM[WIN_RTO] to generate an 1946 interrupt. */ 1947 uint64_t i3_pperr : 1; /**< Enables NPI_INT_SUM[I3_PPERR] to generate an 1948 interrupt. */ 1949 uint64_t i2_pperr : 1; /**< Enables NPI_INT_SUM[I2_PPERR] to generate an 1950 interrupt. */ 1951 uint64_t i1_pperr : 1; /**< Enables NPI_INT_SUM[I1_PPERR] to generate an 1952 interrupt. */ 1953 uint64_t i0_pperr : 1; /**< Enables NPI_INT_SUM[I0_PPERR] to generate an 1954 interrupt. */ 1955 uint64_t p3_ptout : 1; /**< Enables NPI_INT_SUM[P3_PTOUT] to generate an 1956 interrupt. */ 1957 uint64_t p2_ptout : 1; /**< Enables NPI_INT_SUM[P2_PTOUT] to generate an 1958 interrupt. */ 1959 uint64_t p1_ptout : 1; /**< Enables NPI_INT_SUM[P1_PTOUT] to generate an 1960 interrupt. */ 1961 uint64_t p0_ptout : 1; /**< Enables NPI_INT_SUM[P0_PTOUT] to generate an 1962 interrupt. */ 1963 uint64_t p3_pperr : 1; /**< Enables NPI_INT_SUM[P3_PPERR] to generate an 1964 interrupt. */ 1965 uint64_t p2_pperr : 1; /**< Enables NPI_INT_SUM[P2_PPERR] to generate an 1966 interrupt. */ 1967 uint64_t p1_pperr : 1; /**< Enables NPI_INT_SUM[P1_PPERR] to generate an 1968 interrupt. */ 1969 uint64_t p0_pperr : 1; /**< Enables NPI_INT_SUM[P0_PPERR] to generate an 1970 interrupt. */ 1971 uint64_t g3_rtout : 1; /**< Enables NPI_INT_SUM[G3_RTOUT] to generate an 1972 interrupt. */ 1973 uint64_t g2_rtout : 1; /**< Enables NPI_INT_SUM[G2_RTOUT] to generate an 1974 interrupt. */ 1975 uint64_t g1_rtout : 1; /**< Enables NPI_INT_SUM[G1_RTOUT] to generate an 1976 interrupt. */ 1977 uint64_t g0_rtout : 1; /**< Enables NPI_INT_SUM[G0_RTOUT] to generate an 1978 interrupt. */ 1979 uint64_t p3_perr : 1; /**< Enables NPI_INT_SUM[P3_PERR] to generate an 1980 interrupt. */ 1981 uint64_t p2_perr : 1; /**< Enables NPI_INT_SUM[P2_PERR] to generate an 1982 interrupt. */ 1983 uint64_t p1_perr : 1; /**< Enables NPI_INT_SUM[P1_PERR] to generate an 1984 interrupt. */ 1985 uint64_t p0_perr : 1; /**< Enables NPI_INT_SUM[P0_PERR] to generate an 1986 interrupt. */ 1987 uint64_t p3_rtout : 1; /**< Enables NPI_INT_SUM[P3_RTOUT] to generate an 1988 interrupt. */ 1989 uint64_t p2_rtout : 1; /**< Enables NPI_INT_SUM[P2_RTOUT] to generate an 1990 interrupt. */ 1991 uint64_t p1_rtout : 1; /**< Enables NPI_INT_SUM[P1_RTOUT] to generate an 1992 interrupt. */ 1993 uint64_t p0_rtout : 1; /**< Enables NPI_INT_SUM[P0_RTOUT] to generate an 1994 interrupt. */ 1995 uint64_t i3_overf : 1; /**< Enables NPI_INT_SUM[I3_OVERF] to generate an 1996 interrupt. */ 1997 uint64_t i2_overf : 1; /**< Enables NPI_INT_SUM[I2_OVERF] to generate an 1998 interrupt. */ 1999 uint64_t i1_overf : 1; /**< Enables NPI_INT_SUM[I1_OVERF] to generate an 2000 interrupt. */ 2001 uint64_t i0_overf : 1; /**< Enables NPI_INT_SUM[I0_OVERF] to generate an 2002 interrupt. */ 2003 uint64_t i3_rtout : 1; /**< Enables NPI_INT_SUM[I3_RTOUT] to generate an 2004 interrupt. */ 2005 uint64_t i2_rtout : 1; /**< Enables NPI_INT_SUM[I2_RTOUT] to generate an 2006 interrupt. */ 2007 uint64_t i1_rtout : 1; /**< Enables NPI_INT_SUM[I1_RTOUT] to generate an 2008 interrupt. */ 2009 uint64_t i0_rtout : 1; /**< Enables NPI_INT_SUM[I0_RTOUT] to generate an 2010 interrupt. */ 2011 uint64_t po3_2sml : 1; /**< Enables NPI_INT_SUM[PO3_2SML] to generate an 2012 interrupt. */ 2013 uint64_t po2_2sml : 1; /**< Enables NPI_INT_SUM[PO2_2SML] to generate an 2014 interrupt. */ 2015 uint64_t po1_2sml : 1; /**< Enables NPI_INT_SUM[PO1_2SML] to generate an 2016 interrupt. */ 2017 uint64_t po0_2sml : 1; /**< Enables NPI_INT_SUM[PO0_2SML] to generate an 2018 interrupt. */ 2019 uint64_t pci_rsl : 1; /**< Enables NPI_INT_SUM[PCI_RSL] to generate an 2020 interrupt. */ 2021 uint64_t rml_wto : 1; /**< Enables NPI_INT_SUM[RML_WTO] to generate an 2022 interrupt. */ 2023 uint64_t rml_rto : 1; /**< Enables NPI_INT_SUM[RML_RTO] to generate an 2024 interrupt. */ 2025#else 2026 uint64_t rml_rto : 1; 2027 uint64_t rml_wto : 1; 2028 uint64_t pci_rsl : 1; 2029 uint64_t po0_2sml : 1; 2030 uint64_t po1_2sml : 1; 2031 uint64_t po2_2sml : 1; 2032 uint64_t po3_2sml : 1; 2033 uint64_t i0_rtout : 1; 2034 uint64_t i1_rtout : 1; 2035 uint64_t i2_rtout : 1; 2036 uint64_t i3_rtout : 1; 2037 uint64_t i0_overf : 1; 2038 uint64_t i1_overf : 1; 2039 uint64_t i2_overf : 1; 2040 uint64_t i3_overf : 1; 2041 uint64_t p0_rtout : 1; 2042 uint64_t p1_rtout : 1; 2043 uint64_t p2_rtout : 1; 2044 uint64_t p3_rtout : 1; 2045 uint64_t p0_perr : 1; 2046 uint64_t p1_perr : 1; 2047 uint64_t p2_perr : 1; 2048 uint64_t p3_perr : 1; 2049 uint64_t g0_rtout : 1; 2050 uint64_t g1_rtout : 1; 2051 uint64_t g2_rtout : 1; 2052 uint64_t g3_rtout : 1; 2053 uint64_t p0_pperr : 1; 2054 uint64_t p1_pperr : 1; 2055 uint64_t p2_pperr : 1; 2056 uint64_t p3_pperr : 1; 2057 uint64_t p0_ptout : 1; 2058 uint64_t p1_ptout : 1; 2059 uint64_t p2_ptout : 1; 2060 uint64_t p3_ptout : 1; 2061 uint64_t i0_pperr : 1; 2062 uint64_t i1_pperr : 1; 2063 uint64_t i2_pperr : 1; 2064 uint64_t i3_pperr : 1; 2065 uint64_t win_rto : 1; 2066 uint64_t p_dperr : 1; 2067 uint64_t iobdma : 1; 2068 uint64_t fcr_s_e : 1; 2069 uint64_t fcr_a_f : 1; 2070 uint64_t pcr_s_e : 1; 2071 uint64_t pcr_a_f : 1; 2072 uint64_t q2_s_e : 1; 2073 uint64_t q2_a_f : 1; 2074 uint64_t q3_s_e : 1; 2075 uint64_t q3_a_f : 1; 2076 uint64_t com_s_e : 1; 2077 uint64_t com_a_f : 1; 2078 uint64_t pnc_s_e : 1; 2079 uint64_t pnc_a_f : 1; 2080 uint64_t rwx_s_e : 1; 2081 uint64_t rdx_s_e : 1; 2082 uint64_t pcf_p_e : 1; 2083 uint64_t pcf_p_f : 1; 2084 uint64_t pdf_p_e : 1; 2085 uint64_t pdf_p_f : 1; 2086 uint64_t q1_s_e : 1; 2087 uint64_t q1_a_f : 1; 2088 uint64_t reserved_62_63 : 2; 2089#endif 2090 } s; 2091 struct cvmx_npi_int_enb_cn30xx { 2092#ifdef __BIG_ENDIAN_BITFIELD 2093 uint64_t reserved_62_63 : 2; 2094 uint64_t q1_a_f : 1; /**< Enables NPI_INT_SUM[Q1_A_F] to generate an 2095 interrupt. */ 2096 uint64_t q1_s_e : 1; /**< Enables NPI_INT_SUM[Q1_S_E] to generate an 2097 interrupt. */ 2098 uint64_t pdf_p_f : 1; /**< Enables NPI_INT_SUM[PDF_P_F] to generate an 2099 interrupt. */ 2100 uint64_t pdf_p_e : 1; /**< Enables NPI_INT_SUM[PDF_P_E] to generate an 2101 interrupt. */ 2102 uint64_t pcf_p_f : 1; /**< Enables NPI_INT_SUM[PCF_P_F] to generate an 2103 interrupt. */ 2104 uint64_t pcf_p_e : 1; /**< Enables NPI_INT_SUM[PCF_P_E] to generate an 2105 interrupt. */ 2106 uint64_t rdx_s_e : 1; /**< Enables NPI_INT_SUM[RDX_S_E] to generate an 2107 interrupt. */ 2108 uint64_t rwx_s_e : 1; /**< Enables NPI_INT_SUM[RWX_S_E] to generate an 2109 interrupt. */ 2110 uint64_t pnc_a_f : 1; /**< Enables NPI_INT_SUM[PNC_A_F] to generate an 2111 interrupt. */ 2112 uint64_t pnc_s_e : 1; /**< Enables NPI_INT_SUM[PNC_S_E] to generate an 2113 interrupt. */ 2114 uint64_t com_a_f : 1; /**< Enables NPI_INT_SUM[COM_A_F] to generate an 2115 interrupt. */ 2116 uint64_t com_s_e : 1; /**< Enables NPI_INT_SUM[COM_S_E] to generate an 2117 interrupt. */ 2118 uint64_t q3_a_f : 1; /**< Enables NPI_INT_SUM[Q3_A_F] to generate an 2119 interrupt. */ 2120 uint64_t q3_s_e : 1; /**< Enables NPI_INT_SUM[Q3_S_E] to generate an 2121 interrupt. */ 2122 uint64_t q2_a_f : 1; /**< Enables NPI_INT_SUM[Q2_A_F] to generate an 2123 interrupt. */ 2124 uint64_t q2_s_e : 1; /**< Enables NPI_INT_SUM[Q2_S_E] to generate an 2125 interrupt. */ 2126 uint64_t pcr_a_f : 1; /**< Enables NPI_INT_SUM[PCR_A_F] to generate an 2127 interrupt. */ 2128 uint64_t pcr_s_e : 1; /**< Enables NPI_INT_SUM[PCR_S_E] to generate an 2129 interrupt. */ 2130 uint64_t fcr_a_f : 1; /**< Enables NPI_INT_SUM[FCR_A_F] to generate an 2131 interrupt. */ 2132 uint64_t fcr_s_e : 1; /**< Enables NPI_INT_SUM[FCR_S_E] to generate an 2133 interrupt. */ 2134 uint64_t iobdma : 1; /**< Enables NPI_INT_SUM[IOBDMA] to generate an 2135 interrupt. */ 2136 uint64_t p_dperr : 1; /**< Enables NPI_INT_SUM[P_DPERR] to generate an 2137 interrupt. */ 2138 uint64_t win_rto : 1; /**< Enables NPI_INT_SUM[WIN_RTO] to generate an 2139 interrupt. */ 2140 uint64_t reserved_36_38 : 3; 2141 uint64_t i0_pperr : 1; /**< Enables NPI_INT_SUM[I0_PPERR] to generate an 2142 interrupt. */ 2143 uint64_t reserved_32_34 : 3; 2144 uint64_t p0_ptout : 1; /**< Enables NPI_INT_SUM[P0_PTOUT] to generate an 2145 interrupt. */ 2146 uint64_t reserved_28_30 : 3; 2147 uint64_t p0_pperr : 1; /**< Enables NPI_INT_SUM[P0_PPERR] to generate an 2148 interrupt. */ 2149 uint64_t reserved_24_26 : 3; 2150 uint64_t g0_rtout : 1; /**< Enables NPI_INT_SUM[G0_RTOUT] to generate an 2151 interrupt. */ 2152 uint64_t reserved_20_22 : 3; 2153 uint64_t p0_perr : 1; /**< Enables NPI_INT_SUM[P0_PERR] to generate an 2154 interrupt. */ 2155 uint64_t reserved_16_18 : 3; 2156 uint64_t p0_rtout : 1; /**< Enables NPI_INT_SUM[P0_RTOUT] to generate an 2157 interrupt. */ 2158 uint64_t reserved_12_14 : 3; 2159 uint64_t i0_overf : 1; /**< Enables NPI_INT_SUM[I0_OVERF] to generate an 2160 interrupt. */ 2161 uint64_t reserved_8_10 : 3; 2162 uint64_t i0_rtout : 1; /**< Enables NPI_INT_SUM[I0_RTOUT] to generate an 2163 interrupt. */ 2164 uint64_t reserved_4_6 : 3; 2165 uint64_t po0_2sml : 1; /**< Enables NPI_INT_SUM[PO0_2SML] to generate an 2166 interrupt. */ 2167 uint64_t pci_rsl : 1; /**< Enables NPI_INT_SUM[PCI_RSL] to generate an 2168 interrupt. */ 2169 uint64_t rml_wto : 1; /**< Enables NPI_INT_SUM[RML_WTO] to generate an 2170 interrupt. */ 2171 uint64_t rml_rto : 1; /**< Enables NPI_INT_SUM[RML_RTO] to generate an 2172 interrupt. */ 2173#else 2174 uint64_t rml_rto : 1; 2175 uint64_t rml_wto : 1; 2176 uint64_t pci_rsl : 1; 2177 uint64_t po0_2sml : 1; 2178 uint64_t reserved_4_6 : 3; 2179 uint64_t i0_rtout : 1; 2180 uint64_t reserved_8_10 : 3; 2181 uint64_t i0_overf : 1; 2182 uint64_t reserved_12_14 : 3; 2183 uint64_t p0_rtout : 1; 2184 uint64_t reserved_16_18 : 3; 2185 uint64_t p0_perr : 1; 2186 uint64_t reserved_20_22 : 3; 2187 uint64_t g0_rtout : 1; 2188 uint64_t reserved_24_26 : 3; 2189 uint64_t p0_pperr : 1; 2190 uint64_t reserved_28_30 : 3; 2191 uint64_t p0_ptout : 1; 2192 uint64_t reserved_32_34 : 3; 2193 uint64_t i0_pperr : 1; 2194 uint64_t reserved_36_38 : 3; 2195 uint64_t win_rto : 1; 2196 uint64_t p_dperr : 1; 2197 uint64_t iobdma : 1; 2198 uint64_t fcr_s_e : 1; 2199 uint64_t fcr_a_f : 1; 2200 uint64_t pcr_s_e : 1; 2201 uint64_t pcr_a_f : 1; 2202 uint64_t q2_s_e : 1; 2203 uint64_t q2_a_f : 1; 2204 uint64_t q3_s_e : 1; 2205 uint64_t q3_a_f : 1; 2206 uint64_t com_s_e : 1; 2207 uint64_t com_a_f : 1; 2208 uint64_t pnc_s_e : 1; 2209 uint64_t pnc_a_f : 1; 2210 uint64_t rwx_s_e : 1; 2211 uint64_t rdx_s_e : 1; 2212 uint64_t pcf_p_e : 1; 2213 uint64_t pcf_p_f : 1; 2214 uint64_t pdf_p_e : 1; 2215 uint64_t pdf_p_f : 1; 2216 uint64_t q1_s_e : 1; 2217 uint64_t q1_a_f : 1; 2218 uint64_t reserved_62_63 : 2; 2219#endif 2220 } cn30xx; 2221 struct cvmx_npi_int_enb_cn31xx { 2222#ifdef __BIG_ENDIAN_BITFIELD 2223 uint64_t reserved_62_63 : 2; 2224 uint64_t q1_a_f : 1; /**< Enables NPI_INT_SUM[Q1_A_F] to generate an 2225 interrupt. */ 2226 uint64_t q1_s_e : 1; /**< Enables NPI_INT_SUM[Q1_S_E] to generate an 2227 interrupt. */ 2228 uint64_t pdf_p_f : 1; /**< Enables NPI_INT_SUM[PDF_P_F] to generate an 2229 interrupt. */ 2230 uint64_t pdf_p_e : 1; /**< Enables NPI_INT_SUM[PDF_P_E] to generate an 2231 interrupt. */ 2232 uint64_t pcf_p_f : 1; /**< Enables NPI_INT_SUM[PCF_P_F] to generate an 2233 interrupt. */ 2234 uint64_t pcf_p_e : 1; /**< Enables NPI_INT_SUM[PCF_P_E] to generate an 2235 interrupt. */ 2236 uint64_t rdx_s_e : 1; /**< Enables NPI_INT_SUM[RDX_S_E] to generate an 2237 interrupt. */ 2238 uint64_t rwx_s_e : 1; /**< Enables NPI_INT_SUM[RWX_S_E] to generate an 2239 interrupt. */ 2240 uint64_t pnc_a_f : 1; /**< Enables NPI_INT_SUM[PNC_A_F] to generate an 2241 interrupt. */ 2242 uint64_t pnc_s_e : 1; /**< Enables NPI_INT_SUM[PNC_S_E] to generate an 2243 interrupt. */ 2244 uint64_t com_a_f : 1; /**< Enables NPI_INT_SUM[COM_A_F] to generate an 2245 interrupt. */ 2246 uint64_t com_s_e : 1; /**< Enables NPI_INT_SUM[COM_S_E] to generate an 2247 interrupt. */ 2248 uint64_t q3_a_f : 1; /**< Enables NPI_INT_SUM[Q3_A_F] to generate an 2249 interrupt. */ 2250 uint64_t q3_s_e : 1; /**< Enables NPI_INT_SUM[Q3_S_E] to generate an 2251 interrupt. */ 2252 uint64_t q2_a_f : 1; /**< Enables NPI_INT_SUM[Q2_A_F] to generate an 2253 interrupt. */ 2254 uint64_t q2_s_e : 1; /**< Enables NPI_INT_SUM[Q2_S_E] to generate an 2255 interrupt. */ 2256 uint64_t pcr_a_f : 1; /**< Enables NPI_INT_SUM[PCR_A_F] to generate an 2257 interrupt. */ 2258 uint64_t pcr_s_e : 1; /**< Enables NPI_INT_SUM[PCR_S_E] to generate an 2259 interrupt. */ 2260 uint64_t fcr_a_f : 1; /**< Enables NPI_INT_SUM[FCR_A_F] to generate an 2261 interrupt. */ 2262 uint64_t fcr_s_e : 1; /**< Enables NPI_INT_SUM[FCR_S_E] to generate an 2263 interrupt. */ 2264 uint64_t iobdma : 1; /**< Enables NPI_INT_SUM[IOBDMA] to generate an 2265 interrupt. */ 2266 uint64_t p_dperr : 1; /**< Enables NPI_INT_SUM[P_DPERR] to generate an 2267 interrupt. */ 2268 uint64_t win_rto : 1; /**< Enables NPI_INT_SUM[WIN_RTO] to generate an 2269 interrupt. */ 2270 uint64_t reserved_37_38 : 2; 2271 uint64_t i1_pperr : 1; /**< Enables NPI_INT_SUM[I1_PPERR] to generate an 2272 interrupt. */ 2273 uint64_t i0_pperr : 1; /**< Enables NPI_INT_SUM[I0_PPERR] to generate an 2274 interrupt. */ 2275 uint64_t reserved_33_34 : 2; 2276 uint64_t p1_ptout : 1; /**< Enables NPI_INT_SUM[P1_PTOUT] to generate an 2277 interrupt. */ 2278 uint64_t p0_ptout : 1; /**< Enables NPI_INT_SUM[P0_PTOUT] to generate an 2279 interrupt. */ 2280 uint64_t reserved_29_30 : 2; 2281 uint64_t p1_pperr : 1; /**< Enables NPI_INT_SUM[P1_PPERR] to generate an 2282 interrupt. */ 2283 uint64_t p0_pperr : 1; /**< Enables NPI_INT_SUM[P0_PPERR] to generate an 2284 interrupt. */ 2285 uint64_t reserved_25_26 : 2; 2286 uint64_t g1_rtout : 1; /**< Enables NPI_INT_SUM[G1_RTOUT] to generate an 2287 interrupt. */ 2288 uint64_t g0_rtout : 1; /**< Enables NPI_INT_SUM[G0_RTOUT] to generate an 2289 interrupt. */ 2290 uint64_t reserved_21_22 : 2; 2291 uint64_t p1_perr : 1; /**< Enables NPI_INT_SUM[P1_PERR] to generate an 2292 interrupt. */ 2293 uint64_t p0_perr : 1; /**< Enables NPI_INT_SUM[P0_PERR] to generate an 2294 interrupt. */ 2295 uint64_t reserved_17_18 : 2; 2296 uint64_t p1_rtout : 1; /**< Enables NPI_INT_SUM[P1_RTOUT] to generate an 2297 interrupt. */ 2298 uint64_t p0_rtout : 1; /**< Enables NPI_INT_SUM[P0_RTOUT] to generate an 2299 interrupt. */ 2300 uint64_t reserved_13_14 : 2; 2301 uint64_t i1_overf : 1; /**< Enables NPI_INT_SUM[I1_OVERF] to generate an 2302 interrupt. */ 2303 uint64_t i0_overf : 1; /**< Enables NPI_INT_SUM[I0_OVERF] to generate an 2304 interrupt. */ 2305 uint64_t reserved_9_10 : 2; 2306 uint64_t i1_rtout : 1; /**< Enables NPI_INT_SUM[I1_RTOUT] to generate an 2307 interrupt. */ 2308 uint64_t i0_rtout : 1; /**< Enables NPI_INT_SUM[I0_RTOUT] to generate an 2309 interrupt. */ 2310 uint64_t reserved_5_6 : 2; 2311 uint64_t po1_2sml : 1; /**< Enables NPI_INT_SUM[PO1_2SML] to generate an 2312 interrupt. */ 2313 uint64_t po0_2sml : 1; /**< Enables NPI_INT_SUM[PO0_2SML] to generate an 2314 interrupt. */ 2315 uint64_t pci_rsl : 1; /**< Enables NPI_INT_SUM[PCI_RSL] to generate an 2316 interrupt. */ 2317 uint64_t rml_wto : 1; /**< Enables NPI_INT_SUM[RML_WTO] to generate an 2318 interrupt. */ 2319 uint64_t rml_rto : 1; /**< Enables NPI_INT_SUM[RML_RTO] to generate an 2320 interrupt. */ 2321#else 2322 uint64_t rml_rto : 1; 2323 uint64_t rml_wto : 1; 2324 uint64_t pci_rsl : 1; 2325 uint64_t po0_2sml : 1; 2326 uint64_t po1_2sml : 1; 2327 uint64_t reserved_5_6 : 2; 2328 uint64_t i0_rtout : 1; 2329 uint64_t i1_rtout : 1; 2330 uint64_t reserved_9_10 : 2; 2331 uint64_t i0_overf : 1; 2332 uint64_t i1_overf : 1; 2333 uint64_t reserved_13_14 : 2; 2334 uint64_t p0_rtout : 1; 2335 uint64_t p1_rtout : 1; 2336 uint64_t reserved_17_18 : 2; 2337 uint64_t p0_perr : 1; 2338 uint64_t p1_perr : 1; 2339 uint64_t reserved_21_22 : 2; 2340 uint64_t g0_rtout : 1; 2341 uint64_t g1_rtout : 1; 2342 uint64_t reserved_25_26 : 2; 2343 uint64_t p0_pperr : 1; 2344 uint64_t p1_pperr : 1; 2345 uint64_t reserved_29_30 : 2; 2346 uint64_t p0_ptout : 1; 2347 uint64_t p1_ptout : 1; 2348 uint64_t reserved_33_34 : 2; 2349 uint64_t i0_pperr : 1; 2350 uint64_t i1_pperr : 1; 2351 uint64_t reserved_37_38 : 2; 2352 uint64_t win_rto : 1; 2353 uint64_t p_dperr : 1; 2354 uint64_t iobdma : 1; 2355 uint64_t fcr_s_e : 1; 2356 uint64_t fcr_a_f : 1; 2357 uint64_t pcr_s_e : 1; 2358 uint64_t pcr_a_f : 1; 2359 uint64_t q2_s_e : 1; 2360 uint64_t q2_a_f : 1; 2361 uint64_t q3_s_e : 1; 2362 uint64_t q3_a_f : 1; 2363 uint64_t com_s_e : 1; 2364 uint64_t com_a_f : 1; 2365 uint64_t pnc_s_e : 1; 2366 uint64_t pnc_a_f : 1; 2367 uint64_t rwx_s_e : 1; 2368 uint64_t rdx_s_e : 1; 2369 uint64_t pcf_p_e : 1; 2370 uint64_t pcf_p_f : 1; 2371 uint64_t pdf_p_e : 1; 2372 uint64_t pdf_p_f : 1; 2373 uint64_t q1_s_e : 1; 2374 uint64_t q1_a_f : 1; 2375 uint64_t reserved_62_63 : 2; 2376#endif 2377 } cn31xx; 2378 struct cvmx_npi_int_enb_s cn38xx; 2379 struct cvmx_npi_int_enb_cn38xxp2 { 2380#ifdef __BIG_ENDIAN_BITFIELD 2381 uint64_t reserved_42_63 : 22; 2382 uint64_t iobdma : 1; /**< Enables NPI_INT_SUM[IOBDMA] to generate an 2383 interrupt. */ 2384 uint64_t p_dperr : 1; /**< Enables NPI_INT_SUM[P_DPERR] to generate an 2385 interrupt. */ 2386 uint64_t win_rto : 1; /**< Enables NPI_INT_SUM[WIN_RTO] to generate an 2387 interrupt. */ 2388 uint64_t i3_pperr : 1; /**< Enables NPI_INT_SUM[I3_PPERR] to generate an 2389 interrupt. */ 2390 uint64_t i2_pperr : 1; /**< Enables NPI_INT_SUM[I2_PPERR] to generate an 2391 interrupt. */ 2392 uint64_t i1_pperr : 1; /**< Enables NPI_INT_SUM[I1_PPERR] to generate an 2393 interrupt. */ 2394 uint64_t i0_pperr : 1; /**< Enables NPI_INT_SUM[I0_PPERR] to generate an 2395 interrupt. */ 2396 uint64_t p3_ptout : 1; /**< Enables NPI_INT_SUM[P3_PTOUT] to generate an 2397 interrupt. */ 2398 uint64_t p2_ptout : 1; /**< Enables NPI_INT_SUM[P2_PTOUT] to generate an 2399 interrupt. */ 2400 uint64_t p1_ptout : 1; /**< Enables NPI_INT_SUM[P1_PTOUT] to generate an 2401 interrupt. */ 2402 uint64_t p0_ptout : 1; /**< Enables NPI_INT_SUM[P0_PTOUT] to generate an 2403 interrupt. */ 2404 uint64_t p3_pperr : 1; /**< Enables NPI_INT_SUM[P3_PPERR] to generate an 2405 interrupt. */ 2406 uint64_t p2_pperr : 1; /**< Enables NPI_INT_SUM[P2_PPERR] to generate an 2407 interrupt. */ 2408 uint64_t p1_pperr : 1; /**< Enables NPI_INT_SUM[P1_PPERR] to generate an 2409 interrupt. */ 2410 uint64_t p0_pperr : 1; /**< Enables NPI_INT_SUM[P0_PPERR] to generate an 2411 interrupt. */ 2412 uint64_t g3_rtout : 1; /**< Enables NPI_INT_SUM[G3_RTOUT] to generate an 2413 interrupt. */ 2414 uint64_t g2_rtout : 1; /**< Enables NPI_INT_SUM[G2_RTOUT] to generate an 2415 interrupt. */ 2416 uint64_t g1_rtout : 1; /**< Enables NPI_INT_SUM[G1_RTOUT] to generate an 2417 interrupt. */ 2418 uint64_t g0_rtout : 1; /**< Enables NPI_INT_SUM[G0_RTOUT] to generate an 2419 interrupt. */ 2420 uint64_t p3_perr : 1; /**< Enables NPI_INT_SUM[P3_PERR] to generate an 2421 interrupt. */ 2422 uint64_t p2_perr : 1; /**< Enables NPI_INT_SUM[P2_PERR] to generate an 2423 interrupt. */ 2424 uint64_t p1_perr : 1; /**< Enables NPI_INT_SUM[P1_PERR] to generate an 2425 interrupt. */ 2426 uint64_t p0_perr : 1; /**< Enables NPI_INT_SUM[P0_PERR] to generate an 2427 interrupt. */ 2428 uint64_t p3_rtout : 1; /**< Enables NPI_INT_SUM[P3_RTOUT] to generate an 2429 interrupt. */ 2430 uint64_t p2_rtout : 1; /**< Enables NPI_INT_SUM[P2_RTOUT] to generate an 2431 interrupt. */ 2432 uint64_t p1_rtout : 1; /**< Enables NPI_INT_SUM[P1_RTOUT] to generate an 2433 interrupt. */ 2434 uint64_t p0_rtout : 1; /**< Enables NPI_INT_SUM[P0_RTOUT] to generate an 2435 interrupt. */ 2436 uint64_t i3_overf : 1; /**< Enables NPI_INT_SUM[I3_OVERF] to generate an 2437 interrupt. */ 2438 uint64_t i2_overf : 1; /**< Enables NPI_INT_SUM[I2_OVERF] to generate an 2439 interrupt. */ 2440 uint64_t i1_overf : 1; /**< Enables NPI_INT_SUM[I1_OVERF] to generate an 2441 interrupt. */ 2442 uint64_t i0_overf : 1; /**< Enables NPI_INT_SUM[I0_OVERF] to generate an 2443 interrupt. */ 2444 uint64_t i3_rtout : 1; /**< Enables NPI_INT_SUM[I3_RTOUT] to generate an 2445 interrupt. */ 2446 uint64_t i2_rtout : 1; /**< Enables NPI_INT_SUM[I2_RTOUT] to generate an 2447 interrupt. */ 2448 uint64_t i1_rtout : 1; /**< Enables NPI_INT_SUM[I1_RTOUT] to generate an 2449 interrupt. */ 2450 uint64_t i0_rtout : 1; /**< Enables NPI_INT_SUM[I0_RTOUT] to generate an 2451 interrupt. */ 2452 uint64_t po3_2sml : 1; /**< Enables NPI_INT_SUM[PO3_2SML] to generate an 2453 interrupt. */ 2454 uint64_t po2_2sml : 1; /**< Enables NPI_INT_SUM[PO2_2SML] to generate an 2455 interrupt. */ 2456 uint64_t po1_2sml : 1; /**< Enables NPI_INT_SUM[PO1_2SML] to generate an 2457 interrupt. */ 2458 uint64_t po0_2sml : 1; /**< Enables NPI_INT_SUM[PO0_2SML] to generate an 2459 interrupt. */ 2460 uint64_t pci_rsl : 1; /**< Enables NPI_INT_SUM[PCI_RSL] to generate an 2461 interrupt. */ 2462 uint64_t rml_wto : 1; /**< Enables NPI_INT_SUM[RML_WTO] to generate an 2463 interrupt. */ 2464 uint64_t rml_rto : 1; /**< Enables NPI_INT_SUM[RML_RTO] to generate an 2465 interrupt. */ 2466#else 2467 uint64_t rml_rto : 1; 2468 uint64_t rml_wto : 1; 2469 uint64_t pci_rsl : 1; 2470 uint64_t po0_2sml : 1; 2471 uint64_t po1_2sml : 1; 2472 uint64_t po2_2sml : 1; 2473 uint64_t po3_2sml : 1; 2474 uint64_t i0_rtout : 1; 2475 uint64_t i1_rtout : 1; 2476 uint64_t i2_rtout : 1; 2477 uint64_t i3_rtout : 1; 2478 uint64_t i0_overf : 1; 2479 uint64_t i1_overf : 1; 2480 uint64_t i2_overf : 1; 2481 uint64_t i3_overf : 1; 2482 uint64_t p0_rtout : 1; 2483 uint64_t p1_rtout : 1; 2484 uint64_t p2_rtout : 1; 2485 uint64_t p3_rtout : 1; 2486 uint64_t p0_perr : 1; 2487 uint64_t p1_perr : 1; 2488 uint64_t p2_perr : 1; 2489 uint64_t p3_perr : 1; 2490 uint64_t g0_rtout : 1; 2491 uint64_t g1_rtout : 1; 2492 uint64_t g2_rtout : 1; 2493 uint64_t g3_rtout : 1; 2494 uint64_t p0_pperr : 1; 2495 uint64_t p1_pperr : 1; 2496 uint64_t p2_pperr : 1; 2497 uint64_t p3_pperr : 1; 2498 uint64_t p0_ptout : 1; 2499 uint64_t p1_ptout : 1; 2500 uint64_t p2_ptout : 1; 2501 uint64_t p3_ptout : 1; 2502 uint64_t i0_pperr : 1; 2503 uint64_t i1_pperr : 1; 2504 uint64_t i2_pperr : 1; 2505 uint64_t i3_pperr : 1; 2506 uint64_t win_rto : 1; 2507 uint64_t p_dperr : 1; 2508 uint64_t iobdma : 1; 2509 uint64_t reserved_42_63 : 22; 2510#endif 2511 } cn38xxp2; 2512 struct cvmx_npi_int_enb_cn31xx cn50xx; 2513 struct cvmx_npi_int_enb_s cn58xx; 2514 struct cvmx_npi_int_enb_s cn58xxp1; 2515}; 2516typedef union cvmx_npi_int_enb cvmx_npi_int_enb_t; 2517 2518/** 2519 * cvmx_npi_int_sum 2520 * 2521 * NPI_INTERRUPT_SUM = NPI Interrupt Summary Register 2522 * 2523 * Set when an interrupt condition occurs, write '1' to clear. 2524 */ 2525union cvmx_npi_int_sum { 2526 uint64_t u64; 2527 struct cvmx_npi_int_sum_s { 2528#ifdef __BIG_ENDIAN_BITFIELD 2529 uint64_t reserved_62_63 : 2; 2530 uint64_t q1_a_f : 1; /**< Attempted to add when Queue-1 FIFO is full. 2531 PASS3 Field. */ 2532 uint64_t q1_s_e : 1; /**< Attempted to subtract when Queue-1 FIFO is empty. 2533 PASS3 Field. */ 2534 uint64_t pdf_p_f : 1; /**< Attempted to push a full PCN-DATA-FIFO. 2535 PASS3 Field. */ 2536 uint64_t pdf_p_e : 1; /**< Attempted to pop an empty PCN-DATA-FIFO. 2537 PASS3 Field. */ 2538 uint64_t pcf_p_f : 1; /**< Attempted to push a full PCN-CNT-FIFO. 2539 PASS3 Field. */ 2540 uint64_t pcf_p_e : 1; /**< Attempted to pop an empty PCN-CNT-FIFO. 2541 PASS3 Field. */ 2542 uint64_t rdx_s_e : 1; /**< Attempted to subtract when DPI-XFR-Wait count is 0. 2543 PASS3 Field. */ 2544 uint64_t rwx_s_e : 1; /**< Attempted to subtract when RDN-XFR-Wait count is 0. 2545 PASS3 Field. */ 2546 uint64_t pnc_a_f : 1; /**< Attempted to add when PNI-NPI Credits are max. 2547 PASS3 Field. */ 2548 uint64_t pnc_s_e : 1; /**< Attempted to subtract when PNI-NPI Credits are 0. 2549 PASS3 Field. */ 2550 uint64_t com_a_f : 1; /**< Attempted to add when PCN-Commit Counter is max. 2551 PASS3 Field. */ 2552 uint64_t com_s_e : 1; /**< Attempted to subtract when PCN-Commit Counter is 0. 2553 PASS3 Field. */ 2554 uint64_t q3_a_f : 1; /**< Attempted to add when Queue-3 FIFO is full. 2555 PASS3 Field. */ 2556 uint64_t q3_s_e : 1; /**< Attempted to subtract when Queue-3 FIFO is empty. 2557 PASS3 Field. */ 2558 uint64_t q2_a_f : 1; /**< Attempted to add when Queue-2 FIFO is full. 2559 PASS3 Field. */ 2560 uint64_t q2_s_e : 1; /**< Attempted to subtract when Queue-2 FIFO is empty. 2561 PASS3 Field. */ 2562 uint64_t pcr_a_f : 1; /**< Attempted to add when POW Credits is full. 2563 PASS3 Field. */ 2564 uint64_t pcr_s_e : 1; /**< Attempted to subtract when POW Credits is empty. 2565 PASS3 Field. */ 2566 uint64_t fcr_a_f : 1; /**< Attempted to add when FPA Credits is full. 2567 PASS3 Field. */ 2568 uint64_t fcr_s_e : 1; /**< Attempted to subtract when FPA Credits is empty. 2569 PASS3 Field. */ 2570 uint64_t iobdma : 1; /**< Requested IOBDMA read size exceeded 128 words. */ 2571 uint64_t p_dperr : 1; /**< If a parity error occured on data written to L2C 2572 from the PCI this bit may be set. */ 2573 uint64_t win_rto : 1; /**< Windowed Load Timed Out. */ 2574 uint64_t i3_pperr : 1; /**< If a parity error occured on the port's instruction 2575 this bit may be set. */ 2576 uint64_t i2_pperr : 1; /**< If a parity error occured on the port's instruction 2577 this bit may be set. */ 2578 uint64_t i1_pperr : 1; /**< If a parity error occured on the port's instruction 2579 this bit may be set. */ 2580 uint64_t i0_pperr : 1; /**< If a parity error occured on the port's instruction 2581 this bit may be set. */ 2582 uint64_t p3_ptout : 1; /**< Port-3 output had a read timeout on a DATA/INFO 2583 pair. */ 2584 uint64_t p2_ptout : 1; /**< Port-2 output had a read timeout on a DATA/INFO 2585 pair. */ 2586 uint64_t p1_ptout : 1; /**< Port-1 output had a read timeout on a DATA/INFO 2587 pair. */ 2588 uint64_t p0_ptout : 1; /**< Port-0 output had a read timeout on a DATA/INFO 2589 pair. */ 2590 uint64_t p3_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2591 pointer-pair, this bit may be set. */ 2592 uint64_t p2_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2593 pointer-pair, this bit may be set. */ 2594 uint64_t p1_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2595 pointer-pair, this bit may be set. */ 2596 uint64_t p0_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2597 pointer-pair, this bit may be set. */ 2598 uint64_t g3_rtout : 1; /**< Port-3 had a read timeout while attempting to 2599 read a gather list. */ 2600 uint64_t g2_rtout : 1; /**< Port-2 had a read timeout while attempting to 2601 read a gather list. */ 2602 uint64_t g1_rtout : 1; /**< Port-1 had a read timeout while attempting to 2603 read a gather list. */ 2604 uint64_t g0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2605 read a gather list. */ 2606 uint64_t p3_perr : 1; /**< If a parity error occured on the port's packet 2607 data this bit may be set. */ 2608 uint64_t p2_perr : 1; /**< If a parity error occured on the port's packet 2609 data this bit may be set. */ 2610 uint64_t p1_perr : 1; /**< If a parity error occured on the port's packet 2611 data this bit may be set. */ 2612 uint64_t p0_perr : 1; /**< If a parity error occured on the port's packet 2613 data this bit may be set. */ 2614 uint64_t p3_rtout : 1; /**< Port-3 had a read timeout while attempting to 2615 read packet data. */ 2616 uint64_t p2_rtout : 1; /**< Port-2 had a read timeout while attempting to 2617 read packet data. */ 2618 uint64_t p1_rtout : 1; /**< Port-1 had a read timeout while attempting to 2619 read packet data. */ 2620 uint64_t p0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2621 read packet data. */ 2622 uint64_t i3_overf : 1; /**< Port-3 had a doorbell overflow. Bit[31] of the 2623 doorbell count was set. */ 2624 uint64_t i2_overf : 1; /**< Port-2 had a doorbell overflow. Bit[31] of the 2625 doorbell count was set. */ 2626 uint64_t i1_overf : 1; /**< Port-1 had a doorbell overflow. Bit[31] of the 2627 doorbell count was set. */ 2628 uint64_t i0_overf : 1; /**< Port-0 had a doorbell overflow. Bit[31] of the 2629 doorbell count was set. */ 2630 uint64_t i3_rtout : 1; /**< Port-3 had a read timeout while attempting to 2631 read instructions. */ 2632 uint64_t i2_rtout : 1; /**< Port-2 had a read timeout while attempting to 2633 read instructions. */ 2634 uint64_t i1_rtout : 1; /**< Port-1 had a read timeout while attempting to 2635 read instructions. */ 2636 uint64_t i0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2637 read instructions. */ 2638 uint64_t po3_2sml : 1; /**< The packet being sent out on Port3 is smaller 2639 than the NPI_BUFF_SIZE_OUTPUT3[ISIZE] field. */ 2640 uint64_t po2_2sml : 1; /**< The packet being sent out on Port2 is smaller 2641 than the NPI_BUFF_SIZE_OUTPUT2[ISIZE] field. */ 2642 uint64_t po1_2sml : 1; /**< The packet being sent out on Port1 is smaller 2643 than the NPI_BUFF_SIZE_OUTPUT1[ISIZE] field. */ 2644 uint64_t po0_2sml : 1; /**< The packet being sent out on Port0 is smaller 2645 than the NPI_BUFF_SIZE_OUTPUT0[ISIZE] field. */ 2646 uint64_t pci_rsl : 1; /**< This '1' when a bit in PCI_INT_SUM2 is SET and the 2647 corresponding bit in the PCI_INT_ENB2 is SET. */ 2648 uint64_t rml_wto : 1; /**< Set '1' when the RML does not receive a commit 2649 back from a RSL after sending a write command to 2650 a RSL. */ 2651 uint64_t rml_rto : 1; /**< Set '1' when the RML does not receive read data 2652 back from a RSL after sending a read command to 2653 a RSL. */ 2654#else 2655 uint64_t rml_rto : 1; 2656 uint64_t rml_wto : 1; 2657 uint64_t pci_rsl : 1; 2658 uint64_t po0_2sml : 1; 2659 uint64_t po1_2sml : 1; 2660 uint64_t po2_2sml : 1; 2661 uint64_t po3_2sml : 1; 2662 uint64_t i0_rtout : 1; 2663 uint64_t i1_rtout : 1; 2664 uint64_t i2_rtout : 1; 2665 uint64_t i3_rtout : 1; 2666 uint64_t i0_overf : 1; 2667 uint64_t i1_overf : 1; 2668 uint64_t i2_overf : 1; 2669 uint64_t i3_overf : 1; 2670 uint64_t p0_rtout : 1; 2671 uint64_t p1_rtout : 1; 2672 uint64_t p2_rtout : 1; 2673 uint64_t p3_rtout : 1; 2674 uint64_t p0_perr : 1; 2675 uint64_t p1_perr : 1; 2676 uint64_t p2_perr : 1; 2677 uint64_t p3_perr : 1; 2678 uint64_t g0_rtout : 1; 2679 uint64_t g1_rtout : 1; 2680 uint64_t g2_rtout : 1; 2681 uint64_t g3_rtout : 1; 2682 uint64_t p0_pperr : 1; 2683 uint64_t p1_pperr : 1; 2684 uint64_t p2_pperr : 1; 2685 uint64_t p3_pperr : 1; 2686 uint64_t p0_ptout : 1; 2687 uint64_t p1_ptout : 1; 2688 uint64_t p2_ptout : 1; 2689 uint64_t p3_ptout : 1; 2690 uint64_t i0_pperr : 1; 2691 uint64_t i1_pperr : 1; 2692 uint64_t i2_pperr : 1; 2693 uint64_t i3_pperr : 1; 2694 uint64_t win_rto : 1; 2695 uint64_t p_dperr : 1; 2696 uint64_t iobdma : 1; 2697 uint64_t fcr_s_e : 1; 2698 uint64_t fcr_a_f : 1; 2699 uint64_t pcr_s_e : 1; 2700 uint64_t pcr_a_f : 1; 2701 uint64_t q2_s_e : 1; 2702 uint64_t q2_a_f : 1; 2703 uint64_t q3_s_e : 1; 2704 uint64_t q3_a_f : 1; 2705 uint64_t com_s_e : 1; 2706 uint64_t com_a_f : 1; 2707 uint64_t pnc_s_e : 1; 2708 uint64_t pnc_a_f : 1; 2709 uint64_t rwx_s_e : 1; 2710 uint64_t rdx_s_e : 1; 2711 uint64_t pcf_p_e : 1; 2712 uint64_t pcf_p_f : 1; 2713 uint64_t pdf_p_e : 1; 2714 uint64_t pdf_p_f : 1; 2715 uint64_t q1_s_e : 1; 2716 uint64_t q1_a_f : 1; 2717 uint64_t reserved_62_63 : 2; 2718#endif 2719 } s; 2720 struct cvmx_npi_int_sum_cn30xx { 2721#ifdef __BIG_ENDIAN_BITFIELD 2722 uint64_t reserved_62_63 : 2; 2723 uint64_t q1_a_f : 1; /**< Attempted to add when Queue-1 FIFO is full. */ 2724 uint64_t q1_s_e : 1; /**< Attempted to subtract when Queue-1 FIFO is empty. */ 2725 uint64_t pdf_p_f : 1; /**< Attempted to push a full PCN-DATA-FIFO. */ 2726 uint64_t pdf_p_e : 1; /**< Attempted to pop an empty PCN-DATA-FIFO. */ 2727 uint64_t pcf_p_f : 1; /**< Attempted to push a full PCN-CNT-FIFO. */ 2728 uint64_t pcf_p_e : 1; /**< Attempted to pop an empty PCN-CNT-FIFO. */ 2729 uint64_t rdx_s_e : 1; /**< Attempted to subtract when DPI-XFR-Wait count is 0. */ 2730 uint64_t rwx_s_e : 1; /**< Attempted to subtract when RDN-XFR-Wait count is 0. */ 2731 uint64_t pnc_a_f : 1; /**< Attempted to add when PNI-NPI Credits are max. */ 2732 uint64_t pnc_s_e : 1; /**< Attempted to subtract when PNI-NPI Credits are 0. */ 2733 uint64_t com_a_f : 1; /**< Attempted to add when PCN-Commit Counter is max. */ 2734 uint64_t com_s_e : 1; /**< Attempted to subtract when PCN-Commit Counter is 0. */ 2735 uint64_t q3_a_f : 1; /**< Attempted to add when Queue-3 FIFO is full. */ 2736 uint64_t q3_s_e : 1; /**< Attempted to subtract when Queue-3 FIFO is empty. */ 2737 uint64_t q2_a_f : 1; /**< Attempted to add when Queue-2 FIFO is full. */ 2738 uint64_t q2_s_e : 1; /**< Attempted to subtract when Queue-2 FIFO is empty. */ 2739 uint64_t pcr_a_f : 1; /**< Attempted to add when POW Credits is full. */ 2740 uint64_t pcr_s_e : 1; /**< Attempted to subtract when POW Credits is empty. */ 2741 uint64_t fcr_a_f : 1; /**< Attempted to add when FPA Credits is full. */ 2742 uint64_t fcr_s_e : 1; /**< Attempted to subtract when FPA Credits is empty. */ 2743 uint64_t iobdma : 1; /**< Requested IOBDMA read size exceeded 128 words. */ 2744 uint64_t p_dperr : 1; /**< If a parity error occured on data written to L2C 2745 from the PCI this bit may be set. */ 2746 uint64_t win_rto : 1; /**< Windowed Load Timed Out. */ 2747 uint64_t reserved_36_38 : 3; 2748 uint64_t i0_pperr : 1; /**< If a parity error occured on the port's instruction 2749 this bit may be set. */ 2750 uint64_t reserved_32_34 : 3; 2751 uint64_t p0_ptout : 1; /**< Port-0 output had a read timeout on a DATA/INFO 2752 pair. */ 2753 uint64_t reserved_28_30 : 3; 2754 uint64_t p0_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2755 pointer-pair, this bit may be set. */ 2756 uint64_t reserved_24_26 : 3; 2757 uint64_t g0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2758 read a gather list. */ 2759 uint64_t reserved_20_22 : 3; 2760 uint64_t p0_perr : 1; /**< If a parity error occured on the port's packet 2761 data this bit may be set. */ 2762 uint64_t reserved_16_18 : 3; 2763 uint64_t p0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2764 read packet data. */ 2765 uint64_t reserved_12_14 : 3; 2766 uint64_t i0_overf : 1; /**< Port-0 had a doorbell overflow. Bit[31] of the 2767 doorbell count was set. */ 2768 uint64_t reserved_8_10 : 3; 2769 uint64_t i0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2770 read instructions. */ 2771 uint64_t reserved_4_6 : 3; 2772 uint64_t po0_2sml : 1; /**< The packet being sent out on Port0 is smaller 2773 than the NPI_BUFF_SIZE_OUTPUT0[ISIZE] field. */ 2774 uint64_t pci_rsl : 1; /**< This '1' when a bit in PCI_INT_SUM2 is SET and the 2775 corresponding bit in the PCI_INT_ENB2 is SET. */ 2776 uint64_t rml_wto : 1; /**< Set '1' when the RML does not receive a commit 2777 back from a RSL after sending a write command to 2778 a RSL. */ 2779 uint64_t rml_rto : 1; /**< Set '1' when the RML does not receive read data 2780 back from a RSL after sending a read command to 2781 a RSL. */ 2782#else 2783 uint64_t rml_rto : 1; 2784 uint64_t rml_wto : 1; 2785 uint64_t pci_rsl : 1; 2786 uint64_t po0_2sml : 1; 2787 uint64_t reserved_4_6 : 3; 2788 uint64_t i0_rtout : 1; 2789 uint64_t reserved_8_10 : 3; 2790 uint64_t i0_overf : 1; 2791 uint64_t reserved_12_14 : 3; 2792 uint64_t p0_rtout : 1; 2793 uint64_t reserved_16_18 : 3; 2794 uint64_t p0_perr : 1; 2795 uint64_t reserved_20_22 : 3; 2796 uint64_t g0_rtout : 1; 2797 uint64_t reserved_24_26 : 3; 2798 uint64_t p0_pperr : 1; 2799 uint64_t reserved_28_30 : 3; 2800 uint64_t p0_ptout : 1; 2801 uint64_t reserved_32_34 : 3; 2802 uint64_t i0_pperr : 1; 2803 uint64_t reserved_36_38 : 3; 2804 uint64_t win_rto : 1; 2805 uint64_t p_dperr : 1; 2806 uint64_t iobdma : 1; 2807 uint64_t fcr_s_e : 1; 2808 uint64_t fcr_a_f : 1; 2809 uint64_t pcr_s_e : 1; 2810 uint64_t pcr_a_f : 1; 2811 uint64_t q2_s_e : 1; 2812 uint64_t q2_a_f : 1; 2813 uint64_t q3_s_e : 1; 2814 uint64_t q3_a_f : 1; 2815 uint64_t com_s_e : 1; 2816 uint64_t com_a_f : 1; 2817 uint64_t pnc_s_e : 1; 2818 uint64_t pnc_a_f : 1; 2819 uint64_t rwx_s_e : 1; 2820 uint64_t rdx_s_e : 1; 2821 uint64_t pcf_p_e : 1; 2822 uint64_t pcf_p_f : 1; 2823 uint64_t pdf_p_e : 1; 2824 uint64_t pdf_p_f : 1; 2825 uint64_t q1_s_e : 1; 2826 uint64_t q1_a_f : 1; 2827 uint64_t reserved_62_63 : 2; 2828#endif 2829 } cn30xx; 2830 struct cvmx_npi_int_sum_cn31xx { 2831#ifdef __BIG_ENDIAN_BITFIELD 2832 uint64_t reserved_62_63 : 2; 2833 uint64_t q1_a_f : 1; /**< Attempted to add when Queue-1 FIFO is full. */ 2834 uint64_t q1_s_e : 1; /**< Attempted to subtract when Queue-1 FIFO is empty. */ 2835 uint64_t pdf_p_f : 1; /**< Attempted to push a full PCN-DATA-FIFO. */ 2836 uint64_t pdf_p_e : 1; /**< Attempted to pop an empty PCN-DATA-FIFO. */ 2837 uint64_t pcf_p_f : 1; /**< Attempted to push a full PCN-CNT-FIFO. */ 2838 uint64_t pcf_p_e : 1; /**< Attempted to pop an empty PCN-CNT-FIFO. */ 2839 uint64_t rdx_s_e : 1; /**< Attempted to subtract when DPI-XFR-Wait count is 0. */ 2840 uint64_t rwx_s_e : 1; /**< Attempted to subtract when RDN-XFR-Wait count is 0. */ 2841 uint64_t pnc_a_f : 1; /**< Attempted to add when PNI-NPI Credits are max. */ 2842 uint64_t pnc_s_e : 1; /**< Attempted to subtract when PNI-NPI Credits are 0. */ 2843 uint64_t com_a_f : 1; /**< Attempted to add when PCN-Commit Counter is max. */ 2844 uint64_t com_s_e : 1; /**< Attempted to subtract when PCN-Commit Counter is 0. */ 2845 uint64_t q3_a_f : 1; /**< Attempted to add when Queue-3 FIFO is full. */ 2846 uint64_t q3_s_e : 1; /**< Attempted to subtract when Queue-3 FIFO is empty. */ 2847 uint64_t q2_a_f : 1; /**< Attempted to add when Queue-2 FIFO is full. */ 2848 uint64_t q2_s_e : 1; /**< Attempted to subtract when Queue-2 FIFO is empty. */ 2849 uint64_t pcr_a_f : 1; /**< Attempted to add when POW Credits is full. */ 2850 uint64_t pcr_s_e : 1; /**< Attempted to subtract when POW Credits is empty. */ 2851 uint64_t fcr_a_f : 1; /**< Attempted to add when FPA Credits is full. */ 2852 uint64_t fcr_s_e : 1; /**< Attempted to subtract when FPA Credits is empty. */ 2853 uint64_t iobdma : 1; /**< Requested IOBDMA read size exceeded 128 words. */ 2854 uint64_t p_dperr : 1; /**< If a parity error occured on data written to L2C 2855 from the PCI this bit may be set. */ 2856 uint64_t win_rto : 1; /**< Windowed Load Timed Out. */ 2857 uint64_t reserved_37_38 : 2; 2858 uint64_t i1_pperr : 1; /**< If a parity error occured on the port's instruction 2859 this bit may be set. */ 2860 uint64_t i0_pperr : 1; /**< If a parity error occured on the port's instruction 2861 this bit may be set. */ 2862 uint64_t reserved_33_34 : 2; 2863 uint64_t p1_ptout : 1; /**< Port-1 output had a read timeout on a DATA/INFO 2864 pair. */ 2865 uint64_t p0_ptout : 1; /**< Port-0 output had a read timeout on a DATA/INFO 2866 pair. */ 2867 uint64_t reserved_29_30 : 2; 2868 uint64_t p1_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2869 pointer-pair, this bit may be set. */ 2870 uint64_t p0_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2871 pointer-pair, this bit may be set. */ 2872 uint64_t reserved_25_26 : 2; 2873 uint64_t g1_rtout : 1; /**< Port-1 had a read timeout while attempting to 2874 read a gather list. */ 2875 uint64_t g0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2876 read a gather list. */ 2877 uint64_t reserved_21_22 : 2; 2878 uint64_t p1_perr : 1; /**< If a parity error occured on the port's packet 2879 data this bit may be set. */ 2880 uint64_t p0_perr : 1; /**< If a parity error occured on the port's packet 2881 data this bit may be set. */ 2882 uint64_t reserved_17_18 : 2; 2883 uint64_t p1_rtout : 1; /**< Port-1 had a read timeout while attempting to 2884 read packet data. */ 2885 uint64_t p0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2886 read packet data. */ 2887 uint64_t reserved_13_14 : 2; 2888 uint64_t i1_overf : 1; /**< Port-1 had a doorbell overflow. Bit[31] of the 2889 doorbell count was set. */ 2890 uint64_t i0_overf : 1; /**< Port-0 had a doorbell overflow. Bit[31] of the 2891 doorbell count was set. */ 2892 uint64_t reserved_9_10 : 2; 2893 uint64_t i1_rtout : 1; /**< Port-1 had a read timeout while attempting to 2894 read instructions. */ 2895 uint64_t i0_rtout : 1; /**< Port-0 had a read timeout while attempting to 2896 read instructions. */ 2897 uint64_t reserved_5_6 : 2; 2898 uint64_t po1_2sml : 1; /**< The packet being sent out on Port1 is smaller 2899 than the NPI_BUFF_SIZE_OUTPUT1[ISIZE] field. */ 2900 uint64_t po0_2sml : 1; /**< The packet being sent out on Port0 is smaller 2901 than the NPI_BUFF_SIZE_OUTPUT0[ISIZE] field. */ 2902 uint64_t pci_rsl : 1; /**< This '1' when a bit in PCI_INT_SUM2 is SET and the 2903 corresponding bit in the PCI_INT_ENB2 is SET. */ 2904 uint64_t rml_wto : 1; /**< Set '1' when the RML does not receive a commit 2905 back from a RSL after sending a write command to 2906 a RSL. */ 2907 uint64_t rml_rto : 1; /**< Set '1' when the RML does not receive read data 2908 back from a RSL after sending a read command to 2909 a RSL. */ 2910#else 2911 uint64_t rml_rto : 1; 2912 uint64_t rml_wto : 1; 2913 uint64_t pci_rsl : 1; 2914 uint64_t po0_2sml : 1; 2915 uint64_t po1_2sml : 1; 2916 uint64_t reserved_5_6 : 2; 2917 uint64_t i0_rtout : 1; 2918 uint64_t i1_rtout : 1; 2919 uint64_t reserved_9_10 : 2; 2920 uint64_t i0_overf : 1; 2921 uint64_t i1_overf : 1; 2922 uint64_t reserved_13_14 : 2; 2923 uint64_t p0_rtout : 1; 2924 uint64_t p1_rtout : 1; 2925 uint64_t reserved_17_18 : 2; 2926 uint64_t p0_perr : 1; 2927 uint64_t p1_perr : 1; 2928 uint64_t reserved_21_22 : 2; 2929 uint64_t g0_rtout : 1; 2930 uint64_t g1_rtout : 1; 2931 uint64_t reserved_25_26 : 2; 2932 uint64_t p0_pperr : 1; 2933 uint64_t p1_pperr : 1; 2934 uint64_t reserved_29_30 : 2; 2935 uint64_t p0_ptout : 1; 2936 uint64_t p1_ptout : 1; 2937 uint64_t reserved_33_34 : 2; 2938 uint64_t i0_pperr : 1; 2939 uint64_t i1_pperr : 1; 2940 uint64_t reserved_37_38 : 2; 2941 uint64_t win_rto : 1; 2942 uint64_t p_dperr : 1; 2943 uint64_t iobdma : 1; 2944 uint64_t fcr_s_e : 1; 2945 uint64_t fcr_a_f : 1; 2946 uint64_t pcr_s_e : 1; 2947 uint64_t pcr_a_f : 1; 2948 uint64_t q2_s_e : 1; 2949 uint64_t q2_a_f : 1; 2950 uint64_t q3_s_e : 1; 2951 uint64_t q3_a_f : 1; 2952 uint64_t com_s_e : 1; 2953 uint64_t com_a_f : 1; 2954 uint64_t pnc_s_e : 1; 2955 uint64_t pnc_a_f : 1; 2956 uint64_t rwx_s_e : 1; 2957 uint64_t rdx_s_e : 1; 2958 uint64_t pcf_p_e : 1; 2959 uint64_t pcf_p_f : 1; 2960 uint64_t pdf_p_e : 1; 2961 uint64_t pdf_p_f : 1; 2962 uint64_t q1_s_e : 1; 2963 uint64_t q1_a_f : 1; 2964 uint64_t reserved_62_63 : 2; 2965#endif 2966 } cn31xx; 2967 struct cvmx_npi_int_sum_s cn38xx; 2968 struct cvmx_npi_int_sum_cn38xxp2 { 2969#ifdef __BIG_ENDIAN_BITFIELD 2970 uint64_t reserved_42_63 : 22; 2971 uint64_t iobdma : 1; /**< Requested IOBDMA read size exceeded 128 words. */ 2972 uint64_t p_dperr : 1; /**< If a parity error occured on data written to L2C 2973 from the PCI this bit may be set. */ 2974 uint64_t win_rto : 1; /**< Windowed Load Timed Out. */ 2975 uint64_t i3_pperr : 1; /**< If a parity error occured on the port's instruction 2976 this bit may be set. */ 2977 uint64_t i2_pperr : 1; /**< If a parity error occured on the port's instruction 2978 this bit may be set. */ 2979 uint64_t i1_pperr : 1; /**< If a parity error occured on the port's instruction 2980 this bit may be set. */ 2981 uint64_t i0_pperr : 1; /**< If a parity error occured on the port's instruction 2982 this bit may be set. */ 2983 uint64_t p3_ptout : 1; /**< Port-3 output had a read timeout on a DATA/INFO 2984 pair. */ 2985 uint64_t p2_ptout : 1; /**< Port-2 output had a read timeout on a DATA/INFO 2986 pair. */ 2987 uint64_t p1_ptout : 1; /**< Port-1 output had a read timeout on a DATA/INFO 2988 pair. */ 2989 uint64_t p0_ptout : 1; /**< Port-0 output had a read timeout on a DATA/INFO 2990 pair. */ 2991 uint64_t p3_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2992 pointer-pair, this bit may be set. */ 2993 uint64_t p2_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2994 pointer-pair, this bit may be set. */ 2995 uint64_t p1_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2996 pointer-pair, this bit may be set. */ 2997 uint64_t p0_pperr : 1; /**< If a parity error occured on the port DATA/INFO 2998 pointer-pair, this bit may be set. */ 2999 uint64_t g3_rtout : 1; /**< Port-3 had a read timeout while attempting to 3000 read a gather list. */ 3001 uint64_t g2_rtout : 1; /**< Port-2 had a read timeout while attempting to 3002 read a gather list. */ 3003 uint64_t g1_rtout : 1; /**< Port-1 had a read timeout while attempting to 3004 read a gather list. */ 3005 uint64_t g0_rtout : 1; /**< Port-0 had a read timeout while attempting to 3006 read a gather list. */ 3007 uint64_t p3_perr : 1; /**< If a parity error occured on the port's packet 3008 data this bit may be set. */ 3009 uint64_t p2_perr : 1; /**< If a parity error occured on the port's packet 3010 data this bit may be set. */ 3011 uint64_t p1_perr : 1; /**< If a parity error occured on the port's packet 3012 data this bit may be set. */ 3013 uint64_t p0_perr : 1; /**< If a parity error occured on the port's packet 3014 data this bit may be set. */ 3015 uint64_t p3_rtout : 1; /**< Port-3 had a read timeout while attempting to 3016 read packet data. */ 3017 uint64_t p2_rtout : 1; /**< Port-2 had a read timeout while attempting to 3018 read packet data. */ 3019 uint64_t p1_rtout : 1; /**< Port-1 had a read timeout while attempting to 3020 read packet data. */ 3021 uint64_t p0_rtout : 1; /**< Port-0 had a read timeout while attempting to 3022 read packet data. */ 3023 uint64_t i3_overf : 1; /**< Port-3 had a doorbell overflow. Bit[31] of the 3024 doorbell count was set. */ 3025 uint64_t i2_overf : 1; /**< Port-2 had a doorbell overflow. Bit[31] of the 3026 doorbell count was set. */ 3027 uint64_t i1_overf : 1; /**< Port-1 had a doorbell overflow. Bit[31] of the 3028 doorbell count was set. */ 3029 uint64_t i0_overf : 1; /**< Port-0 had a doorbell overflow. Bit[31] of the 3030 doorbell count was set. */ 3031 uint64_t i3_rtout : 1; /**< Port-3 had a read timeout while attempting to 3032 read instructions. */ 3033 uint64_t i2_rtout : 1; /**< Port-2 had a read timeout while attempting to 3034 read instructions. */ 3035 uint64_t i1_rtout : 1; /**< Port-1 had a read timeout while attempting to 3036 read instructions. */ 3037 uint64_t i0_rtout : 1; /**< Port-0 had a read timeout while attempting to 3038 read instructions. */ 3039 uint64_t po3_2sml : 1; /**< The packet being sent out on Port3 is smaller 3040 than the NPI_BUFF_SIZE_OUTPUT3[ISIZE] field. */ 3041 uint64_t po2_2sml : 1; /**< The packet being sent out on Port2 is smaller 3042 than the NPI_BUFF_SIZE_OUTPUT2[ISIZE] field. */ 3043 uint64_t po1_2sml : 1; /**< The packet being sent out on Port1 is smaller 3044 than the NPI_BUFF_SIZE_OUTPUT1[ISIZE] field. */ 3045 uint64_t po0_2sml : 1; /**< The packet being sent out on Port0 is smaller 3046 than the NPI_BUFF_SIZE_OUTPUT0[ISIZE] field. */ 3047 uint64_t pci_rsl : 1; /**< This '1' when a bit in PCI_INT_SUM2 is SET and the 3048 corresponding bit in the PCI_INT_ENB2 is SET. */ 3049 uint64_t rml_wto : 1; /**< Set '1' when the RML does not receive a commit 3050 back from a RSL after sending a write command to 3051 a RSL. */ 3052 uint64_t rml_rto : 1; /**< Set '1' when the RML does not receive read data 3053 back from a RSL after sending a read command to 3054 a RSL. */ 3055#else 3056 uint64_t rml_rto : 1; 3057 uint64_t rml_wto : 1; 3058 uint64_t pci_rsl : 1; 3059 uint64_t po0_2sml : 1; 3060 uint64_t po1_2sml : 1; 3061 uint64_t po2_2sml : 1; 3062 uint64_t po3_2sml : 1; 3063 uint64_t i0_rtout : 1; 3064 uint64_t i1_rtout : 1; 3065 uint64_t i2_rtout : 1; 3066 uint64_t i3_rtout : 1; 3067 uint64_t i0_overf : 1; 3068 uint64_t i1_overf : 1; 3069 uint64_t i2_overf : 1; 3070 uint64_t i3_overf : 1; 3071 uint64_t p0_rtout : 1; 3072 uint64_t p1_rtout : 1; 3073 uint64_t p2_rtout : 1; 3074 uint64_t p3_rtout : 1; 3075 uint64_t p0_perr : 1; 3076 uint64_t p1_perr : 1; 3077 uint64_t p2_perr : 1; 3078 uint64_t p3_perr : 1; 3079 uint64_t g0_rtout : 1; 3080 uint64_t g1_rtout : 1; 3081 uint64_t g2_rtout : 1; 3082 uint64_t g3_rtout : 1; 3083 uint64_t p0_pperr : 1; 3084 uint64_t p1_pperr : 1; 3085 uint64_t p2_pperr : 1; 3086 uint64_t p3_pperr : 1; 3087 uint64_t p0_ptout : 1; 3088 uint64_t p1_ptout : 1; 3089 uint64_t p2_ptout : 1; 3090 uint64_t p3_ptout : 1; 3091 uint64_t i0_pperr : 1; 3092 uint64_t i1_pperr : 1; 3093 uint64_t i2_pperr : 1; 3094 uint64_t i3_pperr : 1; 3095 uint64_t win_rto : 1; 3096 uint64_t p_dperr : 1; 3097 uint64_t iobdma : 1; 3098 uint64_t reserved_42_63 : 22; 3099#endif 3100 } cn38xxp2; 3101 struct cvmx_npi_int_sum_cn31xx cn50xx; 3102 struct cvmx_npi_int_sum_s cn58xx; 3103 struct cvmx_npi_int_sum_s cn58xxp1; 3104}; 3105typedef union cvmx_npi_int_sum cvmx_npi_int_sum_t; 3106 3107/** 3108 * cvmx_npi_lowp_dbell 3109 * 3110 * NPI_LOWP_DBELL = Low Priority Door Bell 3111 * 3112 * The door bell register for the low priority DMA queue. 3113 */ 3114union cvmx_npi_lowp_dbell { 3115 uint64_t u64; 3116 struct cvmx_npi_lowp_dbell_s { 3117#ifdef __BIG_ENDIAN_BITFIELD 3118 uint64_t reserved_16_63 : 48; 3119 uint64_t dbell : 16; /**< The value written to this register is added to the 3120 number of 8byte words to be read and processes for 3121 the low priority dma queue. */ 3122#else 3123 uint64_t dbell : 16; 3124 uint64_t reserved_16_63 : 48; 3125#endif 3126 } s; 3127 struct cvmx_npi_lowp_dbell_s cn30xx; 3128 struct cvmx_npi_lowp_dbell_s cn31xx; 3129 struct cvmx_npi_lowp_dbell_s cn38xx; 3130 struct cvmx_npi_lowp_dbell_s cn38xxp2; 3131 struct cvmx_npi_lowp_dbell_s cn50xx; 3132 struct cvmx_npi_lowp_dbell_s cn58xx; 3133 struct cvmx_npi_lowp_dbell_s cn58xxp1; 3134}; 3135typedef union cvmx_npi_lowp_dbell cvmx_npi_lowp_dbell_t; 3136 3137/** 3138 * cvmx_npi_lowp_ibuff_saddr 3139 * 3140 * NPI_LOWP_IBUFF_SADDR = DMA Low Priority's Instruction Buffer Starting Address 3141 * 3142 * The address to start reading Instructions from for LOWP. 3143 */ 3144union cvmx_npi_lowp_ibuff_saddr { 3145 uint64_t u64; 3146 struct cvmx_npi_lowp_ibuff_saddr_s { 3147#ifdef __BIG_ENDIAN_BITFIELD 3148 uint64_t reserved_36_63 : 28; 3149 uint64_t saddr : 36; /**< The starting address to read the first instruction. */ 3150#else 3151 uint64_t saddr : 36; 3152 uint64_t reserved_36_63 : 28; 3153#endif 3154 } s; 3155 struct cvmx_npi_lowp_ibuff_saddr_s cn30xx; 3156 struct cvmx_npi_lowp_ibuff_saddr_s cn31xx; 3157 struct cvmx_npi_lowp_ibuff_saddr_s cn38xx; 3158 struct cvmx_npi_lowp_ibuff_saddr_s cn38xxp2; 3159 struct cvmx_npi_lowp_ibuff_saddr_s cn50xx; 3160 struct cvmx_npi_lowp_ibuff_saddr_s cn58xx; 3161 struct cvmx_npi_lowp_ibuff_saddr_s cn58xxp1; 3162}; 3163typedef union cvmx_npi_lowp_ibuff_saddr cvmx_npi_lowp_ibuff_saddr_t; 3164 3165/** 3166 * cvmx_npi_mem_access_subid# 3167 * 3168 * NPI_MEM_ACCESS_SUBID3 = Memory Access SubId 3Register 3169 * 3170 * Carries Read/Write parameters for PP access to PCI memory that use NPI SubId3. 3171 * Writes to this register are not ordered with writes/reads to the PCI Memory space. 3172 * To ensure that a write has completed the user must read the register before 3173 * making an access(i.e. PCI memory space) that requires the value of this register to be updated. 3174 */ 3175union cvmx_npi_mem_access_subidx { 3176 uint64_t u64; 3177 struct cvmx_npi_mem_access_subidx_s { 3178#ifdef __BIG_ENDIAN_BITFIELD 3179 uint64_t reserved_38_63 : 26; 3180 uint64_t shortl : 1; /**< Generate CMD-6 on PCI(x) when '1'. 3181 Loads from the cores to the corresponding subid 3182 that are 32-bits or smaller: 3183 - Will generate the PCI-X "Memory Read DWORD" 3184 command in PCI-X mode. (Note that "Memory 3185 Read DWORD" appears much like an IO read on 3186 the PCI-X bus.) 3187 - Will generate the PCI "Memory Read" command 3188 in PCI-X mode, irrespective of the 3189 NPI_PCI_READ_CMD[CMD_SIZE] value. 3190 NOT IN PASS 1 NOR PASS 2 */ 3191 uint64_t nmerge : 1; /**< No Merge. (NOT IN PASS 1 NOR PASS 2) */ 3192 uint64_t esr : 2; /**< Endian-Swap on read. */ 3193 uint64_t esw : 2; /**< Endian-Swap on write. */ 3194 uint64_t nsr : 1; /**< No-Snoop on read. */ 3195 uint64_t nsw : 1; /**< No-Snoop on write. */ 3196 uint64_t ror : 1; /**< Relax Read on read. */ 3197 uint64_t row : 1; /**< Relax Order on write. */ 3198 uint64_t ba : 28; /**< PCI Address bits [63:36]. */ 3199#else 3200 uint64_t ba : 28; 3201 uint64_t row : 1; 3202 uint64_t ror : 1; 3203 uint64_t nsw : 1; 3204 uint64_t nsr : 1; 3205 uint64_t esw : 2; 3206 uint64_t esr : 2; 3207 uint64_t nmerge : 1; 3208 uint64_t shortl : 1; 3209 uint64_t reserved_38_63 : 26; 3210#endif 3211 } s; 3212 struct cvmx_npi_mem_access_subidx_s cn30xx; 3213 struct cvmx_npi_mem_access_subidx_cn31xx { 3214#ifdef __BIG_ENDIAN_BITFIELD 3215 uint64_t reserved_36_63 : 28; 3216 uint64_t esr : 2; /**< Endian-Swap on read. */ 3217 uint64_t esw : 2; /**< Endian-Swap on write. */ 3218 uint64_t nsr : 1; /**< No-Snoop on read. */ 3219 uint64_t nsw : 1; /**< No-Snoop on write. */ 3220 uint64_t ror : 1; /**< Relax Read on read. */ 3221 uint64_t row : 1; /**< Relax Order on write. */ 3222 uint64_t ba : 28; /**< PCI Address bits [63:36]. */ 3223#else 3224 uint64_t ba : 28; 3225 uint64_t row : 1; 3226 uint64_t ror : 1; 3227 uint64_t nsw : 1; 3228 uint64_t nsr : 1; 3229 uint64_t esw : 2; 3230 uint64_t esr : 2; 3231 uint64_t reserved_36_63 : 28; 3232#endif 3233 } cn31xx; 3234 struct cvmx_npi_mem_access_subidx_s cn38xx; 3235 struct cvmx_npi_mem_access_subidx_cn31xx cn38xxp2; 3236 struct cvmx_npi_mem_access_subidx_s cn50xx; 3237 struct cvmx_npi_mem_access_subidx_s cn58xx; 3238 struct cvmx_npi_mem_access_subidx_s cn58xxp1; 3239}; 3240typedef union cvmx_npi_mem_access_subidx cvmx_npi_mem_access_subidx_t; 3241 3242/** 3243 * cvmx_npi_msi_rcv 3244 * 3245 * NPI_MSI_RCV = NPI MSI Receive Vector Register 3246 * 3247 * A bit is set in this register relative to the vector received during a MSI. And cleared by a W1 to the register. 3248 */ 3249union cvmx_npi_msi_rcv { 3250 uint64_t u64; 3251 struct cvmx_npi_msi_rcv_s { 3252#ifdef __BIG_ENDIAN_BITFIELD 3253 uint64_t int_vec : 64; /**< Refer to PCI_MSI_RCV */ 3254#else 3255 uint64_t int_vec : 64; 3256#endif 3257 } s; 3258 struct cvmx_npi_msi_rcv_s cn30xx; 3259 struct cvmx_npi_msi_rcv_s cn31xx; 3260 struct cvmx_npi_msi_rcv_s cn38xx; 3261 struct cvmx_npi_msi_rcv_s cn38xxp2; 3262 struct cvmx_npi_msi_rcv_s cn50xx; 3263 struct cvmx_npi_msi_rcv_s cn58xx; 3264 struct cvmx_npi_msi_rcv_s cn58xxp1; 3265}; 3266typedef union cvmx_npi_msi_rcv cvmx_npi_msi_rcv_t; 3267 3268/** 3269 * cvmx_npi_num_desc_output# 3270 * 3271 * NUM_DESC_OUTPUT0 = Number Of Descriptors Available For Output 0 3272 * 3273 * The size of the Buffer/Info Pointer Pair ring for Output-0. 3274 */ 3275union cvmx_npi_num_desc_outputx { 3276 uint64_t u64; 3277 struct cvmx_npi_num_desc_outputx_s { 3278#ifdef __BIG_ENDIAN_BITFIELD 3279 uint64_t reserved_32_63 : 32; 3280 uint64_t size : 32; /**< The size of the Buffer/Info Pointer Pair ring. */ 3281#else 3282 uint64_t size : 32; 3283 uint64_t reserved_32_63 : 32; 3284#endif 3285 } s; 3286 struct cvmx_npi_num_desc_outputx_s cn30xx; 3287 struct cvmx_npi_num_desc_outputx_s cn31xx; 3288 struct cvmx_npi_num_desc_outputx_s cn38xx; 3289 struct cvmx_npi_num_desc_outputx_s cn38xxp2; 3290 struct cvmx_npi_num_desc_outputx_s cn50xx; 3291 struct cvmx_npi_num_desc_outputx_s cn58xx; 3292 struct cvmx_npi_num_desc_outputx_s cn58xxp1; 3293}; 3294typedef union cvmx_npi_num_desc_outputx cvmx_npi_num_desc_outputx_t; 3295 3296/** 3297 * cvmx_npi_output_control 3298 * 3299 * NPI_OUTPUT_CONTROL = NPI's Output Control Register 3300 * 3301 * The address to start reading Instructions from for Output-3. 3302 */ 3303union cvmx_npi_output_control { 3304 uint64_t u64; 3305 struct cvmx_npi_output_control_s { 3306#ifdef __BIG_ENDIAN_BITFIELD 3307 uint64_t reserved_49_63 : 15; 3308 uint64_t pkt_rr : 1; /**< When set '1' the output packet selection will be 3309 made with a Round Robin arbitration. When '0' 3310 the output packet port is fixed in priority, 3311 where the lower port number has higher priority. 3312 PASS3 Field */ 3313 uint64_t p3_bmode : 1; /**< When set '1' PCI_PKTS_SENT3 register will be 3314 updated with the number of bytes in the packet 3315 sent, when '0' the register will have a value 3316 of '1' added. */ 3317 uint64_t p2_bmode : 1; /**< When set '1' PCI_PKTS_SENT2 register will be 3318 updated with the number of bytes in the packet 3319 sent, when '0' the register will have a value 3320 of '1' added. */ 3321 uint64_t p1_bmode : 1; /**< When set '1' PCI_PKTS_SENT1 register will be 3322 updated with the number of bytes in the packet 3323 sent, when '0' the register will have a value 3324 of '1' added. */ 3325 uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be 3326 updated with the number of bytes in the packet 3327 sent, when '0' the register will have a value 3328 of '1' added. */ 3329 uint64_t o3_es : 2; /**< Endian Swap for Output3 Data. */ 3330 uint64_t o3_ns : 1; /**< NoSnoop Enable for Output3 Data. */ 3331 uint64_t o3_ro : 1; /**< Relaxed Ordering Enable for Output3 Data. */ 3332 uint64_t o2_es : 2; /**< Endian Swap for Output2 Data. */ 3333 uint64_t o2_ns : 1; /**< NoSnoop Enable for Output2 Data. */ 3334 uint64_t o2_ro : 1; /**< Relaxed Ordering Enable for Output2 Data. */ 3335 uint64_t o1_es : 2; /**< Endian Swap for Output1 Data. */ 3336 uint64_t o1_ns : 1; /**< NoSnoop Enable for Output1 Data. */ 3337 uint64_t o1_ro : 1; /**< Relaxed Ordering Enable for Output1 Data. */ 3338 uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ 3339 uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ 3340 uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ 3341 uint64_t o3_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3342 comes from the DPTR[63:60] in the scatter-list pair, 3343 and the RO, NS, ES values come from the O3_ES, 3344 O3_NS, O3_RO. When '0' the RO == DPTR[60], 3345 NS == DPTR[61], ES == DPTR[63:62], the address the 3346 packet will be written to is ADDR[63:60] == 3347 O3_ES[1:0], O3_NS, O3_RO. For Output Port-3. */ 3348 uint64_t o2_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3349 comes from the DPTR[63:60] in the scatter-list pair, 3350 and the RO, NS, ES values come from the O2_ES, 3351 O2_NS, O2_RO. When '0' the RO == DPTR[60], 3352 NS == DPTR[61], ES == DPTR[63:62], the address the 3353 packet will be written to is ADDR[63:60] == 3354 O2_ES[1:0], O2_NS, O2_RO. For Output Port-2. */ 3355 uint64_t o1_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3356 comes from the DPTR[63:60] in the scatter-list pair, 3357 and the RO, NS, ES values come from the O1_ES, 3358 O1_NS, O1_RO. When '0' the RO == DPTR[60], 3359 NS == DPTR[61], ES == DPTR[63:62], the address the 3360 packet will be written to is ADDR[63:60] == 3361 O1_ES[1:0], O1_NS, O1_RO. For Output Port-1. */ 3362 uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3363 comes from the DPTR[63:60] in the scatter-list pair, 3364 and the RO, NS, ES values come from the O0_ES, 3365 O0_NS, O0_RO. When '0' the RO == DPTR[60], 3366 NS == DPTR[61], ES == DPTR[63:62], the address the 3367 packet will be written to is ADDR[63:60] == 3368 O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ 3369 uint64_t reserved_20_23 : 4; 3370 uint64_t iptr_o3 : 1; /**< Uses the Info-Pointer to store length and data 3371 for output-3. */ 3372 uint64_t iptr_o2 : 1; /**< Uses the Info-Pointer to store length and data 3373 for output-2. */ 3374 uint64_t iptr_o1 : 1; /**< Uses the Info-Pointer to store length and data 3375 for output-1. */ 3376 uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data 3377 for output-0. */ 3378 uint64_t esr_sl3 : 2; /**< The Endian-Swap-Mode for Slist3 reads. */ 3379 uint64_t nsr_sl3 : 1; /**< Enables '1' NoSnoop for Slist3 reads. */ 3380 uint64_t ror_sl3 : 1; /**< Enables '1' Relaxed Ordering for Slist3 reads. */ 3381 uint64_t esr_sl2 : 2; /**< The Endian-Swap-Mode for Slist2 reads. */ 3382 uint64_t nsr_sl2 : 1; /**< Enables '1' NoSnoop for Slist2 reads. */ 3383 uint64_t ror_sl2 : 1; /**< Enables '1' Relaxed Ordering for Slist2 reads. */ 3384 uint64_t esr_sl1 : 2; /**< The Endian-Swap-Mode for Slist1 reads. */ 3385 uint64_t nsr_sl1 : 1; /**< Enables '1' NoSnoop for Slist1 reads. */ 3386 uint64_t ror_sl1 : 1; /**< Enables '1' Relaxed Ordering for Slist1 reads. */ 3387 uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ 3388 uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ 3389 uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ 3390#else 3391 uint64_t ror_sl0 : 1; 3392 uint64_t nsr_sl0 : 1; 3393 uint64_t esr_sl0 : 2; 3394 uint64_t ror_sl1 : 1; 3395 uint64_t nsr_sl1 : 1; 3396 uint64_t esr_sl1 : 2; 3397 uint64_t ror_sl2 : 1; 3398 uint64_t nsr_sl2 : 1; 3399 uint64_t esr_sl2 : 2; 3400 uint64_t ror_sl3 : 1; 3401 uint64_t nsr_sl3 : 1; 3402 uint64_t esr_sl3 : 2; 3403 uint64_t iptr_o0 : 1; 3404 uint64_t iptr_o1 : 1; 3405 uint64_t iptr_o2 : 1; 3406 uint64_t iptr_o3 : 1; 3407 uint64_t reserved_20_23 : 4; 3408 uint64_t o0_csrm : 1; 3409 uint64_t o1_csrm : 1; 3410 uint64_t o2_csrm : 1; 3411 uint64_t o3_csrm : 1; 3412 uint64_t o0_ro : 1; 3413 uint64_t o0_ns : 1; 3414 uint64_t o0_es : 2; 3415 uint64_t o1_ro : 1; 3416 uint64_t o1_ns : 1; 3417 uint64_t o1_es : 2; 3418 uint64_t o2_ro : 1; 3419 uint64_t o2_ns : 1; 3420 uint64_t o2_es : 2; 3421 uint64_t o3_ro : 1; 3422 uint64_t o3_ns : 1; 3423 uint64_t o3_es : 2; 3424 uint64_t p0_bmode : 1; 3425 uint64_t p1_bmode : 1; 3426 uint64_t p2_bmode : 1; 3427 uint64_t p3_bmode : 1; 3428 uint64_t pkt_rr : 1; 3429 uint64_t reserved_49_63 : 15; 3430#endif 3431 } s; 3432 struct cvmx_npi_output_control_cn30xx { 3433#ifdef __BIG_ENDIAN_BITFIELD 3434 uint64_t reserved_45_63 : 19; 3435 uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be 3436 updated with the number of bytes in the packet 3437 sent, when '0' the register will have a value 3438 of '1' added. */ 3439 uint64_t reserved_32_43 : 12; 3440 uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ 3441 uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ 3442 uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ 3443 uint64_t reserved_25_27 : 3; 3444 uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3445 comes from the DPTR[63:60] in the scatter-list pair, 3446 and the RO, NS, ES values come from the O0_ES, 3447 O0_NS, O0_RO. When '0' the RO == DPTR[60], 3448 NS == DPTR[61], ES == DPTR[63:62], the address the 3449 packet will be written to is ADDR[63:60] == 3450 O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ 3451 uint64_t reserved_17_23 : 7; 3452 uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data 3453 for output-0. */ 3454 uint64_t reserved_4_15 : 12; 3455 uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ 3456 uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ 3457 uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ 3458#else 3459 uint64_t ror_sl0 : 1; 3460 uint64_t nsr_sl0 : 1; 3461 uint64_t esr_sl0 : 2; 3462 uint64_t reserved_4_15 : 12; 3463 uint64_t iptr_o0 : 1; 3464 uint64_t reserved_17_23 : 7; 3465 uint64_t o0_csrm : 1; 3466 uint64_t reserved_25_27 : 3; 3467 uint64_t o0_ro : 1; 3468 uint64_t o0_ns : 1; 3469 uint64_t o0_es : 2; 3470 uint64_t reserved_32_43 : 12; 3471 uint64_t p0_bmode : 1; 3472 uint64_t reserved_45_63 : 19; 3473#endif 3474 } cn30xx; 3475 struct cvmx_npi_output_control_cn31xx { 3476#ifdef __BIG_ENDIAN_BITFIELD 3477 uint64_t reserved_46_63 : 18; 3478 uint64_t p1_bmode : 1; /**< When set '1' PCI_PKTS_SENT1 register will be 3479 updated with the number of bytes in the packet 3480 sent, when '0' the register will have a value 3481 of '1' added. */ 3482 uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be 3483 updated with the number of bytes in the packet 3484 sent, when '0' the register will have a value 3485 of '1' added. */ 3486 uint64_t reserved_36_43 : 8; 3487 uint64_t o1_es : 2; /**< Endian Swap for Output1 Data. */ 3488 uint64_t o1_ns : 1; /**< NoSnoop Enable for Output1 Data. */ 3489 uint64_t o1_ro : 1; /**< Relaxed Ordering Enable for Output1 Data. */ 3490 uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ 3491 uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ 3492 uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ 3493 uint64_t reserved_26_27 : 2; 3494 uint64_t o1_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3495 comes from the DPTR[63:60] in the scatter-list pair, 3496 and the RO, NS, ES values come from the O1_ES, 3497 O1_NS, O1_RO. When '0' the RO == DPTR[60], 3498 NS == DPTR[61], ES == DPTR[63:62], the address the 3499 packet will be written to is ADDR[63:60] == 3500 O1_ES[1:0], O1_NS, O1_RO. For Output Port-1. */ 3501 uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3502 comes from the DPTR[63:60] in the scatter-list pair, 3503 and the RO, NS, ES values come from the O0_ES, 3504 O0_NS, O0_RO. When '0' the RO == DPTR[60], 3505 NS == DPTR[61], ES == DPTR[63:62], the address the 3506 packet will be written to is ADDR[63:60] == 3507 O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ 3508 uint64_t reserved_18_23 : 6; 3509 uint64_t iptr_o1 : 1; /**< Uses the Info-Pointer to store length and data 3510 for output-1. */ 3511 uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data 3512 for output-0. */ 3513 uint64_t reserved_8_15 : 8; 3514 uint64_t esr_sl1 : 2; /**< The Endian-Swap-Mode for Slist1 reads. */ 3515 uint64_t nsr_sl1 : 1; /**< Enables '1' NoSnoop for Slist1 reads. */ 3516 uint64_t ror_sl1 : 1; /**< Enables '1' Relaxed Ordering for Slist1 reads. */ 3517 uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ 3518 uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ 3519 uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ 3520#else 3521 uint64_t ror_sl0 : 1; 3522 uint64_t nsr_sl0 : 1; 3523 uint64_t esr_sl0 : 2; 3524 uint64_t ror_sl1 : 1; 3525 uint64_t nsr_sl1 : 1; 3526 uint64_t esr_sl1 : 2; 3527 uint64_t reserved_8_15 : 8; 3528 uint64_t iptr_o0 : 1; 3529 uint64_t iptr_o1 : 1; 3530 uint64_t reserved_18_23 : 6; 3531 uint64_t o0_csrm : 1; 3532 uint64_t o1_csrm : 1; 3533 uint64_t reserved_26_27 : 2; 3534 uint64_t o0_ro : 1; 3535 uint64_t o0_ns : 1; 3536 uint64_t o0_es : 2; 3537 uint64_t o1_ro : 1; 3538 uint64_t o1_ns : 1; 3539 uint64_t o1_es : 2; 3540 uint64_t reserved_36_43 : 8; 3541 uint64_t p0_bmode : 1; 3542 uint64_t p1_bmode : 1; 3543 uint64_t reserved_46_63 : 18; 3544#endif 3545 } cn31xx; 3546 struct cvmx_npi_output_control_s cn38xx; 3547 struct cvmx_npi_output_control_cn38xxp2 { 3548#ifdef __BIG_ENDIAN_BITFIELD 3549 uint64_t reserved_48_63 : 16; 3550 uint64_t p3_bmode : 1; /**< When set '1' PCI_PKTS_SENT3 register will be 3551 updated with the number of bytes in the packet 3552 sent, when '0' the register will have a value 3553 of '1' added. */ 3554 uint64_t p2_bmode : 1; /**< When set '1' PCI_PKTS_SENT2 register will be 3555 updated with the number of bytes in the packet 3556 sent, when '0' the register will have a value 3557 of '1' added. */ 3558 uint64_t p1_bmode : 1; /**< When set '1' PCI_PKTS_SENT1 register will be 3559 updated with the number of bytes in the packet 3560 sent, when '0' the register will have a value 3561 of '1' added. */ 3562 uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be 3563 updated with the number of bytes in the packet 3564 sent, when '0' the register will have a value 3565 of '1' added. */ 3566 uint64_t o3_es : 2; /**< Endian Swap for Output3 Data. */ 3567 uint64_t o3_ns : 1; /**< NoSnoop Enable for Output3 Data. */ 3568 uint64_t o3_ro : 1; /**< Relaxed Ordering Enable for Output3 Data. */ 3569 uint64_t o2_es : 2; /**< Endian Swap for Output2 Data. */ 3570 uint64_t o2_ns : 1; /**< NoSnoop Enable for Output2 Data. */ 3571 uint64_t o2_ro : 1; /**< Relaxed Ordering Enable for Output2 Data. */ 3572 uint64_t o1_es : 2; /**< Endian Swap for Output1 Data. */ 3573 uint64_t o1_ns : 1; /**< NoSnoop Enable for Output1 Data. */ 3574 uint64_t o1_ro : 1; /**< Relaxed Ordering Enable for Output1 Data. */ 3575 uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ 3576 uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ 3577 uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ 3578 uint64_t o3_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3579 comes from the DPTR[63:60] in the scatter-list pair, 3580 and the RO, NS, ES values come from the O3_ES, 3581 O3_NS, O3_RO. When '0' the RO == DPTR[60], 3582 NS == DPTR[61], ES == DPTR[63:62], the address the 3583 packet will be written to is ADDR[63:60] == 3584 O3_ES[1:0], O3_NS, O3_RO. For Output Port-3. */ 3585 uint64_t o2_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3586 comes from the DPTR[63:60] in the scatter-list pair, 3587 and the RO, NS, ES values come from the O2_ES, 3588 O2_NS, O2_RO. When '0' the RO == DPTR[60], 3589 NS == DPTR[61], ES == DPTR[63:62], the address the 3590 packet will be written to is ADDR[63:60] == 3591 O2_ES[1:0], O2_NS, O2_RO. For Output Port-2. */ 3592 uint64_t o1_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3593 comes from the DPTR[63:60] in the scatter-list pair, 3594 and the RO, NS, ES values come from the O1_ES, 3595 O1_NS, O1_RO. When '0' the RO == DPTR[60], 3596 NS == DPTR[61], ES == DPTR[63:62], the address the 3597 packet will be written to is ADDR[63:60] == 3598 O1_ES[1:0], O1_NS, O1_RO. For Output Port-1. */ 3599 uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3600 comes from the DPTR[63:60] in the scatter-list pair, 3601 and the RO, NS, ES values come from the O0_ES, 3602 O0_NS, O0_RO. When '0' the RO == DPTR[60], 3603 NS == DPTR[61], ES == DPTR[63:62], the address the 3604 packet will be written to is ADDR[63:60] == 3605 O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ 3606 uint64_t reserved_20_23 : 4; 3607 uint64_t iptr_o3 : 1; /**< Uses the Info-Pointer to store length and data 3608 for output-3. */ 3609 uint64_t iptr_o2 : 1; /**< Uses the Info-Pointer to store length and data 3610 for output-2. */ 3611 uint64_t iptr_o1 : 1; /**< Uses the Info-Pointer to store length and data 3612 for output-1. */ 3613 uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data 3614 for output-0. */ 3615 uint64_t esr_sl3 : 2; /**< The Endian-Swap-Mode for Slist3 reads. */ 3616 uint64_t nsr_sl3 : 1; /**< Enables '1' NoSnoop for Slist3 reads. */ 3617 uint64_t ror_sl3 : 1; /**< Enables '1' Relaxed Ordering for Slist3 reads. */ 3618 uint64_t esr_sl2 : 2; /**< The Endian-Swap-Mode for Slist2 reads. */ 3619 uint64_t nsr_sl2 : 1; /**< Enables '1' NoSnoop for Slist2 reads. */ 3620 uint64_t ror_sl2 : 1; /**< Enables '1' Relaxed Ordering for Slist2 reads. */ 3621 uint64_t esr_sl1 : 2; /**< The Endian-Swap-Mode for Slist1 reads. */ 3622 uint64_t nsr_sl1 : 1; /**< Enables '1' NoSnoop for Slist1 reads. */ 3623 uint64_t ror_sl1 : 1; /**< Enables '1' Relaxed Ordering for Slist1 reads. */ 3624 uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ 3625 uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ 3626 uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ 3627#else 3628 uint64_t ror_sl0 : 1; 3629 uint64_t nsr_sl0 : 1; 3630 uint64_t esr_sl0 : 2; 3631 uint64_t ror_sl1 : 1; 3632 uint64_t nsr_sl1 : 1; 3633 uint64_t esr_sl1 : 2; 3634 uint64_t ror_sl2 : 1; 3635 uint64_t nsr_sl2 : 1; 3636 uint64_t esr_sl2 : 2; 3637 uint64_t ror_sl3 : 1; 3638 uint64_t nsr_sl3 : 1; 3639 uint64_t esr_sl3 : 2; 3640 uint64_t iptr_o0 : 1; 3641 uint64_t iptr_o1 : 1; 3642 uint64_t iptr_o2 : 1; 3643 uint64_t iptr_o3 : 1; 3644 uint64_t reserved_20_23 : 4; 3645 uint64_t o0_csrm : 1; 3646 uint64_t o1_csrm : 1; 3647 uint64_t o2_csrm : 1; 3648 uint64_t o3_csrm : 1; 3649 uint64_t o0_ro : 1; 3650 uint64_t o0_ns : 1; 3651 uint64_t o0_es : 2; 3652 uint64_t o1_ro : 1; 3653 uint64_t o1_ns : 1; 3654 uint64_t o1_es : 2; 3655 uint64_t o2_ro : 1; 3656 uint64_t o2_ns : 1; 3657 uint64_t o2_es : 2; 3658 uint64_t o3_ro : 1; 3659 uint64_t o3_ns : 1; 3660 uint64_t o3_es : 2; 3661 uint64_t p0_bmode : 1; 3662 uint64_t p1_bmode : 1; 3663 uint64_t p2_bmode : 1; 3664 uint64_t p3_bmode : 1; 3665 uint64_t reserved_48_63 : 16; 3666#endif 3667 } cn38xxp2; 3668 struct cvmx_npi_output_control_cn50xx { 3669#ifdef __BIG_ENDIAN_BITFIELD 3670 uint64_t reserved_49_63 : 15; 3671 uint64_t pkt_rr : 1; /**< When set '1' the output packet selection will be 3672 made with a Round Robin arbitration. When '0' 3673 the output packet port is fixed in priority, 3674 where the lower port number has higher priority. 3675 PASS2 Field */ 3676 uint64_t reserved_46_47 : 2; 3677 uint64_t p1_bmode : 1; /**< When set '1' PCI_PKTS_SENT1 register will be 3678 updated with the number of bytes in the packet 3679 sent, when '0' the register will have a value 3680 of '1' added. */ 3681 uint64_t p0_bmode : 1; /**< When set '1' PCI_PKTS_SENT0 register will be 3682 updated with the number of bytes in the packet 3683 sent, when '0' the register will have a value 3684 of '1' added. */ 3685 uint64_t reserved_36_43 : 8; 3686 uint64_t o1_es : 2; /**< Endian Swap for Output1 Data. */ 3687 uint64_t o1_ns : 1; /**< NoSnoop Enable for Output1 Data. */ 3688 uint64_t o1_ro : 1; /**< Relaxed Ordering Enable for Output1 Data. */ 3689 uint64_t o0_es : 2; /**< Endian Swap for Output0 Data. */ 3690 uint64_t o0_ns : 1; /**< NoSnoop Enable for Output0 Data. */ 3691 uint64_t o0_ro : 1; /**< Relaxed Ordering Enable for Output0 Data. */ 3692 uint64_t reserved_26_27 : 2; 3693 uint64_t o1_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3694 comes from the DPTR[63:60] in the scatter-list pair, 3695 and the RO, NS, ES values come from the O1_ES, 3696 O1_NS, O1_RO. When '0' the RO == DPTR[60], 3697 NS == DPTR[61], ES == DPTR[63:62], the address the 3698 packet will be written to is ADDR[63:60] == 3699 O1_ES[1:0], O1_NS, O1_RO. For Output Port-1. */ 3700 uint64_t o0_csrm : 1; /**< When '1' the address[63:60] to write packet data, 3701 comes from the DPTR[63:60] in the scatter-list pair, 3702 and the RO, NS, ES values come from the O0_ES, 3703 O0_NS, O0_RO. When '0' the RO == DPTR[60], 3704 NS == DPTR[61], ES == DPTR[63:62], the address the 3705 packet will be written to is ADDR[63:60] == 3706 O0_ES[1:0], O0_NS, O0_RO. For Output Port-0. */ 3707 uint64_t reserved_18_23 : 6; 3708 uint64_t iptr_o1 : 1; /**< Uses the Info-Pointer to store length and data 3709 for output-1. */ 3710 uint64_t iptr_o0 : 1; /**< Uses the Info-Pointer to store length and data 3711 for output-0. */ 3712 uint64_t reserved_8_15 : 8; 3713 uint64_t esr_sl1 : 2; /**< The Endian-Swap-Mode for Slist1 reads. */ 3714 uint64_t nsr_sl1 : 1; /**< Enables '1' NoSnoop for Slist1 reads. */ 3715 uint64_t ror_sl1 : 1; /**< Enables '1' Relaxed Ordering for Slist1 reads. */ 3716 uint64_t esr_sl0 : 2; /**< The Endian-Swap-Mode for Slist0 reads. */ 3717 uint64_t nsr_sl0 : 1; /**< Enables '1' NoSnoop for Slist0 reads. */ 3718 uint64_t ror_sl0 : 1; /**< Enables '1' Relaxed Ordering for Slist0 reads. */ 3719#else 3720 uint64_t ror_sl0 : 1; 3721 uint64_t nsr_sl0 : 1; 3722 uint64_t esr_sl0 : 2; 3723 uint64_t ror_sl1 : 1; 3724 uint64_t nsr_sl1 : 1; 3725 uint64_t esr_sl1 : 2; 3726 uint64_t reserved_8_15 : 8; 3727 uint64_t iptr_o0 : 1; 3728 uint64_t iptr_o1 : 1; 3729 uint64_t reserved_18_23 : 6; 3730 uint64_t o0_csrm : 1; 3731 uint64_t o1_csrm : 1; 3732 uint64_t reserved_26_27 : 2; 3733 uint64_t o0_ro : 1; 3734 uint64_t o0_ns : 1; 3735 uint64_t o0_es : 2; 3736 uint64_t o1_ro : 1; 3737 uint64_t o1_ns : 1; 3738 uint64_t o1_es : 2; 3739 uint64_t reserved_36_43 : 8; 3740 uint64_t p0_bmode : 1; 3741 uint64_t p1_bmode : 1; 3742 uint64_t reserved_46_47 : 2; 3743 uint64_t pkt_rr : 1; 3744 uint64_t reserved_49_63 : 15; 3745#endif 3746 } cn50xx; 3747 struct cvmx_npi_output_control_s cn58xx; 3748 struct cvmx_npi_output_control_s cn58xxp1; 3749}; 3750typedef union cvmx_npi_output_control cvmx_npi_output_control_t; 3751 3752/** 3753 * cvmx_npi_p#_dbpair_addr 3754 * 3755 * NPI_P0_DBPAIR_ADDR = NPI's Port-0 DATA-BUFFER Pair Next Read Address. 3756 * 3757 * Contains the next address to read for Port's-0 Data/Buffer Pair. 3758 */ 3759union cvmx_npi_px_dbpair_addr { 3760 uint64_t u64; 3761 struct cvmx_npi_px_dbpair_addr_s { 3762#ifdef __BIG_ENDIAN_BITFIELD 3763 uint64_t reserved_63_63 : 1; 3764 uint64_t state : 2; /**< POS state machine vector. Used to tell when NADDR 3765 is valid (when STATE == 0). */ 3766 uint64_t naddr : 61; /**< Bits [63:3] of the next Data-Info Pair to read. 3767 Value is only valid when STATE == 0. */ 3768#else 3769 uint64_t naddr : 61; 3770 uint64_t state : 2; 3771 uint64_t reserved_63_63 : 1; 3772#endif 3773 } s; 3774 struct cvmx_npi_px_dbpair_addr_s cn30xx; 3775 struct cvmx_npi_px_dbpair_addr_s cn31xx; 3776 struct cvmx_npi_px_dbpair_addr_s cn38xx; 3777 struct cvmx_npi_px_dbpair_addr_s cn38xxp2; 3778 struct cvmx_npi_px_dbpair_addr_s cn50xx; 3779 struct cvmx_npi_px_dbpair_addr_s cn58xx; 3780 struct cvmx_npi_px_dbpair_addr_s cn58xxp1; 3781}; 3782typedef union cvmx_npi_px_dbpair_addr cvmx_npi_px_dbpair_addr_t; 3783 3784/** 3785 * cvmx_npi_p#_instr_addr 3786 * 3787 * NPI_P0_INSTR_ADDR = NPI's Port-0 Instruction Next Read Address. 3788 * 3789 * Contains the next address to read for Port's-0 Instructions. 3790 */ 3791union cvmx_npi_px_instr_addr { 3792 uint64_t u64; 3793 struct cvmx_npi_px_instr_addr_s { 3794#ifdef __BIG_ENDIAN_BITFIELD 3795 uint64_t state : 3; /**< Gather engine state vector. Used to tell when 3796 NADDR is valid (when STATE == 0). */ 3797 uint64_t naddr : 61; /**< Bits [63:3] of the next Instruction to read. 3798 Value is only valid when STATE == 0. */ 3799#else 3800 uint64_t naddr : 61; 3801 uint64_t state : 3; 3802#endif 3803 } s; 3804 struct cvmx_npi_px_instr_addr_s cn30xx; 3805 struct cvmx_npi_px_instr_addr_s cn31xx; 3806 struct cvmx_npi_px_instr_addr_s cn38xx; 3807 struct cvmx_npi_px_instr_addr_s cn38xxp2; 3808 struct cvmx_npi_px_instr_addr_s cn50xx; 3809 struct cvmx_npi_px_instr_addr_s cn58xx; 3810 struct cvmx_npi_px_instr_addr_s cn58xxp1; 3811}; 3812typedef union cvmx_npi_px_instr_addr cvmx_npi_px_instr_addr_t; 3813 3814/** 3815 * cvmx_npi_p#_instr_cnts 3816 * 3817 * NPI_P0_INSTR_CNTS = NPI's Port-0 Instruction Counts For Packets In. 3818 * 3819 * Used to determine the number of instruction in the NPI and to be fetched for Input-Packets. 3820 */ 3821union cvmx_npi_px_instr_cnts { 3822 uint64_t u64; 3823 struct cvmx_npi_px_instr_cnts_s { 3824#ifdef __BIG_ENDIAN_BITFIELD 3825 uint64_t reserved_38_63 : 26; 3826 uint64_t fcnt : 6; /**< Number entries in the Instruction FIFO. */ 3827 uint64_t avail : 32; /**< Doorbell count to be read. */ 3828#else 3829 uint64_t avail : 32; 3830 uint64_t fcnt : 6; 3831 uint64_t reserved_38_63 : 26; 3832#endif 3833 } s; 3834 struct cvmx_npi_px_instr_cnts_s cn30xx; 3835 struct cvmx_npi_px_instr_cnts_s cn31xx; 3836 struct cvmx_npi_px_instr_cnts_s cn38xx; 3837 struct cvmx_npi_px_instr_cnts_s cn38xxp2; 3838 struct cvmx_npi_px_instr_cnts_s cn50xx; 3839 struct cvmx_npi_px_instr_cnts_s cn58xx; 3840 struct cvmx_npi_px_instr_cnts_s cn58xxp1; 3841}; 3842typedef union cvmx_npi_px_instr_cnts cvmx_npi_px_instr_cnts_t; 3843 3844/** 3845 * cvmx_npi_p#_pair_cnts 3846 * 3847 * NPI_P0_PAIR_CNTS = NPI's Port-0 Instruction Counts For Packets Out. 3848 * 3849 * Used to determine the number of instruction in the NPI and to be fetched for Output-Packets. 3850 */ 3851union cvmx_npi_px_pair_cnts { 3852 uint64_t u64; 3853 struct cvmx_npi_px_pair_cnts_s { 3854#ifdef __BIG_ENDIAN_BITFIELD 3855 uint64_t reserved_37_63 : 27; 3856 uint64_t fcnt : 5; /**< 16 - number entries in the D/I Pair FIFO. */ 3857 uint64_t avail : 32; /**< Doorbell count to be read. */ 3858#else 3859 uint64_t avail : 32; 3860 uint64_t fcnt : 5; 3861 uint64_t reserved_37_63 : 27; 3862#endif 3863 } s; 3864 struct cvmx_npi_px_pair_cnts_s cn30xx; 3865 struct cvmx_npi_px_pair_cnts_s cn31xx; 3866 struct cvmx_npi_px_pair_cnts_s cn38xx; 3867 struct cvmx_npi_px_pair_cnts_s cn38xxp2; 3868 struct cvmx_npi_px_pair_cnts_s cn50xx; 3869 struct cvmx_npi_px_pair_cnts_s cn58xx; 3870 struct cvmx_npi_px_pair_cnts_s cn58xxp1; 3871}; 3872typedef union cvmx_npi_px_pair_cnts cvmx_npi_px_pair_cnts_t; 3873 3874/** 3875 * cvmx_npi_pci_burst_size 3876 * 3877 * NPI_PCI_BURST_SIZE = NPI PCI Burst Size Register 3878 * 3879 * Control the number of words the NPI will attempt to read / write to/from the PCI. 3880 */ 3881union cvmx_npi_pci_burst_size { 3882 uint64_t u64; 3883 struct cvmx_npi_pci_burst_size_s { 3884#ifdef __BIG_ENDIAN_BITFIELD 3885 uint64_t reserved_14_63 : 50; 3886 uint64_t wr_brst : 7; /**< The number of 8B words to write to PCI in any one 3887 write operation. A zero is equal to 128. This 3888 value is used the packet reads and is clamped at 3889 a max of 112 for dma writes. */ 3890 uint64_t rd_brst : 7; /**< Number of 8B words to read from PCI in any one 3891 read operation. Legal values are 1 to 127, where 3892 a 0 will be treated as a 1. 3893 "For reading of packet data value is limited to 64 3894 in PASS-2." 3895 This value does not control the size of a read 3896 caused by an IOBDMA from a PP. */ 3897#else 3898 uint64_t rd_brst : 7; 3899 uint64_t wr_brst : 7; 3900 uint64_t reserved_14_63 : 50; 3901#endif 3902 } s; 3903 struct cvmx_npi_pci_burst_size_s cn30xx; 3904 struct cvmx_npi_pci_burst_size_s cn31xx; 3905 struct cvmx_npi_pci_burst_size_s cn38xx; 3906 struct cvmx_npi_pci_burst_size_s cn38xxp2; 3907 struct cvmx_npi_pci_burst_size_s cn50xx; 3908 struct cvmx_npi_pci_burst_size_s cn58xx; 3909 struct cvmx_npi_pci_burst_size_s cn58xxp1; 3910}; 3911typedef union cvmx_npi_pci_burst_size cvmx_npi_pci_burst_size_t; 3912 3913/** 3914 * cvmx_npi_pci_int_arb_cfg 3915 * 3916 * NPI_PCI_INT_ARB_CFG = Configuration For PCI Arbiter 3917 * 3918 * Controls operation of the Internal PCI Arbiter. This register should 3919 * only be written when PRST# is asserted. NPI_PCI_INT_ARB_CFG[EN] should 3920 * only be set when Octane is a host. 3921 */ 3922union cvmx_npi_pci_int_arb_cfg { 3923 uint64_t u64; 3924 struct cvmx_npi_pci_int_arb_cfg_s { 3925#ifdef __BIG_ENDIAN_BITFIELD 3926 uint64_t reserved_13_63 : 51; 3927 uint64_t hostmode : 1; /**< PCI Host Mode Pin (sampled for use by software). 3928 This bit reflects the sampled PCI_HOSTMODE pin. 3929 In HOST Mode, OCTEON drives the PCI_CLK_OUT and 3930 PCI initialization pattern during PCI_RST_N deassertion). */ 3931 uint64_t pci_ovr : 4; /**< PCI Host Mode Bus Speed/Type Override 3932 When in Host Mode(PCI_HOSTMODE pin =1), OCTEON acting 3933 as the PCI Central Agent, samples the PCI_PCI100, 3934 PCI_M66EN and PCI_PCIXCAP pins to determine the 3935 'sampled' PCI Bus speed and Bus Type (PCI or PCIX). 3936 (see: PCI_CNT_REG[HM_SPEED,HM_PCIX]) 3937 However, in some cases, SW may want to override the 3938 the 'sampled' PCI Bus Type/Speed, and use some 3939 SLOWER Bus frequency. 3940 The PCI_OVR field encoding represents the 'override' 3941 PCI Bus Type/Speed which will be used to generate the 3942 PCI_CLK_OUT and determines the PCI initialization pattern 3943 driven during PCI_RST_N deassertion. 3944 PCI_OVR[3]: OVERRIDE (0:DISABLE/1:ENABLE) 3945 PCI_OVR[2]: BUS TYPE(0:PCI/1:PCIX) 3946 PCI_OVR[1:0]: BUS SPEED(0:33/1:66/2:100/3:133) 3947 OVERRIDE TYPE SPEED | Override Configuration 3948 [3] [2] [1:0] | TYPE SPEED 3949 ------------------+------------------------------- 3950 0 x xx | No override(uses 'sampled' 3951 | Bus Speed(HM_SPEED) and Bus Type(HM_PCIX) 3952 1 0 00 | PCI Mode 33MHz 3953 1 0 01 | PCI Mode 66MHz 3954 1 0 10 | RESERVED (DO NOT USE) 3955 1 0 11 | RESERVED (DO NOT USE) 3956 1 1 00 | RESERVED (DO NOT USE) 3957 1 1 01 | PCIX Mode 66MHz 3958 1 1 10 | PCIX Mode 100MHz 3959 1 1 11 | PCIX Mode 133MHz 3960 NOTES: 3961 - NPI_PCI_INT_ARB_CFG[PCI_OVR] has NO EFFECT on 3962 PCI_CNT_REG[HM_SPEED,HM_PCIX] (ie: the sampled PCI Bus 3963 Type/Speed), but WILL EFFECT PCI_CTL_STATUS_2[AP_PCIX] 3964 which reflects the actual PCI Bus Type(0:PCI/1:PCIX). 3965 - Software should never 'up' configure the recommended values. 3966 In other words, if the 'sampled' Bus Type=PCI(HM_PCIX=0), 3967 then SW should NOT attempt to set TYPE[2]=1 for PCIX Mode. 3968 Likewise, if the sampled Bus Speed=66MHz(HM_SPEED=01), 3969 then SW should NOT attempt to 'speed up' the bus [ie: 3970 SPEED[1:0]=10(100MHz)]. 3971 - If PCI_OVR<3> is set prior to PCI reset de-assertion 3972 in host mode, NPI_PCI_INT_ARB_CFG[PCI_OVR] 3973 indicates the Bus Type/Speed that OCTEON drove on the 3974 DEVSEL/STOP/TRDY pins during reset de-assertion. (user 3975 should then ignore the 'sampled' Bus Type/Speed 3976 contained in the PCI_CNT_REG[HM_PCIX, HM_SPEED]) fields. 3977 - If PCI_OVR<3> is clear prior to PCI reset de-assertion 3978 in host mode, PCI_CNT_REG[HM_PCIX,HM_SPEED]) 3979 indicates the Bus Type/Speed that OCTEON drove on the 3980 DEVSEL/STOP/TRDY pins during reset de-assertion. */ 3981 uint64_t reserved_5_7 : 3; 3982 uint64_t en : 1; /**< Internal arbiter enable. */ 3983 uint64_t park_mod : 1; /**< Bus park mode. 0=park on last, 1=park on device. */ 3984 uint64_t park_dev : 3; /**< Bus park device. 0-3 External device, 4 = Octane. */ 3985#else 3986 uint64_t park_dev : 3; 3987 uint64_t park_mod : 1; 3988 uint64_t en : 1; 3989 uint64_t reserved_5_7 : 3; 3990 uint64_t pci_ovr : 4; 3991 uint64_t hostmode : 1; 3992 uint64_t reserved_13_63 : 51; 3993#endif 3994 } s; 3995 struct cvmx_npi_pci_int_arb_cfg_cn30xx { 3996#ifdef __BIG_ENDIAN_BITFIELD 3997 uint64_t reserved_5_63 : 59; 3998 uint64_t en : 1; /**< Internal arbiter enable. */ 3999 uint64_t park_mod : 1; /**< Bus park mode. 0=park on last, 1=park on device. */ 4000 uint64_t park_dev : 3; /**< Bus park device. 0-3 External device, 4 = Octane. */ 4001#else 4002 uint64_t park_dev : 3; 4003 uint64_t park_mod : 1; 4004 uint64_t en : 1; 4005 uint64_t reserved_5_63 : 59; 4006#endif 4007 } cn30xx; 4008 struct cvmx_npi_pci_int_arb_cfg_cn30xx cn31xx; 4009 struct cvmx_npi_pci_int_arb_cfg_cn30xx cn38xx; 4010 struct cvmx_npi_pci_int_arb_cfg_cn30xx cn38xxp2; 4011 struct cvmx_npi_pci_int_arb_cfg_s cn50xx; 4012 struct cvmx_npi_pci_int_arb_cfg_s cn58xx; 4013 struct cvmx_npi_pci_int_arb_cfg_s cn58xxp1; 4014}; 4015typedef union cvmx_npi_pci_int_arb_cfg cvmx_npi_pci_int_arb_cfg_t; 4016 4017/** 4018 * cvmx_npi_pci_read_cmd 4019 * 4020 * NPI_PCI_READ_CMD = NPI PCI Read Command Register 4021 * 4022 * Controls the type of read command sent. 4023 * Writes to this register are not ordered with writes/reads to the PCI Memory space. 4024 * To ensure that a write has completed the user must read the register before 4025 * making an access(i.e. PCI memory space) that requires the value of this register to be updated. 4026 * Also any previously issued reads/writes to PCI memory space, still stored in the outbound 4027 * FIFO will use the value of this register after it has been updated. 4028 */ 4029union cvmx_npi_pci_read_cmd { 4030 uint64_t u64; 4031 struct cvmx_npi_pci_read_cmd_s { 4032#ifdef __BIG_ENDIAN_BITFIELD 4033 uint64_t reserved_11_63 : 53; 4034 uint64_t cmd_size : 11; /**< Number bytes to be read is equal to or exceeds this 4035 size will cause the PCI in PCI mode to use a 4036 Memory-Read-Multiple. This register has a value 4037 from 8 to 2048. A value of 0-7 will be treated as 4038 a value of 2048. */ 4039#else 4040 uint64_t cmd_size : 11; 4041 uint64_t reserved_11_63 : 53; 4042#endif 4043 } s; 4044 struct cvmx_npi_pci_read_cmd_s cn30xx; 4045 struct cvmx_npi_pci_read_cmd_s cn31xx; 4046 struct cvmx_npi_pci_read_cmd_s cn38xx; 4047 struct cvmx_npi_pci_read_cmd_s cn38xxp2; 4048 struct cvmx_npi_pci_read_cmd_s cn50xx; 4049 struct cvmx_npi_pci_read_cmd_s cn58xx; 4050 struct cvmx_npi_pci_read_cmd_s cn58xxp1; 4051}; 4052typedef union cvmx_npi_pci_read_cmd cvmx_npi_pci_read_cmd_t; 4053 4054/** 4055 * cvmx_npi_port32_instr_hdr 4056 * 4057 * NPI_PORT32_INSTR_HDR = NPI Port 32 Instruction Header 4058 * 4059 * Contains bits [62:42] of the Instruction Header for port 32. 4060 */ 4061union cvmx_npi_port32_instr_hdr { 4062 uint64_t u64; 4063 struct cvmx_npi_port32_instr_hdr_s { 4064#ifdef __BIG_ENDIAN_BITFIELD 4065 uint64_t reserved_44_63 : 20; 4066 uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */ 4067 uint64_t rsv_f : 5; /**< Reserved */ 4068 uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */ 4069 uint64_t rsv_e : 1; /**< Reserved */ 4070 uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */ 4071 uint64_t rsv_d : 6; /**< Reserved */ 4072 uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent 4073 as part of the packet data, regardless of the 4074 value of bit [63] of the instruction header. 4075 USE_IHDR must be set whenever PBP is set. */ 4076 uint64_t rsv_c : 5; /**< Reserved */ 4077 uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet 4078 is not raw and PBP is not set. */ 4079 uint64_t rsv_b : 1; /**< Reserved 4080 instruction header sent to IPD. */ 4081 uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet 4082 is not raw and PBP is not set. */ 4083 uint64_t rsv_a : 6; /**< Reserved */ 4084#else 4085 uint64_t rsv_a : 6; 4086 uint64_t skp_len : 7; 4087 uint64_t rsv_b : 1; 4088 uint64_t par_mode : 2; 4089 uint64_t rsv_c : 5; 4090 uint64_t use_ihdr : 1; 4091 uint64_t rsv_d : 6; 4092 uint64_t rskp_len : 7; 4093 uint64_t rsv_e : 1; 4094 uint64_t rparmode : 2; 4095 uint64_t rsv_f : 5; 4096 uint64_t pbp : 1; 4097 uint64_t reserved_44_63 : 20; 4098#endif 4099 } s; 4100 struct cvmx_npi_port32_instr_hdr_s cn30xx; 4101 struct cvmx_npi_port32_instr_hdr_s cn31xx; 4102 struct cvmx_npi_port32_instr_hdr_s cn38xx; 4103 struct cvmx_npi_port32_instr_hdr_s cn38xxp2; 4104 struct cvmx_npi_port32_instr_hdr_s cn50xx; 4105 struct cvmx_npi_port32_instr_hdr_s cn58xx; 4106 struct cvmx_npi_port32_instr_hdr_s cn58xxp1; 4107}; 4108typedef union cvmx_npi_port32_instr_hdr cvmx_npi_port32_instr_hdr_t; 4109 4110/** 4111 * cvmx_npi_port33_instr_hdr 4112 * 4113 * NPI_PORT33_INSTR_HDR = NPI Port 33 Instruction Header 4114 * 4115 * Contains bits [62:42] of the Instruction Header for port 33. 4116 */ 4117union cvmx_npi_port33_instr_hdr { 4118 uint64_t u64; 4119 struct cvmx_npi_port33_instr_hdr_s { 4120#ifdef __BIG_ENDIAN_BITFIELD 4121 uint64_t reserved_44_63 : 20; 4122 uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */ 4123 uint64_t rsv_f : 5; /**< Reserved */ 4124 uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */ 4125 uint64_t rsv_e : 1; /**< Reserved */ 4126 uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */ 4127 uint64_t rsv_d : 6; /**< Reserved */ 4128 uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent 4129 as part of the packet data, regardless of the 4130 value of bit [63] of the instruction header. 4131 USE_IHDR must be set whenever PBP is set. */ 4132 uint64_t rsv_c : 5; /**< Reserved */ 4133 uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet 4134 is not raw and PBP is not set. */ 4135 uint64_t rsv_b : 1; /**< Reserved 4136 instruction header sent to IPD. */ 4137 uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet 4138 is not raw and PBP is not set. */ 4139 uint64_t rsv_a : 6; /**< Reserved */ 4140#else 4141 uint64_t rsv_a : 6; 4142 uint64_t skp_len : 7; 4143 uint64_t rsv_b : 1; 4144 uint64_t par_mode : 2; 4145 uint64_t rsv_c : 5; 4146 uint64_t use_ihdr : 1; 4147 uint64_t rsv_d : 6; 4148 uint64_t rskp_len : 7; 4149 uint64_t rsv_e : 1; 4150 uint64_t rparmode : 2; 4151 uint64_t rsv_f : 5; 4152 uint64_t pbp : 1; 4153 uint64_t reserved_44_63 : 20; 4154#endif 4155 } s; 4156 struct cvmx_npi_port33_instr_hdr_s cn31xx; 4157 struct cvmx_npi_port33_instr_hdr_s cn38xx; 4158 struct cvmx_npi_port33_instr_hdr_s cn38xxp2; 4159 struct cvmx_npi_port33_instr_hdr_s cn50xx; 4160 struct cvmx_npi_port33_instr_hdr_s cn58xx; 4161 struct cvmx_npi_port33_instr_hdr_s cn58xxp1; 4162}; 4163typedef union cvmx_npi_port33_instr_hdr cvmx_npi_port33_instr_hdr_t; 4164 4165/** 4166 * cvmx_npi_port34_instr_hdr 4167 * 4168 * NPI_PORT34_INSTR_HDR = NPI Port 34 Instruction Header 4169 * 4170 * Contains bits [62:42] of the Instruction Header for port 34. Added for PASS-2. 4171 */ 4172union cvmx_npi_port34_instr_hdr { 4173 uint64_t u64; 4174 struct cvmx_npi_port34_instr_hdr_s { 4175#ifdef __BIG_ENDIAN_BITFIELD 4176 uint64_t reserved_44_63 : 20; 4177 uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */ 4178 uint64_t rsv_f : 5; /**< Reserved */ 4179 uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */ 4180 uint64_t rsv_e : 1; /**< Reserved */ 4181 uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */ 4182 uint64_t rsv_d : 6; /**< Reserved */ 4183 uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent 4184 as part of the packet data, regardless of the 4185 value of bit [63] of the instruction header. 4186 USE_IHDR must be set whenever PBP is set. */ 4187 uint64_t rsv_c : 5; /**< Reserved */ 4188 uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet 4189 is not raw and PBP is not set. */ 4190 uint64_t rsv_b : 1; /**< Reserved 4191 instruction header sent to IPD. */ 4192 uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet 4193 is not raw and PBP is not set. */ 4194 uint64_t rsv_a : 6; /**< Reserved */ 4195#else 4196 uint64_t rsv_a : 6; 4197 uint64_t skp_len : 7; 4198 uint64_t rsv_b : 1; 4199 uint64_t par_mode : 2; 4200 uint64_t rsv_c : 5; 4201 uint64_t use_ihdr : 1; 4202 uint64_t rsv_d : 6; 4203 uint64_t rskp_len : 7; 4204 uint64_t rsv_e : 1; 4205 uint64_t rparmode : 2; 4206 uint64_t rsv_f : 5; 4207 uint64_t pbp : 1; 4208 uint64_t reserved_44_63 : 20; 4209#endif 4210 } s; 4211 struct cvmx_npi_port34_instr_hdr_s cn38xx; 4212 struct cvmx_npi_port34_instr_hdr_s cn38xxp2; 4213 struct cvmx_npi_port34_instr_hdr_s cn58xx; 4214 struct cvmx_npi_port34_instr_hdr_s cn58xxp1; 4215}; 4216typedef union cvmx_npi_port34_instr_hdr cvmx_npi_port34_instr_hdr_t; 4217 4218/** 4219 * cvmx_npi_port35_instr_hdr 4220 * 4221 * NPI_PORT35_INSTR_HDR = NPI Port 35 Instruction Header 4222 * 4223 * Contains bits [62:42] of the Instruction Header for port 35. Added for PASS-2. 4224 */ 4225union cvmx_npi_port35_instr_hdr { 4226 uint64_t u64; 4227 struct cvmx_npi_port35_instr_hdr_s { 4228#ifdef __BIG_ENDIAN_BITFIELD 4229 uint64_t reserved_44_63 : 20; 4230 uint64_t pbp : 1; /**< Enable Packet-by-packet mode. */ 4231 uint64_t rsv_f : 5; /**< Reserved */ 4232 uint64_t rparmode : 2; /**< Parse Mode. Used when packet is raw and PBP==0. */ 4233 uint64_t rsv_e : 1; /**< Reserved */ 4234 uint64_t rskp_len : 7; /**< Skip Length. Used when packet is raw and PBP==0. */ 4235 uint64_t rsv_d : 6; /**< Reserved */ 4236 uint64_t use_ihdr : 1; /**< When set '1' the instruction header will be sent 4237 as part of the packet data, regardless of the 4238 value of bit [63] of the instruction header. 4239 USE_IHDR must be set whenever PBP is set. */ 4240 uint64_t rsv_c : 5; /**< Reserved */ 4241 uint64_t par_mode : 2; /**< Parse Mode. Used when USE_IHDR is set and packet 4242 is not raw and PBP is not set. */ 4243 uint64_t rsv_b : 1; /**< Reserved 4244 instruction header sent to IPD. */ 4245 uint64_t skp_len : 7; /**< Skip Length. Used when USE_IHDR is set and packet 4246 is not raw and PBP is not set. */ 4247 uint64_t rsv_a : 6; /**< Reserved */ 4248#else 4249 uint64_t rsv_a : 6; 4250 uint64_t skp_len : 7; 4251 uint64_t rsv_b : 1; 4252 uint64_t par_mode : 2; 4253 uint64_t rsv_c : 5; 4254 uint64_t use_ihdr : 1; 4255 uint64_t rsv_d : 6; 4256 uint64_t rskp_len : 7; 4257 uint64_t rsv_e : 1; 4258 uint64_t rparmode : 2; 4259 uint64_t rsv_f : 5; 4260 uint64_t pbp : 1; 4261 uint64_t reserved_44_63 : 20; 4262#endif 4263 } s; 4264 struct cvmx_npi_port35_instr_hdr_s cn38xx; 4265 struct cvmx_npi_port35_instr_hdr_s cn38xxp2; 4266 struct cvmx_npi_port35_instr_hdr_s cn58xx; 4267 struct cvmx_npi_port35_instr_hdr_s cn58xxp1; 4268}; 4269typedef union cvmx_npi_port35_instr_hdr cvmx_npi_port35_instr_hdr_t; 4270 4271/** 4272 * cvmx_npi_port_bp_control 4273 * 4274 * NPI_PORT_BP_CONTROL = Port Backpressure Control 4275 * 4276 * Enables Port Level Backpressure 4277 */ 4278union cvmx_npi_port_bp_control { 4279 uint64_t u64; 4280 struct cvmx_npi_port_bp_control_s { 4281#ifdef __BIG_ENDIAN_BITFIELD 4282 uint64_t reserved_8_63 : 56; 4283 uint64_t bp_on : 4; /**< Port 35-32 port level backpressure applied. */ 4284 uint64_t enb : 4; /**< Enables port level backpressure from the IPD. */ 4285#else 4286 uint64_t enb : 4; 4287 uint64_t bp_on : 4; 4288 uint64_t reserved_8_63 : 56; 4289#endif 4290 } s; 4291 struct cvmx_npi_port_bp_control_s cn30xx; 4292 struct cvmx_npi_port_bp_control_s cn31xx; 4293 struct cvmx_npi_port_bp_control_s cn38xx; 4294 struct cvmx_npi_port_bp_control_s cn38xxp2; 4295 struct cvmx_npi_port_bp_control_s cn50xx; 4296 struct cvmx_npi_port_bp_control_s cn58xx; 4297 struct cvmx_npi_port_bp_control_s cn58xxp1; 4298}; 4299typedef union cvmx_npi_port_bp_control cvmx_npi_port_bp_control_t; 4300 4301/** 4302 * cvmx_npi_rsl_int_blocks 4303 * 4304 * RSL_INT_BLOCKS = RSL Interrupt Blocks Register 4305 * 4306 * Reading this register will return a vector with a bit set '1' for a corresponding RSL block 4307 * that presently has an interrupt pending. The Field Description below supplies the name of the 4308 * register that software should read to find out why that intterupt bit is set. 4309 */ 4310union cvmx_npi_rsl_int_blocks { 4311 uint64_t u64; 4312 struct cvmx_npi_rsl_int_blocks_s { 4313#ifdef __BIG_ENDIAN_BITFIELD 4314 uint64_t reserved_32_63 : 32; 4315 uint64_t rint_31 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4316 uint64_t iob : 1; /**< IOB_INT_SUM */ 4317 uint64_t reserved_28_29 : 2; 4318 uint64_t rint_27 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4319 uint64_t rint_26 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4320 uint64_t rint_25 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4321 uint64_t rint_24 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4322 uint64_t asx1 : 1; /**< ASX1_INT_REG */ 4323 uint64_t asx0 : 1; /**< ASX0_INT_REG */ 4324 uint64_t rint_21 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4325 uint64_t pip : 1; /**< PIP_INT_REG. */ 4326 uint64_t spx1 : 1; /**< SPX1_INT_REG & STX1_INT_REG */ 4327 uint64_t spx0 : 1; /**< SPX0_INT_REG & STX0_INT_REG */ 4328 uint64_t lmc : 1; /**< LMC_MEM_CFG0 */ 4329 uint64_t l2c : 1; /**< L2T_ERR & L2D_ERR */ 4330 uint64_t rint_15 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4331 uint64_t reserved_13_14 : 2; 4332 uint64_t pow : 1; /**< POW_ECC_ERR */ 4333 uint64_t tim : 1; /**< TIM_REG_ERROR */ 4334 uint64_t pko : 1; /**< PKO_REG_ERROR */ 4335 uint64_t ipd : 1; /**< IPD_INT_SUM */ 4336 uint64_t rint_8 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4337 uint64_t zip : 1; /**< ZIP_ERROR */ 4338 uint64_t dfa : 1; /**< DFA_ERR */ 4339 uint64_t fpa : 1; /**< FPA_INT_SUM */ 4340 uint64_t key : 1; /**< KEY_INT_SUM */ 4341 uint64_t npi : 1; /**< NPI_INT_SUM */ 4342 uint64_t gmx1 : 1; /**< GMX1_RX*_INT_REG & GMX1_TX_INT_REG */ 4343 uint64_t gmx0 : 1; /**< GMX0_RX*_INT_REG & GMX0_TX_INT_REG */ 4344 uint64_t mio : 1; /**< MIO_BOOT_ERR */ 4345#else 4346 uint64_t mio : 1; 4347 uint64_t gmx0 : 1; 4348 uint64_t gmx1 : 1; 4349 uint64_t npi : 1; 4350 uint64_t key : 1; 4351 uint64_t fpa : 1; 4352 uint64_t dfa : 1; 4353 uint64_t zip : 1; 4354 uint64_t rint_8 : 1; 4355 uint64_t ipd : 1; 4356 uint64_t pko : 1; 4357 uint64_t tim : 1; 4358 uint64_t pow : 1; 4359 uint64_t reserved_13_14 : 2; 4360 uint64_t rint_15 : 1; 4361 uint64_t l2c : 1; 4362 uint64_t lmc : 1; 4363 uint64_t spx0 : 1; 4364 uint64_t spx1 : 1; 4365 uint64_t pip : 1; 4366 uint64_t rint_21 : 1; 4367 uint64_t asx0 : 1; 4368 uint64_t asx1 : 1; 4369 uint64_t rint_24 : 1; 4370 uint64_t rint_25 : 1; 4371 uint64_t rint_26 : 1; 4372 uint64_t rint_27 : 1; 4373 uint64_t reserved_28_29 : 2; 4374 uint64_t iob : 1; 4375 uint64_t rint_31 : 1; 4376 uint64_t reserved_32_63 : 32; 4377#endif 4378 } s; 4379 struct cvmx_npi_rsl_int_blocks_cn30xx { 4380#ifdef __BIG_ENDIAN_BITFIELD 4381 uint64_t reserved_32_63 : 32; 4382 uint64_t rint_31 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4383 uint64_t iob : 1; /**< IOB_INT_SUM */ 4384 uint64_t rint_29 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4385 uint64_t rint_28 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4386 uint64_t rint_27 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4387 uint64_t rint_26 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4388 uint64_t rint_25 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4389 uint64_t rint_24 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4390 uint64_t asx1 : 1; /**< ASX1_INT_REG */ 4391 uint64_t asx0 : 1; /**< ASX0_INT_REG */ 4392 uint64_t rint_21 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4393 uint64_t pip : 1; /**< PIP_INT_REG. */ 4394 uint64_t spx1 : 1; /**< SPX1_INT_REG & STX1_INT_REG */ 4395 uint64_t spx0 : 1; /**< SPX0_INT_REG & STX0_INT_REG */ 4396 uint64_t lmc : 1; /**< LMC_MEM_CFG0 */ 4397 uint64_t l2c : 1; /**< L2T_ERR & L2D_ERR */ 4398 uint64_t rint_15 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4399 uint64_t rint_14 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4400 uint64_t usb : 1; /**< USBN_INT_SUM */ 4401 uint64_t pow : 1; /**< POW_ECC_ERR */ 4402 uint64_t tim : 1; /**< TIM_REG_ERROR */ 4403 uint64_t pko : 1; /**< PKO_REG_ERROR */ 4404 uint64_t ipd : 1; /**< IPD_INT_SUM */ 4405 uint64_t rint_8 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4406 uint64_t zip : 1; /**< ZIP_ERROR */ 4407 uint64_t dfa : 1; /**< DFA_ERR */ 4408 uint64_t fpa : 1; /**< FPA_INT_SUM */ 4409 uint64_t key : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4410 uint64_t npi : 1; /**< NPI_INT_SUM */ 4411 uint64_t gmx1 : 1; /**< GMX1_RX*_INT_REG & GMX1_TX_INT_REG */ 4412 uint64_t gmx0 : 1; /**< GMX0_RX*_INT_REG & GMX0_TX_INT_REG */ 4413 uint64_t mio : 1; /**< MIO_BOOT_ERR */ 4414#else 4415 uint64_t mio : 1; 4416 uint64_t gmx0 : 1; 4417 uint64_t gmx1 : 1; 4418 uint64_t npi : 1; 4419 uint64_t key : 1; 4420 uint64_t fpa : 1; 4421 uint64_t dfa : 1; 4422 uint64_t zip : 1; 4423 uint64_t rint_8 : 1; 4424 uint64_t ipd : 1; 4425 uint64_t pko : 1; 4426 uint64_t tim : 1; 4427 uint64_t pow : 1; 4428 uint64_t usb : 1; 4429 uint64_t rint_14 : 1; 4430 uint64_t rint_15 : 1; 4431 uint64_t l2c : 1; 4432 uint64_t lmc : 1; 4433 uint64_t spx0 : 1; 4434 uint64_t spx1 : 1; 4435 uint64_t pip : 1; 4436 uint64_t rint_21 : 1; 4437 uint64_t asx0 : 1; 4438 uint64_t asx1 : 1; 4439 uint64_t rint_24 : 1; 4440 uint64_t rint_25 : 1; 4441 uint64_t rint_26 : 1; 4442 uint64_t rint_27 : 1; 4443 uint64_t rint_28 : 1; 4444 uint64_t rint_29 : 1; 4445 uint64_t iob : 1; 4446 uint64_t rint_31 : 1; 4447 uint64_t reserved_32_63 : 32; 4448#endif 4449 } cn30xx; 4450 struct cvmx_npi_rsl_int_blocks_cn30xx cn31xx; 4451 struct cvmx_npi_rsl_int_blocks_cn38xx { 4452#ifdef __BIG_ENDIAN_BITFIELD 4453 uint64_t reserved_32_63 : 32; 4454 uint64_t rint_31 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4455 uint64_t iob : 1; /**< IOB_INT_SUM */ 4456 uint64_t rint_29 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4457 uint64_t rint_28 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4458 uint64_t rint_27 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4459 uint64_t rint_26 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4460 uint64_t rint_25 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4461 uint64_t rint_24 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4462 uint64_t asx1 : 1; /**< ASX1_INT_REG */ 4463 uint64_t asx0 : 1; /**< ASX0_INT_REG */ 4464 uint64_t rint_21 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4465 uint64_t pip : 1; /**< PIP_INT_REG. */ 4466 uint64_t spx1 : 1; /**< SPX1_INT_REG & STX1_INT_REG */ 4467 uint64_t spx0 : 1; /**< SPX0_INT_REG & STX0_INT_REG */ 4468 uint64_t lmc : 1; /**< LMC_MEM_CFG0 */ 4469 uint64_t l2c : 1; /**< L2T_ERR & L2D_ERR */ 4470 uint64_t rint_15 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4471 uint64_t rint_14 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4472 uint64_t rint_13 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4473 uint64_t pow : 1; /**< POW_ECC_ERR */ 4474 uint64_t tim : 1; /**< TIM_REG_ERROR */ 4475 uint64_t pko : 1; /**< PKO_REG_ERROR */ 4476 uint64_t ipd : 1; /**< IPD_INT_SUM */ 4477 uint64_t rint_8 : 1; /**< Set '1' when RSL bLock has an interrupt. */ 4478 uint64_t zip : 1; /**< ZIP_ERROR */ 4479 uint64_t dfa : 1; /**< DFA_ERR */ 4480 uint64_t fpa : 1; /**< FPA_INT_SUM */ 4481 uint64_t key : 1; /**< KEY_INT_SUM */ 4482 uint64_t npi : 1; /**< NPI_INT_SUM */ 4483 uint64_t gmx1 : 1; /**< GMX1_RX*_INT_REG & GMX1_TX_INT_REG */ 4484 uint64_t gmx0 : 1; /**< GMX0_RX*_INT_REG & GMX0_TX_INT_REG */ 4485 uint64_t mio : 1; /**< MIO_BOOT_ERR */ 4486#else 4487 uint64_t mio : 1; 4488 uint64_t gmx0 : 1; 4489 uint64_t gmx1 : 1; 4490 uint64_t npi : 1; 4491 uint64_t key : 1; 4492 uint64_t fpa : 1; 4493 uint64_t dfa : 1; 4494 uint64_t zip : 1; 4495 uint64_t rint_8 : 1; 4496 uint64_t ipd : 1; 4497 uint64_t pko : 1; 4498 uint64_t tim : 1; 4499 uint64_t pow : 1; 4500 uint64_t rint_13 : 1; 4501 uint64_t rint_14 : 1; 4502 uint64_t rint_15 : 1; 4503 uint64_t l2c : 1; 4504 uint64_t lmc : 1; 4505 uint64_t spx0 : 1; 4506 uint64_t spx1 : 1; 4507 uint64_t pip : 1; 4508 uint64_t rint_21 : 1; 4509 uint64_t asx0 : 1; 4510 uint64_t asx1 : 1; 4511 uint64_t rint_24 : 1; 4512 uint64_t rint_25 : 1; 4513 uint64_t rint_26 : 1; 4514 uint64_t rint_27 : 1; 4515 uint64_t rint_28 : 1; 4516 uint64_t rint_29 : 1; 4517 uint64_t iob : 1; 4518 uint64_t rint_31 : 1; 4519 uint64_t reserved_32_63 : 32; 4520#endif 4521 } cn38xx; 4522 struct cvmx_npi_rsl_int_blocks_cn38xx cn38xxp2; 4523 struct cvmx_npi_rsl_int_blocks_cn50xx { 4524#ifdef __BIG_ENDIAN_BITFIELD 4525 uint64_t reserved_31_63 : 33; 4526 uint64_t iob : 1; /**< IOB_INT_SUM */ 4527 uint64_t lmc1 : 1; /**< Always reads as zero */ 4528 uint64_t agl : 1; /**< Always reads as zero */ 4529 uint64_t reserved_24_27 : 4; 4530 uint64_t asx1 : 1; /**< Always reads as zero */ 4531 uint64_t asx0 : 1; /**< ASX0_INT_REG */ 4532 uint64_t reserved_21_21 : 1; 4533 uint64_t pip : 1; /**< PIP_INT_REG. */ 4534 uint64_t spx1 : 1; /**< Always reads as zero */ 4535 uint64_t spx0 : 1; /**< Always reads as zero */ 4536 uint64_t lmc : 1; /**< LMC_MEM_CFG0 */ 4537 uint64_t l2c : 1; /**< L2T_ERR & L2D_ERR */ 4538 uint64_t reserved_15_15 : 1; 4539 uint64_t rad : 1; /**< Always reads as zero */ 4540 uint64_t usb : 1; /**< USBN_INT_SUM */ 4541 uint64_t pow : 1; /**< POW_ECC_ERR */ 4542 uint64_t tim : 1; /**< TIM_REG_ERROR */ 4543 uint64_t pko : 1; /**< PKO_REG_ERROR */ 4544 uint64_t ipd : 1; /**< IPD_INT_SUM */ 4545 uint64_t reserved_8_8 : 1; 4546 uint64_t zip : 1; /**< Always reads as zero */ 4547 uint64_t dfa : 1; /**< Always reads as zero */ 4548 uint64_t fpa : 1; /**< FPA_INT_SUM */ 4549 uint64_t key : 1; /**< Always reads as zero */ 4550 uint64_t npi : 1; /**< NPI_INT_SUM */ 4551 uint64_t gmx1 : 1; /**< Always reads as zero */ 4552 uint64_t gmx0 : 1; /**< GMX0_RX*_INT_REG & GMX0_TX_INT_REG */ 4553 uint64_t mio : 1; /**< MIO_BOOT_ERR */ 4554#else 4555 uint64_t mio : 1; 4556 uint64_t gmx0 : 1; 4557 uint64_t gmx1 : 1; 4558 uint64_t npi : 1; 4559 uint64_t key : 1; 4560 uint64_t fpa : 1; 4561 uint64_t dfa : 1; 4562 uint64_t zip : 1; 4563 uint64_t reserved_8_8 : 1; 4564 uint64_t ipd : 1; 4565 uint64_t pko : 1; 4566 uint64_t tim : 1; 4567 uint64_t pow : 1; 4568 uint64_t usb : 1; 4569 uint64_t rad : 1; 4570 uint64_t reserved_15_15 : 1; 4571 uint64_t l2c : 1; 4572 uint64_t lmc : 1; 4573 uint64_t spx0 : 1; 4574 uint64_t spx1 : 1; 4575 uint64_t pip : 1; 4576 uint64_t reserved_21_21 : 1; 4577 uint64_t asx0 : 1; 4578 uint64_t asx1 : 1; 4579 uint64_t reserved_24_27 : 4; 4580 uint64_t agl : 1; 4581 uint64_t lmc1 : 1; 4582 uint64_t iob : 1; 4583 uint64_t reserved_31_63 : 33; 4584#endif 4585 } cn50xx; 4586 struct cvmx_npi_rsl_int_blocks_cn38xx cn58xx; 4587 struct cvmx_npi_rsl_int_blocks_cn38xx cn58xxp1; 4588}; 4589typedef union cvmx_npi_rsl_int_blocks cvmx_npi_rsl_int_blocks_t; 4590 4591/** 4592 * cvmx_npi_size_input# 4593 * 4594 * NPI_SIZE_INPUT0 = NPI's Size for Input 0 Register 4595 * 4596 * The size (in instructions) of Instruction Queue-0. 4597 */ 4598union cvmx_npi_size_inputx { 4599 uint64_t u64; 4600 struct cvmx_npi_size_inputx_s { 4601#ifdef __BIG_ENDIAN_BITFIELD 4602 uint64_t reserved_32_63 : 32; 4603 uint64_t size : 32; /**< The size of the Instruction Queue used by Octane. 4604 The value [SIZE] is in Instructions. 4605 A value of 0 in this field is illegal. */ 4606#else 4607 uint64_t size : 32; 4608 uint64_t reserved_32_63 : 32; 4609#endif 4610 } s; 4611 struct cvmx_npi_size_inputx_s cn30xx; 4612 struct cvmx_npi_size_inputx_s cn31xx; 4613 struct cvmx_npi_size_inputx_s cn38xx; 4614 struct cvmx_npi_size_inputx_s cn38xxp2; 4615 struct cvmx_npi_size_inputx_s cn50xx; 4616 struct cvmx_npi_size_inputx_s cn58xx; 4617 struct cvmx_npi_size_inputx_s cn58xxp1; 4618}; 4619typedef union cvmx_npi_size_inputx cvmx_npi_size_inputx_t; 4620 4621/** 4622 * cvmx_npi_win_read_to 4623 * 4624 * NPI_WIN_READ_TO = NPI WINDOW READ Timeout Register 4625 * 4626 * Number of core clocks to wait before timing out on a WINDOW-READ to the NCB. 4627 */ 4628union cvmx_npi_win_read_to { 4629 uint64_t u64; 4630 struct cvmx_npi_win_read_to_s { 4631#ifdef __BIG_ENDIAN_BITFIELD 4632 uint64_t reserved_32_63 : 32; 4633 uint64_t time : 32; /**< Time to wait in core clocks. A value of 0 will 4634 cause no timeouts. */ 4635#else 4636 uint64_t time : 32; 4637 uint64_t reserved_32_63 : 32; 4638#endif 4639 } s; 4640 struct cvmx_npi_win_read_to_s cn30xx; 4641 struct cvmx_npi_win_read_to_s cn31xx; 4642 struct cvmx_npi_win_read_to_s cn38xx; 4643 struct cvmx_npi_win_read_to_s cn38xxp2; 4644 struct cvmx_npi_win_read_to_s cn50xx; 4645 struct cvmx_npi_win_read_to_s cn58xx; 4646 struct cvmx_npi_win_read_to_s cn58xxp1; 4647}; 4648typedef union cvmx_npi_win_read_to cvmx_npi_win_read_to_t; 4649 4650#endif 4651