162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef __NITROX_CSR_H 362306a36Sopenharmony_ci#define __NITROX_CSR_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <asm/byteorder.h> 662306a36Sopenharmony_ci#include <linux/types.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* EMU clusters */ 962306a36Sopenharmony_ci#define NR_CLUSTERS 4 1062306a36Sopenharmony_ci/* Maximum cores per cluster, 1162306a36Sopenharmony_ci * varies based on partname 1262306a36Sopenharmony_ci */ 1362306a36Sopenharmony_ci#define AE_CORES_PER_CLUSTER 20 1462306a36Sopenharmony_ci#define SE_CORES_PER_CLUSTER 16 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#define AE_MAX_CORES (AE_CORES_PER_CLUSTER * NR_CLUSTERS) 1762306a36Sopenharmony_ci#define SE_MAX_CORES (SE_CORES_PER_CLUSTER * NR_CLUSTERS) 1862306a36Sopenharmony_ci#define ZIP_MAX_CORES 5 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci/* BIST registers */ 2162306a36Sopenharmony_ci#define EMU_BIST_STATUSX(_i) (0x1402700 + ((_i) * 0x40000)) 2262306a36Sopenharmony_ci#define UCD_BIST_STATUS 0x12C0070 2362306a36Sopenharmony_ci#define NPS_CORE_BIST_REG 0x10000E8 2462306a36Sopenharmony_ci#define NPS_CORE_NPC_BIST_REG 0x1000128 2562306a36Sopenharmony_ci#define NPS_PKT_SLC_BIST_REG 0x1040088 2662306a36Sopenharmony_ci#define NPS_PKT_IN_BIST_REG 0x1040100 2762306a36Sopenharmony_ci#define POM_BIST_REG 0x11C0100 2862306a36Sopenharmony_ci#define BMI_BIST_REG 0x1140080 2962306a36Sopenharmony_ci#define EFL_CORE_BIST_REGX(_i) (0x1240100 + ((_i) * 0x400)) 3062306a36Sopenharmony_ci#define EFL_TOP_BIST_STAT 0x1241090 3162306a36Sopenharmony_ci#define BMO_BIST_REG 0x1180080 3262306a36Sopenharmony_ci#define LBC_BIST_STATUS 0x1200020 3362306a36Sopenharmony_ci#define PEM_BIST_STATUSX(_i) (0x1080468 | ((_i) << 18)) 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci/* EMU registers */ 3662306a36Sopenharmony_ci#define EMU_SE_ENABLEX(_i) (0x1400000 + ((_i) * 0x40000)) 3762306a36Sopenharmony_ci#define EMU_AE_ENABLEX(_i) (0x1400008 + ((_i) * 0x40000)) 3862306a36Sopenharmony_ci#define EMU_WD_INT_ENA_W1SX(_i) (0x1402318 + ((_i) * 0x40000)) 3962306a36Sopenharmony_ci#define EMU_GE_INT_ENA_W1SX(_i) (0x1402518 + ((_i) * 0x40000)) 4062306a36Sopenharmony_ci#define EMU_FUSE_MAPX(_i) (0x1402708 + ((_i) * 0x40000)) 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci/* UCD registers */ 4362306a36Sopenharmony_ci#define UCD_SE_EID_UCODE_BLOCK_NUMX(_i) (0x12C0000 + ((_i) * 0x1000)) 4462306a36Sopenharmony_ci#define UCD_AE_EID_UCODE_BLOCK_NUMX(_i) (0x12C0008 + ((_i) * 0x800)) 4562306a36Sopenharmony_ci#define UCD_UCODE_LOAD_BLOCK_NUM 0x12C0010 4662306a36Sopenharmony_ci#define UCD_UCODE_LOAD_IDX_DATAX(_i) (0x12C0018 + ((_i) * 0x20)) 4762306a36Sopenharmony_ci#define UCD_SE_CNTX(_i) (0x12C0040 + ((_i) * 0x1000)) 4862306a36Sopenharmony_ci#define UCD_AE_CNTX(_i) (0x12C0048 + ((_i) * 0x800)) 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci/* AQM registers */ 5162306a36Sopenharmony_ci#define AQM_CTL 0x1300000 5262306a36Sopenharmony_ci#define AQM_INT 0x1300008 5362306a36Sopenharmony_ci#define AQM_DBELL_OVF_LO 0x1300010 5462306a36Sopenharmony_ci#define AQM_DBELL_OVF_HI 0x1300018 5562306a36Sopenharmony_ci#define AQM_DBELL_OVF_LO_W1S 0x1300020 5662306a36Sopenharmony_ci#define AQM_DBELL_OVF_LO_ENA_W1C 0x1300028 5762306a36Sopenharmony_ci#define AQM_DBELL_OVF_LO_ENA_W1S 0x1300030 5862306a36Sopenharmony_ci#define AQM_DBELL_OVF_HI_W1S 0x1300038 5962306a36Sopenharmony_ci#define AQM_DBELL_OVF_HI_ENA_W1C 0x1300040 6062306a36Sopenharmony_ci#define AQM_DBELL_OVF_HI_ENA_W1S 0x1300048 6162306a36Sopenharmony_ci#define AQM_DMA_RD_ERR_LO 0x1300050 6262306a36Sopenharmony_ci#define AQM_DMA_RD_ERR_HI 0x1300058 6362306a36Sopenharmony_ci#define AQM_DMA_RD_ERR_LO_W1S 0x1300060 6462306a36Sopenharmony_ci#define AQM_DMA_RD_ERR_LO_ENA_W1C 0x1300068 6562306a36Sopenharmony_ci#define AQM_DMA_RD_ERR_LO_ENA_W1S 0x1300070 6662306a36Sopenharmony_ci#define AQM_DMA_RD_ERR_HI_W1S 0x1300078 6762306a36Sopenharmony_ci#define AQM_DMA_RD_ERR_HI_ENA_W1C 0x1300080 6862306a36Sopenharmony_ci#define AQM_DMA_RD_ERR_HI_ENA_W1S 0x1300088 6962306a36Sopenharmony_ci#define AQM_EXEC_NA_LO 0x1300090 7062306a36Sopenharmony_ci#define AQM_EXEC_NA_HI 0x1300098 7162306a36Sopenharmony_ci#define AQM_EXEC_NA_LO_W1S 0x13000A0 7262306a36Sopenharmony_ci#define AQM_EXEC_NA_LO_ENA_W1C 0x13000A8 7362306a36Sopenharmony_ci#define AQM_EXEC_NA_LO_ENA_W1S 0x13000B0 7462306a36Sopenharmony_ci#define AQM_EXEC_NA_HI_W1S 0x13000B8 7562306a36Sopenharmony_ci#define AQM_EXEC_NA_HI_ENA_W1C 0x13000C0 7662306a36Sopenharmony_ci#define AQM_EXEC_NA_HI_ENA_W1S 0x13000C8 7762306a36Sopenharmony_ci#define AQM_EXEC_ERR_LO 0x13000D0 7862306a36Sopenharmony_ci#define AQM_EXEC_ERR_HI 0x13000D8 7962306a36Sopenharmony_ci#define AQM_EXEC_ERR_LO_W1S 0x13000E0 8062306a36Sopenharmony_ci#define AQM_EXEC_ERR_LO_ENA_W1C 0x13000E8 8162306a36Sopenharmony_ci#define AQM_EXEC_ERR_LO_ENA_W1S 0x13000F0 8262306a36Sopenharmony_ci#define AQM_EXEC_ERR_HI_W1S 0x13000F8 8362306a36Sopenharmony_ci#define AQM_EXEC_ERR_HI_ENA_W1C 0x1300100 8462306a36Sopenharmony_ci#define AQM_EXEC_ERR_HI_ENA_W1S 0x1300108 8562306a36Sopenharmony_ci#define AQM_ECC_INT 0x1300110 8662306a36Sopenharmony_ci#define AQM_ECC_INT_W1S 0x1300118 8762306a36Sopenharmony_ci#define AQM_ECC_INT_ENA_W1C 0x1300120 8862306a36Sopenharmony_ci#define AQM_ECC_INT_ENA_W1S 0x1300128 8962306a36Sopenharmony_ci#define AQM_ECC_CTL 0x1300130 9062306a36Sopenharmony_ci#define AQM_BIST_STATUS 0x1300138 9162306a36Sopenharmony_ci#define AQM_CMD_INF_THRX(x) (0x1300400 + ((x) * 0x8)) 9262306a36Sopenharmony_ci#define AQM_CMD_INFX(x) (0x1300800 + ((x) * 0x8)) 9362306a36Sopenharmony_ci#define AQM_GRP_EXECMSK_LOX(x) (0x1300C00 + ((x) * 0x10)) 9462306a36Sopenharmony_ci#define AQM_GRP_EXECMSK_HIX(x) (0x1300C08 + ((x) * 0x10)) 9562306a36Sopenharmony_ci#define AQM_ACTIVITY_STAT_LO 0x1300C80 9662306a36Sopenharmony_ci#define AQM_ACTIVITY_STAT_HI 0x1300C88 9762306a36Sopenharmony_ci#define AQM_Q_CMD_PROCX(x) (0x1301000 + ((x) * 0x8)) 9862306a36Sopenharmony_ci#define AQM_PERF_CTL_LO 0x1301400 9962306a36Sopenharmony_ci#define AQM_PERF_CTL_HI 0x1301408 10062306a36Sopenharmony_ci#define AQM_PERF_CNT 0x1301410 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci#define AQMQ_DRBLX(x) (0x20000 + ((x) * 0x40000)) 10362306a36Sopenharmony_ci#define AQMQ_QSZX(x) (0x20008 + ((x) * 0x40000)) 10462306a36Sopenharmony_ci#define AQMQ_BADRX(x) (0x20010 + ((x) * 0x40000)) 10562306a36Sopenharmony_ci#define AQMQ_NXT_CMDX(x) (0x20018 + ((x) * 0x40000)) 10662306a36Sopenharmony_ci#define AQMQ_CMD_CNTX(x) (0x20020 + ((x) * 0x40000)) 10762306a36Sopenharmony_ci#define AQMQ_CMP_THRX(x) (0x20028 + ((x) * 0x40000)) 10862306a36Sopenharmony_ci#define AQMQ_CMP_CNTX(x) (0x20030 + ((x) * 0x40000)) 10962306a36Sopenharmony_ci#define AQMQ_TIM_LDX(x) (0x20038 + ((x) * 0x40000)) 11062306a36Sopenharmony_ci#define AQMQ_TIMERX(x) (0x20040 + ((x) * 0x40000)) 11162306a36Sopenharmony_ci#define AQMQ_ENX(x) (0x20048 + ((x) * 0x40000)) 11262306a36Sopenharmony_ci#define AQMQ_ACTIVITY_STATX(x) (0x20050 + ((x) * 0x40000)) 11362306a36Sopenharmony_ci#define AQM_VF_CMP_STATX(x) (0x28000 + ((x) * 0x40000)) 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci/* NPS core registers */ 11662306a36Sopenharmony_ci#define NPS_CORE_GBL_VFCFG 0x1000000 11762306a36Sopenharmony_ci#define NPS_CORE_CONTROL 0x1000008 11862306a36Sopenharmony_ci#define NPS_CORE_INT_ACTIVE 0x1000080 11962306a36Sopenharmony_ci#define NPS_CORE_INT 0x10000A0 12062306a36Sopenharmony_ci#define NPS_CORE_INT_ENA_W1S 0x10000B8 12162306a36Sopenharmony_ci#define NPS_STATS_PKT_DMA_RD_CNT 0x1000180 12262306a36Sopenharmony_ci#define NPS_STATS_PKT_DMA_WR_CNT 0x1000190 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci/* NPS packet registers */ 12562306a36Sopenharmony_ci#define NPS_PKT_INT 0x1040018 12662306a36Sopenharmony_ci#define NPS_PKT_MBOX_INT_LO 0x1040020 12762306a36Sopenharmony_ci#define NPS_PKT_MBOX_INT_LO_ENA_W1C 0x1040030 12862306a36Sopenharmony_ci#define NPS_PKT_MBOX_INT_LO_ENA_W1S 0x1040038 12962306a36Sopenharmony_ci#define NPS_PKT_MBOX_INT_HI 0x1040040 13062306a36Sopenharmony_ci#define NPS_PKT_MBOX_INT_HI_ENA_W1C 0x1040050 13162306a36Sopenharmony_ci#define NPS_PKT_MBOX_INT_HI_ENA_W1S 0x1040058 13262306a36Sopenharmony_ci#define NPS_PKT_IN_RERR_HI 0x1040108 13362306a36Sopenharmony_ci#define NPS_PKT_IN_RERR_HI_ENA_W1S 0x1040120 13462306a36Sopenharmony_ci#define NPS_PKT_IN_RERR_LO 0x1040128 13562306a36Sopenharmony_ci#define NPS_PKT_IN_RERR_LO_ENA_W1S 0x1040140 13662306a36Sopenharmony_ci#define NPS_PKT_IN_ERR_TYPE 0x1040148 13762306a36Sopenharmony_ci#define NPS_PKT_IN_ERR_TYPE_ENA_W1S 0x1040160 13862306a36Sopenharmony_ci#define NPS_PKT_IN_INSTR_CTLX(_i) (0x10060 + ((_i) * 0x40000)) 13962306a36Sopenharmony_ci#define NPS_PKT_IN_INSTR_BADDRX(_i) (0x10068 + ((_i) * 0x40000)) 14062306a36Sopenharmony_ci#define NPS_PKT_IN_INSTR_RSIZEX(_i) (0x10070 + ((_i) * 0x40000)) 14162306a36Sopenharmony_ci#define NPS_PKT_IN_DONE_CNTSX(_i) (0x10080 + ((_i) * 0x40000)) 14262306a36Sopenharmony_ci#define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i) (0x10078 + ((_i) * 0x40000)) 14362306a36Sopenharmony_ci#define NPS_PKT_IN_INT_LEVELSX(_i) (0x10088 + ((_i) * 0x40000)) 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci#define NPS_PKT_SLC_RERR_HI 0x1040208 14662306a36Sopenharmony_ci#define NPS_PKT_SLC_RERR_HI_ENA_W1S 0x1040220 14762306a36Sopenharmony_ci#define NPS_PKT_SLC_RERR_LO 0x1040228 14862306a36Sopenharmony_ci#define NPS_PKT_SLC_RERR_LO_ENA_W1S 0x1040240 14962306a36Sopenharmony_ci#define NPS_PKT_SLC_ERR_TYPE 0x1040248 15062306a36Sopenharmony_ci#define NPS_PKT_SLC_ERR_TYPE_ENA_W1S 0x1040260 15162306a36Sopenharmony_ci/* Mailbox PF->VF PF Accessible Data registers */ 15262306a36Sopenharmony_ci#define NPS_PKT_MBOX_PF_VF_PFDATAX(_i) (0x1040800 + ((_i) * 0x8)) 15362306a36Sopenharmony_ci#define NPS_PKT_MBOX_VF_PF_PFDATAX(_i) (0x1040C00 + ((_i) * 0x8)) 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci#define NPS_PKT_SLC_CTLX(_i) (0x10000 + ((_i) * 0x40000)) 15662306a36Sopenharmony_ci#define NPS_PKT_SLC_CNTSX(_i) (0x10008 + ((_i) * 0x40000)) 15762306a36Sopenharmony_ci#define NPS_PKT_SLC_INT_LEVELSX(_i) (0x10010 + ((_i) * 0x40000)) 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci/* POM registers */ 16062306a36Sopenharmony_ci#define POM_INT_ENA_W1S 0x11C0018 16162306a36Sopenharmony_ci#define POM_GRP_EXECMASKX(_i) (0x11C1100 | ((_i) * 8)) 16262306a36Sopenharmony_ci#define POM_INT 0x11C0000 16362306a36Sopenharmony_ci#define POM_PERF_CTL 0x11CC400 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci/* BMI registers */ 16662306a36Sopenharmony_ci#define BMI_INT 0x1140000 16762306a36Sopenharmony_ci#define BMI_CTL 0x1140020 16862306a36Sopenharmony_ci#define BMI_INT_ENA_W1S 0x1140018 16962306a36Sopenharmony_ci#define BMI_NPS_PKT_CNT 0x1140070 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci/* EFL registers */ 17262306a36Sopenharmony_ci#define EFL_CORE_INT_ENA_W1SX(_i) (0x1240018 + ((_i) * 0x400)) 17362306a36Sopenharmony_ci#define EFL_CORE_VF_ERR_INT0X(_i) (0x1240050 + ((_i) * 0x400)) 17462306a36Sopenharmony_ci#define EFL_CORE_VF_ERR_INT0_ENA_W1SX(_i) (0x1240068 + ((_i) * 0x400)) 17562306a36Sopenharmony_ci#define EFL_CORE_VF_ERR_INT1X(_i) (0x1240070 + ((_i) * 0x400)) 17662306a36Sopenharmony_ci#define EFL_CORE_VF_ERR_INT1_ENA_W1SX(_i) (0x1240088 + ((_i) * 0x400)) 17762306a36Sopenharmony_ci#define EFL_CORE_SE_ERR_INTX(_i) (0x12400A0 + ((_i) * 0x400)) 17862306a36Sopenharmony_ci#define EFL_RNM_CTL_STATUS 0x1241800 17962306a36Sopenharmony_ci#define EFL_CORE_INTX(_i) (0x1240000 + ((_i) * 0x400)) 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci/* BMO registers */ 18262306a36Sopenharmony_ci#define BMO_CTL2 0x1180028 18362306a36Sopenharmony_ci#define BMO_NPS_SLC_PKT_CNT 0x1180078 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci/* LBC registers */ 18662306a36Sopenharmony_ci#define LBC_INT 0x1200000 18762306a36Sopenharmony_ci#define LBC_INVAL_CTL 0x1201010 18862306a36Sopenharmony_ci#define LBC_PLM_VF1_64_INT 0x1202008 18962306a36Sopenharmony_ci#define LBC_INVAL_STATUS 0x1202010 19062306a36Sopenharmony_ci#define LBC_INT_ENA_W1S 0x1203000 19162306a36Sopenharmony_ci#define LBC_PLM_VF1_64_INT_ENA_W1S 0x1205008 19262306a36Sopenharmony_ci#define LBC_PLM_VF65_128_INT 0x1206008 19362306a36Sopenharmony_ci#define LBC_ELM_VF1_64_INT 0x1208000 19462306a36Sopenharmony_ci#define LBC_PLM_VF65_128_INT_ENA_W1S 0x1209008 19562306a36Sopenharmony_ci#define LBC_ELM_VF1_64_INT_ENA_W1S 0x120B000 19662306a36Sopenharmony_ci#define LBC_ELM_VF65_128_INT 0x120C000 19762306a36Sopenharmony_ci#define LBC_ELM_VF65_128_INT_ENA_W1S 0x120F000 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci#define RST_BOOT 0x10C1600 20062306a36Sopenharmony_ci#define FUS_DAT1 0x10C1408 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci/* PEM registers */ 20362306a36Sopenharmony_ci#define PEM0_INT 0x1080428 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci/** 20662306a36Sopenharmony_ci * struct ucd_core_eid_ucode_block_num - Core Eid to Ucode Blk Mapping Registers 20762306a36Sopenharmony_ci * @ucode_len: Ucode length identifier 32KB or 64KB 20862306a36Sopenharmony_ci * @ucode_blk: Ucode Block Number 20962306a36Sopenharmony_ci */ 21062306a36Sopenharmony_ciunion ucd_core_eid_ucode_block_num { 21162306a36Sopenharmony_ci u64 value; 21262306a36Sopenharmony_ci struct { 21362306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 21462306a36Sopenharmony_ci u64 raz_4_63 : 60; 21562306a36Sopenharmony_ci u64 ucode_len : 1; 21662306a36Sopenharmony_ci u64 ucode_blk : 3; 21762306a36Sopenharmony_ci#else 21862306a36Sopenharmony_ci u64 ucode_blk : 3; 21962306a36Sopenharmony_ci u64 ucode_len : 1; 22062306a36Sopenharmony_ci u64 raz_4_63 : 60; 22162306a36Sopenharmony_ci#endif 22262306a36Sopenharmony_ci }; 22362306a36Sopenharmony_ci}; 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci/** 22662306a36Sopenharmony_ci * struct aqm_grp_execmsk_lo - Available AE engines for the group 22762306a36Sopenharmony_ci * @exec_0_to_39: AE engines 0 to 39 status 22862306a36Sopenharmony_ci */ 22962306a36Sopenharmony_ciunion aqm_grp_execmsk_lo { 23062306a36Sopenharmony_ci u64 value; 23162306a36Sopenharmony_ci struct { 23262306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 23362306a36Sopenharmony_ci u64 raz_40_63 : 24; 23462306a36Sopenharmony_ci u64 exec_0_to_39 : 40; 23562306a36Sopenharmony_ci#else 23662306a36Sopenharmony_ci u64 exec_0_to_39 : 40; 23762306a36Sopenharmony_ci u64 raz_40_63 : 24; 23862306a36Sopenharmony_ci#endif 23962306a36Sopenharmony_ci }; 24062306a36Sopenharmony_ci}; 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci/** 24362306a36Sopenharmony_ci * struct aqm_grp_execmsk_hi - Available AE engines for the group 24462306a36Sopenharmony_ci * @exec_40_to_79: AE engines 40 to 79 status 24562306a36Sopenharmony_ci */ 24662306a36Sopenharmony_ciunion aqm_grp_execmsk_hi { 24762306a36Sopenharmony_ci u64 value; 24862306a36Sopenharmony_ci struct { 24962306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 25062306a36Sopenharmony_ci u64 raz_40_63 : 24; 25162306a36Sopenharmony_ci u64 exec_40_to_79 : 40; 25262306a36Sopenharmony_ci#else 25362306a36Sopenharmony_ci u64 exec_40_to_79 : 40; 25462306a36Sopenharmony_ci u64 raz_40_63 : 24; 25562306a36Sopenharmony_ci#endif 25662306a36Sopenharmony_ci }; 25762306a36Sopenharmony_ci}; 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci/** 26062306a36Sopenharmony_ci * struct aqmq_drbl - AQM Queue Doorbell Counter Registers 26162306a36Sopenharmony_ci * @dbell_count: Doorbell Counter 26262306a36Sopenharmony_ci */ 26362306a36Sopenharmony_ciunion aqmq_drbl { 26462306a36Sopenharmony_ci u64 value; 26562306a36Sopenharmony_ci struct { 26662306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 26762306a36Sopenharmony_ci u64 raz_32_63 : 32; 26862306a36Sopenharmony_ci u64 dbell_count : 32; 26962306a36Sopenharmony_ci#else 27062306a36Sopenharmony_ci u64 dbell_count : 32; 27162306a36Sopenharmony_ci u64 raz_32_63 : 32; 27262306a36Sopenharmony_ci#endif 27362306a36Sopenharmony_ci }; 27462306a36Sopenharmony_ci}; 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci/** 27762306a36Sopenharmony_ci * struct aqmq_qsz - AQM Queue Host Queue Size Registers 27862306a36Sopenharmony_ci * @host_queue_size: Size, in numbers of 'aqmq_command_s' command 27962306a36Sopenharmony_ci * of the Host Ring. 28062306a36Sopenharmony_ci */ 28162306a36Sopenharmony_ciunion aqmq_qsz { 28262306a36Sopenharmony_ci u64 value; 28362306a36Sopenharmony_ci struct { 28462306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 28562306a36Sopenharmony_ci u64 raz_32_63 : 32; 28662306a36Sopenharmony_ci u64 host_queue_size : 32; 28762306a36Sopenharmony_ci#else 28862306a36Sopenharmony_ci u64 host_queue_size : 32; 28962306a36Sopenharmony_ci u64 raz_32_63 : 32; 29062306a36Sopenharmony_ci#endif 29162306a36Sopenharmony_ci }; 29262306a36Sopenharmony_ci}; 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ci/** 29562306a36Sopenharmony_ci * struct aqmq_cmp_thr - AQM Queue Commands Completed Threshold Registers 29662306a36Sopenharmony_ci * @commands_completed_threshold: Count of 'aqmq_command_s' commands executed 29762306a36Sopenharmony_ci * by AE engines for which completion interrupt is asserted. 29862306a36Sopenharmony_ci */ 29962306a36Sopenharmony_ciunion aqmq_cmp_thr { 30062306a36Sopenharmony_ci u64 value; 30162306a36Sopenharmony_ci struct { 30262306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 30362306a36Sopenharmony_ci u64 raz_32_63 : 32; 30462306a36Sopenharmony_ci u64 commands_completed_threshold : 32; 30562306a36Sopenharmony_ci#else 30662306a36Sopenharmony_ci u64 commands_completed_threshold : 32; 30762306a36Sopenharmony_ci u64 raz_32_63 : 32; 30862306a36Sopenharmony_ci#endif 30962306a36Sopenharmony_ci }; 31062306a36Sopenharmony_ci}; 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ci/** 31362306a36Sopenharmony_ci * struct aqmq_cmp_cnt - AQM Queue Commands Completed Count Registers 31462306a36Sopenharmony_ci * @resend: Bit to request completion interrupt Resend. 31562306a36Sopenharmony_ci * @completion_status: Command completion status of the ring. 31662306a36Sopenharmony_ci * @commands_completed_count: Count of 'aqmq_command_s' commands executed by 31762306a36Sopenharmony_ci * AE engines. 31862306a36Sopenharmony_ci */ 31962306a36Sopenharmony_ciunion aqmq_cmp_cnt { 32062306a36Sopenharmony_ci u64 value; 32162306a36Sopenharmony_ci struct { 32262306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 32362306a36Sopenharmony_ci u64 raz_34_63 : 30; 32462306a36Sopenharmony_ci u64 resend : 1; 32562306a36Sopenharmony_ci u64 completion_status : 1; 32662306a36Sopenharmony_ci u64 commands_completed_count : 32; 32762306a36Sopenharmony_ci#else 32862306a36Sopenharmony_ci u64 commands_completed_count : 32; 32962306a36Sopenharmony_ci u64 completion_status : 1; 33062306a36Sopenharmony_ci u64 resend : 1; 33162306a36Sopenharmony_ci u64 raz_34_63 : 30; 33262306a36Sopenharmony_ci#endif 33362306a36Sopenharmony_ci }; 33462306a36Sopenharmony_ci}; 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ci/** 33762306a36Sopenharmony_ci * struct aqmq_en - AQM Queue Enable Registers 33862306a36Sopenharmony_ci * @queue_status: 1 = AQMQ is enabled, 0 = AQMQ is disabled 33962306a36Sopenharmony_ci */ 34062306a36Sopenharmony_ciunion aqmq_en { 34162306a36Sopenharmony_ci u64 value; 34262306a36Sopenharmony_ci struct { 34362306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 34462306a36Sopenharmony_ci u64 raz_1_63 : 63; 34562306a36Sopenharmony_ci u64 queue_enable : 1; 34662306a36Sopenharmony_ci#else 34762306a36Sopenharmony_ci u64 queue_enable : 1; 34862306a36Sopenharmony_ci u64 raz_1_63 : 63; 34962306a36Sopenharmony_ci#endif 35062306a36Sopenharmony_ci }; 35162306a36Sopenharmony_ci}; 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci/** 35462306a36Sopenharmony_ci * struct aqmq_activity_stat - AQM Queue Activity Status Registers 35562306a36Sopenharmony_ci * @queue_active: 1 = AQMQ is active, 0 = AQMQ is quiescent 35662306a36Sopenharmony_ci */ 35762306a36Sopenharmony_ciunion aqmq_activity_stat { 35862306a36Sopenharmony_ci u64 value; 35962306a36Sopenharmony_ci struct { 36062306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 36162306a36Sopenharmony_ci u64 raz_1_63 : 63; 36262306a36Sopenharmony_ci u64 queue_active : 1; 36362306a36Sopenharmony_ci#else 36462306a36Sopenharmony_ci u64 queue_active : 1; 36562306a36Sopenharmony_ci u64 raz_1_63 : 63; 36662306a36Sopenharmony_ci#endif 36762306a36Sopenharmony_ci }; 36862306a36Sopenharmony_ci}; 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ci/** 37162306a36Sopenharmony_ci * struct emu_fuse_map - EMU Fuse Map Registers 37262306a36Sopenharmony_ci * @ae_fuse: Fuse settings for AE 19..0 37362306a36Sopenharmony_ci * @se_fuse: Fuse settings for SE 15..0 37462306a36Sopenharmony_ci * 37562306a36Sopenharmony_ci * A set bit indicates the unit is fuse disabled. 37662306a36Sopenharmony_ci */ 37762306a36Sopenharmony_ciunion emu_fuse_map { 37862306a36Sopenharmony_ci u64 value; 37962306a36Sopenharmony_ci struct { 38062306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 38162306a36Sopenharmony_ci u64 valid : 1; 38262306a36Sopenharmony_ci u64 raz_52_62 : 11; 38362306a36Sopenharmony_ci u64 ae_fuse : 20; 38462306a36Sopenharmony_ci u64 raz_16_31 : 16; 38562306a36Sopenharmony_ci u64 se_fuse : 16; 38662306a36Sopenharmony_ci#else 38762306a36Sopenharmony_ci u64 se_fuse : 16; 38862306a36Sopenharmony_ci u64 raz_16_31 : 16; 38962306a36Sopenharmony_ci u64 ae_fuse : 20; 39062306a36Sopenharmony_ci u64 raz_52_62 : 11; 39162306a36Sopenharmony_ci u64 valid : 1; 39262306a36Sopenharmony_ci#endif 39362306a36Sopenharmony_ci } s; 39462306a36Sopenharmony_ci}; 39562306a36Sopenharmony_ci 39662306a36Sopenharmony_ci/** 39762306a36Sopenharmony_ci * struct emu_se_enable - Symmetric Engine Enable Registers 39862306a36Sopenharmony_ci * @enable: Individual enables for each of the clusters 39962306a36Sopenharmony_ci * 16 symmetric engines. 40062306a36Sopenharmony_ci */ 40162306a36Sopenharmony_ciunion emu_se_enable { 40262306a36Sopenharmony_ci u64 value; 40362306a36Sopenharmony_ci struct { 40462306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 40562306a36Sopenharmony_ci u64 raz : 48; 40662306a36Sopenharmony_ci u64 enable : 16; 40762306a36Sopenharmony_ci#else 40862306a36Sopenharmony_ci u64 enable : 16; 40962306a36Sopenharmony_ci u64 raz : 48; 41062306a36Sopenharmony_ci#endif 41162306a36Sopenharmony_ci } s; 41262306a36Sopenharmony_ci}; 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ci/** 41562306a36Sopenharmony_ci * struct emu_ae_enable - EMU Asymmetric engines. 41662306a36Sopenharmony_ci * @enable: Individual enables for each of the cluster's 41762306a36Sopenharmony_ci * 20 Asymmetric Engines. 41862306a36Sopenharmony_ci */ 41962306a36Sopenharmony_ciunion emu_ae_enable { 42062306a36Sopenharmony_ci u64 value; 42162306a36Sopenharmony_ci struct { 42262306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 42362306a36Sopenharmony_ci u64 raz : 44; 42462306a36Sopenharmony_ci u64 enable : 20; 42562306a36Sopenharmony_ci#else 42662306a36Sopenharmony_ci u64 enable : 20; 42762306a36Sopenharmony_ci u64 raz : 44; 42862306a36Sopenharmony_ci#endif 42962306a36Sopenharmony_ci } s; 43062306a36Sopenharmony_ci}; 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_ci/** 43362306a36Sopenharmony_ci * struct emu_wd_int_ena_w1s - EMU Interrupt Enable Registers 43462306a36Sopenharmony_ci * @ae_wd: Reads or sets enable for EMU(0..3)_WD_INT[AE_WD] 43562306a36Sopenharmony_ci * @se_wd: Reads or sets enable for EMU(0..3)_WD_INT[SE_WD] 43662306a36Sopenharmony_ci */ 43762306a36Sopenharmony_ciunion emu_wd_int_ena_w1s { 43862306a36Sopenharmony_ci u64 value; 43962306a36Sopenharmony_ci struct { 44062306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 44162306a36Sopenharmony_ci u64 raz2 : 12; 44262306a36Sopenharmony_ci u64 ae_wd : 20; 44362306a36Sopenharmony_ci u64 raz1 : 16; 44462306a36Sopenharmony_ci u64 se_wd : 16; 44562306a36Sopenharmony_ci#else 44662306a36Sopenharmony_ci u64 se_wd : 16; 44762306a36Sopenharmony_ci u64 raz1 : 16; 44862306a36Sopenharmony_ci u64 ae_wd : 20; 44962306a36Sopenharmony_ci u64 raz2 : 12; 45062306a36Sopenharmony_ci#endif 45162306a36Sopenharmony_ci } s; 45262306a36Sopenharmony_ci}; 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_ci/** 45562306a36Sopenharmony_ci * struct emu_ge_int_ena_w1s - EMU Interrupt Enable set registers 45662306a36Sopenharmony_ci * @ae_ge: Reads or sets enable for EMU(0..3)_GE_INT[AE_GE] 45762306a36Sopenharmony_ci * @se_ge: Reads or sets enable for EMU(0..3)_GE_INT[SE_GE] 45862306a36Sopenharmony_ci */ 45962306a36Sopenharmony_ciunion emu_ge_int_ena_w1s { 46062306a36Sopenharmony_ci u64 value; 46162306a36Sopenharmony_ci struct { 46262306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 46362306a36Sopenharmony_ci u64 raz_52_63 : 12; 46462306a36Sopenharmony_ci u64 ae_ge : 20; 46562306a36Sopenharmony_ci u64 raz_16_31: 16; 46662306a36Sopenharmony_ci u64 se_ge : 16; 46762306a36Sopenharmony_ci#else 46862306a36Sopenharmony_ci u64 se_ge : 16; 46962306a36Sopenharmony_ci u64 raz_16_31: 16; 47062306a36Sopenharmony_ci u64 ae_ge : 20; 47162306a36Sopenharmony_ci u64 raz_52_63 : 12; 47262306a36Sopenharmony_ci#endif 47362306a36Sopenharmony_ci } s; 47462306a36Sopenharmony_ci}; 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_ci/** 47762306a36Sopenharmony_ci * struct nps_pkt_slc_ctl - Solicited Packet Out Control Registers 47862306a36Sopenharmony_ci * @rh: Indicates whether to remove or include the response header 47962306a36Sopenharmony_ci * 1 = Include, 0 = Remove 48062306a36Sopenharmony_ci * @z: If set, 8 trailing 0x00 bytes will be added to the end of the 48162306a36Sopenharmony_ci * outgoing packet. 48262306a36Sopenharmony_ci * @enb: Enable for this port. 48362306a36Sopenharmony_ci */ 48462306a36Sopenharmony_ciunion nps_pkt_slc_ctl { 48562306a36Sopenharmony_ci u64 value; 48662306a36Sopenharmony_ci struct { 48762306a36Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD) 48862306a36Sopenharmony_ci u64 raz : 61; 48962306a36Sopenharmony_ci u64 rh : 1; 49062306a36Sopenharmony_ci u64 z : 1; 49162306a36Sopenharmony_ci u64 enb : 1; 49262306a36Sopenharmony_ci#else 49362306a36Sopenharmony_ci u64 enb : 1; 49462306a36Sopenharmony_ci u64 z : 1; 49562306a36Sopenharmony_ci u64 rh : 1; 49662306a36Sopenharmony_ci u64 raz : 61; 49762306a36Sopenharmony_ci#endif 49862306a36Sopenharmony_ci } s; 49962306a36Sopenharmony_ci}; 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ci/** 50262306a36Sopenharmony_ci * struct nps_pkt_slc_cnts - Solicited Packet Out Count Registers 50362306a36Sopenharmony_ci * @slc_int: Returns a 1 when: 50462306a36Sopenharmony_ci * NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or 50562306a36Sopenharmony_ci * NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET]. 50662306a36Sopenharmony_ci * To clear the bit, the CNTS register must be written to clear. 50762306a36Sopenharmony_ci * @in_int: Returns a 1 when: 50862306a36Sopenharmony_ci * NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT]. 50962306a36Sopenharmony_ci * To clear the bit, the DONE_CNTS register must be written to clear. 51062306a36Sopenharmony_ci * @mbox_int: Returns a 1 when: 51162306a36Sopenharmony_ci * NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set. To clear the bit, 51262306a36Sopenharmony_ci * write NPS_PKT_MBOX_PF_VF(i)_INT[INTR] with 1. 51362306a36Sopenharmony_ci * @timer: Timer, incremented every 2048 coprocessor clock cycles 51462306a36Sopenharmony_ci * when [CNT] is not zero. The hardware clears both [TIMER] and 51562306a36Sopenharmony_ci * [INT] when [CNT] goes to 0. 51662306a36Sopenharmony_ci * @cnt: Packet counter. Hardware adds to [CNT] as it sends packets out. 51762306a36Sopenharmony_ci * On a write to this CSR, hardware subtracts the amount written to the 51862306a36Sopenharmony_ci * [CNT] field from [CNT]. 51962306a36Sopenharmony_ci */ 52062306a36Sopenharmony_ciunion nps_pkt_slc_cnts { 52162306a36Sopenharmony_ci u64 value; 52262306a36Sopenharmony_ci struct { 52362306a36Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD) 52462306a36Sopenharmony_ci u64 slc_int : 1; 52562306a36Sopenharmony_ci u64 uns_int : 1; 52662306a36Sopenharmony_ci u64 in_int : 1; 52762306a36Sopenharmony_ci u64 mbox_int : 1; 52862306a36Sopenharmony_ci u64 resend : 1; 52962306a36Sopenharmony_ci u64 raz : 5; 53062306a36Sopenharmony_ci u64 timer : 22; 53162306a36Sopenharmony_ci u64 cnt : 32; 53262306a36Sopenharmony_ci#else 53362306a36Sopenharmony_ci u64 cnt : 32; 53462306a36Sopenharmony_ci u64 timer : 22; 53562306a36Sopenharmony_ci u64 raz : 5; 53662306a36Sopenharmony_ci u64 resend : 1; 53762306a36Sopenharmony_ci u64 mbox_int : 1; 53862306a36Sopenharmony_ci u64 in_int : 1; 53962306a36Sopenharmony_ci u64 uns_int : 1; 54062306a36Sopenharmony_ci u64 slc_int : 1; 54162306a36Sopenharmony_ci#endif 54262306a36Sopenharmony_ci } s; 54362306a36Sopenharmony_ci}; 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_ci/** 54662306a36Sopenharmony_ci * struct nps_pkt_slc_int_levels - Solicited Packet Out Interrupt Levels 54762306a36Sopenharmony_ci * Registers. 54862306a36Sopenharmony_ci * @bmode: Determines whether NPS_PKT_SLC_CNTS[CNT] is a byte or 54962306a36Sopenharmony_ci * packet counter. 55062306a36Sopenharmony_ci * @timet: Output port counter time interrupt threshold. 55162306a36Sopenharmony_ci * @cnt: Output port counter interrupt threshold. 55262306a36Sopenharmony_ci */ 55362306a36Sopenharmony_ciunion nps_pkt_slc_int_levels { 55462306a36Sopenharmony_ci u64 value; 55562306a36Sopenharmony_ci struct { 55662306a36Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD) 55762306a36Sopenharmony_ci u64 bmode : 1; 55862306a36Sopenharmony_ci u64 raz : 9; 55962306a36Sopenharmony_ci u64 timet : 22; 56062306a36Sopenharmony_ci u64 cnt : 32; 56162306a36Sopenharmony_ci#else 56262306a36Sopenharmony_ci u64 cnt : 32; 56362306a36Sopenharmony_ci u64 timet : 22; 56462306a36Sopenharmony_ci u64 raz : 9; 56562306a36Sopenharmony_ci u64 bmode : 1; 56662306a36Sopenharmony_ci#endif 56762306a36Sopenharmony_ci } s; 56862306a36Sopenharmony_ci}; 56962306a36Sopenharmony_ci 57062306a36Sopenharmony_ci/** 57162306a36Sopenharmony_ci * struct nps_pkt_inst - NPS Packet Interrupt Register 57262306a36Sopenharmony_ci * @in_err: Set when any NPS_PKT_IN_RERR_HI/LO bit and 57362306a36Sopenharmony_ci * corresponding NPS_PKT_IN_RERR_*_ENA_* bit are bot set. 57462306a36Sopenharmony_ci * @uns_err: Set when any NSP_PKT_UNS_RERR_HI/LO bit and 57562306a36Sopenharmony_ci * corresponding NPS_PKT_UNS_RERR_*_ENA_* bit are both set. 57662306a36Sopenharmony_ci * @slc_er: Set when any NSP_PKT_SLC_RERR_HI/LO bit and 57762306a36Sopenharmony_ci * corresponding NPS_PKT_SLC_RERR_*_ENA_* bit are both set. 57862306a36Sopenharmony_ci */ 57962306a36Sopenharmony_ciunion nps_pkt_int { 58062306a36Sopenharmony_ci u64 value; 58162306a36Sopenharmony_ci struct { 58262306a36Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD) 58362306a36Sopenharmony_ci u64 raz : 54; 58462306a36Sopenharmony_ci u64 uns_wto : 1; 58562306a36Sopenharmony_ci u64 in_err : 1; 58662306a36Sopenharmony_ci u64 uns_err : 1; 58762306a36Sopenharmony_ci u64 slc_err : 1; 58862306a36Sopenharmony_ci u64 in_dbe : 1; 58962306a36Sopenharmony_ci u64 in_sbe : 1; 59062306a36Sopenharmony_ci u64 uns_dbe : 1; 59162306a36Sopenharmony_ci u64 uns_sbe : 1; 59262306a36Sopenharmony_ci u64 slc_dbe : 1; 59362306a36Sopenharmony_ci u64 slc_sbe : 1; 59462306a36Sopenharmony_ci#else 59562306a36Sopenharmony_ci u64 slc_sbe : 1; 59662306a36Sopenharmony_ci u64 slc_dbe : 1; 59762306a36Sopenharmony_ci u64 uns_sbe : 1; 59862306a36Sopenharmony_ci u64 uns_dbe : 1; 59962306a36Sopenharmony_ci u64 in_sbe : 1; 60062306a36Sopenharmony_ci u64 in_dbe : 1; 60162306a36Sopenharmony_ci u64 slc_err : 1; 60262306a36Sopenharmony_ci u64 uns_err : 1; 60362306a36Sopenharmony_ci u64 in_err : 1; 60462306a36Sopenharmony_ci u64 uns_wto : 1; 60562306a36Sopenharmony_ci u64 raz : 54; 60662306a36Sopenharmony_ci#endif 60762306a36Sopenharmony_ci } s; 60862306a36Sopenharmony_ci}; 60962306a36Sopenharmony_ci 61062306a36Sopenharmony_ci/** 61162306a36Sopenharmony_ci * struct nps_pkt_in_done_cnts - Input instruction ring counts registers 61262306a36Sopenharmony_ci * @slc_cnt: Returns a 1 when: 61362306a36Sopenharmony_ci * NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or 61462306a36Sopenharmony_ci * NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SCL(i)_INT_LEVELS[TIMET] 61562306a36Sopenharmony_ci * To clear the bit, the CNTS register must be 61662306a36Sopenharmony_ci * written to clear the underlying condition 61762306a36Sopenharmony_ci * @uns_int: Return a 1 when: 61862306a36Sopenharmony_ci * NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT], or 61962306a36Sopenharmony_ci * NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET] 62062306a36Sopenharmony_ci * To clear the bit, the CNTS register must be 62162306a36Sopenharmony_ci * written to clear the underlying condition 62262306a36Sopenharmony_ci * @in_int: Returns a 1 when: 62362306a36Sopenharmony_ci * NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT] 62462306a36Sopenharmony_ci * To clear the bit, the DONE_CNTS register 62562306a36Sopenharmony_ci * must be written to clear the underlying condition 62662306a36Sopenharmony_ci * @mbox_int: Returns a 1 when: 62762306a36Sopenharmony_ci * NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set. 62862306a36Sopenharmony_ci * To clear the bit, write NPS_PKT_MBOX_PF_VF(i)_INT[INTR] 62962306a36Sopenharmony_ci * with 1. 63062306a36Sopenharmony_ci * @resend: A write of 1 will resend an MSI-X interrupt message if any 63162306a36Sopenharmony_ci * of the following conditions are true for this ring "i". 63262306a36Sopenharmony_ci * NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT] 63362306a36Sopenharmony_ci * NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET] 63462306a36Sopenharmony_ci * NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT] 63562306a36Sopenharmony_ci * NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET] 63662306a36Sopenharmony_ci * NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT] 63762306a36Sopenharmony_ci * NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set 63862306a36Sopenharmony_ci * @cnt: Packet counter. Hardware adds to [CNT] as it reads 63962306a36Sopenharmony_ci * packets. On a write to this CSR, hardware substracts the 64062306a36Sopenharmony_ci * amount written to the [CNT] field from [CNT], which will 64162306a36Sopenharmony_ci * clear PKT_IN(i)_INT_STATUS[INTR] if [CNT] becomes <= 64262306a36Sopenharmony_ci * NPS_PKT_IN(i)_INT_LEVELS[CNT]. This register should be 64362306a36Sopenharmony_ci * cleared before enabling a ring by reading the current 64462306a36Sopenharmony_ci * value and writing it back. 64562306a36Sopenharmony_ci */ 64662306a36Sopenharmony_ciunion nps_pkt_in_done_cnts { 64762306a36Sopenharmony_ci u64 value; 64862306a36Sopenharmony_ci struct { 64962306a36Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD) 65062306a36Sopenharmony_ci u64 slc_int : 1; 65162306a36Sopenharmony_ci u64 uns_int : 1; 65262306a36Sopenharmony_ci u64 in_int : 1; 65362306a36Sopenharmony_ci u64 mbox_int : 1; 65462306a36Sopenharmony_ci u64 resend : 1; 65562306a36Sopenharmony_ci u64 raz : 27; 65662306a36Sopenharmony_ci u64 cnt : 32; 65762306a36Sopenharmony_ci#else 65862306a36Sopenharmony_ci u64 cnt : 32; 65962306a36Sopenharmony_ci u64 raz : 27; 66062306a36Sopenharmony_ci u64 resend : 1; 66162306a36Sopenharmony_ci u64 mbox_int : 1; 66262306a36Sopenharmony_ci u64 in_int : 1; 66362306a36Sopenharmony_ci u64 uns_int : 1; 66462306a36Sopenharmony_ci u64 slc_int : 1; 66562306a36Sopenharmony_ci#endif 66662306a36Sopenharmony_ci } s; 66762306a36Sopenharmony_ci}; 66862306a36Sopenharmony_ci 66962306a36Sopenharmony_ci/** 67062306a36Sopenharmony_ci * struct nps_pkt_in_instr_ctl - Input Instruction Ring Control Registers. 67162306a36Sopenharmony_ci * @is64b: If 1, the ring uses 64-byte instructions. If 0, the 67262306a36Sopenharmony_ci * ring uses 32-byte instructions. 67362306a36Sopenharmony_ci * @enb: Enable for the input ring. 67462306a36Sopenharmony_ci */ 67562306a36Sopenharmony_ciunion nps_pkt_in_instr_ctl { 67662306a36Sopenharmony_ci u64 value; 67762306a36Sopenharmony_ci struct { 67862306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 67962306a36Sopenharmony_ci u64 raz : 62; 68062306a36Sopenharmony_ci u64 is64b : 1; 68162306a36Sopenharmony_ci u64 enb : 1; 68262306a36Sopenharmony_ci#else 68362306a36Sopenharmony_ci u64 enb : 1; 68462306a36Sopenharmony_ci u64 is64b : 1; 68562306a36Sopenharmony_ci u64 raz : 62; 68662306a36Sopenharmony_ci#endif 68762306a36Sopenharmony_ci } s; 68862306a36Sopenharmony_ci}; 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ci/** 69162306a36Sopenharmony_ci * struct nps_pkt_in_instr_rsize - Input instruction ring size registers 69262306a36Sopenharmony_ci * @rsize: Ring size (number of instructions) 69362306a36Sopenharmony_ci */ 69462306a36Sopenharmony_ciunion nps_pkt_in_instr_rsize { 69562306a36Sopenharmony_ci u64 value; 69662306a36Sopenharmony_ci struct { 69762306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 69862306a36Sopenharmony_ci u64 raz : 32; 69962306a36Sopenharmony_ci u64 rsize : 32; 70062306a36Sopenharmony_ci#else 70162306a36Sopenharmony_ci u64 rsize : 32; 70262306a36Sopenharmony_ci u64 raz : 32; 70362306a36Sopenharmony_ci#endif 70462306a36Sopenharmony_ci } s; 70562306a36Sopenharmony_ci}; 70662306a36Sopenharmony_ci 70762306a36Sopenharmony_ci/** 70862306a36Sopenharmony_ci * struct nps_pkt_in_instr_baoff_dbell - Input instruction ring 70962306a36Sopenharmony_ci * base address offset and doorbell registers 71062306a36Sopenharmony_ci * @aoff: Address offset. The offset from the NPS_PKT_IN_INSTR_BADDR 71162306a36Sopenharmony_ci * where the next pointer is read. 71262306a36Sopenharmony_ci * @dbell: Pointer list doorbell count. Write operations to this field 71362306a36Sopenharmony_ci * increments the present value here. Read operations return the 71462306a36Sopenharmony_ci * present value. 71562306a36Sopenharmony_ci */ 71662306a36Sopenharmony_ciunion nps_pkt_in_instr_baoff_dbell { 71762306a36Sopenharmony_ci u64 value; 71862306a36Sopenharmony_ci struct { 71962306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 72062306a36Sopenharmony_ci u64 aoff : 32; 72162306a36Sopenharmony_ci u64 dbell : 32; 72262306a36Sopenharmony_ci#else 72362306a36Sopenharmony_ci u64 dbell : 32; 72462306a36Sopenharmony_ci u64 aoff : 32; 72562306a36Sopenharmony_ci#endif 72662306a36Sopenharmony_ci } s; 72762306a36Sopenharmony_ci}; 72862306a36Sopenharmony_ci 72962306a36Sopenharmony_ci/** 73062306a36Sopenharmony_ci * struct nps_core_int_ena_w1s - NPS core interrupt enable set register 73162306a36Sopenharmony_ci * @host_nps_wr_err: Reads or sets enable for 73262306a36Sopenharmony_ci * NPS_CORE_INT[HOST_NPS_WR_ERR]. 73362306a36Sopenharmony_ci * @npco_dma_malform: Reads or sets enable for 73462306a36Sopenharmony_ci * NPS_CORE_INT[NPCO_DMA_MALFORM]. 73562306a36Sopenharmony_ci * @exec_wr_timeout: Reads or sets enable for 73662306a36Sopenharmony_ci * NPS_CORE_INT[EXEC_WR_TIMEOUT]. 73762306a36Sopenharmony_ci * @host_wr_timeout: Reads or sets enable for 73862306a36Sopenharmony_ci * NPS_CORE_INT[HOST_WR_TIMEOUT]. 73962306a36Sopenharmony_ci * @host_wr_err: Reads or sets enable for 74062306a36Sopenharmony_ci * NPS_CORE_INT[HOST_WR_ERR] 74162306a36Sopenharmony_ci */ 74262306a36Sopenharmony_ciunion nps_core_int_ena_w1s { 74362306a36Sopenharmony_ci u64 value; 74462306a36Sopenharmony_ci struct { 74562306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 74662306a36Sopenharmony_ci u64 raz4 : 55; 74762306a36Sopenharmony_ci u64 host_nps_wr_err : 1; 74862306a36Sopenharmony_ci u64 npco_dma_malform : 1; 74962306a36Sopenharmony_ci u64 exec_wr_timeout : 1; 75062306a36Sopenharmony_ci u64 host_wr_timeout : 1; 75162306a36Sopenharmony_ci u64 host_wr_err : 1; 75262306a36Sopenharmony_ci u64 raz3 : 1; 75362306a36Sopenharmony_ci u64 raz2 : 1; 75462306a36Sopenharmony_ci u64 raz1 : 1; 75562306a36Sopenharmony_ci u64 raz0 : 1; 75662306a36Sopenharmony_ci#else 75762306a36Sopenharmony_ci u64 raz0 : 1; 75862306a36Sopenharmony_ci u64 raz1 : 1; 75962306a36Sopenharmony_ci u64 raz2 : 1; 76062306a36Sopenharmony_ci u64 raz3 : 1; 76162306a36Sopenharmony_ci u64 host_wr_err : 1; 76262306a36Sopenharmony_ci u64 host_wr_timeout : 1; 76362306a36Sopenharmony_ci u64 exec_wr_timeout : 1; 76462306a36Sopenharmony_ci u64 npco_dma_malform : 1; 76562306a36Sopenharmony_ci u64 host_nps_wr_err : 1; 76662306a36Sopenharmony_ci u64 raz4 : 55; 76762306a36Sopenharmony_ci#endif 76862306a36Sopenharmony_ci } s; 76962306a36Sopenharmony_ci}; 77062306a36Sopenharmony_ci 77162306a36Sopenharmony_ci/** 77262306a36Sopenharmony_ci * struct nps_core_gbl_vfcfg - Global VF Configuration Register. 77362306a36Sopenharmony_ci * @ilk_disable: When set, this bit indicates that the ILK interface has 77462306a36Sopenharmony_ci * been disabled. 77562306a36Sopenharmony_ci * @obaf: BMO allocation control 77662306a36Sopenharmony_ci * 0 = allocate per queue 77762306a36Sopenharmony_ci * 1 = allocate per VF 77862306a36Sopenharmony_ci * @ibaf: BMI allocation control 77962306a36Sopenharmony_ci * 0 = allocate per queue 78062306a36Sopenharmony_ci * 1 = allocate per VF 78162306a36Sopenharmony_ci * @zaf: ZIP allocation control 78262306a36Sopenharmony_ci * 0 = allocate per queue 78362306a36Sopenharmony_ci * 1 = allocate per VF 78462306a36Sopenharmony_ci * @aeaf: AE allocation control 78562306a36Sopenharmony_ci * 0 = allocate per queue 78662306a36Sopenharmony_ci * 1 = allocate per VF 78762306a36Sopenharmony_ci * @seaf: SE allocation control 78862306a36Sopenharmony_ci * 0 = allocation per queue 78962306a36Sopenharmony_ci * 1 = allocate per VF 79062306a36Sopenharmony_ci * @cfg: VF/PF mode. 79162306a36Sopenharmony_ci */ 79262306a36Sopenharmony_ciunion nps_core_gbl_vfcfg { 79362306a36Sopenharmony_ci u64 value; 79462306a36Sopenharmony_ci struct { 79562306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 79662306a36Sopenharmony_ci u64 raz :55; 79762306a36Sopenharmony_ci u64 ilk_disable :1; 79862306a36Sopenharmony_ci u64 obaf :1; 79962306a36Sopenharmony_ci u64 ibaf :1; 80062306a36Sopenharmony_ci u64 zaf :1; 80162306a36Sopenharmony_ci u64 aeaf :1; 80262306a36Sopenharmony_ci u64 seaf :1; 80362306a36Sopenharmony_ci u64 cfg :3; 80462306a36Sopenharmony_ci#else 80562306a36Sopenharmony_ci u64 cfg :3; 80662306a36Sopenharmony_ci u64 seaf :1; 80762306a36Sopenharmony_ci u64 aeaf :1; 80862306a36Sopenharmony_ci u64 zaf :1; 80962306a36Sopenharmony_ci u64 ibaf :1; 81062306a36Sopenharmony_ci u64 obaf :1; 81162306a36Sopenharmony_ci u64 ilk_disable :1; 81262306a36Sopenharmony_ci u64 raz :55; 81362306a36Sopenharmony_ci#endif 81462306a36Sopenharmony_ci } s; 81562306a36Sopenharmony_ci}; 81662306a36Sopenharmony_ci 81762306a36Sopenharmony_ci/** 81862306a36Sopenharmony_ci * struct nps_core_int_active - NPS Core Interrupt Active Register 81962306a36Sopenharmony_ci * @resend: Resend MSI-X interrupt if needs to handle interrupts 82062306a36Sopenharmony_ci * Sofware can set this bit and then exit the ISR. 82162306a36Sopenharmony_ci * @ocla: Set when any OCLA(0)_INT and corresponding OCLA(0_INT_ENA_W1C 82262306a36Sopenharmony_ci * bit are set 82362306a36Sopenharmony_ci * @mbox: Set when any NPS_PKT_MBOX_INT_LO/HI and corresponding 82462306a36Sopenharmony_ci * NPS_PKT_MBOX_INT_LO_ENA_W1C/HI_ENA_W1C bits are set 82562306a36Sopenharmony_ci * @emu: bit i is set in [EMU] when any EMU(i)_INT bit is set 82662306a36Sopenharmony_ci * @bmo: Set when any BMO_INT bit is set 82762306a36Sopenharmony_ci * @bmi: Set when any BMI_INT bit is set or when any non-RO 82862306a36Sopenharmony_ci * BMI_INT and corresponding BMI_INT_ENA_W1C bits are both set 82962306a36Sopenharmony_ci * @aqm: Set when any AQM_INT bit is set 83062306a36Sopenharmony_ci * @zqm: Set when any ZQM_INT bit is set 83162306a36Sopenharmony_ci * @efl: Set when any EFL_INT RO bit is set or when any non-RO EFL_INT 83262306a36Sopenharmony_ci * and corresponding EFL_INT_ENA_W1C bits are both set 83362306a36Sopenharmony_ci * @ilk: Set when any ILK_INT bit is set 83462306a36Sopenharmony_ci * @lbc: Set when any LBC_INT RO bit is set or when any non-RO LBC_INT 83562306a36Sopenharmony_ci * and corresponding LBC_INT_ENA_W1C bits are bot set 83662306a36Sopenharmony_ci * @pem: Set when any PEM(0)_INT RO bit is set or when any non-RO 83762306a36Sopenharmony_ci * PEM(0)_INT and corresponding PEM(0)_INT_ENA_W1C bit are both set 83862306a36Sopenharmony_ci * @ucd: Set when any UCD_INT bit is set 83962306a36Sopenharmony_ci * @zctl: Set when any ZIP_INT RO bit is set or when any non-RO ZIP_INT 84062306a36Sopenharmony_ci * and corresponding ZIP_INT_ENA_W1C bits are both set 84162306a36Sopenharmony_ci * @lbm: Set when any LBM_INT bit is set 84262306a36Sopenharmony_ci * @nps_pkt: Set when any NPS_PKT_INT bit is set 84362306a36Sopenharmony_ci * @nps_core: Set when any NPS_CORE_INT RO bit is set or when non-RO 84462306a36Sopenharmony_ci * NPS_CORE_INT and corresponding NSP_CORE_INT_ENA_W1C bits are both set 84562306a36Sopenharmony_ci */ 84662306a36Sopenharmony_ciunion nps_core_int_active { 84762306a36Sopenharmony_ci u64 value; 84862306a36Sopenharmony_ci struct { 84962306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 85062306a36Sopenharmony_ci u64 resend : 1; 85162306a36Sopenharmony_ci u64 raz : 43; 85262306a36Sopenharmony_ci u64 ocla : 1; 85362306a36Sopenharmony_ci u64 mbox : 1; 85462306a36Sopenharmony_ci u64 emu : 4; 85562306a36Sopenharmony_ci u64 bmo : 1; 85662306a36Sopenharmony_ci u64 bmi : 1; 85762306a36Sopenharmony_ci u64 aqm : 1; 85862306a36Sopenharmony_ci u64 zqm : 1; 85962306a36Sopenharmony_ci u64 efl : 1; 86062306a36Sopenharmony_ci u64 ilk : 1; 86162306a36Sopenharmony_ci u64 lbc : 1; 86262306a36Sopenharmony_ci u64 pem : 1; 86362306a36Sopenharmony_ci u64 pom : 1; 86462306a36Sopenharmony_ci u64 ucd : 1; 86562306a36Sopenharmony_ci u64 zctl : 1; 86662306a36Sopenharmony_ci u64 lbm : 1; 86762306a36Sopenharmony_ci u64 nps_pkt : 1; 86862306a36Sopenharmony_ci u64 nps_core : 1; 86962306a36Sopenharmony_ci#else 87062306a36Sopenharmony_ci u64 nps_core : 1; 87162306a36Sopenharmony_ci u64 nps_pkt : 1; 87262306a36Sopenharmony_ci u64 lbm : 1; 87362306a36Sopenharmony_ci u64 zctl: 1; 87462306a36Sopenharmony_ci u64 ucd : 1; 87562306a36Sopenharmony_ci u64 pom : 1; 87662306a36Sopenharmony_ci u64 pem : 1; 87762306a36Sopenharmony_ci u64 lbc : 1; 87862306a36Sopenharmony_ci u64 ilk : 1; 87962306a36Sopenharmony_ci u64 efl : 1; 88062306a36Sopenharmony_ci u64 zqm : 1; 88162306a36Sopenharmony_ci u64 aqm : 1; 88262306a36Sopenharmony_ci u64 bmi : 1; 88362306a36Sopenharmony_ci u64 bmo : 1; 88462306a36Sopenharmony_ci u64 emu : 4; 88562306a36Sopenharmony_ci u64 mbox : 1; 88662306a36Sopenharmony_ci u64 ocla : 1; 88762306a36Sopenharmony_ci u64 raz : 43; 88862306a36Sopenharmony_ci u64 resend : 1; 88962306a36Sopenharmony_ci#endif 89062306a36Sopenharmony_ci } s; 89162306a36Sopenharmony_ci}; 89262306a36Sopenharmony_ci 89362306a36Sopenharmony_ci/** 89462306a36Sopenharmony_ci * struct efl_core_int - EFL Interrupt Registers 89562306a36Sopenharmony_ci * @epci_decode_err: EPCI decoded a transacation that was unknown 89662306a36Sopenharmony_ci * This error should only occurred when there is a micrcode/SE error 89762306a36Sopenharmony_ci * and should be considered fatal 89862306a36Sopenharmony_ci * @ae_err: An AE uncorrectable error occurred. 89962306a36Sopenharmony_ci * See EFL_CORE(0..3)_AE_ERR_INT 90062306a36Sopenharmony_ci * @se_err: An SE uncorrectable error occurred. 90162306a36Sopenharmony_ci * See EFL_CORE(0..3)_SE_ERR_INT 90262306a36Sopenharmony_ci * @dbe: Double-bit error occurred in EFL 90362306a36Sopenharmony_ci * @sbe: Single-bit error occurred in EFL 90462306a36Sopenharmony_ci * @d_left: Asserted when new POM-Header-BMI-data is 90562306a36Sopenharmony_ci * being sent to an Exec, and that Exec has Not read all BMI 90662306a36Sopenharmony_ci * data associated with the previous POM header 90762306a36Sopenharmony_ci * @len_ovr: Asserted when an Exec-Read is issued that is more than 90862306a36Sopenharmony_ci * 14 greater in length that the BMI data left to be read 90962306a36Sopenharmony_ci */ 91062306a36Sopenharmony_ciunion efl_core_int { 91162306a36Sopenharmony_ci u64 value; 91262306a36Sopenharmony_ci struct { 91362306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 91462306a36Sopenharmony_ci u64 raz : 57; 91562306a36Sopenharmony_ci u64 epci_decode_err : 1; 91662306a36Sopenharmony_ci u64 ae_err : 1; 91762306a36Sopenharmony_ci u64 se_err : 1; 91862306a36Sopenharmony_ci u64 dbe : 1; 91962306a36Sopenharmony_ci u64 sbe : 1; 92062306a36Sopenharmony_ci u64 d_left : 1; 92162306a36Sopenharmony_ci u64 len_ovr : 1; 92262306a36Sopenharmony_ci#else 92362306a36Sopenharmony_ci u64 len_ovr : 1; 92462306a36Sopenharmony_ci u64 d_left : 1; 92562306a36Sopenharmony_ci u64 sbe : 1; 92662306a36Sopenharmony_ci u64 dbe : 1; 92762306a36Sopenharmony_ci u64 se_err : 1; 92862306a36Sopenharmony_ci u64 ae_err : 1; 92962306a36Sopenharmony_ci u64 epci_decode_err : 1; 93062306a36Sopenharmony_ci u64 raz : 57; 93162306a36Sopenharmony_ci#endif 93262306a36Sopenharmony_ci } s; 93362306a36Sopenharmony_ci}; 93462306a36Sopenharmony_ci 93562306a36Sopenharmony_ci/** 93662306a36Sopenharmony_ci * struct efl_core_int_ena_w1s - EFL core interrupt enable set register 93762306a36Sopenharmony_ci * @epci_decode_err: Reads or sets enable for 93862306a36Sopenharmony_ci * EFL_CORE(0..3)_INT[EPCI_DECODE_ERR]. 93962306a36Sopenharmony_ci * @d_left: Reads or sets enable for 94062306a36Sopenharmony_ci * EFL_CORE(0..3)_INT[D_LEFT]. 94162306a36Sopenharmony_ci * @len_ovr: Reads or sets enable for 94262306a36Sopenharmony_ci * EFL_CORE(0..3)_INT[LEN_OVR]. 94362306a36Sopenharmony_ci */ 94462306a36Sopenharmony_ciunion efl_core_int_ena_w1s { 94562306a36Sopenharmony_ci u64 value; 94662306a36Sopenharmony_ci struct { 94762306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 94862306a36Sopenharmony_ci u64 raz_7_63 : 57; 94962306a36Sopenharmony_ci u64 epci_decode_err : 1; 95062306a36Sopenharmony_ci u64 raz_2_5 : 4; 95162306a36Sopenharmony_ci u64 d_left : 1; 95262306a36Sopenharmony_ci u64 len_ovr : 1; 95362306a36Sopenharmony_ci#else 95462306a36Sopenharmony_ci u64 len_ovr : 1; 95562306a36Sopenharmony_ci u64 d_left : 1; 95662306a36Sopenharmony_ci u64 raz_2_5 : 4; 95762306a36Sopenharmony_ci u64 epci_decode_err : 1; 95862306a36Sopenharmony_ci u64 raz_7_63 : 57; 95962306a36Sopenharmony_ci#endif 96062306a36Sopenharmony_ci } s; 96162306a36Sopenharmony_ci}; 96262306a36Sopenharmony_ci 96362306a36Sopenharmony_ci/** 96462306a36Sopenharmony_ci * struct efl_rnm_ctl_status - RNM Control and Status Register 96562306a36Sopenharmony_ci * @ent_sel: Select input to RNM FIFO 96662306a36Sopenharmony_ci * @exp_ent: Exported entropy enable for random number generator 96762306a36Sopenharmony_ci * @rng_rst: Reset to RNG. Setting this bit to 1 cancels the generation 96862306a36Sopenharmony_ci * of the current random number. 96962306a36Sopenharmony_ci * @rnm_rst: Reset the RNM. Setting this bit to 1 clears all sorted numbers 97062306a36Sopenharmony_ci * in the random number memory. 97162306a36Sopenharmony_ci * @rng_en: Enabled the output of the RNG. 97262306a36Sopenharmony_ci * @ent_en: Entropy enable for random number generator. 97362306a36Sopenharmony_ci */ 97462306a36Sopenharmony_ciunion efl_rnm_ctl_status { 97562306a36Sopenharmony_ci u64 value; 97662306a36Sopenharmony_ci struct { 97762306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 97862306a36Sopenharmony_ci u64 raz_9_63 : 55; 97962306a36Sopenharmony_ci u64 ent_sel : 4; 98062306a36Sopenharmony_ci u64 exp_ent : 1; 98162306a36Sopenharmony_ci u64 rng_rst : 1; 98262306a36Sopenharmony_ci u64 rnm_rst : 1; 98362306a36Sopenharmony_ci u64 rng_en : 1; 98462306a36Sopenharmony_ci u64 ent_en : 1; 98562306a36Sopenharmony_ci#else 98662306a36Sopenharmony_ci u64 ent_en : 1; 98762306a36Sopenharmony_ci u64 rng_en : 1; 98862306a36Sopenharmony_ci u64 rnm_rst : 1; 98962306a36Sopenharmony_ci u64 rng_rst : 1; 99062306a36Sopenharmony_ci u64 exp_ent : 1; 99162306a36Sopenharmony_ci u64 ent_sel : 4; 99262306a36Sopenharmony_ci u64 raz_9_63 : 55; 99362306a36Sopenharmony_ci#endif 99462306a36Sopenharmony_ci } s; 99562306a36Sopenharmony_ci}; 99662306a36Sopenharmony_ci 99762306a36Sopenharmony_ci/** 99862306a36Sopenharmony_ci * struct bmi_ctl - BMI control register 99962306a36Sopenharmony_ci * @ilk_hdrq_thrsh: Maximum number of header queue locations 100062306a36Sopenharmony_ci * that ILK packets may consume. When the threshold is 100162306a36Sopenharmony_ci * exceeded ILK_XOFF is sent to the BMI_X2P_ARB. 100262306a36Sopenharmony_ci * @nps_hdrq_thrsh: Maximum number of header queue locations 100362306a36Sopenharmony_ci * that NPS packets may consume. When the threshold is 100462306a36Sopenharmony_ci * exceeded NPS_XOFF is sent to the BMI_X2P_ARB. 100562306a36Sopenharmony_ci * @totl_hdrq_thrsh: Maximum number of header queue locations 100662306a36Sopenharmony_ci * that the sum of ILK and NPS packets may consume. 100762306a36Sopenharmony_ci * @ilk_free_thrsh: Maximum number of buffers that ILK packet 100862306a36Sopenharmony_ci * flows may consume before ILK_XOFF is sent to the BMI_X2P_ARB. 100962306a36Sopenharmony_ci * @nps_free_thrsh: Maximum number of buffers that NPS packet 101062306a36Sopenharmony_ci * flows may consume before NPS XOFF is sent to the BMI_X2p_ARB. 101162306a36Sopenharmony_ci * @totl_free_thrsh: Maximum number of buffers that bot ILK and NPS 101262306a36Sopenharmony_ci * packet flows may consume before both NPS_XOFF and ILK_XOFF 101362306a36Sopenharmony_ci * are asserted to the BMI_X2P_ARB. 101462306a36Sopenharmony_ci * @max_pkt_len: Maximum packet length, integral number of 256B 101562306a36Sopenharmony_ci * buffers. 101662306a36Sopenharmony_ci */ 101762306a36Sopenharmony_ciunion bmi_ctl { 101862306a36Sopenharmony_ci u64 value; 101962306a36Sopenharmony_ci struct { 102062306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 102162306a36Sopenharmony_ci u64 raz_56_63 : 8; 102262306a36Sopenharmony_ci u64 ilk_hdrq_thrsh : 8; 102362306a36Sopenharmony_ci u64 nps_hdrq_thrsh : 8; 102462306a36Sopenharmony_ci u64 totl_hdrq_thrsh : 8; 102562306a36Sopenharmony_ci u64 ilk_free_thrsh : 8; 102662306a36Sopenharmony_ci u64 nps_free_thrsh : 8; 102762306a36Sopenharmony_ci u64 totl_free_thrsh : 8; 102862306a36Sopenharmony_ci u64 max_pkt_len : 8; 102962306a36Sopenharmony_ci#else 103062306a36Sopenharmony_ci u64 max_pkt_len : 8; 103162306a36Sopenharmony_ci u64 totl_free_thrsh : 8; 103262306a36Sopenharmony_ci u64 nps_free_thrsh : 8; 103362306a36Sopenharmony_ci u64 ilk_free_thrsh : 8; 103462306a36Sopenharmony_ci u64 totl_hdrq_thrsh : 8; 103562306a36Sopenharmony_ci u64 nps_hdrq_thrsh : 8; 103662306a36Sopenharmony_ci u64 ilk_hdrq_thrsh : 8; 103762306a36Sopenharmony_ci u64 raz_56_63 : 8; 103862306a36Sopenharmony_ci#endif 103962306a36Sopenharmony_ci } s; 104062306a36Sopenharmony_ci}; 104162306a36Sopenharmony_ci 104262306a36Sopenharmony_ci/** 104362306a36Sopenharmony_ci * struct bmi_int_ena_w1s - BMI interrupt enable set register 104462306a36Sopenharmony_ci * @ilk_req_oflw: Reads or sets enable for 104562306a36Sopenharmony_ci * BMI_INT[ILK_REQ_OFLW]. 104662306a36Sopenharmony_ci * @nps_req_oflw: Reads or sets enable for 104762306a36Sopenharmony_ci * BMI_INT[NPS_REQ_OFLW]. 104862306a36Sopenharmony_ci * @fpf_undrrn: Reads or sets enable for 104962306a36Sopenharmony_ci * BMI_INT[FPF_UNDRRN]. 105062306a36Sopenharmony_ci * @eop_err_ilk: Reads or sets enable for 105162306a36Sopenharmony_ci * BMI_INT[EOP_ERR_ILK]. 105262306a36Sopenharmony_ci * @eop_err_nps: Reads or sets enable for 105362306a36Sopenharmony_ci * BMI_INT[EOP_ERR_NPS]. 105462306a36Sopenharmony_ci * @sop_err_ilk: Reads or sets enable for 105562306a36Sopenharmony_ci * BMI_INT[SOP_ERR_ILK]. 105662306a36Sopenharmony_ci * @sop_err_nps: Reads or sets enable for 105762306a36Sopenharmony_ci * BMI_INT[SOP_ERR_NPS]. 105862306a36Sopenharmony_ci * @pkt_rcv_err_ilk: Reads or sets enable for 105962306a36Sopenharmony_ci * BMI_INT[PKT_RCV_ERR_ILK]. 106062306a36Sopenharmony_ci * @pkt_rcv_err_nps: Reads or sets enable for 106162306a36Sopenharmony_ci * BMI_INT[PKT_RCV_ERR_NPS]. 106262306a36Sopenharmony_ci * @max_len_err_ilk: Reads or sets enable for 106362306a36Sopenharmony_ci * BMI_INT[MAX_LEN_ERR_ILK]. 106462306a36Sopenharmony_ci * @max_len_err_nps: Reads or sets enable for 106562306a36Sopenharmony_ci * BMI_INT[MAX_LEN_ERR_NPS]. 106662306a36Sopenharmony_ci */ 106762306a36Sopenharmony_ciunion bmi_int_ena_w1s { 106862306a36Sopenharmony_ci u64 value; 106962306a36Sopenharmony_ci struct { 107062306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 107162306a36Sopenharmony_ci u64 raz_13_63 : 51; 107262306a36Sopenharmony_ci u64 ilk_req_oflw : 1; 107362306a36Sopenharmony_ci u64 nps_req_oflw : 1; 107462306a36Sopenharmony_ci u64 raz_10 : 1; 107562306a36Sopenharmony_ci u64 raz_9 : 1; 107662306a36Sopenharmony_ci u64 fpf_undrrn : 1; 107762306a36Sopenharmony_ci u64 eop_err_ilk : 1; 107862306a36Sopenharmony_ci u64 eop_err_nps : 1; 107962306a36Sopenharmony_ci u64 sop_err_ilk : 1; 108062306a36Sopenharmony_ci u64 sop_err_nps : 1; 108162306a36Sopenharmony_ci u64 pkt_rcv_err_ilk : 1; 108262306a36Sopenharmony_ci u64 pkt_rcv_err_nps : 1; 108362306a36Sopenharmony_ci u64 max_len_err_ilk : 1; 108462306a36Sopenharmony_ci u64 max_len_err_nps : 1; 108562306a36Sopenharmony_ci#else 108662306a36Sopenharmony_ci u64 max_len_err_nps : 1; 108762306a36Sopenharmony_ci u64 max_len_err_ilk : 1; 108862306a36Sopenharmony_ci u64 pkt_rcv_err_nps : 1; 108962306a36Sopenharmony_ci u64 pkt_rcv_err_ilk : 1; 109062306a36Sopenharmony_ci u64 sop_err_nps : 1; 109162306a36Sopenharmony_ci u64 sop_err_ilk : 1; 109262306a36Sopenharmony_ci u64 eop_err_nps : 1; 109362306a36Sopenharmony_ci u64 eop_err_ilk : 1; 109462306a36Sopenharmony_ci u64 fpf_undrrn : 1; 109562306a36Sopenharmony_ci u64 raz_9 : 1; 109662306a36Sopenharmony_ci u64 raz_10 : 1; 109762306a36Sopenharmony_ci u64 nps_req_oflw : 1; 109862306a36Sopenharmony_ci u64 ilk_req_oflw : 1; 109962306a36Sopenharmony_ci u64 raz_13_63 : 51; 110062306a36Sopenharmony_ci#endif 110162306a36Sopenharmony_ci } s; 110262306a36Sopenharmony_ci}; 110362306a36Sopenharmony_ci 110462306a36Sopenharmony_ci/** 110562306a36Sopenharmony_ci * struct bmo_ctl2 - BMO Control2 Register 110662306a36Sopenharmony_ci * @arb_sel: Determines P2X Arbitration 110762306a36Sopenharmony_ci * @ilk_buf_thrsh: Maximum number of buffers that the 110862306a36Sopenharmony_ci * ILK packet flows may consume before ILK XOFF is 110962306a36Sopenharmony_ci * asserted to the POM. 111062306a36Sopenharmony_ci * @nps_slc_buf_thrsh: Maximum number of buffers that the 111162306a36Sopenharmony_ci * NPS_SLC packet flow may consume before NPS_SLC XOFF is 111262306a36Sopenharmony_ci * asserted to the POM. 111362306a36Sopenharmony_ci * @nps_uns_buf_thrsh: Maximum number of buffers that the 111462306a36Sopenharmony_ci * NPS_UNS packet flow may consume before NPS_UNS XOFF is 111562306a36Sopenharmony_ci * asserted to the POM. 111662306a36Sopenharmony_ci * @totl_buf_thrsh: Maximum number of buffers that ILK, NPS_UNS and 111762306a36Sopenharmony_ci * NPS_SLC packet flows may consume before NPS_UNS XOFF, NSP_SLC and 111862306a36Sopenharmony_ci * ILK_XOFF are all asserted POM. 111962306a36Sopenharmony_ci */ 112062306a36Sopenharmony_ciunion bmo_ctl2 { 112162306a36Sopenharmony_ci u64 value; 112262306a36Sopenharmony_ci struct { 112362306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 112462306a36Sopenharmony_ci u64 arb_sel : 1; 112562306a36Sopenharmony_ci u64 raz_32_62 : 31; 112662306a36Sopenharmony_ci u64 ilk_buf_thrsh : 8; 112762306a36Sopenharmony_ci u64 nps_slc_buf_thrsh : 8; 112862306a36Sopenharmony_ci u64 nps_uns_buf_thrsh : 8; 112962306a36Sopenharmony_ci u64 totl_buf_thrsh : 8; 113062306a36Sopenharmony_ci#else 113162306a36Sopenharmony_ci u64 totl_buf_thrsh : 8; 113262306a36Sopenharmony_ci u64 nps_uns_buf_thrsh : 8; 113362306a36Sopenharmony_ci u64 nps_slc_buf_thrsh : 8; 113462306a36Sopenharmony_ci u64 ilk_buf_thrsh : 8; 113562306a36Sopenharmony_ci u64 raz_32_62 : 31; 113662306a36Sopenharmony_ci u64 arb_sel : 1; 113762306a36Sopenharmony_ci#endif 113862306a36Sopenharmony_ci } s; 113962306a36Sopenharmony_ci}; 114062306a36Sopenharmony_ci 114162306a36Sopenharmony_ci/** 114262306a36Sopenharmony_ci * struct pom_int_ena_w1s - POM interrupt enable set register 114362306a36Sopenharmony_ci * @illegal_intf: Reads or sets enable for POM_INT[ILLEGAL_INTF]. 114462306a36Sopenharmony_ci * @illegal_dport: Reads or sets enable for POM_INT[ILLEGAL_DPORT]. 114562306a36Sopenharmony_ci */ 114662306a36Sopenharmony_ciunion pom_int_ena_w1s { 114762306a36Sopenharmony_ci u64 value; 114862306a36Sopenharmony_ci struct { 114962306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 115062306a36Sopenharmony_ci u64 raz2 : 60; 115162306a36Sopenharmony_ci u64 illegal_intf : 1; 115262306a36Sopenharmony_ci u64 illegal_dport : 1; 115362306a36Sopenharmony_ci u64 raz1 : 1; 115462306a36Sopenharmony_ci u64 raz0 : 1; 115562306a36Sopenharmony_ci#else 115662306a36Sopenharmony_ci u64 raz0 : 1; 115762306a36Sopenharmony_ci u64 raz1 : 1; 115862306a36Sopenharmony_ci u64 illegal_dport : 1; 115962306a36Sopenharmony_ci u64 illegal_intf : 1; 116062306a36Sopenharmony_ci u64 raz2 : 60; 116162306a36Sopenharmony_ci#endif 116262306a36Sopenharmony_ci } s; 116362306a36Sopenharmony_ci}; 116462306a36Sopenharmony_ci 116562306a36Sopenharmony_ci/** 116662306a36Sopenharmony_ci * struct lbc_inval_ctl - LBC invalidation control register 116762306a36Sopenharmony_ci * @wait_timer: Wait timer for wait state. [WAIT_TIMER] must 116862306a36Sopenharmony_ci * always be written with its reset value. 116962306a36Sopenharmony_ci * @cam_inval_start: Software should write [CAM_INVAL_START]=1 117062306a36Sopenharmony_ci * to initiate an LBC cache invalidation. After this, software 117162306a36Sopenharmony_ci * should read LBC_INVAL_STATUS until LBC_INVAL_STATUS[DONE] is set. 117262306a36Sopenharmony_ci * LBC hardware clears [CAVM_INVAL_START] before software can 117362306a36Sopenharmony_ci * observed LBC_INVAL_STATUS[DONE] to be set 117462306a36Sopenharmony_ci */ 117562306a36Sopenharmony_ciunion lbc_inval_ctl { 117662306a36Sopenharmony_ci u64 value; 117762306a36Sopenharmony_ci struct { 117862306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 117962306a36Sopenharmony_ci u64 raz2 : 48; 118062306a36Sopenharmony_ci u64 wait_timer : 8; 118162306a36Sopenharmony_ci u64 raz1 : 6; 118262306a36Sopenharmony_ci u64 cam_inval_start : 1; 118362306a36Sopenharmony_ci u64 raz0 : 1; 118462306a36Sopenharmony_ci#else 118562306a36Sopenharmony_ci u64 raz0 : 1; 118662306a36Sopenharmony_ci u64 cam_inval_start : 1; 118762306a36Sopenharmony_ci u64 raz1 : 6; 118862306a36Sopenharmony_ci u64 wait_timer : 8; 118962306a36Sopenharmony_ci u64 raz2 : 48; 119062306a36Sopenharmony_ci#endif 119162306a36Sopenharmony_ci } s; 119262306a36Sopenharmony_ci}; 119362306a36Sopenharmony_ci 119462306a36Sopenharmony_ci/** 119562306a36Sopenharmony_ci * struct lbc_int_ena_w1s - LBC interrupt enable set register 119662306a36Sopenharmony_ci * @cam_hard_err: Reads or sets enable for LBC_INT[CAM_HARD_ERR]. 119762306a36Sopenharmony_ci * @cam_inval_abort: Reads or sets enable for LBC_INT[CAM_INVAL_ABORT]. 119862306a36Sopenharmony_ci * @over_fetch_err: Reads or sets enable for LBC_INT[OVER_FETCH_ERR]. 119962306a36Sopenharmony_ci * @cache_line_to_err: Reads or sets enable for 120062306a36Sopenharmony_ci * LBC_INT[CACHE_LINE_TO_ERR]. 120162306a36Sopenharmony_ci * @cam_soft_err: Reads or sets enable for 120262306a36Sopenharmony_ci * LBC_INT[CAM_SOFT_ERR]. 120362306a36Sopenharmony_ci * @dma_rd_err: Reads or sets enable for 120462306a36Sopenharmony_ci * LBC_INT[DMA_RD_ERR]. 120562306a36Sopenharmony_ci */ 120662306a36Sopenharmony_ciunion lbc_int_ena_w1s { 120762306a36Sopenharmony_ci u64 value; 120862306a36Sopenharmony_ci struct { 120962306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 121062306a36Sopenharmony_ci u64 raz_10_63 : 54; 121162306a36Sopenharmony_ci u64 cam_hard_err : 1; 121262306a36Sopenharmony_ci u64 cam_inval_abort : 1; 121362306a36Sopenharmony_ci u64 over_fetch_err : 1; 121462306a36Sopenharmony_ci u64 cache_line_to_err : 1; 121562306a36Sopenharmony_ci u64 raz_2_5 : 4; 121662306a36Sopenharmony_ci u64 cam_soft_err : 1; 121762306a36Sopenharmony_ci u64 dma_rd_err : 1; 121862306a36Sopenharmony_ci#else 121962306a36Sopenharmony_ci u64 dma_rd_err : 1; 122062306a36Sopenharmony_ci u64 cam_soft_err : 1; 122162306a36Sopenharmony_ci u64 raz_2_5 : 4; 122262306a36Sopenharmony_ci u64 cache_line_to_err : 1; 122362306a36Sopenharmony_ci u64 over_fetch_err : 1; 122462306a36Sopenharmony_ci u64 cam_inval_abort : 1; 122562306a36Sopenharmony_ci u64 cam_hard_err : 1; 122662306a36Sopenharmony_ci u64 raz_10_63 : 54; 122762306a36Sopenharmony_ci#endif 122862306a36Sopenharmony_ci } s; 122962306a36Sopenharmony_ci}; 123062306a36Sopenharmony_ci 123162306a36Sopenharmony_ci/** 123262306a36Sopenharmony_ci * struct lbc_int - LBC interrupt summary register 123362306a36Sopenharmony_ci * @cam_hard_err: indicates a fatal hardware error. 123462306a36Sopenharmony_ci * It requires system reset. 123562306a36Sopenharmony_ci * When [CAM_HARD_ERR] is set, LBC stops logging any new information in 123662306a36Sopenharmony_ci * LBC_POM_MISS_INFO_LOG, 123762306a36Sopenharmony_ci * LBC_POM_MISS_ADDR_LOG, 123862306a36Sopenharmony_ci * LBC_EFL_MISS_INFO_LOG, and 123962306a36Sopenharmony_ci * LBC_EFL_MISS_ADDR_LOG. 124062306a36Sopenharmony_ci * Software should sample them. 124162306a36Sopenharmony_ci * @cam_inval_abort: indicates a fatal hardware error. 124262306a36Sopenharmony_ci * System reset is required. 124362306a36Sopenharmony_ci * @over_fetch_err: indicates a fatal hardware error 124462306a36Sopenharmony_ci * System reset is required 124562306a36Sopenharmony_ci * @cache_line_to_err: is a debug feature. 124662306a36Sopenharmony_ci * This timeout interrupt bit tells the software that 124762306a36Sopenharmony_ci * a cacheline in LBC has non-zero usage and the context 124862306a36Sopenharmony_ci * has not been used for greater than the 124962306a36Sopenharmony_ci * LBC_TO_CNT[TO_CNT] time interval. 125062306a36Sopenharmony_ci * @sbe: Memory SBE error. This is recoverable via ECC. 125162306a36Sopenharmony_ci * See LBC_ECC_INT for more details. 125262306a36Sopenharmony_ci * @dbe: Memory DBE error. This is a fatal and requires a 125362306a36Sopenharmony_ci * system reset. 125462306a36Sopenharmony_ci * @pref_dat_len_mismatch_err: Summary bit for context length 125562306a36Sopenharmony_ci * mismatch errors. 125662306a36Sopenharmony_ci * @rd_dat_len_mismatch_err: Summary bit for SE read data length 125762306a36Sopenharmony_ci * greater than data prefect length errors. 125862306a36Sopenharmony_ci * @cam_soft_err: is recoverable. Software must complete a 125962306a36Sopenharmony_ci * LBC_INVAL_CTL[CAM_INVAL_START] invalidation sequence and 126062306a36Sopenharmony_ci * then clear [CAM_SOFT_ERR]. 126162306a36Sopenharmony_ci * @dma_rd_err: A context prefect read of host memory returned with 126262306a36Sopenharmony_ci * a read error. 126362306a36Sopenharmony_ci */ 126462306a36Sopenharmony_ciunion lbc_int { 126562306a36Sopenharmony_ci u64 value; 126662306a36Sopenharmony_ci struct { 126762306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 126862306a36Sopenharmony_ci u64 raz_10_63 : 54; 126962306a36Sopenharmony_ci u64 cam_hard_err : 1; 127062306a36Sopenharmony_ci u64 cam_inval_abort : 1; 127162306a36Sopenharmony_ci u64 over_fetch_err : 1; 127262306a36Sopenharmony_ci u64 cache_line_to_err : 1; 127362306a36Sopenharmony_ci u64 sbe : 1; 127462306a36Sopenharmony_ci u64 dbe : 1; 127562306a36Sopenharmony_ci u64 pref_dat_len_mismatch_err : 1; 127662306a36Sopenharmony_ci u64 rd_dat_len_mismatch_err : 1; 127762306a36Sopenharmony_ci u64 cam_soft_err : 1; 127862306a36Sopenharmony_ci u64 dma_rd_err : 1; 127962306a36Sopenharmony_ci#else 128062306a36Sopenharmony_ci u64 dma_rd_err : 1; 128162306a36Sopenharmony_ci u64 cam_soft_err : 1; 128262306a36Sopenharmony_ci u64 rd_dat_len_mismatch_err : 1; 128362306a36Sopenharmony_ci u64 pref_dat_len_mismatch_err : 1; 128462306a36Sopenharmony_ci u64 dbe : 1; 128562306a36Sopenharmony_ci u64 sbe : 1; 128662306a36Sopenharmony_ci u64 cache_line_to_err : 1; 128762306a36Sopenharmony_ci u64 over_fetch_err : 1; 128862306a36Sopenharmony_ci u64 cam_inval_abort : 1; 128962306a36Sopenharmony_ci u64 cam_hard_err : 1; 129062306a36Sopenharmony_ci u64 raz_10_63 : 54; 129162306a36Sopenharmony_ci#endif 129262306a36Sopenharmony_ci } s; 129362306a36Sopenharmony_ci}; 129462306a36Sopenharmony_ci 129562306a36Sopenharmony_ci/** 129662306a36Sopenharmony_ci * struct lbc_inval_status: LBC Invalidation status register 129762306a36Sopenharmony_ci * @cam_clean_entry_complete_cnt: The number of entries that are 129862306a36Sopenharmony_ci * cleaned up successfully. 129962306a36Sopenharmony_ci * @cam_clean_entry_cnt: The number of entries that have the CAM 130062306a36Sopenharmony_ci * inval command issued. 130162306a36Sopenharmony_ci * @cam_inval_state: cam invalidation FSM state 130262306a36Sopenharmony_ci * @cam_inval_abort: cam invalidation abort 130362306a36Sopenharmony_ci * @cam_rst_rdy: lbc_cam reset ready 130462306a36Sopenharmony_ci * @done: LBC clears [DONE] when 130562306a36Sopenharmony_ci * LBC_INVAL_CTL[CAM_INVAL_START] is written with a one, 130662306a36Sopenharmony_ci * and sets [DONE] when it completes the invalidation 130762306a36Sopenharmony_ci * sequence. 130862306a36Sopenharmony_ci */ 130962306a36Sopenharmony_ciunion lbc_inval_status { 131062306a36Sopenharmony_ci u64 value; 131162306a36Sopenharmony_ci struct { 131262306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 131362306a36Sopenharmony_ci u64 raz3 : 23; 131462306a36Sopenharmony_ci u64 cam_clean_entry_complete_cnt : 9; 131562306a36Sopenharmony_ci u64 raz2 : 7; 131662306a36Sopenharmony_ci u64 cam_clean_entry_cnt : 9; 131762306a36Sopenharmony_ci u64 raz1 : 5; 131862306a36Sopenharmony_ci u64 cam_inval_state : 3; 131962306a36Sopenharmony_ci u64 raz0 : 5; 132062306a36Sopenharmony_ci u64 cam_inval_abort : 1; 132162306a36Sopenharmony_ci u64 cam_rst_rdy : 1; 132262306a36Sopenharmony_ci u64 done : 1; 132362306a36Sopenharmony_ci#else 132462306a36Sopenharmony_ci u64 done : 1; 132562306a36Sopenharmony_ci u64 cam_rst_rdy : 1; 132662306a36Sopenharmony_ci u64 cam_inval_abort : 1; 132762306a36Sopenharmony_ci u64 raz0 : 5; 132862306a36Sopenharmony_ci u64 cam_inval_state : 3; 132962306a36Sopenharmony_ci u64 raz1 : 5; 133062306a36Sopenharmony_ci u64 cam_clean_entry_cnt : 9; 133162306a36Sopenharmony_ci u64 raz2 : 7; 133262306a36Sopenharmony_ci u64 cam_clean_entry_complete_cnt : 9; 133362306a36Sopenharmony_ci u64 raz3 : 23; 133462306a36Sopenharmony_ci#endif 133562306a36Sopenharmony_ci } s; 133662306a36Sopenharmony_ci}; 133762306a36Sopenharmony_ci 133862306a36Sopenharmony_ci/** 133962306a36Sopenharmony_ci * struct rst_boot: RST Boot Register 134062306a36Sopenharmony_ci * @jtcsrdis: when set, internal CSR access via JTAG TAP controller 134162306a36Sopenharmony_ci * is disabled 134262306a36Sopenharmony_ci * @jt_tst_mode: JTAG test mode 134362306a36Sopenharmony_ci * @io_supply: I/O power supply setting based on IO_VDD_SELECT pin: 134462306a36Sopenharmony_ci * 0x1 = 1.8V 134562306a36Sopenharmony_ci * 0x2 = 2.5V 134662306a36Sopenharmony_ci * 0x4 = 3.3V 134762306a36Sopenharmony_ci * All other values are reserved 134862306a36Sopenharmony_ci * @pnr_mul: clock multiplier 134962306a36Sopenharmony_ci * @lboot: last boot cause mask, resets only with PLL_DC_OK 135062306a36Sopenharmony_ci * @rboot: determines whether core 0 remains in reset after 135162306a36Sopenharmony_ci * chip cold or warm or soft reset 135262306a36Sopenharmony_ci * @rboot_pin: read only access to REMOTE_BOOT pin 135362306a36Sopenharmony_ci */ 135462306a36Sopenharmony_ciunion rst_boot { 135562306a36Sopenharmony_ci u64 value; 135662306a36Sopenharmony_ci struct { 135762306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 135862306a36Sopenharmony_ci u64 raz_63 : 1; 135962306a36Sopenharmony_ci u64 jtcsrdis : 1; 136062306a36Sopenharmony_ci u64 raz_59_61 : 3; 136162306a36Sopenharmony_ci u64 jt_tst_mode : 1; 136262306a36Sopenharmony_ci u64 raz_40_57 : 18; 136362306a36Sopenharmony_ci u64 io_supply : 3; 136462306a36Sopenharmony_ci u64 raz_30_36 : 7; 136562306a36Sopenharmony_ci u64 pnr_mul : 6; 136662306a36Sopenharmony_ci u64 raz_12_23 : 12; 136762306a36Sopenharmony_ci u64 lboot : 10; 136862306a36Sopenharmony_ci u64 rboot : 1; 136962306a36Sopenharmony_ci u64 rboot_pin : 1; 137062306a36Sopenharmony_ci#else 137162306a36Sopenharmony_ci u64 rboot_pin : 1; 137262306a36Sopenharmony_ci u64 rboot : 1; 137362306a36Sopenharmony_ci u64 lboot : 10; 137462306a36Sopenharmony_ci u64 raz_12_23 : 12; 137562306a36Sopenharmony_ci u64 pnr_mul : 6; 137662306a36Sopenharmony_ci u64 raz_30_36 : 7; 137762306a36Sopenharmony_ci u64 io_supply : 3; 137862306a36Sopenharmony_ci u64 raz_40_57 : 18; 137962306a36Sopenharmony_ci u64 jt_tst_mode : 1; 138062306a36Sopenharmony_ci u64 raz_59_61 : 3; 138162306a36Sopenharmony_ci u64 jtcsrdis : 1; 138262306a36Sopenharmony_ci u64 raz_63 : 1; 138362306a36Sopenharmony_ci#endif 138462306a36Sopenharmony_ci }; 138562306a36Sopenharmony_ci}; 138662306a36Sopenharmony_ci 138762306a36Sopenharmony_ci/** 138862306a36Sopenharmony_ci * struct fus_dat1: Fuse Data 1 Register 138962306a36Sopenharmony_ci * @pll_mul: main clock PLL multiplier hardware limit 139062306a36Sopenharmony_ci * @pll_half_dis: main clock PLL control 139162306a36Sopenharmony_ci * @efus_lck: efuse lockdown 139262306a36Sopenharmony_ci * @zip_info: ZIP information 139362306a36Sopenharmony_ci * @bar2_sz_conf: when zero, BAR2 size conforms to 139462306a36Sopenharmony_ci * PCIe specification 139562306a36Sopenharmony_ci * @efus_ign: efuse ignore 139662306a36Sopenharmony_ci * @nozip: ZIP disable 139762306a36Sopenharmony_ci * @pll_alt_matrix: select alternate PLL matrix 139862306a36Sopenharmony_ci * @pll_bwadj_denom: select CLKF denominator for 139962306a36Sopenharmony_ci * BWADJ value 140062306a36Sopenharmony_ci * @chip_id: chip ID 140162306a36Sopenharmony_ci */ 140262306a36Sopenharmony_ciunion fus_dat1 { 140362306a36Sopenharmony_ci u64 value; 140462306a36Sopenharmony_ci struct { 140562306a36Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD)) 140662306a36Sopenharmony_ci u64 raz_57_63 : 7; 140762306a36Sopenharmony_ci u64 pll_mul : 3; 140862306a36Sopenharmony_ci u64 pll_half_dis : 1; 140962306a36Sopenharmony_ci u64 raz_43_52 : 10; 141062306a36Sopenharmony_ci u64 efus_lck : 3; 141162306a36Sopenharmony_ci u64 raz_26_39 : 14; 141262306a36Sopenharmony_ci u64 zip_info : 5; 141362306a36Sopenharmony_ci u64 bar2_sz_conf : 1; 141462306a36Sopenharmony_ci u64 efus_ign : 1; 141562306a36Sopenharmony_ci u64 nozip : 1; 141662306a36Sopenharmony_ci u64 raz_11_17 : 7; 141762306a36Sopenharmony_ci u64 pll_alt_matrix : 1; 141862306a36Sopenharmony_ci u64 pll_bwadj_denom : 2; 141962306a36Sopenharmony_ci u64 chip_id : 8; 142062306a36Sopenharmony_ci#else 142162306a36Sopenharmony_ci u64 chip_id : 8; 142262306a36Sopenharmony_ci u64 pll_bwadj_denom : 2; 142362306a36Sopenharmony_ci u64 pll_alt_matrix : 1; 142462306a36Sopenharmony_ci u64 raz_11_17 : 7; 142562306a36Sopenharmony_ci u64 nozip : 1; 142662306a36Sopenharmony_ci u64 efus_ign : 1; 142762306a36Sopenharmony_ci u64 bar2_sz_conf : 1; 142862306a36Sopenharmony_ci u64 zip_info : 5; 142962306a36Sopenharmony_ci u64 raz_26_39 : 14; 143062306a36Sopenharmony_ci u64 efus_lck : 3; 143162306a36Sopenharmony_ci u64 raz_43_52 : 10; 143262306a36Sopenharmony_ci u64 pll_half_dis : 1; 143362306a36Sopenharmony_ci u64 pll_mul : 3; 143462306a36Sopenharmony_ci u64 raz_57_63 : 7; 143562306a36Sopenharmony_ci#endif 143662306a36Sopenharmony_ci }; 143762306a36Sopenharmony_ci}; 143862306a36Sopenharmony_ci 143962306a36Sopenharmony_ci#endif /* __NITROX_CSR_H */ 1440