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