root/drivers/crypto/cavium/nitrox/nitrox_csr.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __NITROX_CSR_H
   3 #define __NITROX_CSR_H
   4 
   5 #include <asm/byteorder.h>
   6 #include <linux/types.h>
   7 
   8 /* EMU clusters */
   9 #define NR_CLUSTERS             4
  10 /* Maximum cores per cluster,
  11  * varies based on partname
  12  */
  13 #define AE_CORES_PER_CLUSTER    20
  14 #define SE_CORES_PER_CLUSTER    16
  15 
  16 #define AE_MAX_CORES    (AE_CORES_PER_CLUSTER * NR_CLUSTERS)
  17 #define SE_MAX_CORES    (SE_CORES_PER_CLUSTER * NR_CLUSTERS)
  18 #define ZIP_MAX_CORES   5
  19 
  20 /* BIST registers */
  21 #define EMU_BIST_STATUSX(_i)    (0x1402700 + ((_i) * 0x40000))
  22 #define UCD_BIST_STATUS         0x12C0070
  23 #define NPS_CORE_BIST_REG       0x10000E8
  24 #define NPS_CORE_NPC_BIST_REG   0x1000128
  25 #define NPS_PKT_SLC_BIST_REG    0x1040088
  26 #define NPS_PKT_IN_BIST_REG     0x1040100
  27 #define POM_BIST_REG            0x11C0100
  28 #define BMI_BIST_REG            0x1140080
  29 #define EFL_CORE_BIST_REGX(_i)  (0x1240100 + ((_i) * 0x400))
  30 #define EFL_TOP_BIST_STAT       0x1241090
  31 #define BMO_BIST_REG            0x1180080
  32 #define LBC_BIST_STATUS         0x1200020
  33 #define PEM_BIST_STATUSX(_i)    (0x1080468 | ((_i) << 18))
  34 
  35 /* EMU registers */
  36 #define EMU_SE_ENABLEX(_i)      (0x1400000 + ((_i) * 0x40000))
  37 #define EMU_AE_ENABLEX(_i)      (0x1400008 + ((_i) * 0x40000))
  38 #define EMU_WD_INT_ENA_W1SX(_i) (0x1402318 + ((_i) * 0x40000))
  39 #define EMU_GE_INT_ENA_W1SX(_i) (0x1402518 + ((_i) * 0x40000))
  40 #define EMU_FUSE_MAPX(_i)       (0x1402708 + ((_i) * 0x40000))
  41 
  42 /* UCD registers */
  43 #define UCD_SE_EID_UCODE_BLOCK_NUMX(_i) (0x12C0000 + ((_i) * 0x1000))
  44 #define UCD_AE_EID_UCODE_BLOCK_NUMX(_i) (0x12C0008 + ((_i) * 0x800))
  45 #define UCD_UCODE_LOAD_BLOCK_NUM        0x12C0010
  46 #define UCD_UCODE_LOAD_IDX_DATAX(_i)    (0x12C0018 + ((_i) * 0x20))
  47 #define UCD_SE_CNTX(_i)                 (0x12C0040 + ((_i) * 0x1000))
  48 #define UCD_AE_CNTX(_i)                 (0x12C0048 + ((_i) * 0x800))
  49 
  50 /* AQM registers */
  51 #define AQM_CTL                         0x1300000
  52 #define AQM_INT                         0x1300008
  53 #define AQM_DBELL_OVF_LO                0x1300010
  54 #define AQM_DBELL_OVF_HI                0x1300018
  55 #define AQM_DBELL_OVF_LO_W1S            0x1300020
  56 #define AQM_DBELL_OVF_LO_ENA_W1C        0x1300028
  57 #define AQM_DBELL_OVF_LO_ENA_W1S        0x1300030
  58 #define AQM_DBELL_OVF_HI_W1S            0x1300038
  59 #define AQM_DBELL_OVF_HI_ENA_W1C        0x1300040
  60 #define AQM_DBELL_OVF_HI_ENA_W1S        0x1300048
  61 #define AQM_DMA_RD_ERR_LO               0x1300050
  62 #define AQM_DMA_RD_ERR_HI               0x1300058
  63 #define AQM_DMA_RD_ERR_LO_W1S           0x1300060
  64 #define AQM_DMA_RD_ERR_LO_ENA_W1C       0x1300068
  65 #define AQM_DMA_RD_ERR_LO_ENA_W1S       0x1300070
  66 #define AQM_DMA_RD_ERR_HI_W1S           0x1300078
  67 #define AQM_DMA_RD_ERR_HI_ENA_W1C       0x1300080
  68 #define AQM_DMA_RD_ERR_HI_ENA_W1S       0x1300088
  69 #define AQM_EXEC_NA_LO                  0x1300090
  70 #define AQM_EXEC_NA_HI                  0x1300098
  71 #define AQM_EXEC_NA_LO_W1S              0x13000A0
  72 #define AQM_EXEC_NA_LO_ENA_W1C          0x13000A8
  73 #define AQM_EXEC_NA_LO_ENA_W1S          0x13000B0
  74 #define AQM_EXEC_NA_HI_W1S              0x13000B8
  75 #define AQM_EXEC_NA_HI_ENA_W1C          0x13000C0
  76 #define AQM_EXEC_NA_HI_ENA_W1S          0x13000C8
  77 #define AQM_EXEC_ERR_LO                 0x13000D0
  78 #define AQM_EXEC_ERR_HI                 0x13000D8
  79 #define AQM_EXEC_ERR_LO_W1S             0x13000E0
  80 #define AQM_EXEC_ERR_LO_ENA_W1C         0x13000E8
  81 #define AQM_EXEC_ERR_LO_ENA_W1S         0x13000F0
  82 #define AQM_EXEC_ERR_HI_W1S             0x13000F8
  83 #define AQM_EXEC_ERR_HI_ENA_W1C         0x1300100
  84 #define AQM_EXEC_ERR_HI_ENA_W1S         0x1300108
  85 #define AQM_ECC_INT                     0x1300110
  86 #define AQM_ECC_INT_W1S                 0x1300118
  87 #define AQM_ECC_INT_ENA_W1C             0x1300120
  88 #define AQM_ECC_INT_ENA_W1S             0x1300128
  89 #define AQM_ECC_CTL                     0x1300130
  90 #define AQM_BIST_STATUS                 0x1300138
  91 #define AQM_CMD_INF_THRX(x)             (0x1300400 + ((x) * 0x8))
  92 #define AQM_CMD_INFX(x)                 (0x1300800 + ((x) * 0x8))
  93 #define AQM_GRP_EXECMSK_LOX(x)          (0x1300C00 + ((x) * 0x10))
  94 #define AQM_GRP_EXECMSK_HIX(x)          (0x1300C08 + ((x) * 0x10))
  95 #define AQM_ACTIVITY_STAT_LO            0x1300C80
  96 #define AQM_ACTIVITY_STAT_HI            0x1300C88
  97 #define AQM_Q_CMD_PROCX(x)              (0x1301000 + ((x) * 0x8))
  98 #define AQM_PERF_CTL_LO                 0x1301400
  99 #define AQM_PERF_CTL_HI                 0x1301408
 100 #define AQM_PERF_CNT                    0x1301410
 101 
 102 #define AQMQ_DRBLX(x)                   (0x20000 + ((x) * 0x40000))
 103 #define AQMQ_QSZX(x)                    (0x20008 + ((x) * 0x40000))
 104 #define AQMQ_BADRX(x)                   (0x20010 + ((x) * 0x40000))
 105 #define AQMQ_NXT_CMDX(x)                (0x20018 + ((x) * 0x40000))
 106 #define AQMQ_CMD_CNTX(x)                (0x20020 + ((x) * 0x40000))
 107 #define AQMQ_CMP_THRX(x)                (0x20028 + ((x) * 0x40000))
 108 #define AQMQ_CMP_CNTX(x)                (0x20030 + ((x) * 0x40000))
 109 #define AQMQ_TIM_LDX(x)                 (0x20038 + ((x) * 0x40000))
 110 #define AQMQ_TIMERX(x)                  (0x20040 + ((x) * 0x40000))
 111 #define AQMQ_ENX(x)                     (0x20048 + ((x) * 0x40000))
 112 #define AQMQ_ACTIVITY_STATX(x)          (0x20050 + ((x) * 0x40000))
 113 #define AQM_VF_CMP_STATX(x)             (0x28000 + ((x) * 0x40000))
 114 
 115 /* NPS core registers */
 116 #define NPS_CORE_GBL_VFCFG      0x1000000
 117 #define NPS_CORE_CONTROL        0x1000008
 118 #define NPS_CORE_INT_ACTIVE     0x1000080
 119 #define NPS_CORE_INT            0x10000A0
 120 #define NPS_CORE_INT_ENA_W1S    0x10000B8
 121 #define NPS_STATS_PKT_DMA_RD_CNT        0x1000180
 122 #define NPS_STATS_PKT_DMA_WR_CNT        0x1000190
 123 
 124 /* NPS packet registers */
 125 #define NPS_PKT_INT                     0x1040018
 126 #define NPS_PKT_MBOX_INT_LO             0x1040020
 127 #define NPS_PKT_MBOX_INT_LO_ENA_W1C     0x1040030
 128 #define NPS_PKT_MBOX_INT_LO_ENA_W1S     0x1040038
 129 #define NPS_PKT_MBOX_INT_HI             0x1040040
 130 #define NPS_PKT_MBOX_INT_HI_ENA_W1C     0x1040050
 131 #define NPS_PKT_MBOX_INT_HI_ENA_W1S     0x1040058
 132 #define NPS_PKT_IN_RERR_HI              0x1040108
 133 #define NPS_PKT_IN_RERR_HI_ENA_W1S      0x1040120
 134 #define NPS_PKT_IN_RERR_LO              0x1040128
 135 #define NPS_PKT_IN_RERR_LO_ENA_W1S      0x1040140
 136 #define NPS_PKT_IN_ERR_TYPE             0x1040148
 137 #define NPS_PKT_IN_ERR_TYPE_ENA_W1S     0x1040160
 138 #define NPS_PKT_IN_INSTR_CTLX(_i)       (0x10060 + ((_i) * 0x40000))
 139 #define NPS_PKT_IN_INSTR_BADDRX(_i)     (0x10068 + ((_i) * 0x40000))
 140 #define NPS_PKT_IN_INSTR_RSIZEX(_i)     (0x10070 + ((_i) * 0x40000))
 141 #define NPS_PKT_IN_DONE_CNTSX(_i)       (0x10080 + ((_i) * 0x40000))
 142 #define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i)       (0x10078 + ((_i) * 0x40000))
 143 #define NPS_PKT_IN_INT_LEVELSX(_i)              (0x10088 + ((_i) * 0x40000))
 144 
 145 #define NPS_PKT_SLC_RERR_HI             0x1040208
 146 #define NPS_PKT_SLC_RERR_HI_ENA_W1S     0x1040220
 147 #define NPS_PKT_SLC_RERR_LO             0x1040228
 148 #define NPS_PKT_SLC_RERR_LO_ENA_W1S     0x1040240
 149 #define NPS_PKT_SLC_ERR_TYPE            0x1040248
 150 #define NPS_PKT_SLC_ERR_TYPE_ENA_W1S    0x1040260
 151 /* Mailbox PF->VF PF Accessible Data registers */
 152 #define NPS_PKT_MBOX_PF_VF_PFDATAX(_i)  (0x1040800 + ((_i) * 0x8))
 153 #define NPS_PKT_MBOX_VF_PF_PFDATAX(_i)  (0x1040C00 + ((_i) * 0x8))
 154 
 155 #define NPS_PKT_SLC_CTLX(_i)            (0x10000 + ((_i) * 0x40000))
 156 #define NPS_PKT_SLC_CNTSX(_i)           (0x10008 + ((_i) * 0x40000))
 157 #define NPS_PKT_SLC_INT_LEVELSX(_i)     (0x10010 + ((_i) * 0x40000))
 158 
 159 /* POM registers */
 160 #define POM_INT_ENA_W1S         0x11C0018
 161 #define POM_GRP_EXECMASKX(_i)   (0x11C1100 | ((_i) * 8))
 162 #define POM_INT         0x11C0000
 163 #define POM_PERF_CTL    0x11CC400
 164 
 165 /* BMI registers */
 166 #define BMI_INT         0x1140000
 167 #define BMI_CTL         0x1140020
 168 #define BMI_INT_ENA_W1S 0x1140018
 169 #define BMI_NPS_PKT_CNT 0x1140070
 170 
 171 /* EFL registers */
 172 #define EFL_CORE_INT_ENA_W1SX(_i)               (0x1240018 + ((_i) * 0x400))
 173 #define EFL_CORE_VF_ERR_INT0X(_i)               (0x1240050 + ((_i) * 0x400))
 174 #define EFL_CORE_VF_ERR_INT0_ENA_W1SX(_i)       (0x1240068 + ((_i) * 0x400))
 175 #define EFL_CORE_VF_ERR_INT1X(_i)               (0x1240070 + ((_i) * 0x400))
 176 #define EFL_CORE_VF_ERR_INT1_ENA_W1SX(_i)       (0x1240088 + ((_i) * 0x400))
 177 #define EFL_CORE_SE_ERR_INTX(_i)                (0x12400A0 + ((_i) * 0x400))
 178 #define EFL_RNM_CTL_STATUS                      0x1241800
 179 #define EFL_CORE_INTX(_i)                       (0x1240000 + ((_i) * 0x400))
 180 
 181 /* BMO registers */
 182 #define BMO_CTL2                0x1180028
 183 #define BMO_NPS_SLC_PKT_CNT     0x1180078
 184 
 185 /* LBC registers */
 186 #define LBC_INT                 0x1200000
 187 #define LBC_INVAL_CTL           0x1201010
 188 #define LBC_PLM_VF1_64_INT      0x1202008
 189 #define LBC_INVAL_STATUS        0x1202010
 190 #define LBC_INT_ENA_W1S         0x1203000
 191 #define LBC_PLM_VF1_64_INT_ENA_W1S      0x1205008
 192 #define LBC_PLM_VF65_128_INT            0x1206008
 193 #define LBC_ELM_VF1_64_INT              0x1208000
 194 #define LBC_PLM_VF65_128_INT_ENA_W1S    0x1209008
 195 #define LBC_ELM_VF1_64_INT_ENA_W1S      0x120B000
 196 #define LBC_ELM_VF65_128_INT            0x120C000
 197 #define LBC_ELM_VF65_128_INT_ENA_W1S    0x120F000
 198 
 199 #define RST_BOOT        0x10C1600
 200 #define FUS_DAT1        0x10C1408
 201 
 202 /* PEM registers */
 203 #define PEM0_INT 0x1080428
 204 
 205 /**
 206  * struct ucd_core_eid_ucode_block_num - Core Eid to Ucode Blk Mapping Registers
 207  * @ucode_len: Ucode length identifier 32KB or 64KB
 208  * @ucode_blk: Ucode Block Number
 209  */
 210 union ucd_core_eid_ucode_block_num {
 211         u64 value;
 212         struct {
 213 #if (defined(__BIG_ENDIAN_BITFIELD))
 214                 u64 raz_4_63 : 60;
 215                 u64 ucode_len : 1;
 216                 u64 ucode_blk : 3;
 217 #else
 218                 u64 ucode_blk : 3;
 219                 u64 ucode_len : 1;
 220                 u64 raz_4_63 : 60;
 221 #endif
 222         };
 223 };
 224 
 225 /**
 226  * struct aqm_grp_execmsk_lo - Available AE engines for the group
 227  * @exec_0_to_39: AE engines 0 to 39 status
 228  */
 229 union aqm_grp_execmsk_lo {
 230         u64 value;
 231         struct {
 232 #if (defined(__BIG_ENDIAN_BITFIELD))
 233                 u64 raz_40_63 : 24;
 234                 u64 exec_0_to_39 : 40;
 235 #else
 236                 u64 exec_0_to_39 : 40;
 237                 u64 raz_40_63 : 24;
 238 #endif
 239         };
 240 };
 241 
 242 /**
 243  * struct aqm_grp_execmsk_hi - Available AE engines for the group
 244  * @exec_40_to_79: AE engines 40 to 79 status
 245  */
 246 union aqm_grp_execmsk_hi {
 247         u64 value;
 248         struct {
 249 #if (defined(__BIG_ENDIAN_BITFIELD))
 250                 u64 raz_40_63 : 24;
 251                 u64 exec_40_to_79 : 40;
 252 #else
 253                 u64 exec_40_to_79 : 40;
 254                 u64 raz_40_63 : 24;
 255 #endif
 256         };
 257 };
 258 
 259 /**
 260  * struct aqmq_drbl - AQM Queue Doorbell Counter Registers
 261  * @dbell_count: Doorbell Counter
 262  */
 263 union aqmq_drbl {
 264         u64 value;
 265         struct {
 266 #if (defined(__BIG_ENDIAN_BITFIELD))
 267                 u64 raz_32_63 : 32;
 268                 u64 dbell_count : 32;
 269 #else
 270                 u64 dbell_count : 32;
 271                 u64 raz_32_63 : 32;
 272 #endif
 273         };
 274 };
 275 
 276 /**
 277  * struct aqmq_qsz - AQM Queue Host Queue Size Registers
 278  * @host_queue_size: Size, in numbers of 'aqmq_command_s' command
 279  * of the Host Ring.
 280  */
 281 union aqmq_qsz {
 282         u64 value;
 283         struct {
 284 #if (defined(__BIG_ENDIAN_BITFIELD))
 285                 u64 raz_32_63 : 32;
 286                 u64 host_queue_size : 32;
 287 #else
 288                 u64 host_queue_size : 32;
 289                 u64 raz_32_63 : 32;
 290 #endif
 291         };
 292 };
 293 
 294 /**
 295  * struct aqmq_cmp_thr - AQM Queue Commands Completed Threshold Registers
 296  * @commands_completed_threshold: Count of 'aqmq_command_s' commands executed
 297  * by AE engines for which completion interrupt is asserted.
 298  */
 299 union aqmq_cmp_thr {
 300         u64 value;
 301         struct {
 302 #if (defined(__BIG_ENDIAN_BITFIELD))
 303                 u64 raz_32_63 : 32;
 304                 u64 commands_completed_threshold : 32;
 305 #else
 306                 u64 commands_completed_threshold : 32;
 307                 u64 raz_32_63 : 32;
 308 #endif
 309         };
 310 };
 311 
 312 /**
 313  * struct aqmq_cmp_cnt - AQM Queue Commands Completed Count Registers
 314  * @resend: Bit to request completion interrupt Resend.
 315  * @completion_status: Command completion status of the ring.
 316  * @commands_completed_count: Count of 'aqmq_command_s' commands executed by
 317  * AE engines.
 318  */
 319 union aqmq_cmp_cnt {
 320         u64 value;
 321         struct {
 322 #if (defined(__BIG_ENDIAN_BITFIELD))
 323                 u64 raz_34_63 : 30;
 324                 u64 resend : 1;
 325                 u64 completion_status : 1;
 326                 u64 commands_completed_count : 32;
 327 #else
 328                 u64 commands_completed_count : 32;
 329                 u64 completion_status : 1;
 330                 u64 resend : 1;
 331                 u64 raz_34_63 : 30;
 332 #endif
 333         };
 334 };
 335 
 336 /**
 337  * struct aqmq_en - AQM Queue Enable Registers
 338  * @queue_status: 1 = AQMQ is enabled, 0 = AQMQ is disabled
 339  */
 340 union aqmq_en {
 341         u64 value;
 342         struct {
 343 #if (defined(__BIG_ENDIAN_BITFIELD))
 344                 u64 raz_1_63 : 63;
 345                 u64 queue_enable : 1;
 346 #else
 347                 u64 queue_enable : 1;
 348                 u64 raz_1_63 : 63;
 349 #endif
 350         };
 351 };
 352 
 353 /**
 354  * struct aqmq_activity_stat - AQM Queue Activity Status Registers
 355  * @queue_active: 1 = AQMQ is active, 0 = AQMQ is quiescent
 356  */
 357 union aqmq_activity_stat {
 358         u64 value;
 359         struct {
 360 #if (defined(__BIG_ENDIAN_BITFIELD))
 361                 u64 raz_1_63 : 63;
 362                 u64 queue_active : 1;
 363 #else
 364                 u64 queue_active : 1;
 365                 u64 raz_1_63 : 63;
 366 #endif
 367         };
 368 };
 369 
 370 /**
 371  * struct emu_fuse_map - EMU Fuse Map Registers
 372  * @ae_fuse: Fuse settings for AE 19..0
 373  * @se_fuse: Fuse settings for SE 15..0
 374  *
 375  * A set bit indicates the unit is fuse disabled.
 376  */
 377 union emu_fuse_map {
 378         u64 value;
 379         struct {
 380 #if (defined(__BIG_ENDIAN_BITFIELD))
 381                 u64 valid : 1;
 382                 u64 raz_52_62 : 11;
 383                 u64 ae_fuse : 20;
 384                 u64 raz_16_31 : 16;
 385                 u64 se_fuse : 16;
 386 #else
 387                 u64 se_fuse : 16;
 388                 u64 raz_16_31 : 16;
 389                 u64 ae_fuse : 20;
 390                 u64 raz_52_62 : 11;
 391                 u64 valid : 1;
 392 #endif
 393         } s;
 394 };
 395 
 396 /**
 397  * struct emu_se_enable - Symmetric Engine Enable Registers
 398  * @enable: Individual enables for each of the clusters
 399  *   16 symmetric engines.
 400  */
 401 union emu_se_enable {
 402         u64 value;
 403         struct {
 404 #if (defined(__BIG_ENDIAN_BITFIELD))
 405                 u64 raz : 48;
 406                 u64 enable : 16;
 407 #else
 408                 u64 enable : 16;
 409                 u64 raz : 48;
 410 #endif
 411         } s;
 412 };
 413 
 414 /**
 415  * struct emu_ae_enable - EMU Asymmetric engines.
 416  * @enable: Individual enables for each of the cluster's
 417  *   20 Asymmetric Engines.
 418  */
 419 union emu_ae_enable {
 420         u64 value;
 421         struct {
 422 #if (defined(__BIG_ENDIAN_BITFIELD))
 423                 u64 raz : 44;
 424                 u64 enable : 20;
 425 #else
 426                 u64 enable : 20;
 427                 u64 raz : 44;
 428 #endif
 429         } s;
 430 };
 431 
 432 /**
 433  * struct emu_wd_int_ena_w1s - EMU Interrupt Enable Registers
 434  * @ae_wd: Reads or sets enable for EMU(0..3)_WD_INT[AE_WD]
 435  * @se_wd: Reads or sets enable for EMU(0..3)_WD_INT[SE_WD]
 436  */
 437 union emu_wd_int_ena_w1s {
 438         u64 value;
 439         struct {
 440 #if (defined(__BIG_ENDIAN_BITFIELD))
 441                 u64 raz2 : 12;
 442                 u64 ae_wd : 20;
 443                 u64 raz1 : 16;
 444                 u64 se_wd : 16;
 445 #else
 446                 u64 se_wd : 16;
 447                 u64 raz1 : 16;
 448                 u64 ae_wd : 20;
 449                 u64 raz2 : 12;
 450 #endif
 451         } s;
 452 };
 453 
 454 /**
 455  * struct emu_ge_int_ena_w1s - EMU Interrupt Enable set registers
 456  * @ae_ge: Reads or sets enable for EMU(0..3)_GE_INT[AE_GE]
 457  * @se_ge: Reads or sets enable for EMU(0..3)_GE_INT[SE_GE]
 458  */
 459 union emu_ge_int_ena_w1s {
 460         u64 value;
 461         struct {
 462 #if (defined(__BIG_ENDIAN_BITFIELD))
 463                 u64 raz_52_63 : 12;
 464                 u64 ae_ge : 20;
 465                 u64 raz_16_31: 16;
 466                 u64 se_ge : 16;
 467 #else
 468                 u64 se_ge : 16;
 469                 u64 raz_16_31: 16;
 470                 u64 ae_ge : 20;
 471                 u64 raz_52_63 : 12;
 472 #endif
 473         } s;
 474 };
 475 
 476 /**
 477  * struct nps_pkt_slc_ctl - Solicited Packet Out Control Registers
 478  * @rh: Indicates whether to remove or include the response header
 479  *   1 = Include, 0 = Remove
 480  * @z: If set, 8 trailing 0x00 bytes will be added to the end of the
 481  *   outgoing packet.
 482  * @enb: Enable for this port.
 483  */
 484 union nps_pkt_slc_ctl {
 485         u64 value;
 486         struct {
 487 #if defined(__BIG_ENDIAN_BITFIELD)
 488                 u64 raz : 61;
 489                 u64 rh : 1;
 490                 u64 z : 1;
 491                 u64 enb : 1;
 492 #else
 493                 u64 enb : 1;
 494                 u64 z : 1;
 495                 u64 rh : 1;
 496                 u64 raz : 61;
 497 #endif
 498         } s;
 499 };
 500 
 501 /**
 502  * struct nps_pkt_slc_cnts - Solicited Packet Out Count Registers
 503  * @slc_int: Returns a 1 when:
 504  *   NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or
 505  *   NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET].
 506  *   To clear the bit, the CNTS register must be written to clear.
 507  * @in_int: Returns a 1 when:
 508  *   NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT].
 509  *   To clear the bit, the DONE_CNTS register must be written to clear.
 510  * @mbox_int: Returns a 1 when:
 511  *   NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set. To clear the bit,
 512  *   write NPS_PKT_MBOX_PF_VF(i)_INT[INTR] with 1.
 513  * @timer: Timer, incremented every 2048 coprocessor clock cycles
 514  *   when [CNT] is not zero. The hardware clears both [TIMER] and
 515  *   [INT] when [CNT] goes to 0.
 516  * @cnt: Packet counter. Hardware adds to [CNT] as it sends packets out.
 517  *   On a write to this CSR, hardware subtracts the amount written to the
 518  *   [CNT] field from [CNT].
 519  */
 520 union nps_pkt_slc_cnts {
 521         u64 value;
 522         struct {
 523 #if defined(__BIG_ENDIAN_BITFIELD)
 524                 u64 slc_int : 1;
 525                 u64 uns_int : 1;
 526                 u64 in_int : 1;
 527                 u64 mbox_int : 1;
 528                 u64 resend : 1;
 529                 u64 raz : 5;
 530                 u64 timer : 22;
 531                 u64 cnt : 32;
 532 #else
 533                 u64 cnt : 32;
 534                 u64 timer : 22;
 535                 u64 raz : 5;
 536                 u64 resend : 1;
 537                 u64 mbox_int : 1;
 538                 u64 in_int : 1;
 539                 u64 uns_int : 1;
 540                 u64 slc_int : 1;
 541 #endif
 542         } s;
 543 };
 544 
 545 /**
 546  * struct nps_pkt_slc_int_levels - Solicited Packet Out Interrupt Levels
 547  *   Registers.
 548  * @bmode: Determines whether NPS_PKT_SLC_CNTS[CNT] is a byte or
 549  *   packet counter.
 550  * @timet: Output port counter time interrupt threshold.
 551  * @cnt: Output port counter interrupt threshold.
 552  */
 553 union nps_pkt_slc_int_levels {
 554         u64 value;
 555         struct {
 556 #if defined(__BIG_ENDIAN_BITFIELD)
 557                 u64 bmode : 1;
 558                 u64 raz : 9;
 559                 u64 timet : 22;
 560                 u64 cnt : 32;
 561 #else
 562                 u64 cnt : 32;
 563                 u64 timet : 22;
 564                 u64 raz : 9;
 565                 u64 bmode : 1;
 566 #endif
 567         } s;
 568 };
 569 
 570 /**
 571  * struct nps_pkt_inst - NPS Packet Interrupt Register
 572  * @in_err: Set when any NPS_PKT_IN_RERR_HI/LO bit and
 573  *    corresponding NPS_PKT_IN_RERR_*_ENA_* bit are bot set.
 574  * @uns_err: Set when any NSP_PKT_UNS_RERR_HI/LO bit and
 575  *    corresponding NPS_PKT_UNS_RERR_*_ENA_* bit are both set.
 576  * @slc_er: Set when any NSP_PKT_SLC_RERR_HI/LO bit and
 577  *    corresponding NPS_PKT_SLC_RERR_*_ENA_* bit are both set.
 578  */
 579 union nps_pkt_int {
 580         u64 value;
 581         struct {
 582 #if defined(__BIG_ENDIAN_BITFIELD)
 583                 u64 raz : 54;
 584                 u64 uns_wto : 1;
 585                 u64 in_err : 1;
 586                 u64 uns_err : 1;
 587                 u64 slc_err : 1;
 588                 u64 in_dbe : 1;
 589                 u64 in_sbe : 1;
 590                 u64 uns_dbe : 1;
 591                 u64 uns_sbe : 1;
 592                 u64 slc_dbe : 1;
 593                 u64 slc_sbe : 1;
 594 #else
 595                 u64 slc_sbe : 1;
 596                 u64 slc_dbe : 1;
 597                 u64 uns_sbe : 1;
 598                 u64 uns_dbe : 1;
 599                 u64 in_sbe : 1;
 600                 u64 in_dbe : 1;
 601                 u64 slc_err : 1;
 602                 u64 uns_err : 1;
 603                 u64 in_err : 1;
 604                 u64 uns_wto : 1;
 605                 u64 raz : 54;
 606 #endif
 607         } s;
 608 };
 609 
 610 /**
 611  * struct nps_pkt_in_done_cnts - Input instruction ring counts registers
 612  * @slc_cnt: Returns a 1 when:
 613  *    NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or
 614  *    NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SCL(i)_INT_LEVELS[TIMET]
 615  *    To clear the bit, the CNTS register must be
 616  *    written to clear the underlying condition
 617  * @uns_int: Return a 1 when:
 618  *    NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT], or
 619  *    NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET]
 620  *    To clear the bit, the CNTS register must be
 621  *    written to clear the underlying condition
 622  * @in_int: Returns a 1 when:
 623  *    NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT]
 624  *    To clear the bit, the DONE_CNTS register
 625  *    must be written to clear the underlying condition
 626  * @mbox_int: Returns a 1 when:
 627  *    NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set.
 628  *    To clear the bit, write NPS_PKT_MBOX_PF_VF(i)_INT[INTR]
 629  *    with 1.
 630  * @resend: A write of 1 will resend an MSI-X interrupt message if any
 631  *    of the following conditions are true for this ring "i".
 632  *    NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT]
 633  *    NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET]
 634  *    NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT]
 635  *    NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET]
 636  *    NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT]
 637  *    NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set
 638  * @cnt: Packet counter. Hardware adds to [CNT] as it reads
 639  *    packets. On a write to this CSR, hardware substracts the
 640  *    amount written to the [CNT] field from [CNT], which will
 641  *    clear PKT_IN(i)_INT_STATUS[INTR] if [CNT] becomes <=
 642  *    NPS_PKT_IN(i)_INT_LEVELS[CNT]. This register should be
 643  *    cleared before enabling a ring by reading the current
 644  *    value and writing it back.
 645  */
 646 union nps_pkt_in_done_cnts {
 647         u64 value;
 648         struct {
 649 #if defined(__BIG_ENDIAN_BITFIELD)
 650                 u64 slc_int : 1;
 651                 u64 uns_int : 1;
 652                 u64 in_int : 1;
 653                 u64 mbox_int : 1;
 654                 u64 resend : 1;
 655                 u64 raz : 27;
 656                 u64 cnt : 32;
 657 #else
 658                 u64 cnt : 32;
 659                 u64 raz : 27;
 660                 u64 resend : 1;
 661                 u64 mbox_int : 1;
 662                 u64 in_int : 1;
 663                 u64 uns_int : 1;
 664                 u64 slc_int : 1;
 665 #endif
 666         } s;
 667 };
 668 
 669 /**
 670  * struct nps_pkt_in_instr_ctl - Input Instruction Ring Control Registers.
 671  * @is64b: If 1, the ring uses 64-byte instructions. If 0, the
 672  *   ring uses 32-byte instructions.
 673  * @enb: Enable for the input ring.
 674  */
 675 union nps_pkt_in_instr_ctl {
 676         u64 value;
 677         struct {
 678 #if (defined(__BIG_ENDIAN_BITFIELD))
 679                 u64 raz : 62;
 680                 u64 is64b : 1;
 681                 u64 enb : 1;
 682 #else
 683                 u64 enb : 1;
 684                 u64 is64b : 1;
 685                 u64 raz : 62;
 686 #endif
 687         } s;
 688 };
 689 
 690 /**
 691  * struct nps_pkt_in_instr_rsize - Input instruction ring size registers
 692  * @rsize: Ring size (number of instructions)
 693  */
 694 union nps_pkt_in_instr_rsize {
 695         u64 value;
 696         struct {
 697 #if (defined(__BIG_ENDIAN_BITFIELD))
 698                 u64 raz : 32;
 699                 u64 rsize : 32;
 700 #else
 701                 u64 rsize : 32;
 702                 u64 raz : 32;
 703 #endif
 704         } s;
 705 };
 706 
 707 /**
 708  * struct nps_pkt_in_instr_baoff_dbell - Input instruction ring
 709  *   base address offset and doorbell registers
 710  * @aoff: Address offset. The offset from the NPS_PKT_IN_INSTR_BADDR
 711  *   where the next pointer is read.
 712  * @dbell: Pointer list doorbell count. Write operations to this field
 713  *   increments the present value here. Read operations return the
 714  *   present value.
 715  */
 716 union nps_pkt_in_instr_baoff_dbell {
 717         u64 value;
 718         struct {
 719 #if (defined(__BIG_ENDIAN_BITFIELD))
 720                 u64 aoff : 32;
 721                 u64 dbell : 32;
 722 #else
 723                 u64 dbell : 32;
 724                 u64 aoff : 32;
 725 #endif
 726         } s;
 727 };
 728 
 729 /**
 730  * struct nps_core_int_ena_w1s - NPS core interrupt enable set register
 731  * @host_nps_wr_err: Reads or sets enable for
 732  *   NPS_CORE_INT[HOST_NPS_WR_ERR].
 733  * @npco_dma_malform: Reads or sets enable for
 734  *   NPS_CORE_INT[NPCO_DMA_MALFORM].
 735  * @exec_wr_timeout: Reads or sets enable for
 736  *   NPS_CORE_INT[EXEC_WR_TIMEOUT].
 737  * @host_wr_timeout: Reads or sets enable for
 738  *   NPS_CORE_INT[HOST_WR_TIMEOUT].
 739  * @host_wr_err: Reads or sets enable for
 740  *   NPS_CORE_INT[HOST_WR_ERR]
 741  */
 742 union nps_core_int_ena_w1s {
 743         u64 value;
 744         struct {
 745 #if (defined(__BIG_ENDIAN_BITFIELD))
 746                 u64 raz4 : 55;
 747                 u64 host_nps_wr_err : 1;
 748                 u64 npco_dma_malform : 1;
 749                 u64 exec_wr_timeout : 1;
 750                 u64 host_wr_timeout : 1;
 751                 u64 host_wr_err : 1;
 752                 u64 raz3 : 1;
 753                 u64 raz2 : 1;
 754                 u64 raz1 : 1;
 755                 u64 raz0 : 1;
 756 #else
 757                 u64 raz0 : 1;
 758                 u64 raz1 : 1;
 759                 u64 raz2 : 1;
 760                 u64 raz3 : 1;
 761                 u64 host_wr_err : 1;
 762                 u64 host_wr_timeout : 1;
 763                 u64 exec_wr_timeout : 1;
 764                 u64 npco_dma_malform : 1;
 765                 u64 host_nps_wr_err : 1;
 766                 u64 raz4 : 55;
 767 #endif
 768         } s;
 769 };
 770 
 771 /**
 772  * struct nps_core_gbl_vfcfg - Global VF Configuration Register.
 773  * @ilk_disable: When set, this bit indicates that the ILK interface has
 774  *    been disabled.
 775  * @obaf: BMO allocation control
 776  *    0 = allocate per queue
 777  *    1 = allocate per VF
 778  * @ibaf: BMI allocation control
 779  *    0 = allocate per queue
 780  *    1 = allocate per VF
 781  * @zaf: ZIP allocation control
 782  *    0 = allocate per queue
 783  *    1 = allocate per VF
 784  * @aeaf: AE allocation control
 785  *    0 = allocate per queue
 786  *    1 = allocate per VF
 787  * @seaf: SE allocation control
 788  *    0 = allocation per queue
 789  *    1 = allocate per VF
 790  * @cfg: VF/PF mode.
 791  */
 792 union nps_core_gbl_vfcfg {
 793         u64 value;
 794         struct {
 795 #if (defined(__BIG_ENDIAN_BITFIELD))
 796                 u64  raz :55;
 797                 u64  ilk_disable :1;
 798                 u64  obaf :1;
 799                 u64  ibaf :1;
 800                 u64  zaf :1;
 801                 u64  aeaf :1;
 802                 u64  seaf :1;
 803                 u64  cfg :3;
 804 #else
 805                 u64  cfg :3;
 806                 u64  seaf :1;
 807                 u64  aeaf :1;
 808                 u64  zaf :1;
 809                 u64  ibaf :1;
 810                 u64  obaf :1;
 811                 u64  ilk_disable :1;
 812                 u64  raz :55;
 813 #endif
 814         } s;
 815 };
 816 
 817 /**
 818  * struct nps_core_int_active - NPS Core Interrupt Active Register
 819  * @resend: Resend MSI-X interrupt if needs to handle interrupts
 820  *    Sofware can set this bit and then exit the ISR.
 821  * @ocla: Set when any OCLA(0)_INT and corresponding OCLA(0_INT_ENA_W1C
 822  *    bit are set
 823  * @mbox: Set when any NPS_PKT_MBOX_INT_LO/HI and corresponding
 824  *    NPS_PKT_MBOX_INT_LO_ENA_W1C/HI_ENA_W1C bits are set
 825  * @emu: bit i is set in [EMU] when any EMU(i)_INT bit is set
 826  * @bmo: Set when any BMO_INT bit is set
 827  * @bmi: Set when any BMI_INT bit is set or when any non-RO
 828  *    BMI_INT and corresponding BMI_INT_ENA_W1C bits are both set
 829  * @aqm: Set when any AQM_INT bit is set
 830  * @zqm: Set when any ZQM_INT bit is set
 831  * @efl: Set when any EFL_INT RO bit is set or when any non-RO EFL_INT
 832  *    and corresponding EFL_INT_ENA_W1C bits are both set
 833  * @ilk: Set when any ILK_INT bit is set
 834  * @lbc: Set when any LBC_INT RO bit is set or when any non-RO LBC_INT
 835  *    and corresponding LBC_INT_ENA_W1C bits are bot set
 836  * @pem: Set when any PEM(0)_INT RO bit is set or when any non-RO
 837  *    PEM(0)_INT and corresponding PEM(0)_INT_ENA_W1C bit are both set
 838  * @ucd: Set when any UCD_INT bit is set
 839  * @zctl: Set when any ZIP_INT RO bit is set or when any non-RO ZIP_INT
 840  *    and corresponding ZIP_INT_ENA_W1C bits are both set
 841  * @lbm: Set when any LBM_INT bit is set
 842  * @nps_pkt: Set when any NPS_PKT_INT bit is set
 843  * @nps_core: Set when any NPS_CORE_INT RO bit is set or when non-RO
 844  *    NPS_CORE_INT and corresponding NSP_CORE_INT_ENA_W1C bits are both set
 845  */
 846 union nps_core_int_active {
 847         u64 value;
 848         struct {
 849 #if (defined(__BIG_ENDIAN_BITFIELD))
 850                 u64 resend : 1;
 851                 u64 raz : 43;
 852                 u64 ocla : 1;
 853                 u64 mbox : 1;
 854                 u64 emu : 4;
 855                 u64 bmo : 1;
 856                 u64 bmi : 1;
 857                 u64 aqm : 1;
 858                 u64 zqm : 1;
 859                 u64 efl : 1;
 860                 u64 ilk : 1;
 861                 u64 lbc : 1;
 862                 u64 pem : 1;
 863                 u64 pom : 1;
 864                 u64 ucd : 1;
 865                 u64 zctl : 1;
 866                 u64 lbm : 1;
 867                 u64 nps_pkt : 1;
 868                 u64 nps_core : 1;
 869 #else
 870                 u64 nps_core : 1;
 871                 u64 nps_pkt : 1;
 872                 u64 lbm : 1;
 873                 u64 zctl: 1;
 874                 u64 ucd : 1;
 875                 u64 pom : 1;
 876                 u64 pem : 1;
 877                 u64 lbc : 1;
 878                 u64 ilk : 1;
 879                 u64 efl : 1;
 880                 u64 zqm : 1;
 881                 u64 aqm : 1;
 882                 u64 bmi : 1;
 883                 u64 bmo : 1;
 884                 u64 emu : 4;
 885                 u64 mbox : 1;
 886                 u64 ocla : 1;
 887                 u64 raz : 43;
 888                 u64 resend : 1;
 889 #endif
 890         } s;
 891 };
 892 
 893 /**
 894  * struct efl_core_int - EFL Interrupt Registers
 895  * @epci_decode_err: EPCI decoded a transacation that was unknown
 896  *    This error should only occurred when there is a micrcode/SE error
 897  *    and should be considered fatal
 898  * @ae_err: An AE uncorrectable error occurred.
 899  *    See EFL_CORE(0..3)_AE_ERR_INT
 900  * @se_err: An SE uncorrectable error occurred.
 901  *    See EFL_CORE(0..3)_SE_ERR_INT
 902  * @dbe: Double-bit error occurred in EFL
 903  * @sbe: Single-bit error occurred in EFL
 904  * @d_left: Asserted when new POM-Header-BMI-data is
 905  *    being sent to an Exec, and that Exec has Not read all BMI
 906  *    data associated with the previous POM header
 907  * @len_ovr: Asserted when an Exec-Read is issued that is more than
 908  *    14 greater in length that the BMI data left to be read
 909  */
 910 union efl_core_int {
 911         u64 value;
 912         struct {
 913 #if (defined(__BIG_ENDIAN_BITFIELD))
 914                 u64 raz : 57;
 915                 u64 epci_decode_err : 1;
 916                 u64 ae_err : 1;
 917                 u64 se_err : 1;
 918                 u64 dbe : 1;
 919                 u64 sbe : 1;
 920                 u64 d_left : 1;
 921                 u64 len_ovr : 1;
 922 #else
 923                 u64 len_ovr : 1;
 924                 u64 d_left : 1;
 925                 u64 sbe : 1;
 926                 u64 dbe : 1;
 927                 u64 se_err : 1;
 928                 u64 ae_err : 1;
 929                 u64 epci_decode_err  : 1;
 930                 u64 raz : 57;
 931 #endif
 932         } s;
 933 };
 934 
 935 /**
 936  * struct efl_core_int_ena_w1s - EFL core interrupt enable set register
 937  * @epci_decode_err: Reads or sets enable for
 938  *   EFL_CORE(0..3)_INT[EPCI_DECODE_ERR].
 939  * @d_left: Reads or sets enable for
 940  *   EFL_CORE(0..3)_INT[D_LEFT].
 941  * @len_ovr: Reads or sets enable for
 942  *   EFL_CORE(0..3)_INT[LEN_OVR].
 943  */
 944 union efl_core_int_ena_w1s {
 945         u64 value;
 946         struct {
 947 #if (defined(__BIG_ENDIAN_BITFIELD))
 948                 u64 raz_7_63 : 57;
 949                 u64 epci_decode_err : 1;
 950                 u64 raz_2_5 : 4;
 951                 u64 d_left : 1;
 952                 u64 len_ovr : 1;
 953 #else
 954                 u64 len_ovr : 1;
 955                 u64 d_left : 1;
 956                 u64 raz_2_5 : 4;
 957                 u64 epci_decode_err : 1;
 958                 u64 raz_7_63 : 57;
 959 #endif
 960         } s;
 961 };
 962 
 963 /**
 964  * struct efl_rnm_ctl_status - RNM Control and Status Register
 965  * @ent_sel: Select input to RNM FIFO
 966  * @exp_ent: Exported entropy enable for random number generator
 967  * @rng_rst: Reset to RNG. Setting this bit to 1 cancels the generation
 968  *    of the current random number.
 969  * @rnm_rst: Reset the RNM. Setting this bit to 1 clears all sorted numbers
 970  *    in the random number memory.
 971  * @rng_en: Enabled the output of the RNG.
 972  * @ent_en: Entropy enable for random number generator.
 973  */
 974 union efl_rnm_ctl_status {
 975         u64 value;
 976         struct {
 977 #if (defined(__BIG_ENDIAN_BITFIELD))
 978                 u64 raz_9_63 : 55;
 979                 u64 ent_sel : 4;
 980                 u64 exp_ent : 1;
 981                 u64 rng_rst : 1;
 982                 u64 rnm_rst : 1;
 983                 u64 rng_en : 1;
 984                 u64 ent_en : 1;
 985 #else
 986                 u64 ent_en : 1;
 987                 u64 rng_en : 1;
 988                 u64 rnm_rst : 1;
 989                 u64 rng_rst : 1;
 990                 u64 exp_ent : 1;
 991                 u64 ent_sel : 4;
 992                 u64 raz_9_63 : 55;
 993 #endif
 994         } s;
 995 };
 996 
 997 /**
 998  * struct bmi_ctl - BMI control register
 999  * @ilk_hdrq_thrsh: Maximum number of header queue locations
1000  *   that ILK packets may consume. When the threshold is
1001  *   exceeded ILK_XOFF is sent to the BMI_X2P_ARB.
1002  * @nps_hdrq_thrsh: Maximum number of header queue locations
1003  *   that NPS packets may consume. When the threshold is
1004  *   exceeded NPS_XOFF is sent to the BMI_X2P_ARB.
1005  * @totl_hdrq_thrsh: Maximum number of header queue locations
1006  *   that the sum of ILK and NPS packets may consume.
1007  * @ilk_free_thrsh: Maximum number of buffers that ILK packet
1008  *   flows may consume before ILK_XOFF is sent to the BMI_X2P_ARB.
1009  * @nps_free_thrsh: Maximum number of buffers that NPS packet
1010  *   flows may consume before NPS XOFF is sent to the BMI_X2p_ARB.
1011  * @totl_free_thrsh: Maximum number of buffers that bot ILK and NPS
1012  *   packet flows may consume before both NPS_XOFF and ILK_XOFF
1013  *   are asserted to the BMI_X2P_ARB.
1014  * @max_pkt_len: Maximum packet length, integral number of 256B
1015  *   buffers.
1016  */
1017 union bmi_ctl {
1018         u64 value;
1019         struct {
1020 #if (defined(__BIG_ENDIAN_BITFIELD))
1021                 u64 raz_56_63 : 8;
1022                 u64 ilk_hdrq_thrsh : 8;
1023                 u64 nps_hdrq_thrsh : 8;
1024                 u64 totl_hdrq_thrsh : 8;
1025                 u64 ilk_free_thrsh : 8;
1026                 u64 nps_free_thrsh : 8;
1027                 u64 totl_free_thrsh : 8;
1028                 u64 max_pkt_len : 8;
1029 #else
1030                 u64 max_pkt_len : 8;
1031                 u64 totl_free_thrsh : 8;
1032                 u64 nps_free_thrsh : 8;
1033                 u64 ilk_free_thrsh : 8;
1034                 u64 totl_hdrq_thrsh : 8;
1035                 u64 nps_hdrq_thrsh : 8;
1036                 u64 ilk_hdrq_thrsh : 8;
1037                 u64 raz_56_63 : 8;
1038 #endif
1039         } s;
1040 };
1041 
1042 /**
1043  * struct bmi_int_ena_w1s - BMI interrupt enable set register
1044  * @ilk_req_oflw: Reads or sets enable for
1045  *   BMI_INT[ILK_REQ_OFLW].
1046  * @nps_req_oflw: Reads or sets enable for
1047  *   BMI_INT[NPS_REQ_OFLW].
1048  * @fpf_undrrn: Reads or sets enable for
1049  *   BMI_INT[FPF_UNDRRN].
1050  * @eop_err_ilk: Reads or sets enable for
1051  *   BMI_INT[EOP_ERR_ILK].
1052  * @eop_err_nps: Reads or sets enable for
1053  *   BMI_INT[EOP_ERR_NPS].
1054  * @sop_err_ilk: Reads or sets enable for
1055  *   BMI_INT[SOP_ERR_ILK].
1056  * @sop_err_nps: Reads or sets enable for
1057  *   BMI_INT[SOP_ERR_NPS].
1058  * @pkt_rcv_err_ilk: Reads or sets enable for
1059  *   BMI_INT[PKT_RCV_ERR_ILK].
1060  * @pkt_rcv_err_nps: Reads or sets enable for
1061  *   BMI_INT[PKT_RCV_ERR_NPS].
1062  * @max_len_err_ilk: Reads or sets enable for
1063  *   BMI_INT[MAX_LEN_ERR_ILK].
1064  * @max_len_err_nps: Reads or sets enable for
1065  *   BMI_INT[MAX_LEN_ERR_NPS].
1066  */
1067 union bmi_int_ena_w1s {
1068         u64 value;
1069         struct {
1070 #if (defined(__BIG_ENDIAN_BITFIELD))
1071                 u64 raz_13_63   : 51;
1072                 u64 ilk_req_oflw : 1;
1073                 u64 nps_req_oflw : 1;
1074                 u64 raz_10 : 1;
1075                 u64 raz_9 : 1;
1076                 u64 fpf_undrrn  : 1;
1077                 u64 eop_err_ilk : 1;
1078                 u64 eop_err_nps : 1;
1079                 u64 sop_err_ilk : 1;
1080                 u64 sop_err_nps : 1;
1081                 u64 pkt_rcv_err_ilk : 1;
1082                 u64 pkt_rcv_err_nps : 1;
1083                 u64 max_len_err_ilk : 1;
1084                 u64 max_len_err_nps : 1;
1085 #else
1086                 u64 max_len_err_nps : 1;
1087                 u64 max_len_err_ilk : 1;
1088                 u64 pkt_rcv_err_nps : 1;
1089                 u64 pkt_rcv_err_ilk : 1;
1090                 u64 sop_err_nps : 1;
1091                 u64 sop_err_ilk : 1;
1092                 u64 eop_err_nps : 1;
1093                 u64 eop_err_ilk : 1;
1094                 u64 fpf_undrrn  : 1;
1095                 u64 raz_9 : 1;
1096                 u64 raz_10 : 1;
1097                 u64 nps_req_oflw : 1;
1098                 u64 ilk_req_oflw : 1;
1099                 u64 raz_13_63 : 51;
1100 #endif
1101         } s;
1102 };
1103 
1104 /**
1105  * struct bmo_ctl2 - BMO Control2 Register
1106  * @arb_sel: Determines P2X Arbitration
1107  * @ilk_buf_thrsh: Maximum number of buffers that the
1108  *    ILK packet flows may consume before ILK XOFF is
1109  *    asserted to the POM.
1110  * @nps_slc_buf_thrsh: Maximum number of buffers that the
1111  *    NPS_SLC packet flow may consume before NPS_SLC XOFF is
1112  *    asserted to the POM.
1113  * @nps_uns_buf_thrsh: Maximum number of buffers that the
1114  *    NPS_UNS packet flow may consume before NPS_UNS XOFF is
1115  *    asserted to the POM.
1116  * @totl_buf_thrsh: Maximum number of buffers that ILK, NPS_UNS and
1117  *    NPS_SLC packet flows may consume before NPS_UNS XOFF, NSP_SLC and
1118  *    ILK_XOFF are all asserted POM.
1119  */
1120 union bmo_ctl2 {
1121         u64 value;
1122         struct {
1123 #if (defined(__BIG_ENDIAN_BITFIELD))
1124                 u64 arb_sel : 1;
1125                 u64 raz_32_62 : 31;
1126                 u64 ilk_buf_thrsh : 8;
1127                 u64 nps_slc_buf_thrsh : 8;
1128                 u64 nps_uns_buf_thrsh : 8;
1129                 u64 totl_buf_thrsh : 8;
1130 #else
1131                 u64 totl_buf_thrsh : 8;
1132                 u64 nps_uns_buf_thrsh : 8;
1133                 u64 nps_slc_buf_thrsh : 8;
1134                 u64 ilk_buf_thrsh : 8;
1135                 u64 raz_32_62 : 31;
1136                 u64 arb_sel : 1;
1137 #endif
1138         } s;
1139 };
1140 
1141 /**
1142  * struct pom_int_ena_w1s - POM interrupt enable set register
1143  * @illegal_intf: Reads or sets enable for POM_INT[ILLEGAL_INTF].
1144  * @illegal_dport: Reads or sets enable for POM_INT[ILLEGAL_DPORT].
1145  */
1146 union pom_int_ena_w1s {
1147         u64 value;
1148         struct {
1149 #if (defined(__BIG_ENDIAN_BITFIELD))
1150                 u64 raz2 : 60;
1151                 u64 illegal_intf : 1;
1152                 u64 illegal_dport : 1;
1153                 u64 raz1 : 1;
1154                 u64 raz0 : 1;
1155 #else
1156                 u64 raz0 : 1;
1157                 u64 raz1 : 1;
1158                 u64 illegal_dport : 1;
1159                 u64 illegal_intf : 1;
1160                 u64 raz2 : 60;
1161 #endif
1162         } s;
1163 };
1164 
1165 /**
1166  * struct lbc_inval_ctl - LBC invalidation control register
1167  * @wait_timer: Wait timer for wait state. [WAIT_TIMER] must
1168  *   always be written with its reset value.
1169  * @cam_inval_start: Software should write [CAM_INVAL_START]=1
1170  *   to initiate an LBC cache invalidation. After this, software
1171  *   should read LBC_INVAL_STATUS until LBC_INVAL_STATUS[DONE] is set.
1172  *   LBC hardware clears [CAVM_INVAL_START] before software can
1173  *   observed LBC_INVAL_STATUS[DONE] to be set
1174  */
1175 union lbc_inval_ctl {
1176         u64 value;
1177         struct {
1178 #if (defined(__BIG_ENDIAN_BITFIELD))
1179                 u64 raz2 : 48;
1180                 u64 wait_timer : 8;
1181                 u64 raz1 : 6;
1182                 u64 cam_inval_start : 1;
1183                 u64 raz0 : 1;
1184 #else
1185                 u64 raz0 : 1;
1186                 u64 cam_inval_start : 1;
1187                 u64 raz1 : 6;
1188                 u64 wait_timer : 8;
1189                 u64 raz2 : 48;
1190 #endif
1191         } s;
1192 };
1193 
1194 /**
1195  * struct lbc_int_ena_w1s - LBC interrupt enable set register
1196  * @cam_hard_err: Reads or sets enable for LBC_INT[CAM_HARD_ERR].
1197  * @cam_inval_abort: Reads or sets enable for LBC_INT[CAM_INVAL_ABORT].
1198  * @over_fetch_err: Reads or sets enable for LBC_INT[OVER_FETCH_ERR].
1199  * @cache_line_to_err: Reads or sets enable for
1200  *   LBC_INT[CACHE_LINE_TO_ERR].
1201  * @cam_soft_err: Reads or sets enable for
1202  *   LBC_INT[CAM_SOFT_ERR].
1203  * @dma_rd_err: Reads or sets enable for
1204  *   LBC_INT[DMA_RD_ERR].
1205  */
1206 union lbc_int_ena_w1s {
1207         u64 value;
1208         struct {
1209 #if (defined(__BIG_ENDIAN_BITFIELD))
1210                 u64 raz_10_63 : 54;
1211                 u64 cam_hard_err : 1;
1212                 u64 cam_inval_abort : 1;
1213                 u64 over_fetch_err : 1;
1214                 u64 cache_line_to_err : 1;
1215                 u64 raz_2_5 : 4;
1216                 u64 cam_soft_err : 1;
1217                 u64 dma_rd_err : 1;
1218 #else
1219                 u64 dma_rd_err : 1;
1220                 u64 cam_soft_err : 1;
1221                 u64 raz_2_5 : 4;
1222                 u64 cache_line_to_err : 1;
1223                 u64 over_fetch_err : 1;
1224                 u64 cam_inval_abort : 1;
1225                 u64 cam_hard_err : 1;
1226                 u64 raz_10_63 : 54;
1227 #endif
1228         } s;
1229 };
1230 
1231 /**
1232  * struct lbc_int - LBC interrupt summary register
1233  * @cam_hard_err: indicates a fatal hardware error.
1234  *   It requires system reset.
1235  *   When [CAM_HARD_ERR] is set, LBC stops logging any new information in
1236  *   LBC_POM_MISS_INFO_LOG,
1237  *   LBC_POM_MISS_ADDR_LOG,
1238  *   LBC_EFL_MISS_INFO_LOG, and
1239  *   LBC_EFL_MISS_ADDR_LOG.
1240  *   Software should sample them.
1241  * @cam_inval_abort: indicates a fatal hardware error.
1242  *   System reset is required.
1243  * @over_fetch_err: indicates a fatal hardware error
1244  *   System reset is required
1245  * @cache_line_to_err: is a debug feature.
1246  *   This timeout interrupt bit tells the software that
1247  *   a cacheline in LBC has non-zero usage and the context
1248  *   has not been used for greater than the
1249  *   LBC_TO_CNT[TO_CNT] time interval.
1250  * @sbe: Memory SBE error. This is recoverable via ECC.
1251  *   See LBC_ECC_INT for more details.
1252  * @dbe: Memory DBE error. This is a fatal and requires a
1253  *   system reset.
1254  * @pref_dat_len_mismatch_err: Summary bit for context length
1255  *   mismatch errors.
1256  * @rd_dat_len_mismatch_err: Summary bit for SE read data length
1257  *   greater than data prefect length errors.
1258  * @cam_soft_err: is recoverable. Software must complete a
1259  *   LBC_INVAL_CTL[CAM_INVAL_START] invalidation sequence and
1260  *   then clear [CAM_SOFT_ERR].
1261  * @dma_rd_err: A context prefect read of host memory returned with
1262  *   a read error.
1263  */
1264 union lbc_int {
1265         u64 value;
1266         struct {
1267 #if (defined(__BIG_ENDIAN_BITFIELD))
1268                 u64 raz_10_63 : 54;
1269                 u64 cam_hard_err : 1;
1270                 u64 cam_inval_abort : 1;
1271                 u64 over_fetch_err : 1;
1272                 u64 cache_line_to_err : 1;
1273                 u64 sbe : 1;
1274                 u64 dbe : 1;
1275                 u64 pref_dat_len_mismatch_err : 1;
1276                 u64 rd_dat_len_mismatch_err : 1;
1277                 u64 cam_soft_err : 1;
1278                 u64 dma_rd_err : 1;
1279 #else
1280                 u64 dma_rd_err : 1;
1281                 u64 cam_soft_err : 1;
1282                 u64 rd_dat_len_mismatch_err : 1;
1283                 u64 pref_dat_len_mismatch_err : 1;
1284                 u64 dbe : 1;
1285                 u64 sbe : 1;
1286                 u64 cache_line_to_err : 1;
1287                 u64 over_fetch_err : 1;
1288                 u64 cam_inval_abort : 1;
1289                 u64 cam_hard_err : 1;
1290                 u64 raz_10_63 : 54;
1291 #endif
1292         } s;
1293 };
1294 
1295 /**
1296  * struct lbc_inval_status: LBC Invalidation status register
1297  * @cam_clean_entry_complete_cnt: The number of entries that are
1298  *   cleaned up successfully.
1299  * @cam_clean_entry_cnt: The number of entries that have the CAM
1300  *   inval command issued.
1301  * @cam_inval_state: cam invalidation FSM state
1302  * @cam_inval_abort: cam invalidation abort
1303  * @cam_rst_rdy: lbc_cam reset ready
1304  * @done: LBC clears [DONE] when
1305  *   LBC_INVAL_CTL[CAM_INVAL_START] is written with a one,
1306  *   and sets [DONE] when it completes the invalidation
1307  *   sequence.
1308  */
1309 union lbc_inval_status {
1310         u64 value;
1311         struct {
1312 #if (defined(__BIG_ENDIAN_BITFIELD))
1313                 u64 raz3 : 23;
1314                 u64 cam_clean_entry_complete_cnt : 9;
1315                 u64 raz2 : 7;
1316                 u64 cam_clean_entry_cnt : 9;
1317                 u64 raz1 : 5;
1318                 u64 cam_inval_state : 3;
1319                 u64 raz0 : 5;
1320                 u64 cam_inval_abort : 1;
1321                 u64 cam_rst_rdy : 1;
1322                 u64 done : 1;
1323 #else
1324                 u64 done : 1;
1325                 u64 cam_rst_rdy : 1;
1326                 u64 cam_inval_abort : 1;
1327                 u64 raz0 : 5;
1328                 u64 cam_inval_state : 3;
1329                 u64 raz1 : 5;
1330                 u64 cam_clean_entry_cnt : 9;
1331                 u64 raz2 : 7;
1332                 u64 cam_clean_entry_complete_cnt : 9;
1333                 u64 raz3 : 23;
1334 #endif
1335         } s;
1336 };
1337 
1338 /**
1339  * struct rst_boot: RST Boot Register
1340  * @jtcsrdis: when set, internal CSR access via JTAG TAP controller
1341  *   is disabled
1342  * @jt_tst_mode: JTAG test mode
1343  * @io_supply: I/O power supply setting based on IO_VDD_SELECT pin:
1344  *    0x1 = 1.8V
1345  *    0x2 = 2.5V
1346  *    0x4 = 3.3V
1347  *    All other values are reserved
1348  * @pnr_mul: clock multiplier
1349  * @lboot: last boot cause mask, resets only with PLL_DC_OK
1350  * @rboot: determines whether core 0 remains in reset after
1351  *    chip cold or warm or soft reset
1352  * @rboot_pin: read only access to REMOTE_BOOT pin
1353  */
1354 union rst_boot {
1355         u64 value;
1356         struct {
1357 #if (defined(__BIG_ENDIAN_BITFIELD))
1358                 u64 raz_63 : 1;
1359                 u64 jtcsrdis : 1;
1360                 u64 raz_59_61 : 3;
1361                 u64 jt_tst_mode : 1;
1362                 u64 raz_40_57 : 18;
1363                 u64 io_supply : 3;
1364                 u64 raz_30_36 : 7;
1365                 u64 pnr_mul : 6;
1366                 u64 raz_12_23 : 12;
1367                 u64 lboot : 10;
1368                 u64 rboot : 1;
1369                 u64 rboot_pin : 1;
1370 #else
1371                 u64 rboot_pin : 1;
1372                 u64 rboot : 1;
1373                 u64 lboot : 10;
1374                 u64 raz_12_23 : 12;
1375                 u64 pnr_mul : 6;
1376                 u64 raz_30_36 : 7;
1377                 u64 io_supply : 3;
1378                 u64 raz_40_57 : 18;
1379                 u64 jt_tst_mode : 1;
1380                 u64 raz_59_61 : 3;
1381                 u64 jtcsrdis : 1;
1382                 u64 raz_63 : 1;
1383 #endif
1384         };
1385 };
1386 
1387 /**
1388  * struct fus_dat1: Fuse Data 1 Register
1389  * @pll_mul: main clock PLL multiplier hardware limit
1390  * @pll_half_dis: main clock PLL control
1391  * @efus_lck: efuse lockdown
1392  * @zip_info: ZIP information
1393  * @bar2_sz_conf: when zero, BAR2 size conforms to
1394  *    PCIe specification
1395  * @efus_ign: efuse ignore
1396  * @nozip: ZIP disable
1397  * @pll_alt_matrix: select alternate PLL matrix
1398  * @pll_bwadj_denom: select CLKF denominator for
1399  *    BWADJ value
1400  * @chip_id: chip ID
1401  */
1402 union fus_dat1 {
1403         u64 value;
1404         struct {
1405 #if (defined(__BIG_ENDIAN_BITFIELD))
1406                 u64 raz_57_63 : 7;
1407                 u64 pll_mul : 3;
1408                 u64 pll_half_dis : 1;
1409                 u64 raz_43_52 : 10;
1410                 u64 efus_lck : 3;
1411                 u64 raz_26_39 : 14;
1412                 u64 zip_info : 5;
1413                 u64 bar2_sz_conf : 1;
1414                 u64 efus_ign : 1;
1415                 u64 nozip : 1;
1416                 u64 raz_11_17 : 7;
1417                 u64 pll_alt_matrix : 1;
1418                 u64 pll_bwadj_denom : 2;
1419                 u64 chip_id : 8;
1420 #else
1421                 u64 chip_id : 8;
1422                 u64 pll_bwadj_denom : 2;
1423                 u64 pll_alt_matrix : 1;
1424                 u64 raz_11_17 : 7;
1425                 u64 nozip : 1;
1426                 u64 efus_ign : 1;
1427                 u64 bar2_sz_conf : 1;
1428                 u64 zip_info : 5;
1429                 u64 raz_26_39 : 14;
1430                 u64 efus_lck : 3;
1431                 u64 raz_43_52 : 10;
1432                 u64 pll_half_dis : 1;
1433                 u64 pll_mul : 3;
1434                 u64 raz_57_63 : 7;
1435 #endif
1436         };
1437 };
1438 
1439 #endif /* __NITROX_CSR_H */

/* [<][>][^][v][top][bottom][index][help] */