18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __NITROX_CSR_H
38c2ecf20Sopenharmony_ci#define __NITROX_CSR_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#include <asm/byteorder.h>
68c2ecf20Sopenharmony_ci#include <linux/types.h>
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci/* EMU clusters */
98c2ecf20Sopenharmony_ci#define NR_CLUSTERS		4
108c2ecf20Sopenharmony_ci/* Maximum cores per cluster,
118c2ecf20Sopenharmony_ci * varies based on partname
128c2ecf20Sopenharmony_ci */
138c2ecf20Sopenharmony_ci#define AE_CORES_PER_CLUSTER	20
148c2ecf20Sopenharmony_ci#define SE_CORES_PER_CLUSTER	16
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#define AE_MAX_CORES	(AE_CORES_PER_CLUSTER * NR_CLUSTERS)
178c2ecf20Sopenharmony_ci#define SE_MAX_CORES	(SE_CORES_PER_CLUSTER * NR_CLUSTERS)
188c2ecf20Sopenharmony_ci#define ZIP_MAX_CORES	5
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci/* BIST registers */
218c2ecf20Sopenharmony_ci#define EMU_BIST_STATUSX(_i)	(0x1402700 + ((_i) * 0x40000))
228c2ecf20Sopenharmony_ci#define UCD_BIST_STATUS		0x12C0070
238c2ecf20Sopenharmony_ci#define NPS_CORE_BIST_REG	0x10000E8
248c2ecf20Sopenharmony_ci#define NPS_CORE_NPC_BIST_REG	0x1000128
258c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_BIST_REG	0x1040088
268c2ecf20Sopenharmony_ci#define NPS_PKT_IN_BIST_REG	0x1040100
278c2ecf20Sopenharmony_ci#define POM_BIST_REG		0x11C0100
288c2ecf20Sopenharmony_ci#define BMI_BIST_REG		0x1140080
298c2ecf20Sopenharmony_ci#define EFL_CORE_BIST_REGX(_i)	(0x1240100 + ((_i) * 0x400))
308c2ecf20Sopenharmony_ci#define EFL_TOP_BIST_STAT	0x1241090
318c2ecf20Sopenharmony_ci#define BMO_BIST_REG		0x1180080
328c2ecf20Sopenharmony_ci#define LBC_BIST_STATUS		0x1200020
338c2ecf20Sopenharmony_ci#define PEM_BIST_STATUSX(_i)	(0x1080468 | ((_i) << 18))
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci/* EMU registers */
368c2ecf20Sopenharmony_ci#define EMU_SE_ENABLEX(_i)	(0x1400000 + ((_i) * 0x40000))
378c2ecf20Sopenharmony_ci#define EMU_AE_ENABLEX(_i)	(0x1400008 + ((_i) * 0x40000))
388c2ecf20Sopenharmony_ci#define EMU_WD_INT_ENA_W1SX(_i)	(0x1402318 + ((_i) * 0x40000))
398c2ecf20Sopenharmony_ci#define EMU_GE_INT_ENA_W1SX(_i)	(0x1402518 + ((_i) * 0x40000))
408c2ecf20Sopenharmony_ci#define EMU_FUSE_MAPX(_i)	(0x1402708 + ((_i) * 0x40000))
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci/* UCD registers */
438c2ecf20Sopenharmony_ci#define UCD_SE_EID_UCODE_BLOCK_NUMX(_i)	(0x12C0000 + ((_i) * 0x1000))
448c2ecf20Sopenharmony_ci#define UCD_AE_EID_UCODE_BLOCK_NUMX(_i)	(0x12C0008 + ((_i) * 0x800))
458c2ecf20Sopenharmony_ci#define UCD_UCODE_LOAD_BLOCK_NUM	0x12C0010
468c2ecf20Sopenharmony_ci#define UCD_UCODE_LOAD_IDX_DATAX(_i)	(0x12C0018 + ((_i) * 0x20))
478c2ecf20Sopenharmony_ci#define UCD_SE_CNTX(_i)			(0x12C0040 + ((_i) * 0x1000))
488c2ecf20Sopenharmony_ci#define UCD_AE_CNTX(_i)			(0x12C0048 + ((_i) * 0x800))
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci/* AQM registers */
518c2ecf20Sopenharmony_ci#define AQM_CTL                         0x1300000
528c2ecf20Sopenharmony_ci#define AQM_INT                         0x1300008
538c2ecf20Sopenharmony_ci#define AQM_DBELL_OVF_LO                0x1300010
548c2ecf20Sopenharmony_ci#define AQM_DBELL_OVF_HI                0x1300018
558c2ecf20Sopenharmony_ci#define AQM_DBELL_OVF_LO_W1S            0x1300020
568c2ecf20Sopenharmony_ci#define AQM_DBELL_OVF_LO_ENA_W1C        0x1300028
578c2ecf20Sopenharmony_ci#define AQM_DBELL_OVF_LO_ENA_W1S        0x1300030
588c2ecf20Sopenharmony_ci#define AQM_DBELL_OVF_HI_W1S            0x1300038
598c2ecf20Sopenharmony_ci#define AQM_DBELL_OVF_HI_ENA_W1C        0x1300040
608c2ecf20Sopenharmony_ci#define AQM_DBELL_OVF_HI_ENA_W1S        0x1300048
618c2ecf20Sopenharmony_ci#define AQM_DMA_RD_ERR_LO               0x1300050
628c2ecf20Sopenharmony_ci#define AQM_DMA_RD_ERR_HI               0x1300058
638c2ecf20Sopenharmony_ci#define AQM_DMA_RD_ERR_LO_W1S           0x1300060
648c2ecf20Sopenharmony_ci#define AQM_DMA_RD_ERR_LO_ENA_W1C       0x1300068
658c2ecf20Sopenharmony_ci#define AQM_DMA_RD_ERR_LO_ENA_W1S       0x1300070
668c2ecf20Sopenharmony_ci#define AQM_DMA_RD_ERR_HI_W1S           0x1300078
678c2ecf20Sopenharmony_ci#define AQM_DMA_RD_ERR_HI_ENA_W1C       0x1300080
688c2ecf20Sopenharmony_ci#define AQM_DMA_RD_ERR_HI_ENA_W1S       0x1300088
698c2ecf20Sopenharmony_ci#define AQM_EXEC_NA_LO                  0x1300090
708c2ecf20Sopenharmony_ci#define AQM_EXEC_NA_HI                  0x1300098
718c2ecf20Sopenharmony_ci#define AQM_EXEC_NA_LO_W1S              0x13000A0
728c2ecf20Sopenharmony_ci#define AQM_EXEC_NA_LO_ENA_W1C          0x13000A8
738c2ecf20Sopenharmony_ci#define AQM_EXEC_NA_LO_ENA_W1S          0x13000B0
748c2ecf20Sopenharmony_ci#define AQM_EXEC_NA_HI_W1S              0x13000B8
758c2ecf20Sopenharmony_ci#define AQM_EXEC_NA_HI_ENA_W1C          0x13000C0
768c2ecf20Sopenharmony_ci#define AQM_EXEC_NA_HI_ENA_W1S          0x13000C8
778c2ecf20Sopenharmony_ci#define AQM_EXEC_ERR_LO                 0x13000D0
788c2ecf20Sopenharmony_ci#define AQM_EXEC_ERR_HI                 0x13000D8
798c2ecf20Sopenharmony_ci#define AQM_EXEC_ERR_LO_W1S             0x13000E0
808c2ecf20Sopenharmony_ci#define AQM_EXEC_ERR_LO_ENA_W1C         0x13000E8
818c2ecf20Sopenharmony_ci#define AQM_EXEC_ERR_LO_ENA_W1S         0x13000F0
828c2ecf20Sopenharmony_ci#define AQM_EXEC_ERR_HI_W1S             0x13000F8
838c2ecf20Sopenharmony_ci#define AQM_EXEC_ERR_HI_ENA_W1C         0x1300100
848c2ecf20Sopenharmony_ci#define AQM_EXEC_ERR_HI_ENA_W1S         0x1300108
858c2ecf20Sopenharmony_ci#define AQM_ECC_INT                     0x1300110
868c2ecf20Sopenharmony_ci#define AQM_ECC_INT_W1S                 0x1300118
878c2ecf20Sopenharmony_ci#define AQM_ECC_INT_ENA_W1C             0x1300120
888c2ecf20Sopenharmony_ci#define AQM_ECC_INT_ENA_W1S             0x1300128
898c2ecf20Sopenharmony_ci#define AQM_ECC_CTL                     0x1300130
908c2ecf20Sopenharmony_ci#define AQM_BIST_STATUS                 0x1300138
918c2ecf20Sopenharmony_ci#define AQM_CMD_INF_THRX(x)             (0x1300400 + ((x) * 0x8))
928c2ecf20Sopenharmony_ci#define AQM_CMD_INFX(x)                 (0x1300800 + ((x) * 0x8))
938c2ecf20Sopenharmony_ci#define AQM_GRP_EXECMSK_LOX(x)          (0x1300C00 + ((x) * 0x10))
948c2ecf20Sopenharmony_ci#define AQM_GRP_EXECMSK_HIX(x)          (0x1300C08 + ((x) * 0x10))
958c2ecf20Sopenharmony_ci#define AQM_ACTIVITY_STAT_LO            0x1300C80
968c2ecf20Sopenharmony_ci#define AQM_ACTIVITY_STAT_HI            0x1300C88
978c2ecf20Sopenharmony_ci#define AQM_Q_CMD_PROCX(x)              (0x1301000 + ((x) * 0x8))
988c2ecf20Sopenharmony_ci#define AQM_PERF_CTL_LO                 0x1301400
998c2ecf20Sopenharmony_ci#define AQM_PERF_CTL_HI                 0x1301408
1008c2ecf20Sopenharmony_ci#define AQM_PERF_CNT                    0x1301410
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci#define AQMQ_DRBLX(x)                   (0x20000 + ((x) * 0x40000))
1038c2ecf20Sopenharmony_ci#define AQMQ_QSZX(x)                    (0x20008 + ((x) * 0x40000))
1048c2ecf20Sopenharmony_ci#define AQMQ_BADRX(x)                   (0x20010 + ((x) * 0x40000))
1058c2ecf20Sopenharmony_ci#define AQMQ_NXT_CMDX(x)                (0x20018 + ((x) * 0x40000))
1068c2ecf20Sopenharmony_ci#define AQMQ_CMD_CNTX(x)                (0x20020 + ((x) * 0x40000))
1078c2ecf20Sopenharmony_ci#define AQMQ_CMP_THRX(x)                (0x20028 + ((x) * 0x40000))
1088c2ecf20Sopenharmony_ci#define AQMQ_CMP_CNTX(x)                (0x20030 + ((x) * 0x40000))
1098c2ecf20Sopenharmony_ci#define AQMQ_TIM_LDX(x)                 (0x20038 + ((x) * 0x40000))
1108c2ecf20Sopenharmony_ci#define AQMQ_TIMERX(x)                  (0x20040 + ((x) * 0x40000))
1118c2ecf20Sopenharmony_ci#define AQMQ_ENX(x)                     (0x20048 + ((x) * 0x40000))
1128c2ecf20Sopenharmony_ci#define AQMQ_ACTIVITY_STATX(x)          (0x20050 + ((x) * 0x40000))
1138c2ecf20Sopenharmony_ci#define AQM_VF_CMP_STATX(x)             (0x28000 + ((x) * 0x40000))
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci/* NPS core registers */
1168c2ecf20Sopenharmony_ci#define NPS_CORE_GBL_VFCFG	0x1000000
1178c2ecf20Sopenharmony_ci#define NPS_CORE_CONTROL	0x1000008
1188c2ecf20Sopenharmony_ci#define NPS_CORE_INT_ACTIVE	0x1000080
1198c2ecf20Sopenharmony_ci#define NPS_CORE_INT		0x10000A0
1208c2ecf20Sopenharmony_ci#define NPS_CORE_INT_ENA_W1S	0x10000B8
1218c2ecf20Sopenharmony_ci#define NPS_STATS_PKT_DMA_RD_CNT	0x1000180
1228c2ecf20Sopenharmony_ci#define NPS_STATS_PKT_DMA_WR_CNT	0x1000190
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ci/* NPS packet registers */
1258c2ecf20Sopenharmony_ci#define NPS_PKT_INT			0x1040018
1268c2ecf20Sopenharmony_ci#define NPS_PKT_MBOX_INT_LO		0x1040020
1278c2ecf20Sopenharmony_ci#define NPS_PKT_MBOX_INT_LO_ENA_W1C	0x1040030
1288c2ecf20Sopenharmony_ci#define NPS_PKT_MBOX_INT_LO_ENA_W1S	0x1040038
1298c2ecf20Sopenharmony_ci#define NPS_PKT_MBOX_INT_HI		0x1040040
1308c2ecf20Sopenharmony_ci#define NPS_PKT_MBOX_INT_HI_ENA_W1C	0x1040050
1318c2ecf20Sopenharmony_ci#define NPS_PKT_MBOX_INT_HI_ENA_W1S	0x1040058
1328c2ecf20Sopenharmony_ci#define NPS_PKT_IN_RERR_HI		0x1040108
1338c2ecf20Sopenharmony_ci#define NPS_PKT_IN_RERR_HI_ENA_W1S	0x1040120
1348c2ecf20Sopenharmony_ci#define NPS_PKT_IN_RERR_LO		0x1040128
1358c2ecf20Sopenharmony_ci#define NPS_PKT_IN_RERR_LO_ENA_W1S	0x1040140
1368c2ecf20Sopenharmony_ci#define NPS_PKT_IN_ERR_TYPE		0x1040148
1378c2ecf20Sopenharmony_ci#define NPS_PKT_IN_ERR_TYPE_ENA_W1S	0x1040160
1388c2ecf20Sopenharmony_ci#define NPS_PKT_IN_INSTR_CTLX(_i)	(0x10060 + ((_i) * 0x40000))
1398c2ecf20Sopenharmony_ci#define NPS_PKT_IN_INSTR_BADDRX(_i)	(0x10068 + ((_i) * 0x40000))
1408c2ecf20Sopenharmony_ci#define NPS_PKT_IN_INSTR_RSIZEX(_i)	(0x10070 + ((_i) * 0x40000))
1418c2ecf20Sopenharmony_ci#define NPS_PKT_IN_DONE_CNTSX(_i)	(0x10080 + ((_i) * 0x40000))
1428c2ecf20Sopenharmony_ci#define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i)	(0x10078 + ((_i) * 0x40000))
1438c2ecf20Sopenharmony_ci#define NPS_PKT_IN_INT_LEVELSX(_i)		(0x10088 + ((_i) * 0x40000))
1448c2ecf20Sopenharmony_ci
1458c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_RERR_HI		0x1040208
1468c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_RERR_HI_ENA_W1S	0x1040220
1478c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_RERR_LO		0x1040228
1488c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_RERR_LO_ENA_W1S	0x1040240
1498c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_ERR_TYPE		0x1040248
1508c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_ERR_TYPE_ENA_W1S	0x1040260
1518c2ecf20Sopenharmony_ci/* Mailbox PF->VF PF Accessible Data registers */
1528c2ecf20Sopenharmony_ci#define NPS_PKT_MBOX_PF_VF_PFDATAX(_i)	(0x1040800 + ((_i) * 0x8))
1538c2ecf20Sopenharmony_ci#define NPS_PKT_MBOX_VF_PF_PFDATAX(_i)	(0x1040C00 + ((_i) * 0x8))
1548c2ecf20Sopenharmony_ci
1558c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_CTLX(_i)		(0x10000 + ((_i) * 0x40000))
1568c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_CNTSX(_i)		(0x10008 + ((_i) * 0x40000))
1578c2ecf20Sopenharmony_ci#define NPS_PKT_SLC_INT_LEVELSX(_i)	(0x10010 + ((_i) * 0x40000))
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci/* POM registers */
1608c2ecf20Sopenharmony_ci#define POM_INT_ENA_W1S		0x11C0018
1618c2ecf20Sopenharmony_ci#define POM_GRP_EXECMASKX(_i)	(0x11C1100 | ((_i) * 8))
1628c2ecf20Sopenharmony_ci#define POM_INT		0x11C0000
1638c2ecf20Sopenharmony_ci#define POM_PERF_CTL	0x11CC400
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci/* BMI registers */
1668c2ecf20Sopenharmony_ci#define BMI_INT		0x1140000
1678c2ecf20Sopenharmony_ci#define BMI_CTL		0x1140020
1688c2ecf20Sopenharmony_ci#define BMI_INT_ENA_W1S	0x1140018
1698c2ecf20Sopenharmony_ci#define BMI_NPS_PKT_CNT	0x1140070
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci/* EFL registers */
1728c2ecf20Sopenharmony_ci#define EFL_CORE_INT_ENA_W1SX(_i)		(0x1240018 + ((_i) * 0x400))
1738c2ecf20Sopenharmony_ci#define EFL_CORE_VF_ERR_INT0X(_i)		(0x1240050 + ((_i) * 0x400))
1748c2ecf20Sopenharmony_ci#define EFL_CORE_VF_ERR_INT0_ENA_W1SX(_i)	(0x1240068 + ((_i) * 0x400))
1758c2ecf20Sopenharmony_ci#define EFL_CORE_VF_ERR_INT1X(_i)		(0x1240070 + ((_i) * 0x400))
1768c2ecf20Sopenharmony_ci#define EFL_CORE_VF_ERR_INT1_ENA_W1SX(_i)	(0x1240088 + ((_i) * 0x400))
1778c2ecf20Sopenharmony_ci#define EFL_CORE_SE_ERR_INTX(_i)		(0x12400A0 + ((_i) * 0x400))
1788c2ecf20Sopenharmony_ci#define EFL_RNM_CTL_STATUS			0x1241800
1798c2ecf20Sopenharmony_ci#define EFL_CORE_INTX(_i)			(0x1240000 + ((_i) * 0x400))
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ci/* BMO registers */
1828c2ecf20Sopenharmony_ci#define BMO_CTL2		0x1180028
1838c2ecf20Sopenharmony_ci#define BMO_NPS_SLC_PKT_CNT	0x1180078
1848c2ecf20Sopenharmony_ci
1858c2ecf20Sopenharmony_ci/* LBC registers */
1868c2ecf20Sopenharmony_ci#define LBC_INT			0x1200000
1878c2ecf20Sopenharmony_ci#define LBC_INVAL_CTL		0x1201010
1888c2ecf20Sopenharmony_ci#define LBC_PLM_VF1_64_INT	0x1202008
1898c2ecf20Sopenharmony_ci#define LBC_INVAL_STATUS	0x1202010
1908c2ecf20Sopenharmony_ci#define LBC_INT_ENA_W1S		0x1203000
1918c2ecf20Sopenharmony_ci#define LBC_PLM_VF1_64_INT_ENA_W1S	0x1205008
1928c2ecf20Sopenharmony_ci#define LBC_PLM_VF65_128_INT		0x1206008
1938c2ecf20Sopenharmony_ci#define LBC_ELM_VF1_64_INT		0x1208000
1948c2ecf20Sopenharmony_ci#define LBC_PLM_VF65_128_INT_ENA_W1S	0x1209008
1958c2ecf20Sopenharmony_ci#define LBC_ELM_VF1_64_INT_ENA_W1S	0x120B000
1968c2ecf20Sopenharmony_ci#define LBC_ELM_VF65_128_INT		0x120C000
1978c2ecf20Sopenharmony_ci#define LBC_ELM_VF65_128_INT_ENA_W1S	0x120F000
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ci#define RST_BOOT	0x10C1600
2008c2ecf20Sopenharmony_ci#define FUS_DAT1	0x10C1408
2018c2ecf20Sopenharmony_ci
2028c2ecf20Sopenharmony_ci/* PEM registers */
2038c2ecf20Sopenharmony_ci#define PEM0_INT 0x1080428
2048c2ecf20Sopenharmony_ci
2058c2ecf20Sopenharmony_ci/**
2068c2ecf20Sopenharmony_ci * struct ucd_core_eid_ucode_block_num - Core Eid to Ucode Blk Mapping Registers
2078c2ecf20Sopenharmony_ci * @ucode_len: Ucode length identifier 32KB or 64KB
2088c2ecf20Sopenharmony_ci * @ucode_blk: Ucode Block Number
2098c2ecf20Sopenharmony_ci */
2108c2ecf20Sopenharmony_ciunion ucd_core_eid_ucode_block_num {
2118c2ecf20Sopenharmony_ci	u64 value;
2128c2ecf20Sopenharmony_ci	struct {
2138c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
2148c2ecf20Sopenharmony_ci		u64 raz_4_63 : 60;
2158c2ecf20Sopenharmony_ci		u64 ucode_len : 1;
2168c2ecf20Sopenharmony_ci		u64 ucode_blk : 3;
2178c2ecf20Sopenharmony_ci#else
2188c2ecf20Sopenharmony_ci		u64 ucode_blk : 3;
2198c2ecf20Sopenharmony_ci		u64 ucode_len : 1;
2208c2ecf20Sopenharmony_ci		u64 raz_4_63 : 60;
2218c2ecf20Sopenharmony_ci#endif
2228c2ecf20Sopenharmony_ci	};
2238c2ecf20Sopenharmony_ci};
2248c2ecf20Sopenharmony_ci
2258c2ecf20Sopenharmony_ci/**
2268c2ecf20Sopenharmony_ci * struct aqm_grp_execmsk_lo - Available AE engines for the group
2278c2ecf20Sopenharmony_ci * @exec_0_to_39: AE engines 0 to 39 status
2288c2ecf20Sopenharmony_ci */
2298c2ecf20Sopenharmony_ciunion aqm_grp_execmsk_lo {
2308c2ecf20Sopenharmony_ci	u64 value;
2318c2ecf20Sopenharmony_ci	struct {
2328c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
2338c2ecf20Sopenharmony_ci		u64 raz_40_63 : 24;
2348c2ecf20Sopenharmony_ci		u64 exec_0_to_39 : 40;
2358c2ecf20Sopenharmony_ci#else
2368c2ecf20Sopenharmony_ci		u64 exec_0_to_39 : 40;
2378c2ecf20Sopenharmony_ci		u64 raz_40_63 : 24;
2388c2ecf20Sopenharmony_ci#endif
2398c2ecf20Sopenharmony_ci	};
2408c2ecf20Sopenharmony_ci};
2418c2ecf20Sopenharmony_ci
2428c2ecf20Sopenharmony_ci/**
2438c2ecf20Sopenharmony_ci * struct aqm_grp_execmsk_hi - Available AE engines for the group
2448c2ecf20Sopenharmony_ci * @exec_40_to_79: AE engines 40 to 79 status
2458c2ecf20Sopenharmony_ci */
2468c2ecf20Sopenharmony_ciunion aqm_grp_execmsk_hi {
2478c2ecf20Sopenharmony_ci	u64 value;
2488c2ecf20Sopenharmony_ci	struct {
2498c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
2508c2ecf20Sopenharmony_ci		u64 raz_40_63 : 24;
2518c2ecf20Sopenharmony_ci		u64 exec_40_to_79 : 40;
2528c2ecf20Sopenharmony_ci#else
2538c2ecf20Sopenharmony_ci		u64 exec_40_to_79 : 40;
2548c2ecf20Sopenharmony_ci		u64 raz_40_63 : 24;
2558c2ecf20Sopenharmony_ci#endif
2568c2ecf20Sopenharmony_ci	};
2578c2ecf20Sopenharmony_ci};
2588c2ecf20Sopenharmony_ci
2598c2ecf20Sopenharmony_ci/**
2608c2ecf20Sopenharmony_ci * struct aqmq_drbl - AQM Queue Doorbell Counter Registers
2618c2ecf20Sopenharmony_ci * @dbell_count: Doorbell Counter
2628c2ecf20Sopenharmony_ci */
2638c2ecf20Sopenharmony_ciunion aqmq_drbl {
2648c2ecf20Sopenharmony_ci	u64 value;
2658c2ecf20Sopenharmony_ci	struct {
2668c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
2678c2ecf20Sopenharmony_ci		u64 raz_32_63 : 32;
2688c2ecf20Sopenharmony_ci		u64 dbell_count : 32;
2698c2ecf20Sopenharmony_ci#else
2708c2ecf20Sopenharmony_ci		u64 dbell_count : 32;
2718c2ecf20Sopenharmony_ci		u64 raz_32_63 : 32;
2728c2ecf20Sopenharmony_ci#endif
2738c2ecf20Sopenharmony_ci	};
2748c2ecf20Sopenharmony_ci};
2758c2ecf20Sopenharmony_ci
2768c2ecf20Sopenharmony_ci/**
2778c2ecf20Sopenharmony_ci * struct aqmq_qsz - AQM Queue Host Queue Size Registers
2788c2ecf20Sopenharmony_ci * @host_queue_size: Size, in numbers of 'aqmq_command_s' command
2798c2ecf20Sopenharmony_ci * of the Host Ring.
2808c2ecf20Sopenharmony_ci */
2818c2ecf20Sopenharmony_ciunion aqmq_qsz {
2828c2ecf20Sopenharmony_ci	u64 value;
2838c2ecf20Sopenharmony_ci	struct {
2848c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
2858c2ecf20Sopenharmony_ci		u64 raz_32_63 : 32;
2868c2ecf20Sopenharmony_ci		u64 host_queue_size : 32;
2878c2ecf20Sopenharmony_ci#else
2888c2ecf20Sopenharmony_ci		u64 host_queue_size : 32;
2898c2ecf20Sopenharmony_ci		u64 raz_32_63 : 32;
2908c2ecf20Sopenharmony_ci#endif
2918c2ecf20Sopenharmony_ci	};
2928c2ecf20Sopenharmony_ci};
2938c2ecf20Sopenharmony_ci
2948c2ecf20Sopenharmony_ci/**
2958c2ecf20Sopenharmony_ci * struct aqmq_cmp_thr - AQM Queue Commands Completed Threshold Registers
2968c2ecf20Sopenharmony_ci * @commands_completed_threshold: Count of 'aqmq_command_s' commands executed
2978c2ecf20Sopenharmony_ci * by AE engines for which completion interrupt is asserted.
2988c2ecf20Sopenharmony_ci */
2998c2ecf20Sopenharmony_ciunion aqmq_cmp_thr {
3008c2ecf20Sopenharmony_ci	u64 value;
3018c2ecf20Sopenharmony_ci	struct {
3028c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
3038c2ecf20Sopenharmony_ci		u64 raz_32_63 : 32;
3048c2ecf20Sopenharmony_ci		u64 commands_completed_threshold : 32;
3058c2ecf20Sopenharmony_ci#else
3068c2ecf20Sopenharmony_ci		u64 commands_completed_threshold : 32;
3078c2ecf20Sopenharmony_ci		u64 raz_32_63 : 32;
3088c2ecf20Sopenharmony_ci#endif
3098c2ecf20Sopenharmony_ci	};
3108c2ecf20Sopenharmony_ci};
3118c2ecf20Sopenharmony_ci
3128c2ecf20Sopenharmony_ci/**
3138c2ecf20Sopenharmony_ci * struct aqmq_cmp_cnt - AQM Queue Commands Completed Count Registers
3148c2ecf20Sopenharmony_ci * @resend: Bit to request completion interrupt Resend.
3158c2ecf20Sopenharmony_ci * @completion_status: Command completion status of the ring.
3168c2ecf20Sopenharmony_ci * @commands_completed_count: Count of 'aqmq_command_s' commands executed by
3178c2ecf20Sopenharmony_ci * AE engines.
3188c2ecf20Sopenharmony_ci */
3198c2ecf20Sopenharmony_ciunion aqmq_cmp_cnt {
3208c2ecf20Sopenharmony_ci	u64 value;
3218c2ecf20Sopenharmony_ci	struct {
3228c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
3238c2ecf20Sopenharmony_ci		u64 raz_34_63 : 30;
3248c2ecf20Sopenharmony_ci		u64 resend : 1;
3258c2ecf20Sopenharmony_ci		u64 completion_status : 1;
3268c2ecf20Sopenharmony_ci		u64 commands_completed_count : 32;
3278c2ecf20Sopenharmony_ci#else
3288c2ecf20Sopenharmony_ci		u64 commands_completed_count : 32;
3298c2ecf20Sopenharmony_ci		u64 completion_status : 1;
3308c2ecf20Sopenharmony_ci		u64 resend : 1;
3318c2ecf20Sopenharmony_ci		u64 raz_34_63 : 30;
3328c2ecf20Sopenharmony_ci#endif
3338c2ecf20Sopenharmony_ci	};
3348c2ecf20Sopenharmony_ci};
3358c2ecf20Sopenharmony_ci
3368c2ecf20Sopenharmony_ci/**
3378c2ecf20Sopenharmony_ci * struct aqmq_en - AQM Queue Enable Registers
3388c2ecf20Sopenharmony_ci * @queue_status: 1 = AQMQ is enabled, 0 = AQMQ is disabled
3398c2ecf20Sopenharmony_ci */
3408c2ecf20Sopenharmony_ciunion aqmq_en {
3418c2ecf20Sopenharmony_ci	u64 value;
3428c2ecf20Sopenharmony_ci	struct {
3438c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
3448c2ecf20Sopenharmony_ci		u64 raz_1_63 : 63;
3458c2ecf20Sopenharmony_ci		u64 queue_enable : 1;
3468c2ecf20Sopenharmony_ci#else
3478c2ecf20Sopenharmony_ci		u64 queue_enable : 1;
3488c2ecf20Sopenharmony_ci		u64 raz_1_63 : 63;
3498c2ecf20Sopenharmony_ci#endif
3508c2ecf20Sopenharmony_ci	};
3518c2ecf20Sopenharmony_ci};
3528c2ecf20Sopenharmony_ci
3538c2ecf20Sopenharmony_ci/**
3548c2ecf20Sopenharmony_ci * struct aqmq_activity_stat - AQM Queue Activity Status Registers
3558c2ecf20Sopenharmony_ci * @queue_active: 1 = AQMQ is active, 0 = AQMQ is quiescent
3568c2ecf20Sopenharmony_ci */
3578c2ecf20Sopenharmony_ciunion aqmq_activity_stat {
3588c2ecf20Sopenharmony_ci	u64 value;
3598c2ecf20Sopenharmony_ci	struct {
3608c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
3618c2ecf20Sopenharmony_ci		u64 raz_1_63 : 63;
3628c2ecf20Sopenharmony_ci		u64 queue_active : 1;
3638c2ecf20Sopenharmony_ci#else
3648c2ecf20Sopenharmony_ci		u64 queue_active : 1;
3658c2ecf20Sopenharmony_ci		u64 raz_1_63 : 63;
3668c2ecf20Sopenharmony_ci#endif
3678c2ecf20Sopenharmony_ci	};
3688c2ecf20Sopenharmony_ci};
3698c2ecf20Sopenharmony_ci
3708c2ecf20Sopenharmony_ci/**
3718c2ecf20Sopenharmony_ci * struct emu_fuse_map - EMU Fuse Map Registers
3728c2ecf20Sopenharmony_ci * @ae_fuse: Fuse settings for AE 19..0
3738c2ecf20Sopenharmony_ci * @se_fuse: Fuse settings for SE 15..0
3748c2ecf20Sopenharmony_ci *
3758c2ecf20Sopenharmony_ci * A set bit indicates the unit is fuse disabled.
3768c2ecf20Sopenharmony_ci */
3778c2ecf20Sopenharmony_ciunion emu_fuse_map {
3788c2ecf20Sopenharmony_ci	u64 value;
3798c2ecf20Sopenharmony_ci	struct {
3808c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
3818c2ecf20Sopenharmony_ci		u64 valid : 1;
3828c2ecf20Sopenharmony_ci		u64 raz_52_62 : 11;
3838c2ecf20Sopenharmony_ci		u64 ae_fuse : 20;
3848c2ecf20Sopenharmony_ci		u64 raz_16_31 : 16;
3858c2ecf20Sopenharmony_ci		u64 se_fuse : 16;
3868c2ecf20Sopenharmony_ci#else
3878c2ecf20Sopenharmony_ci		u64 se_fuse : 16;
3888c2ecf20Sopenharmony_ci		u64 raz_16_31 : 16;
3898c2ecf20Sopenharmony_ci		u64 ae_fuse : 20;
3908c2ecf20Sopenharmony_ci		u64 raz_52_62 : 11;
3918c2ecf20Sopenharmony_ci		u64 valid : 1;
3928c2ecf20Sopenharmony_ci#endif
3938c2ecf20Sopenharmony_ci	} s;
3948c2ecf20Sopenharmony_ci};
3958c2ecf20Sopenharmony_ci
3968c2ecf20Sopenharmony_ci/**
3978c2ecf20Sopenharmony_ci * struct emu_se_enable - Symmetric Engine Enable Registers
3988c2ecf20Sopenharmony_ci * @enable: Individual enables for each of the clusters
3998c2ecf20Sopenharmony_ci *   16 symmetric engines.
4008c2ecf20Sopenharmony_ci */
4018c2ecf20Sopenharmony_ciunion emu_se_enable {
4028c2ecf20Sopenharmony_ci	u64 value;
4038c2ecf20Sopenharmony_ci	struct {
4048c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
4058c2ecf20Sopenharmony_ci		u64 raz	: 48;
4068c2ecf20Sopenharmony_ci		u64 enable : 16;
4078c2ecf20Sopenharmony_ci#else
4088c2ecf20Sopenharmony_ci		u64 enable : 16;
4098c2ecf20Sopenharmony_ci		u64 raz	: 48;
4108c2ecf20Sopenharmony_ci#endif
4118c2ecf20Sopenharmony_ci	} s;
4128c2ecf20Sopenharmony_ci};
4138c2ecf20Sopenharmony_ci
4148c2ecf20Sopenharmony_ci/**
4158c2ecf20Sopenharmony_ci * struct emu_ae_enable - EMU Asymmetric engines.
4168c2ecf20Sopenharmony_ci * @enable: Individual enables for each of the cluster's
4178c2ecf20Sopenharmony_ci *   20 Asymmetric Engines.
4188c2ecf20Sopenharmony_ci */
4198c2ecf20Sopenharmony_ciunion emu_ae_enable {
4208c2ecf20Sopenharmony_ci	u64 value;
4218c2ecf20Sopenharmony_ci	struct {
4228c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
4238c2ecf20Sopenharmony_ci		u64 raz	: 44;
4248c2ecf20Sopenharmony_ci		u64 enable : 20;
4258c2ecf20Sopenharmony_ci#else
4268c2ecf20Sopenharmony_ci		u64 enable : 20;
4278c2ecf20Sopenharmony_ci		u64 raz	: 44;
4288c2ecf20Sopenharmony_ci#endif
4298c2ecf20Sopenharmony_ci	} s;
4308c2ecf20Sopenharmony_ci};
4318c2ecf20Sopenharmony_ci
4328c2ecf20Sopenharmony_ci/**
4338c2ecf20Sopenharmony_ci * struct emu_wd_int_ena_w1s - EMU Interrupt Enable Registers
4348c2ecf20Sopenharmony_ci * @ae_wd: Reads or sets enable for EMU(0..3)_WD_INT[AE_WD]
4358c2ecf20Sopenharmony_ci * @se_wd: Reads or sets enable for EMU(0..3)_WD_INT[SE_WD]
4368c2ecf20Sopenharmony_ci */
4378c2ecf20Sopenharmony_ciunion emu_wd_int_ena_w1s {
4388c2ecf20Sopenharmony_ci	u64 value;
4398c2ecf20Sopenharmony_ci	struct {
4408c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
4418c2ecf20Sopenharmony_ci		u64 raz2 : 12;
4428c2ecf20Sopenharmony_ci		u64 ae_wd : 20;
4438c2ecf20Sopenharmony_ci		u64 raz1 : 16;
4448c2ecf20Sopenharmony_ci		u64 se_wd : 16;
4458c2ecf20Sopenharmony_ci#else
4468c2ecf20Sopenharmony_ci		u64 se_wd : 16;
4478c2ecf20Sopenharmony_ci		u64 raz1 : 16;
4488c2ecf20Sopenharmony_ci		u64 ae_wd : 20;
4498c2ecf20Sopenharmony_ci		u64 raz2 : 12;
4508c2ecf20Sopenharmony_ci#endif
4518c2ecf20Sopenharmony_ci	} s;
4528c2ecf20Sopenharmony_ci};
4538c2ecf20Sopenharmony_ci
4548c2ecf20Sopenharmony_ci/**
4558c2ecf20Sopenharmony_ci * struct emu_ge_int_ena_w1s - EMU Interrupt Enable set registers
4568c2ecf20Sopenharmony_ci * @ae_ge: Reads or sets enable for EMU(0..3)_GE_INT[AE_GE]
4578c2ecf20Sopenharmony_ci * @se_ge: Reads or sets enable for EMU(0..3)_GE_INT[SE_GE]
4588c2ecf20Sopenharmony_ci */
4598c2ecf20Sopenharmony_ciunion emu_ge_int_ena_w1s {
4608c2ecf20Sopenharmony_ci	u64 value;
4618c2ecf20Sopenharmony_ci	struct {
4628c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
4638c2ecf20Sopenharmony_ci		u64 raz_52_63 : 12;
4648c2ecf20Sopenharmony_ci		u64 ae_ge : 20;
4658c2ecf20Sopenharmony_ci		u64 raz_16_31: 16;
4668c2ecf20Sopenharmony_ci		u64 se_ge : 16;
4678c2ecf20Sopenharmony_ci#else
4688c2ecf20Sopenharmony_ci		u64 se_ge : 16;
4698c2ecf20Sopenharmony_ci		u64 raz_16_31: 16;
4708c2ecf20Sopenharmony_ci		u64 ae_ge : 20;
4718c2ecf20Sopenharmony_ci		u64 raz_52_63 : 12;
4728c2ecf20Sopenharmony_ci#endif
4738c2ecf20Sopenharmony_ci	} s;
4748c2ecf20Sopenharmony_ci};
4758c2ecf20Sopenharmony_ci
4768c2ecf20Sopenharmony_ci/**
4778c2ecf20Sopenharmony_ci * struct nps_pkt_slc_ctl - Solicited Packet Out Control Registers
4788c2ecf20Sopenharmony_ci * @rh: Indicates whether to remove or include the response header
4798c2ecf20Sopenharmony_ci *   1 = Include, 0 = Remove
4808c2ecf20Sopenharmony_ci * @z: If set, 8 trailing 0x00 bytes will be added to the end of the
4818c2ecf20Sopenharmony_ci *   outgoing packet.
4828c2ecf20Sopenharmony_ci * @enb: Enable for this port.
4838c2ecf20Sopenharmony_ci */
4848c2ecf20Sopenharmony_ciunion nps_pkt_slc_ctl {
4858c2ecf20Sopenharmony_ci	u64 value;
4868c2ecf20Sopenharmony_ci	struct {
4878c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
4888c2ecf20Sopenharmony_ci		u64 raz : 61;
4898c2ecf20Sopenharmony_ci		u64 rh : 1;
4908c2ecf20Sopenharmony_ci		u64 z : 1;
4918c2ecf20Sopenharmony_ci		u64 enb : 1;
4928c2ecf20Sopenharmony_ci#else
4938c2ecf20Sopenharmony_ci		u64 enb : 1;
4948c2ecf20Sopenharmony_ci		u64 z : 1;
4958c2ecf20Sopenharmony_ci		u64 rh : 1;
4968c2ecf20Sopenharmony_ci		u64 raz : 61;
4978c2ecf20Sopenharmony_ci#endif
4988c2ecf20Sopenharmony_ci	} s;
4998c2ecf20Sopenharmony_ci};
5008c2ecf20Sopenharmony_ci
5018c2ecf20Sopenharmony_ci/**
5028c2ecf20Sopenharmony_ci * struct nps_pkt_slc_cnts - Solicited Packet Out Count Registers
5038c2ecf20Sopenharmony_ci * @slc_int: Returns a 1 when:
5048c2ecf20Sopenharmony_ci *   NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or
5058c2ecf20Sopenharmony_ci *   NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET].
5068c2ecf20Sopenharmony_ci *   To clear the bit, the CNTS register must be written to clear.
5078c2ecf20Sopenharmony_ci * @in_int: Returns a 1 when:
5088c2ecf20Sopenharmony_ci *   NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT].
5098c2ecf20Sopenharmony_ci *   To clear the bit, the DONE_CNTS register must be written to clear.
5108c2ecf20Sopenharmony_ci * @mbox_int: Returns a 1 when:
5118c2ecf20Sopenharmony_ci *   NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set. To clear the bit,
5128c2ecf20Sopenharmony_ci *   write NPS_PKT_MBOX_PF_VF(i)_INT[INTR] with 1.
5138c2ecf20Sopenharmony_ci * @timer: Timer, incremented every 2048 coprocessor clock cycles
5148c2ecf20Sopenharmony_ci *   when [CNT] is not zero. The hardware clears both [TIMER] and
5158c2ecf20Sopenharmony_ci *   [INT] when [CNT] goes to 0.
5168c2ecf20Sopenharmony_ci * @cnt: Packet counter. Hardware adds to [CNT] as it sends packets out.
5178c2ecf20Sopenharmony_ci *   On a write to this CSR, hardware subtracts the amount written to the
5188c2ecf20Sopenharmony_ci *   [CNT] field from [CNT].
5198c2ecf20Sopenharmony_ci */
5208c2ecf20Sopenharmony_ciunion nps_pkt_slc_cnts {
5218c2ecf20Sopenharmony_ci	u64 value;
5228c2ecf20Sopenharmony_ci	struct {
5238c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
5248c2ecf20Sopenharmony_ci		u64 slc_int : 1;
5258c2ecf20Sopenharmony_ci		u64 uns_int : 1;
5268c2ecf20Sopenharmony_ci		u64 in_int : 1;
5278c2ecf20Sopenharmony_ci		u64 mbox_int : 1;
5288c2ecf20Sopenharmony_ci		u64 resend : 1;
5298c2ecf20Sopenharmony_ci		u64 raz : 5;
5308c2ecf20Sopenharmony_ci		u64 timer : 22;
5318c2ecf20Sopenharmony_ci		u64 cnt : 32;
5328c2ecf20Sopenharmony_ci#else
5338c2ecf20Sopenharmony_ci		u64 cnt	: 32;
5348c2ecf20Sopenharmony_ci		u64 timer : 22;
5358c2ecf20Sopenharmony_ci		u64 raz	: 5;
5368c2ecf20Sopenharmony_ci		u64 resend : 1;
5378c2ecf20Sopenharmony_ci		u64 mbox_int : 1;
5388c2ecf20Sopenharmony_ci		u64 in_int : 1;
5398c2ecf20Sopenharmony_ci		u64 uns_int : 1;
5408c2ecf20Sopenharmony_ci		u64 slc_int : 1;
5418c2ecf20Sopenharmony_ci#endif
5428c2ecf20Sopenharmony_ci	} s;
5438c2ecf20Sopenharmony_ci};
5448c2ecf20Sopenharmony_ci
5458c2ecf20Sopenharmony_ci/**
5468c2ecf20Sopenharmony_ci * struct nps_pkt_slc_int_levels - Solicited Packet Out Interrupt Levels
5478c2ecf20Sopenharmony_ci *   Registers.
5488c2ecf20Sopenharmony_ci * @bmode: Determines whether NPS_PKT_SLC_CNTS[CNT] is a byte or
5498c2ecf20Sopenharmony_ci *   packet counter.
5508c2ecf20Sopenharmony_ci * @timet: Output port counter time interrupt threshold.
5518c2ecf20Sopenharmony_ci * @cnt: Output port counter interrupt threshold.
5528c2ecf20Sopenharmony_ci */
5538c2ecf20Sopenharmony_ciunion nps_pkt_slc_int_levels {
5548c2ecf20Sopenharmony_ci	u64 value;
5558c2ecf20Sopenharmony_ci	struct {
5568c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
5578c2ecf20Sopenharmony_ci		u64 bmode : 1;
5588c2ecf20Sopenharmony_ci		u64 raz	: 9;
5598c2ecf20Sopenharmony_ci		u64 timet : 22;
5608c2ecf20Sopenharmony_ci		u64 cnt	: 32;
5618c2ecf20Sopenharmony_ci#else
5628c2ecf20Sopenharmony_ci		u64 cnt : 32;
5638c2ecf20Sopenharmony_ci		u64 timet : 22;
5648c2ecf20Sopenharmony_ci		u64 raz : 9;
5658c2ecf20Sopenharmony_ci		u64 bmode : 1;
5668c2ecf20Sopenharmony_ci#endif
5678c2ecf20Sopenharmony_ci	} s;
5688c2ecf20Sopenharmony_ci};
5698c2ecf20Sopenharmony_ci
5708c2ecf20Sopenharmony_ci/**
5718c2ecf20Sopenharmony_ci * struct nps_pkt_inst - NPS Packet Interrupt Register
5728c2ecf20Sopenharmony_ci * @in_err: Set when any NPS_PKT_IN_RERR_HI/LO bit and
5738c2ecf20Sopenharmony_ci *    corresponding NPS_PKT_IN_RERR_*_ENA_* bit are bot set.
5748c2ecf20Sopenharmony_ci * @uns_err: Set when any NSP_PKT_UNS_RERR_HI/LO bit and
5758c2ecf20Sopenharmony_ci *    corresponding NPS_PKT_UNS_RERR_*_ENA_* bit are both set.
5768c2ecf20Sopenharmony_ci * @slc_er: Set when any NSP_PKT_SLC_RERR_HI/LO bit and
5778c2ecf20Sopenharmony_ci *    corresponding NPS_PKT_SLC_RERR_*_ENA_* bit are both set.
5788c2ecf20Sopenharmony_ci */
5798c2ecf20Sopenharmony_ciunion nps_pkt_int {
5808c2ecf20Sopenharmony_ci	u64 value;
5818c2ecf20Sopenharmony_ci	struct {
5828c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
5838c2ecf20Sopenharmony_ci		u64 raz	: 54;
5848c2ecf20Sopenharmony_ci		u64 uns_wto : 1;
5858c2ecf20Sopenharmony_ci		u64 in_err : 1;
5868c2ecf20Sopenharmony_ci		u64 uns_err : 1;
5878c2ecf20Sopenharmony_ci		u64 slc_err : 1;
5888c2ecf20Sopenharmony_ci		u64 in_dbe : 1;
5898c2ecf20Sopenharmony_ci		u64 in_sbe : 1;
5908c2ecf20Sopenharmony_ci		u64 uns_dbe : 1;
5918c2ecf20Sopenharmony_ci		u64 uns_sbe : 1;
5928c2ecf20Sopenharmony_ci		u64 slc_dbe : 1;
5938c2ecf20Sopenharmony_ci		u64 slc_sbe : 1;
5948c2ecf20Sopenharmony_ci#else
5958c2ecf20Sopenharmony_ci		u64 slc_sbe : 1;
5968c2ecf20Sopenharmony_ci		u64 slc_dbe : 1;
5978c2ecf20Sopenharmony_ci		u64 uns_sbe : 1;
5988c2ecf20Sopenharmony_ci		u64 uns_dbe : 1;
5998c2ecf20Sopenharmony_ci		u64 in_sbe : 1;
6008c2ecf20Sopenharmony_ci		u64 in_dbe : 1;
6018c2ecf20Sopenharmony_ci		u64 slc_err : 1;
6028c2ecf20Sopenharmony_ci		u64 uns_err : 1;
6038c2ecf20Sopenharmony_ci		u64 in_err : 1;
6048c2ecf20Sopenharmony_ci		u64 uns_wto : 1;
6058c2ecf20Sopenharmony_ci		u64 raz	: 54;
6068c2ecf20Sopenharmony_ci#endif
6078c2ecf20Sopenharmony_ci	} s;
6088c2ecf20Sopenharmony_ci};
6098c2ecf20Sopenharmony_ci
6108c2ecf20Sopenharmony_ci/**
6118c2ecf20Sopenharmony_ci * struct nps_pkt_in_done_cnts - Input instruction ring counts registers
6128c2ecf20Sopenharmony_ci * @slc_cnt: Returns a 1 when:
6138c2ecf20Sopenharmony_ci *    NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or
6148c2ecf20Sopenharmony_ci *    NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SCL(i)_INT_LEVELS[TIMET]
6158c2ecf20Sopenharmony_ci *    To clear the bit, the CNTS register must be
6168c2ecf20Sopenharmony_ci *    written to clear the underlying condition
6178c2ecf20Sopenharmony_ci * @uns_int: Return a 1 when:
6188c2ecf20Sopenharmony_ci *    NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT], or
6198c2ecf20Sopenharmony_ci *    NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET]
6208c2ecf20Sopenharmony_ci *    To clear the bit, the CNTS register must be
6218c2ecf20Sopenharmony_ci *    written to clear the underlying condition
6228c2ecf20Sopenharmony_ci * @in_int: Returns a 1 when:
6238c2ecf20Sopenharmony_ci *    NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT]
6248c2ecf20Sopenharmony_ci *    To clear the bit, the DONE_CNTS register
6258c2ecf20Sopenharmony_ci *    must be written to clear the underlying condition
6268c2ecf20Sopenharmony_ci * @mbox_int: Returns a 1 when:
6278c2ecf20Sopenharmony_ci *    NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set.
6288c2ecf20Sopenharmony_ci *    To clear the bit, write NPS_PKT_MBOX_PF_VF(i)_INT[INTR]
6298c2ecf20Sopenharmony_ci *    with 1.
6308c2ecf20Sopenharmony_ci * @resend: A write of 1 will resend an MSI-X interrupt message if any
6318c2ecf20Sopenharmony_ci *    of the following conditions are true for this ring "i".
6328c2ecf20Sopenharmony_ci *    NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT]
6338c2ecf20Sopenharmony_ci *    NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET]
6348c2ecf20Sopenharmony_ci *    NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT]
6358c2ecf20Sopenharmony_ci *    NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET]
6368c2ecf20Sopenharmony_ci *    NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT]
6378c2ecf20Sopenharmony_ci *    NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set
6388c2ecf20Sopenharmony_ci * @cnt: Packet counter. Hardware adds to [CNT] as it reads
6398c2ecf20Sopenharmony_ci *    packets. On a write to this CSR, hardware substracts the
6408c2ecf20Sopenharmony_ci *    amount written to the [CNT] field from [CNT], which will
6418c2ecf20Sopenharmony_ci *    clear PKT_IN(i)_INT_STATUS[INTR] if [CNT] becomes <=
6428c2ecf20Sopenharmony_ci *    NPS_PKT_IN(i)_INT_LEVELS[CNT]. This register should be
6438c2ecf20Sopenharmony_ci *    cleared before enabling a ring by reading the current
6448c2ecf20Sopenharmony_ci *    value and writing it back.
6458c2ecf20Sopenharmony_ci */
6468c2ecf20Sopenharmony_ciunion nps_pkt_in_done_cnts {
6478c2ecf20Sopenharmony_ci	u64 value;
6488c2ecf20Sopenharmony_ci	struct {
6498c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
6508c2ecf20Sopenharmony_ci		u64 slc_int : 1;
6518c2ecf20Sopenharmony_ci		u64 uns_int : 1;
6528c2ecf20Sopenharmony_ci		u64 in_int : 1;
6538c2ecf20Sopenharmony_ci		u64 mbox_int : 1;
6548c2ecf20Sopenharmony_ci		u64 resend : 1;
6558c2ecf20Sopenharmony_ci		u64 raz : 27;
6568c2ecf20Sopenharmony_ci		u64 cnt	: 32;
6578c2ecf20Sopenharmony_ci#else
6588c2ecf20Sopenharmony_ci		u64 cnt	: 32;
6598c2ecf20Sopenharmony_ci		u64 raz	: 27;
6608c2ecf20Sopenharmony_ci		u64 resend : 1;
6618c2ecf20Sopenharmony_ci		u64 mbox_int : 1;
6628c2ecf20Sopenharmony_ci		u64 in_int : 1;
6638c2ecf20Sopenharmony_ci		u64 uns_int : 1;
6648c2ecf20Sopenharmony_ci		u64 slc_int : 1;
6658c2ecf20Sopenharmony_ci#endif
6668c2ecf20Sopenharmony_ci	} s;
6678c2ecf20Sopenharmony_ci};
6688c2ecf20Sopenharmony_ci
6698c2ecf20Sopenharmony_ci/**
6708c2ecf20Sopenharmony_ci * struct nps_pkt_in_instr_ctl - Input Instruction Ring Control Registers.
6718c2ecf20Sopenharmony_ci * @is64b: If 1, the ring uses 64-byte instructions. If 0, the
6728c2ecf20Sopenharmony_ci *   ring uses 32-byte instructions.
6738c2ecf20Sopenharmony_ci * @enb: Enable for the input ring.
6748c2ecf20Sopenharmony_ci */
6758c2ecf20Sopenharmony_ciunion nps_pkt_in_instr_ctl {
6768c2ecf20Sopenharmony_ci	u64 value;
6778c2ecf20Sopenharmony_ci	struct {
6788c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
6798c2ecf20Sopenharmony_ci		u64 raz	: 62;
6808c2ecf20Sopenharmony_ci		u64 is64b : 1;
6818c2ecf20Sopenharmony_ci		u64 enb	: 1;
6828c2ecf20Sopenharmony_ci#else
6838c2ecf20Sopenharmony_ci		u64 enb	: 1;
6848c2ecf20Sopenharmony_ci		u64 is64b : 1;
6858c2ecf20Sopenharmony_ci		u64 raz : 62;
6868c2ecf20Sopenharmony_ci#endif
6878c2ecf20Sopenharmony_ci	} s;
6888c2ecf20Sopenharmony_ci};
6898c2ecf20Sopenharmony_ci
6908c2ecf20Sopenharmony_ci/**
6918c2ecf20Sopenharmony_ci * struct nps_pkt_in_instr_rsize - Input instruction ring size registers
6928c2ecf20Sopenharmony_ci * @rsize: Ring size (number of instructions)
6938c2ecf20Sopenharmony_ci */
6948c2ecf20Sopenharmony_ciunion nps_pkt_in_instr_rsize {
6958c2ecf20Sopenharmony_ci	u64 value;
6968c2ecf20Sopenharmony_ci	struct {
6978c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
6988c2ecf20Sopenharmony_ci		u64 raz	: 32;
6998c2ecf20Sopenharmony_ci		u64 rsize : 32;
7008c2ecf20Sopenharmony_ci#else
7018c2ecf20Sopenharmony_ci		u64 rsize : 32;
7028c2ecf20Sopenharmony_ci		u64 raz	: 32;
7038c2ecf20Sopenharmony_ci#endif
7048c2ecf20Sopenharmony_ci	} s;
7058c2ecf20Sopenharmony_ci};
7068c2ecf20Sopenharmony_ci
7078c2ecf20Sopenharmony_ci/**
7088c2ecf20Sopenharmony_ci * struct nps_pkt_in_instr_baoff_dbell - Input instruction ring
7098c2ecf20Sopenharmony_ci *   base address offset and doorbell registers
7108c2ecf20Sopenharmony_ci * @aoff: Address offset. The offset from the NPS_PKT_IN_INSTR_BADDR
7118c2ecf20Sopenharmony_ci *   where the next pointer is read.
7128c2ecf20Sopenharmony_ci * @dbell: Pointer list doorbell count. Write operations to this field
7138c2ecf20Sopenharmony_ci *   increments the present value here. Read operations return the
7148c2ecf20Sopenharmony_ci *   present value.
7158c2ecf20Sopenharmony_ci */
7168c2ecf20Sopenharmony_ciunion nps_pkt_in_instr_baoff_dbell {
7178c2ecf20Sopenharmony_ci	u64 value;
7188c2ecf20Sopenharmony_ci	struct {
7198c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
7208c2ecf20Sopenharmony_ci		u64 aoff : 32;
7218c2ecf20Sopenharmony_ci		u64 dbell : 32;
7228c2ecf20Sopenharmony_ci#else
7238c2ecf20Sopenharmony_ci		u64 dbell : 32;
7248c2ecf20Sopenharmony_ci		u64 aoff : 32;
7258c2ecf20Sopenharmony_ci#endif
7268c2ecf20Sopenharmony_ci	} s;
7278c2ecf20Sopenharmony_ci};
7288c2ecf20Sopenharmony_ci
7298c2ecf20Sopenharmony_ci/**
7308c2ecf20Sopenharmony_ci * struct nps_core_int_ena_w1s - NPS core interrupt enable set register
7318c2ecf20Sopenharmony_ci * @host_nps_wr_err: Reads or sets enable for
7328c2ecf20Sopenharmony_ci *   NPS_CORE_INT[HOST_NPS_WR_ERR].
7338c2ecf20Sopenharmony_ci * @npco_dma_malform: Reads or sets enable for
7348c2ecf20Sopenharmony_ci *   NPS_CORE_INT[NPCO_DMA_MALFORM].
7358c2ecf20Sopenharmony_ci * @exec_wr_timeout: Reads or sets enable for
7368c2ecf20Sopenharmony_ci *   NPS_CORE_INT[EXEC_WR_TIMEOUT].
7378c2ecf20Sopenharmony_ci * @host_wr_timeout: Reads or sets enable for
7388c2ecf20Sopenharmony_ci *   NPS_CORE_INT[HOST_WR_TIMEOUT].
7398c2ecf20Sopenharmony_ci * @host_wr_err: Reads or sets enable for
7408c2ecf20Sopenharmony_ci *   NPS_CORE_INT[HOST_WR_ERR]
7418c2ecf20Sopenharmony_ci */
7428c2ecf20Sopenharmony_ciunion nps_core_int_ena_w1s {
7438c2ecf20Sopenharmony_ci	u64 value;
7448c2ecf20Sopenharmony_ci	struct {
7458c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
7468c2ecf20Sopenharmony_ci		u64 raz4 : 55;
7478c2ecf20Sopenharmony_ci		u64 host_nps_wr_err : 1;
7488c2ecf20Sopenharmony_ci		u64 npco_dma_malform : 1;
7498c2ecf20Sopenharmony_ci		u64 exec_wr_timeout : 1;
7508c2ecf20Sopenharmony_ci		u64 host_wr_timeout : 1;
7518c2ecf20Sopenharmony_ci		u64 host_wr_err : 1;
7528c2ecf20Sopenharmony_ci		u64 raz3 : 1;
7538c2ecf20Sopenharmony_ci		u64 raz2 : 1;
7548c2ecf20Sopenharmony_ci		u64 raz1 : 1;
7558c2ecf20Sopenharmony_ci		u64 raz0 : 1;
7568c2ecf20Sopenharmony_ci#else
7578c2ecf20Sopenharmony_ci		u64 raz0 : 1;
7588c2ecf20Sopenharmony_ci		u64 raz1 : 1;
7598c2ecf20Sopenharmony_ci		u64 raz2 : 1;
7608c2ecf20Sopenharmony_ci		u64 raz3 : 1;
7618c2ecf20Sopenharmony_ci		u64 host_wr_err	: 1;
7628c2ecf20Sopenharmony_ci		u64 host_wr_timeout : 1;
7638c2ecf20Sopenharmony_ci		u64 exec_wr_timeout : 1;
7648c2ecf20Sopenharmony_ci		u64 npco_dma_malform : 1;
7658c2ecf20Sopenharmony_ci		u64 host_nps_wr_err : 1;
7668c2ecf20Sopenharmony_ci		u64 raz4 : 55;
7678c2ecf20Sopenharmony_ci#endif
7688c2ecf20Sopenharmony_ci	} s;
7698c2ecf20Sopenharmony_ci};
7708c2ecf20Sopenharmony_ci
7718c2ecf20Sopenharmony_ci/**
7728c2ecf20Sopenharmony_ci * struct nps_core_gbl_vfcfg - Global VF Configuration Register.
7738c2ecf20Sopenharmony_ci * @ilk_disable: When set, this bit indicates that the ILK interface has
7748c2ecf20Sopenharmony_ci *    been disabled.
7758c2ecf20Sopenharmony_ci * @obaf: BMO allocation control
7768c2ecf20Sopenharmony_ci *    0 = allocate per queue
7778c2ecf20Sopenharmony_ci *    1 = allocate per VF
7788c2ecf20Sopenharmony_ci * @ibaf: BMI allocation control
7798c2ecf20Sopenharmony_ci *    0 = allocate per queue
7808c2ecf20Sopenharmony_ci *    1 = allocate per VF
7818c2ecf20Sopenharmony_ci * @zaf: ZIP allocation control
7828c2ecf20Sopenharmony_ci *    0 = allocate per queue
7838c2ecf20Sopenharmony_ci *    1 = allocate per VF
7848c2ecf20Sopenharmony_ci * @aeaf: AE allocation control
7858c2ecf20Sopenharmony_ci *    0 = allocate per queue
7868c2ecf20Sopenharmony_ci *    1 = allocate per VF
7878c2ecf20Sopenharmony_ci * @seaf: SE allocation control
7888c2ecf20Sopenharmony_ci *    0 = allocation per queue
7898c2ecf20Sopenharmony_ci *    1 = allocate per VF
7908c2ecf20Sopenharmony_ci * @cfg: VF/PF mode.
7918c2ecf20Sopenharmony_ci */
7928c2ecf20Sopenharmony_ciunion nps_core_gbl_vfcfg {
7938c2ecf20Sopenharmony_ci	u64 value;
7948c2ecf20Sopenharmony_ci	struct {
7958c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
7968c2ecf20Sopenharmony_ci		u64  raz :55;
7978c2ecf20Sopenharmony_ci		u64  ilk_disable :1;
7988c2ecf20Sopenharmony_ci		u64  obaf :1;
7998c2ecf20Sopenharmony_ci		u64  ibaf :1;
8008c2ecf20Sopenharmony_ci		u64  zaf :1;
8018c2ecf20Sopenharmony_ci		u64  aeaf :1;
8028c2ecf20Sopenharmony_ci		u64  seaf :1;
8038c2ecf20Sopenharmony_ci		u64  cfg :3;
8048c2ecf20Sopenharmony_ci#else
8058c2ecf20Sopenharmony_ci		u64  cfg :3;
8068c2ecf20Sopenharmony_ci		u64  seaf :1;
8078c2ecf20Sopenharmony_ci		u64  aeaf :1;
8088c2ecf20Sopenharmony_ci		u64  zaf :1;
8098c2ecf20Sopenharmony_ci		u64  ibaf :1;
8108c2ecf20Sopenharmony_ci		u64  obaf :1;
8118c2ecf20Sopenharmony_ci		u64  ilk_disable :1;
8128c2ecf20Sopenharmony_ci		u64  raz :55;
8138c2ecf20Sopenharmony_ci#endif
8148c2ecf20Sopenharmony_ci	} s;
8158c2ecf20Sopenharmony_ci};
8168c2ecf20Sopenharmony_ci
8178c2ecf20Sopenharmony_ci/**
8188c2ecf20Sopenharmony_ci * struct nps_core_int_active - NPS Core Interrupt Active Register
8198c2ecf20Sopenharmony_ci * @resend: Resend MSI-X interrupt if needs to handle interrupts
8208c2ecf20Sopenharmony_ci *    Sofware can set this bit and then exit the ISR.
8218c2ecf20Sopenharmony_ci * @ocla: Set when any OCLA(0)_INT and corresponding OCLA(0_INT_ENA_W1C
8228c2ecf20Sopenharmony_ci *    bit are set
8238c2ecf20Sopenharmony_ci * @mbox: Set when any NPS_PKT_MBOX_INT_LO/HI and corresponding
8248c2ecf20Sopenharmony_ci *    NPS_PKT_MBOX_INT_LO_ENA_W1C/HI_ENA_W1C bits are set
8258c2ecf20Sopenharmony_ci * @emu: bit i is set in [EMU] when any EMU(i)_INT bit is set
8268c2ecf20Sopenharmony_ci * @bmo: Set when any BMO_INT bit is set
8278c2ecf20Sopenharmony_ci * @bmi: Set when any BMI_INT bit is set or when any non-RO
8288c2ecf20Sopenharmony_ci *    BMI_INT and corresponding BMI_INT_ENA_W1C bits are both set
8298c2ecf20Sopenharmony_ci * @aqm: Set when any AQM_INT bit is set
8308c2ecf20Sopenharmony_ci * @zqm: Set when any ZQM_INT bit is set
8318c2ecf20Sopenharmony_ci * @efl: Set when any EFL_INT RO bit is set or when any non-RO EFL_INT
8328c2ecf20Sopenharmony_ci *    and corresponding EFL_INT_ENA_W1C bits are both set
8338c2ecf20Sopenharmony_ci * @ilk: Set when any ILK_INT bit is set
8348c2ecf20Sopenharmony_ci * @lbc: Set when any LBC_INT RO bit is set or when any non-RO LBC_INT
8358c2ecf20Sopenharmony_ci *    and corresponding LBC_INT_ENA_W1C bits are bot set
8368c2ecf20Sopenharmony_ci * @pem: Set when any PEM(0)_INT RO bit is set or when any non-RO
8378c2ecf20Sopenharmony_ci *    PEM(0)_INT and corresponding PEM(0)_INT_ENA_W1C bit are both set
8388c2ecf20Sopenharmony_ci * @ucd: Set when any UCD_INT bit is set
8398c2ecf20Sopenharmony_ci * @zctl: Set when any ZIP_INT RO bit is set or when any non-RO ZIP_INT
8408c2ecf20Sopenharmony_ci *    and corresponding ZIP_INT_ENA_W1C bits are both set
8418c2ecf20Sopenharmony_ci * @lbm: Set when any LBM_INT bit is set
8428c2ecf20Sopenharmony_ci * @nps_pkt: Set when any NPS_PKT_INT bit is set
8438c2ecf20Sopenharmony_ci * @nps_core: Set when any NPS_CORE_INT RO bit is set or when non-RO
8448c2ecf20Sopenharmony_ci *    NPS_CORE_INT and corresponding NSP_CORE_INT_ENA_W1C bits are both set
8458c2ecf20Sopenharmony_ci */
8468c2ecf20Sopenharmony_ciunion nps_core_int_active {
8478c2ecf20Sopenharmony_ci	u64 value;
8488c2ecf20Sopenharmony_ci	struct {
8498c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
8508c2ecf20Sopenharmony_ci		u64 resend : 1;
8518c2ecf20Sopenharmony_ci		u64 raz	: 43;
8528c2ecf20Sopenharmony_ci		u64 ocla : 1;
8538c2ecf20Sopenharmony_ci		u64 mbox : 1;
8548c2ecf20Sopenharmony_ci		u64 emu	: 4;
8558c2ecf20Sopenharmony_ci		u64 bmo	: 1;
8568c2ecf20Sopenharmony_ci		u64 bmi	: 1;
8578c2ecf20Sopenharmony_ci		u64 aqm	: 1;
8588c2ecf20Sopenharmony_ci		u64 zqm	: 1;
8598c2ecf20Sopenharmony_ci		u64 efl	: 1;
8608c2ecf20Sopenharmony_ci		u64 ilk	: 1;
8618c2ecf20Sopenharmony_ci		u64 lbc	: 1;
8628c2ecf20Sopenharmony_ci		u64 pem	: 1;
8638c2ecf20Sopenharmony_ci		u64 pom	: 1;
8648c2ecf20Sopenharmony_ci		u64 ucd	: 1;
8658c2ecf20Sopenharmony_ci		u64 zctl : 1;
8668c2ecf20Sopenharmony_ci		u64 lbm	: 1;
8678c2ecf20Sopenharmony_ci		u64 nps_pkt : 1;
8688c2ecf20Sopenharmony_ci		u64 nps_core : 1;
8698c2ecf20Sopenharmony_ci#else
8708c2ecf20Sopenharmony_ci		u64 nps_core : 1;
8718c2ecf20Sopenharmony_ci		u64 nps_pkt : 1;
8728c2ecf20Sopenharmony_ci		u64 lbm	: 1;
8738c2ecf20Sopenharmony_ci		u64 zctl: 1;
8748c2ecf20Sopenharmony_ci		u64 ucd	: 1;
8758c2ecf20Sopenharmony_ci		u64 pom	: 1;
8768c2ecf20Sopenharmony_ci		u64 pem	: 1;
8778c2ecf20Sopenharmony_ci		u64 lbc	: 1;
8788c2ecf20Sopenharmony_ci		u64 ilk	: 1;
8798c2ecf20Sopenharmony_ci		u64 efl	: 1;
8808c2ecf20Sopenharmony_ci		u64 zqm	: 1;
8818c2ecf20Sopenharmony_ci		u64 aqm	: 1;
8828c2ecf20Sopenharmony_ci		u64 bmi	: 1;
8838c2ecf20Sopenharmony_ci		u64 bmo	: 1;
8848c2ecf20Sopenharmony_ci		u64 emu	: 4;
8858c2ecf20Sopenharmony_ci		u64 mbox : 1;
8868c2ecf20Sopenharmony_ci		u64 ocla : 1;
8878c2ecf20Sopenharmony_ci		u64 raz	: 43;
8888c2ecf20Sopenharmony_ci		u64 resend : 1;
8898c2ecf20Sopenharmony_ci#endif
8908c2ecf20Sopenharmony_ci	} s;
8918c2ecf20Sopenharmony_ci};
8928c2ecf20Sopenharmony_ci
8938c2ecf20Sopenharmony_ci/**
8948c2ecf20Sopenharmony_ci * struct efl_core_int - EFL Interrupt Registers
8958c2ecf20Sopenharmony_ci * @epci_decode_err: EPCI decoded a transacation that was unknown
8968c2ecf20Sopenharmony_ci *    This error should only occurred when there is a micrcode/SE error
8978c2ecf20Sopenharmony_ci *    and should be considered fatal
8988c2ecf20Sopenharmony_ci * @ae_err: An AE uncorrectable error occurred.
8998c2ecf20Sopenharmony_ci *    See EFL_CORE(0..3)_AE_ERR_INT
9008c2ecf20Sopenharmony_ci * @se_err: An SE uncorrectable error occurred.
9018c2ecf20Sopenharmony_ci *    See EFL_CORE(0..3)_SE_ERR_INT
9028c2ecf20Sopenharmony_ci * @dbe: Double-bit error occurred in EFL
9038c2ecf20Sopenharmony_ci * @sbe: Single-bit error occurred in EFL
9048c2ecf20Sopenharmony_ci * @d_left: Asserted when new POM-Header-BMI-data is
9058c2ecf20Sopenharmony_ci *    being sent to an Exec, and that Exec has Not read all BMI
9068c2ecf20Sopenharmony_ci *    data associated with the previous POM header
9078c2ecf20Sopenharmony_ci * @len_ovr: Asserted when an Exec-Read is issued that is more than
9088c2ecf20Sopenharmony_ci *    14 greater in length that the BMI data left to be read
9098c2ecf20Sopenharmony_ci */
9108c2ecf20Sopenharmony_ciunion efl_core_int {
9118c2ecf20Sopenharmony_ci	u64 value;
9128c2ecf20Sopenharmony_ci	struct {
9138c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
9148c2ecf20Sopenharmony_ci		u64 raz	: 57;
9158c2ecf20Sopenharmony_ci		u64 epci_decode_err : 1;
9168c2ecf20Sopenharmony_ci		u64 ae_err : 1;
9178c2ecf20Sopenharmony_ci		u64 se_err : 1;
9188c2ecf20Sopenharmony_ci		u64 dbe	: 1;
9198c2ecf20Sopenharmony_ci		u64 sbe	: 1;
9208c2ecf20Sopenharmony_ci		u64 d_left : 1;
9218c2ecf20Sopenharmony_ci		u64 len_ovr : 1;
9228c2ecf20Sopenharmony_ci#else
9238c2ecf20Sopenharmony_ci		u64 len_ovr : 1;
9248c2ecf20Sopenharmony_ci		u64 d_left : 1;
9258c2ecf20Sopenharmony_ci		u64 sbe	: 1;
9268c2ecf20Sopenharmony_ci		u64 dbe	: 1;
9278c2ecf20Sopenharmony_ci		u64 se_err : 1;
9288c2ecf20Sopenharmony_ci		u64 ae_err : 1;
9298c2ecf20Sopenharmony_ci		u64 epci_decode_err  : 1;
9308c2ecf20Sopenharmony_ci		u64 raz	: 57;
9318c2ecf20Sopenharmony_ci#endif
9328c2ecf20Sopenharmony_ci	} s;
9338c2ecf20Sopenharmony_ci};
9348c2ecf20Sopenharmony_ci
9358c2ecf20Sopenharmony_ci/**
9368c2ecf20Sopenharmony_ci * struct efl_core_int_ena_w1s - EFL core interrupt enable set register
9378c2ecf20Sopenharmony_ci * @epci_decode_err: Reads or sets enable for
9388c2ecf20Sopenharmony_ci *   EFL_CORE(0..3)_INT[EPCI_DECODE_ERR].
9398c2ecf20Sopenharmony_ci * @d_left: Reads or sets enable for
9408c2ecf20Sopenharmony_ci *   EFL_CORE(0..3)_INT[D_LEFT].
9418c2ecf20Sopenharmony_ci * @len_ovr: Reads or sets enable for
9428c2ecf20Sopenharmony_ci *   EFL_CORE(0..3)_INT[LEN_OVR].
9438c2ecf20Sopenharmony_ci */
9448c2ecf20Sopenharmony_ciunion efl_core_int_ena_w1s {
9458c2ecf20Sopenharmony_ci	u64 value;
9468c2ecf20Sopenharmony_ci	struct {
9478c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
9488c2ecf20Sopenharmony_ci		u64 raz_7_63 : 57;
9498c2ecf20Sopenharmony_ci		u64 epci_decode_err : 1;
9508c2ecf20Sopenharmony_ci		u64 raz_2_5 : 4;
9518c2ecf20Sopenharmony_ci		u64 d_left : 1;
9528c2ecf20Sopenharmony_ci		u64 len_ovr : 1;
9538c2ecf20Sopenharmony_ci#else
9548c2ecf20Sopenharmony_ci		u64 len_ovr : 1;
9558c2ecf20Sopenharmony_ci		u64 d_left : 1;
9568c2ecf20Sopenharmony_ci		u64 raz_2_5 : 4;
9578c2ecf20Sopenharmony_ci		u64 epci_decode_err : 1;
9588c2ecf20Sopenharmony_ci		u64 raz_7_63 : 57;
9598c2ecf20Sopenharmony_ci#endif
9608c2ecf20Sopenharmony_ci	} s;
9618c2ecf20Sopenharmony_ci};
9628c2ecf20Sopenharmony_ci
9638c2ecf20Sopenharmony_ci/**
9648c2ecf20Sopenharmony_ci * struct efl_rnm_ctl_status - RNM Control and Status Register
9658c2ecf20Sopenharmony_ci * @ent_sel: Select input to RNM FIFO
9668c2ecf20Sopenharmony_ci * @exp_ent: Exported entropy enable for random number generator
9678c2ecf20Sopenharmony_ci * @rng_rst: Reset to RNG. Setting this bit to 1 cancels the generation
9688c2ecf20Sopenharmony_ci *    of the current random number.
9698c2ecf20Sopenharmony_ci * @rnm_rst: Reset the RNM. Setting this bit to 1 clears all sorted numbers
9708c2ecf20Sopenharmony_ci *    in the random number memory.
9718c2ecf20Sopenharmony_ci * @rng_en: Enabled the output of the RNG.
9728c2ecf20Sopenharmony_ci * @ent_en: Entropy enable for random number generator.
9738c2ecf20Sopenharmony_ci */
9748c2ecf20Sopenharmony_ciunion efl_rnm_ctl_status {
9758c2ecf20Sopenharmony_ci	u64 value;
9768c2ecf20Sopenharmony_ci	struct {
9778c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
9788c2ecf20Sopenharmony_ci		u64 raz_9_63 : 55;
9798c2ecf20Sopenharmony_ci		u64 ent_sel : 4;
9808c2ecf20Sopenharmony_ci		u64 exp_ent : 1;
9818c2ecf20Sopenharmony_ci		u64 rng_rst : 1;
9828c2ecf20Sopenharmony_ci		u64 rnm_rst : 1;
9838c2ecf20Sopenharmony_ci		u64 rng_en : 1;
9848c2ecf20Sopenharmony_ci		u64 ent_en : 1;
9858c2ecf20Sopenharmony_ci#else
9868c2ecf20Sopenharmony_ci		u64 ent_en : 1;
9878c2ecf20Sopenharmony_ci		u64 rng_en : 1;
9888c2ecf20Sopenharmony_ci		u64 rnm_rst : 1;
9898c2ecf20Sopenharmony_ci		u64 rng_rst : 1;
9908c2ecf20Sopenharmony_ci		u64 exp_ent : 1;
9918c2ecf20Sopenharmony_ci		u64 ent_sel : 4;
9928c2ecf20Sopenharmony_ci		u64 raz_9_63 : 55;
9938c2ecf20Sopenharmony_ci#endif
9948c2ecf20Sopenharmony_ci	} s;
9958c2ecf20Sopenharmony_ci};
9968c2ecf20Sopenharmony_ci
9978c2ecf20Sopenharmony_ci/**
9988c2ecf20Sopenharmony_ci * struct bmi_ctl - BMI control register
9998c2ecf20Sopenharmony_ci * @ilk_hdrq_thrsh: Maximum number of header queue locations
10008c2ecf20Sopenharmony_ci *   that ILK packets may consume. When the threshold is
10018c2ecf20Sopenharmony_ci *   exceeded ILK_XOFF is sent to the BMI_X2P_ARB.
10028c2ecf20Sopenharmony_ci * @nps_hdrq_thrsh: Maximum number of header queue locations
10038c2ecf20Sopenharmony_ci *   that NPS packets may consume. When the threshold is
10048c2ecf20Sopenharmony_ci *   exceeded NPS_XOFF is sent to the BMI_X2P_ARB.
10058c2ecf20Sopenharmony_ci * @totl_hdrq_thrsh: Maximum number of header queue locations
10068c2ecf20Sopenharmony_ci *   that the sum of ILK and NPS packets may consume.
10078c2ecf20Sopenharmony_ci * @ilk_free_thrsh: Maximum number of buffers that ILK packet
10088c2ecf20Sopenharmony_ci *   flows may consume before ILK_XOFF is sent to the BMI_X2P_ARB.
10098c2ecf20Sopenharmony_ci * @nps_free_thrsh: Maximum number of buffers that NPS packet
10108c2ecf20Sopenharmony_ci *   flows may consume before NPS XOFF is sent to the BMI_X2p_ARB.
10118c2ecf20Sopenharmony_ci * @totl_free_thrsh: Maximum number of buffers that bot ILK and NPS
10128c2ecf20Sopenharmony_ci *   packet flows may consume before both NPS_XOFF and ILK_XOFF
10138c2ecf20Sopenharmony_ci *   are asserted to the BMI_X2P_ARB.
10148c2ecf20Sopenharmony_ci * @max_pkt_len: Maximum packet length, integral number of 256B
10158c2ecf20Sopenharmony_ci *   buffers.
10168c2ecf20Sopenharmony_ci */
10178c2ecf20Sopenharmony_ciunion bmi_ctl {
10188c2ecf20Sopenharmony_ci	u64 value;
10198c2ecf20Sopenharmony_ci	struct {
10208c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
10218c2ecf20Sopenharmony_ci		u64 raz_56_63 : 8;
10228c2ecf20Sopenharmony_ci		u64 ilk_hdrq_thrsh : 8;
10238c2ecf20Sopenharmony_ci		u64 nps_hdrq_thrsh : 8;
10248c2ecf20Sopenharmony_ci		u64 totl_hdrq_thrsh : 8;
10258c2ecf20Sopenharmony_ci		u64 ilk_free_thrsh : 8;
10268c2ecf20Sopenharmony_ci		u64 nps_free_thrsh : 8;
10278c2ecf20Sopenharmony_ci		u64 totl_free_thrsh : 8;
10288c2ecf20Sopenharmony_ci		u64 max_pkt_len : 8;
10298c2ecf20Sopenharmony_ci#else
10308c2ecf20Sopenharmony_ci		u64 max_pkt_len : 8;
10318c2ecf20Sopenharmony_ci		u64 totl_free_thrsh : 8;
10328c2ecf20Sopenharmony_ci		u64 nps_free_thrsh : 8;
10338c2ecf20Sopenharmony_ci		u64 ilk_free_thrsh : 8;
10348c2ecf20Sopenharmony_ci		u64 totl_hdrq_thrsh : 8;
10358c2ecf20Sopenharmony_ci		u64 nps_hdrq_thrsh : 8;
10368c2ecf20Sopenharmony_ci		u64 ilk_hdrq_thrsh : 8;
10378c2ecf20Sopenharmony_ci		u64 raz_56_63 : 8;
10388c2ecf20Sopenharmony_ci#endif
10398c2ecf20Sopenharmony_ci	} s;
10408c2ecf20Sopenharmony_ci};
10418c2ecf20Sopenharmony_ci
10428c2ecf20Sopenharmony_ci/**
10438c2ecf20Sopenharmony_ci * struct bmi_int_ena_w1s - BMI interrupt enable set register
10448c2ecf20Sopenharmony_ci * @ilk_req_oflw: Reads or sets enable for
10458c2ecf20Sopenharmony_ci *   BMI_INT[ILK_REQ_OFLW].
10468c2ecf20Sopenharmony_ci * @nps_req_oflw: Reads or sets enable for
10478c2ecf20Sopenharmony_ci *   BMI_INT[NPS_REQ_OFLW].
10488c2ecf20Sopenharmony_ci * @fpf_undrrn: Reads or sets enable for
10498c2ecf20Sopenharmony_ci *   BMI_INT[FPF_UNDRRN].
10508c2ecf20Sopenharmony_ci * @eop_err_ilk: Reads or sets enable for
10518c2ecf20Sopenharmony_ci *   BMI_INT[EOP_ERR_ILK].
10528c2ecf20Sopenharmony_ci * @eop_err_nps: Reads or sets enable for
10538c2ecf20Sopenharmony_ci *   BMI_INT[EOP_ERR_NPS].
10548c2ecf20Sopenharmony_ci * @sop_err_ilk: Reads or sets enable for
10558c2ecf20Sopenharmony_ci *   BMI_INT[SOP_ERR_ILK].
10568c2ecf20Sopenharmony_ci * @sop_err_nps: Reads or sets enable for
10578c2ecf20Sopenharmony_ci *   BMI_INT[SOP_ERR_NPS].
10588c2ecf20Sopenharmony_ci * @pkt_rcv_err_ilk: Reads or sets enable for
10598c2ecf20Sopenharmony_ci *   BMI_INT[PKT_RCV_ERR_ILK].
10608c2ecf20Sopenharmony_ci * @pkt_rcv_err_nps: Reads or sets enable for
10618c2ecf20Sopenharmony_ci *   BMI_INT[PKT_RCV_ERR_NPS].
10628c2ecf20Sopenharmony_ci * @max_len_err_ilk: Reads or sets enable for
10638c2ecf20Sopenharmony_ci *   BMI_INT[MAX_LEN_ERR_ILK].
10648c2ecf20Sopenharmony_ci * @max_len_err_nps: Reads or sets enable for
10658c2ecf20Sopenharmony_ci *   BMI_INT[MAX_LEN_ERR_NPS].
10668c2ecf20Sopenharmony_ci */
10678c2ecf20Sopenharmony_ciunion bmi_int_ena_w1s {
10688c2ecf20Sopenharmony_ci	u64 value;
10698c2ecf20Sopenharmony_ci	struct {
10708c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
10718c2ecf20Sopenharmony_ci		u64 raz_13_63	: 51;
10728c2ecf20Sopenharmony_ci		u64 ilk_req_oflw : 1;
10738c2ecf20Sopenharmony_ci		u64 nps_req_oflw : 1;
10748c2ecf20Sopenharmony_ci		u64 raz_10 : 1;
10758c2ecf20Sopenharmony_ci		u64 raz_9 : 1;
10768c2ecf20Sopenharmony_ci		u64 fpf_undrrn	: 1;
10778c2ecf20Sopenharmony_ci		u64 eop_err_ilk	: 1;
10788c2ecf20Sopenharmony_ci		u64 eop_err_nps	: 1;
10798c2ecf20Sopenharmony_ci		u64 sop_err_ilk	: 1;
10808c2ecf20Sopenharmony_ci		u64 sop_err_nps	: 1;
10818c2ecf20Sopenharmony_ci		u64 pkt_rcv_err_ilk : 1;
10828c2ecf20Sopenharmony_ci		u64 pkt_rcv_err_nps : 1;
10838c2ecf20Sopenharmony_ci		u64 max_len_err_ilk : 1;
10848c2ecf20Sopenharmony_ci		u64 max_len_err_nps : 1;
10858c2ecf20Sopenharmony_ci#else
10868c2ecf20Sopenharmony_ci		u64 max_len_err_nps : 1;
10878c2ecf20Sopenharmony_ci		u64 max_len_err_ilk : 1;
10888c2ecf20Sopenharmony_ci		u64 pkt_rcv_err_nps : 1;
10898c2ecf20Sopenharmony_ci		u64 pkt_rcv_err_ilk : 1;
10908c2ecf20Sopenharmony_ci		u64 sop_err_nps	: 1;
10918c2ecf20Sopenharmony_ci		u64 sop_err_ilk	: 1;
10928c2ecf20Sopenharmony_ci		u64 eop_err_nps	: 1;
10938c2ecf20Sopenharmony_ci		u64 eop_err_ilk	: 1;
10948c2ecf20Sopenharmony_ci		u64 fpf_undrrn	: 1;
10958c2ecf20Sopenharmony_ci		u64 raz_9 : 1;
10968c2ecf20Sopenharmony_ci		u64 raz_10 : 1;
10978c2ecf20Sopenharmony_ci		u64 nps_req_oflw : 1;
10988c2ecf20Sopenharmony_ci		u64 ilk_req_oflw : 1;
10998c2ecf20Sopenharmony_ci		u64 raz_13_63 : 51;
11008c2ecf20Sopenharmony_ci#endif
11018c2ecf20Sopenharmony_ci	} s;
11028c2ecf20Sopenharmony_ci};
11038c2ecf20Sopenharmony_ci
11048c2ecf20Sopenharmony_ci/**
11058c2ecf20Sopenharmony_ci * struct bmo_ctl2 - BMO Control2 Register
11068c2ecf20Sopenharmony_ci * @arb_sel: Determines P2X Arbitration
11078c2ecf20Sopenharmony_ci * @ilk_buf_thrsh: Maximum number of buffers that the
11088c2ecf20Sopenharmony_ci *    ILK packet flows may consume before ILK XOFF is
11098c2ecf20Sopenharmony_ci *    asserted to the POM.
11108c2ecf20Sopenharmony_ci * @nps_slc_buf_thrsh: Maximum number of buffers that the
11118c2ecf20Sopenharmony_ci *    NPS_SLC packet flow may consume before NPS_SLC XOFF is
11128c2ecf20Sopenharmony_ci *    asserted to the POM.
11138c2ecf20Sopenharmony_ci * @nps_uns_buf_thrsh: Maximum number of buffers that the
11148c2ecf20Sopenharmony_ci *    NPS_UNS packet flow may consume before NPS_UNS XOFF is
11158c2ecf20Sopenharmony_ci *    asserted to the POM.
11168c2ecf20Sopenharmony_ci * @totl_buf_thrsh: Maximum number of buffers that ILK, NPS_UNS and
11178c2ecf20Sopenharmony_ci *    NPS_SLC packet flows may consume before NPS_UNS XOFF, NSP_SLC and
11188c2ecf20Sopenharmony_ci *    ILK_XOFF are all asserted POM.
11198c2ecf20Sopenharmony_ci */
11208c2ecf20Sopenharmony_ciunion bmo_ctl2 {
11218c2ecf20Sopenharmony_ci	u64 value;
11228c2ecf20Sopenharmony_ci	struct {
11238c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
11248c2ecf20Sopenharmony_ci		u64 arb_sel : 1;
11258c2ecf20Sopenharmony_ci		u64 raz_32_62 : 31;
11268c2ecf20Sopenharmony_ci		u64 ilk_buf_thrsh : 8;
11278c2ecf20Sopenharmony_ci		u64 nps_slc_buf_thrsh : 8;
11288c2ecf20Sopenharmony_ci		u64 nps_uns_buf_thrsh : 8;
11298c2ecf20Sopenharmony_ci		u64 totl_buf_thrsh : 8;
11308c2ecf20Sopenharmony_ci#else
11318c2ecf20Sopenharmony_ci		u64 totl_buf_thrsh : 8;
11328c2ecf20Sopenharmony_ci		u64 nps_uns_buf_thrsh : 8;
11338c2ecf20Sopenharmony_ci		u64 nps_slc_buf_thrsh : 8;
11348c2ecf20Sopenharmony_ci		u64 ilk_buf_thrsh : 8;
11358c2ecf20Sopenharmony_ci		u64 raz_32_62 : 31;
11368c2ecf20Sopenharmony_ci		u64 arb_sel : 1;
11378c2ecf20Sopenharmony_ci#endif
11388c2ecf20Sopenharmony_ci	} s;
11398c2ecf20Sopenharmony_ci};
11408c2ecf20Sopenharmony_ci
11418c2ecf20Sopenharmony_ci/**
11428c2ecf20Sopenharmony_ci * struct pom_int_ena_w1s - POM interrupt enable set register
11438c2ecf20Sopenharmony_ci * @illegal_intf: Reads or sets enable for POM_INT[ILLEGAL_INTF].
11448c2ecf20Sopenharmony_ci * @illegal_dport: Reads or sets enable for POM_INT[ILLEGAL_DPORT].
11458c2ecf20Sopenharmony_ci */
11468c2ecf20Sopenharmony_ciunion pom_int_ena_w1s {
11478c2ecf20Sopenharmony_ci	u64 value;
11488c2ecf20Sopenharmony_ci	struct {
11498c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
11508c2ecf20Sopenharmony_ci		u64 raz2 : 60;
11518c2ecf20Sopenharmony_ci		u64 illegal_intf : 1;
11528c2ecf20Sopenharmony_ci		u64 illegal_dport : 1;
11538c2ecf20Sopenharmony_ci		u64 raz1 : 1;
11548c2ecf20Sopenharmony_ci		u64 raz0 : 1;
11558c2ecf20Sopenharmony_ci#else
11568c2ecf20Sopenharmony_ci		u64 raz0 : 1;
11578c2ecf20Sopenharmony_ci		u64 raz1 : 1;
11588c2ecf20Sopenharmony_ci		u64 illegal_dport : 1;
11598c2ecf20Sopenharmony_ci		u64 illegal_intf : 1;
11608c2ecf20Sopenharmony_ci		u64 raz2 : 60;
11618c2ecf20Sopenharmony_ci#endif
11628c2ecf20Sopenharmony_ci	} s;
11638c2ecf20Sopenharmony_ci};
11648c2ecf20Sopenharmony_ci
11658c2ecf20Sopenharmony_ci/**
11668c2ecf20Sopenharmony_ci * struct lbc_inval_ctl - LBC invalidation control register
11678c2ecf20Sopenharmony_ci * @wait_timer: Wait timer for wait state. [WAIT_TIMER] must
11688c2ecf20Sopenharmony_ci *   always be written with its reset value.
11698c2ecf20Sopenharmony_ci * @cam_inval_start: Software should write [CAM_INVAL_START]=1
11708c2ecf20Sopenharmony_ci *   to initiate an LBC cache invalidation. After this, software
11718c2ecf20Sopenharmony_ci *   should read LBC_INVAL_STATUS until LBC_INVAL_STATUS[DONE] is set.
11728c2ecf20Sopenharmony_ci *   LBC hardware clears [CAVM_INVAL_START] before software can
11738c2ecf20Sopenharmony_ci *   observed LBC_INVAL_STATUS[DONE] to be set
11748c2ecf20Sopenharmony_ci */
11758c2ecf20Sopenharmony_ciunion lbc_inval_ctl {
11768c2ecf20Sopenharmony_ci	u64 value;
11778c2ecf20Sopenharmony_ci	struct {
11788c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
11798c2ecf20Sopenharmony_ci		u64 raz2 : 48;
11808c2ecf20Sopenharmony_ci		u64 wait_timer : 8;
11818c2ecf20Sopenharmony_ci		u64 raz1 : 6;
11828c2ecf20Sopenharmony_ci		u64 cam_inval_start : 1;
11838c2ecf20Sopenharmony_ci		u64 raz0 : 1;
11848c2ecf20Sopenharmony_ci#else
11858c2ecf20Sopenharmony_ci		u64 raz0 : 1;
11868c2ecf20Sopenharmony_ci		u64 cam_inval_start : 1;
11878c2ecf20Sopenharmony_ci		u64 raz1 : 6;
11888c2ecf20Sopenharmony_ci		u64 wait_timer : 8;
11898c2ecf20Sopenharmony_ci		u64 raz2 : 48;
11908c2ecf20Sopenharmony_ci#endif
11918c2ecf20Sopenharmony_ci	} s;
11928c2ecf20Sopenharmony_ci};
11938c2ecf20Sopenharmony_ci
11948c2ecf20Sopenharmony_ci/**
11958c2ecf20Sopenharmony_ci * struct lbc_int_ena_w1s - LBC interrupt enable set register
11968c2ecf20Sopenharmony_ci * @cam_hard_err: Reads or sets enable for LBC_INT[CAM_HARD_ERR].
11978c2ecf20Sopenharmony_ci * @cam_inval_abort: Reads or sets enable for LBC_INT[CAM_INVAL_ABORT].
11988c2ecf20Sopenharmony_ci * @over_fetch_err: Reads or sets enable for LBC_INT[OVER_FETCH_ERR].
11998c2ecf20Sopenharmony_ci * @cache_line_to_err: Reads or sets enable for
12008c2ecf20Sopenharmony_ci *   LBC_INT[CACHE_LINE_TO_ERR].
12018c2ecf20Sopenharmony_ci * @cam_soft_err: Reads or sets enable for
12028c2ecf20Sopenharmony_ci *   LBC_INT[CAM_SOFT_ERR].
12038c2ecf20Sopenharmony_ci * @dma_rd_err: Reads or sets enable for
12048c2ecf20Sopenharmony_ci *   LBC_INT[DMA_RD_ERR].
12058c2ecf20Sopenharmony_ci */
12068c2ecf20Sopenharmony_ciunion lbc_int_ena_w1s {
12078c2ecf20Sopenharmony_ci	u64 value;
12088c2ecf20Sopenharmony_ci	struct {
12098c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
12108c2ecf20Sopenharmony_ci		u64 raz_10_63 : 54;
12118c2ecf20Sopenharmony_ci		u64 cam_hard_err : 1;
12128c2ecf20Sopenharmony_ci		u64 cam_inval_abort : 1;
12138c2ecf20Sopenharmony_ci		u64 over_fetch_err : 1;
12148c2ecf20Sopenharmony_ci		u64 cache_line_to_err : 1;
12158c2ecf20Sopenharmony_ci		u64 raz_2_5 : 4;
12168c2ecf20Sopenharmony_ci		u64 cam_soft_err : 1;
12178c2ecf20Sopenharmony_ci		u64 dma_rd_err : 1;
12188c2ecf20Sopenharmony_ci#else
12198c2ecf20Sopenharmony_ci		u64 dma_rd_err : 1;
12208c2ecf20Sopenharmony_ci		u64 cam_soft_err : 1;
12218c2ecf20Sopenharmony_ci		u64 raz_2_5 : 4;
12228c2ecf20Sopenharmony_ci		u64 cache_line_to_err : 1;
12238c2ecf20Sopenharmony_ci		u64 over_fetch_err : 1;
12248c2ecf20Sopenharmony_ci		u64 cam_inval_abort : 1;
12258c2ecf20Sopenharmony_ci		u64 cam_hard_err : 1;
12268c2ecf20Sopenharmony_ci		u64 raz_10_63 : 54;
12278c2ecf20Sopenharmony_ci#endif
12288c2ecf20Sopenharmony_ci	} s;
12298c2ecf20Sopenharmony_ci};
12308c2ecf20Sopenharmony_ci
12318c2ecf20Sopenharmony_ci/**
12328c2ecf20Sopenharmony_ci * struct lbc_int - LBC interrupt summary register
12338c2ecf20Sopenharmony_ci * @cam_hard_err: indicates a fatal hardware error.
12348c2ecf20Sopenharmony_ci *   It requires system reset.
12358c2ecf20Sopenharmony_ci *   When [CAM_HARD_ERR] is set, LBC stops logging any new information in
12368c2ecf20Sopenharmony_ci *   LBC_POM_MISS_INFO_LOG,
12378c2ecf20Sopenharmony_ci *   LBC_POM_MISS_ADDR_LOG,
12388c2ecf20Sopenharmony_ci *   LBC_EFL_MISS_INFO_LOG, and
12398c2ecf20Sopenharmony_ci *   LBC_EFL_MISS_ADDR_LOG.
12408c2ecf20Sopenharmony_ci *   Software should sample them.
12418c2ecf20Sopenharmony_ci * @cam_inval_abort: indicates a fatal hardware error.
12428c2ecf20Sopenharmony_ci *   System reset is required.
12438c2ecf20Sopenharmony_ci * @over_fetch_err: indicates a fatal hardware error
12448c2ecf20Sopenharmony_ci *   System reset is required
12458c2ecf20Sopenharmony_ci * @cache_line_to_err: is a debug feature.
12468c2ecf20Sopenharmony_ci *   This timeout interrupt bit tells the software that
12478c2ecf20Sopenharmony_ci *   a cacheline in LBC has non-zero usage and the context
12488c2ecf20Sopenharmony_ci *   has not been used for greater than the
12498c2ecf20Sopenharmony_ci *   LBC_TO_CNT[TO_CNT] time interval.
12508c2ecf20Sopenharmony_ci * @sbe: Memory SBE error. This is recoverable via ECC.
12518c2ecf20Sopenharmony_ci *   See LBC_ECC_INT for more details.
12528c2ecf20Sopenharmony_ci * @dbe: Memory DBE error. This is a fatal and requires a
12538c2ecf20Sopenharmony_ci *   system reset.
12548c2ecf20Sopenharmony_ci * @pref_dat_len_mismatch_err: Summary bit for context length
12558c2ecf20Sopenharmony_ci *   mismatch errors.
12568c2ecf20Sopenharmony_ci * @rd_dat_len_mismatch_err: Summary bit for SE read data length
12578c2ecf20Sopenharmony_ci *   greater than data prefect length errors.
12588c2ecf20Sopenharmony_ci * @cam_soft_err: is recoverable. Software must complete a
12598c2ecf20Sopenharmony_ci *   LBC_INVAL_CTL[CAM_INVAL_START] invalidation sequence and
12608c2ecf20Sopenharmony_ci *   then clear [CAM_SOFT_ERR].
12618c2ecf20Sopenharmony_ci * @dma_rd_err: A context prefect read of host memory returned with
12628c2ecf20Sopenharmony_ci *   a read error.
12638c2ecf20Sopenharmony_ci */
12648c2ecf20Sopenharmony_ciunion lbc_int {
12658c2ecf20Sopenharmony_ci	u64 value;
12668c2ecf20Sopenharmony_ci	struct {
12678c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
12688c2ecf20Sopenharmony_ci		u64 raz_10_63 : 54;
12698c2ecf20Sopenharmony_ci		u64 cam_hard_err : 1;
12708c2ecf20Sopenharmony_ci		u64 cam_inval_abort : 1;
12718c2ecf20Sopenharmony_ci		u64 over_fetch_err : 1;
12728c2ecf20Sopenharmony_ci		u64 cache_line_to_err : 1;
12738c2ecf20Sopenharmony_ci		u64 sbe : 1;
12748c2ecf20Sopenharmony_ci		u64 dbe	: 1;
12758c2ecf20Sopenharmony_ci		u64 pref_dat_len_mismatch_err : 1;
12768c2ecf20Sopenharmony_ci		u64 rd_dat_len_mismatch_err : 1;
12778c2ecf20Sopenharmony_ci		u64 cam_soft_err : 1;
12788c2ecf20Sopenharmony_ci		u64 dma_rd_err : 1;
12798c2ecf20Sopenharmony_ci#else
12808c2ecf20Sopenharmony_ci		u64 dma_rd_err : 1;
12818c2ecf20Sopenharmony_ci		u64 cam_soft_err : 1;
12828c2ecf20Sopenharmony_ci		u64 rd_dat_len_mismatch_err : 1;
12838c2ecf20Sopenharmony_ci		u64 pref_dat_len_mismatch_err : 1;
12848c2ecf20Sopenharmony_ci		u64 dbe	: 1;
12858c2ecf20Sopenharmony_ci		u64 sbe	: 1;
12868c2ecf20Sopenharmony_ci		u64 cache_line_to_err : 1;
12878c2ecf20Sopenharmony_ci		u64 over_fetch_err : 1;
12888c2ecf20Sopenharmony_ci		u64 cam_inval_abort : 1;
12898c2ecf20Sopenharmony_ci		u64 cam_hard_err : 1;
12908c2ecf20Sopenharmony_ci		u64 raz_10_63 : 54;
12918c2ecf20Sopenharmony_ci#endif
12928c2ecf20Sopenharmony_ci	} s;
12938c2ecf20Sopenharmony_ci};
12948c2ecf20Sopenharmony_ci
12958c2ecf20Sopenharmony_ci/**
12968c2ecf20Sopenharmony_ci * struct lbc_inval_status: LBC Invalidation status register
12978c2ecf20Sopenharmony_ci * @cam_clean_entry_complete_cnt: The number of entries that are
12988c2ecf20Sopenharmony_ci *   cleaned up successfully.
12998c2ecf20Sopenharmony_ci * @cam_clean_entry_cnt: The number of entries that have the CAM
13008c2ecf20Sopenharmony_ci *   inval command issued.
13018c2ecf20Sopenharmony_ci * @cam_inval_state: cam invalidation FSM state
13028c2ecf20Sopenharmony_ci * @cam_inval_abort: cam invalidation abort
13038c2ecf20Sopenharmony_ci * @cam_rst_rdy: lbc_cam reset ready
13048c2ecf20Sopenharmony_ci * @done: LBC clears [DONE] when
13058c2ecf20Sopenharmony_ci *   LBC_INVAL_CTL[CAM_INVAL_START] is written with a one,
13068c2ecf20Sopenharmony_ci *   and sets [DONE] when it completes the invalidation
13078c2ecf20Sopenharmony_ci *   sequence.
13088c2ecf20Sopenharmony_ci */
13098c2ecf20Sopenharmony_ciunion lbc_inval_status {
13108c2ecf20Sopenharmony_ci	u64 value;
13118c2ecf20Sopenharmony_ci	struct {
13128c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
13138c2ecf20Sopenharmony_ci		u64 raz3 : 23;
13148c2ecf20Sopenharmony_ci		u64 cam_clean_entry_complete_cnt : 9;
13158c2ecf20Sopenharmony_ci		u64 raz2 : 7;
13168c2ecf20Sopenharmony_ci		u64 cam_clean_entry_cnt : 9;
13178c2ecf20Sopenharmony_ci		u64 raz1 : 5;
13188c2ecf20Sopenharmony_ci		u64 cam_inval_state : 3;
13198c2ecf20Sopenharmony_ci		u64 raz0 : 5;
13208c2ecf20Sopenharmony_ci		u64 cam_inval_abort : 1;
13218c2ecf20Sopenharmony_ci		u64 cam_rst_rdy	: 1;
13228c2ecf20Sopenharmony_ci		u64 done : 1;
13238c2ecf20Sopenharmony_ci#else
13248c2ecf20Sopenharmony_ci		u64 done : 1;
13258c2ecf20Sopenharmony_ci		u64 cam_rst_rdy : 1;
13268c2ecf20Sopenharmony_ci		u64 cam_inval_abort : 1;
13278c2ecf20Sopenharmony_ci		u64 raz0 : 5;
13288c2ecf20Sopenharmony_ci		u64 cam_inval_state : 3;
13298c2ecf20Sopenharmony_ci		u64 raz1 : 5;
13308c2ecf20Sopenharmony_ci		u64 cam_clean_entry_cnt : 9;
13318c2ecf20Sopenharmony_ci		u64 raz2 : 7;
13328c2ecf20Sopenharmony_ci		u64 cam_clean_entry_complete_cnt : 9;
13338c2ecf20Sopenharmony_ci		u64 raz3 : 23;
13348c2ecf20Sopenharmony_ci#endif
13358c2ecf20Sopenharmony_ci	} s;
13368c2ecf20Sopenharmony_ci};
13378c2ecf20Sopenharmony_ci
13388c2ecf20Sopenharmony_ci/**
13398c2ecf20Sopenharmony_ci * struct rst_boot: RST Boot Register
13408c2ecf20Sopenharmony_ci * @jtcsrdis: when set, internal CSR access via JTAG TAP controller
13418c2ecf20Sopenharmony_ci *   is disabled
13428c2ecf20Sopenharmony_ci * @jt_tst_mode: JTAG test mode
13438c2ecf20Sopenharmony_ci * @io_supply: I/O power supply setting based on IO_VDD_SELECT pin:
13448c2ecf20Sopenharmony_ci *    0x1 = 1.8V
13458c2ecf20Sopenharmony_ci *    0x2 = 2.5V
13468c2ecf20Sopenharmony_ci *    0x4 = 3.3V
13478c2ecf20Sopenharmony_ci *    All other values are reserved
13488c2ecf20Sopenharmony_ci * @pnr_mul: clock multiplier
13498c2ecf20Sopenharmony_ci * @lboot: last boot cause mask, resets only with PLL_DC_OK
13508c2ecf20Sopenharmony_ci * @rboot: determines whether core 0 remains in reset after
13518c2ecf20Sopenharmony_ci *    chip cold or warm or soft reset
13528c2ecf20Sopenharmony_ci * @rboot_pin: read only access to REMOTE_BOOT pin
13538c2ecf20Sopenharmony_ci */
13548c2ecf20Sopenharmony_ciunion rst_boot {
13558c2ecf20Sopenharmony_ci	u64 value;
13568c2ecf20Sopenharmony_ci	struct {
13578c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
13588c2ecf20Sopenharmony_ci		u64 raz_63 : 1;
13598c2ecf20Sopenharmony_ci		u64 jtcsrdis : 1;
13608c2ecf20Sopenharmony_ci		u64 raz_59_61 : 3;
13618c2ecf20Sopenharmony_ci		u64 jt_tst_mode : 1;
13628c2ecf20Sopenharmony_ci		u64 raz_40_57 : 18;
13638c2ecf20Sopenharmony_ci		u64 io_supply : 3;
13648c2ecf20Sopenharmony_ci		u64 raz_30_36 : 7;
13658c2ecf20Sopenharmony_ci		u64 pnr_mul : 6;
13668c2ecf20Sopenharmony_ci		u64 raz_12_23 : 12;
13678c2ecf20Sopenharmony_ci		u64 lboot : 10;
13688c2ecf20Sopenharmony_ci		u64 rboot : 1;
13698c2ecf20Sopenharmony_ci		u64 rboot_pin : 1;
13708c2ecf20Sopenharmony_ci#else
13718c2ecf20Sopenharmony_ci		u64 rboot_pin : 1;
13728c2ecf20Sopenharmony_ci		u64 rboot : 1;
13738c2ecf20Sopenharmony_ci		u64 lboot : 10;
13748c2ecf20Sopenharmony_ci		u64 raz_12_23 : 12;
13758c2ecf20Sopenharmony_ci		u64 pnr_mul : 6;
13768c2ecf20Sopenharmony_ci		u64 raz_30_36 : 7;
13778c2ecf20Sopenharmony_ci		u64 io_supply : 3;
13788c2ecf20Sopenharmony_ci		u64 raz_40_57 : 18;
13798c2ecf20Sopenharmony_ci		u64 jt_tst_mode : 1;
13808c2ecf20Sopenharmony_ci		u64 raz_59_61 : 3;
13818c2ecf20Sopenharmony_ci		u64 jtcsrdis : 1;
13828c2ecf20Sopenharmony_ci		u64 raz_63 : 1;
13838c2ecf20Sopenharmony_ci#endif
13848c2ecf20Sopenharmony_ci	};
13858c2ecf20Sopenharmony_ci};
13868c2ecf20Sopenharmony_ci
13878c2ecf20Sopenharmony_ci/**
13888c2ecf20Sopenharmony_ci * struct fus_dat1: Fuse Data 1 Register
13898c2ecf20Sopenharmony_ci * @pll_mul: main clock PLL multiplier hardware limit
13908c2ecf20Sopenharmony_ci * @pll_half_dis: main clock PLL control
13918c2ecf20Sopenharmony_ci * @efus_lck: efuse lockdown
13928c2ecf20Sopenharmony_ci * @zip_info: ZIP information
13938c2ecf20Sopenharmony_ci * @bar2_sz_conf: when zero, BAR2 size conforms to
13948c2ecf20Sopenharmony_ci *    PCIe specification
13958c2ecf20Sopenharmony_ci * @efus_ign: efuse ignore
13968c2ecf20Sopenharmony_ci * @nozip: ZIP disable
13978c2ecf20Sopenharmony_ci * @pll_alt_matrix: select alternate PLL matrix
13988c2ecf20Sopenharmony_ci * @pll_bwadj_denom: select CLKF denominator for
13998c2ecf20Sopenharmony_ci *    BWADJ value
14008c2ecf20Sopenharmony_ci * @chip_id: chip ID
14018c2ecf20Sopenharmony_ci */
14028c2ecf20Sopenharmony_ciunion fus_dat1 {
14038c2ecf20Sopenharmony_ci	u64 value;
14048c2ecf20Sopenharmony_ci	struct {
14058c2ecf20Sopenharmony_ci#if (defined(__BIG_ENDIAN_BITFIELD))
14068c2ecf20Sopenharmony_ci		u64 raz_57_63 : 7;
14078c2ecf20Sopenharmony_ci		u64 pll_mul : 3;
14088c2ecf20Sopenharmony_ci		u64 pll_half_dis : 1;
14098c2ecf20Sopenharmony_ci		u64 raz_43_52 : 10;
14108c2ecf20Sopenharmony_ci		u64 efus_lck : 3;
14118c2ecf20Sopenharmony_ci		u64 raz_26_39 : 14;
14128c2ecf20Sopenharmony_ci		u64 zip_info : 5;
14138c2ecf20Sopenharmony_ci		u64 bar2_sz_conf : 1;
14148c2ecf20Sopenharmony_ci		u64 efus_ign : 1;
14158c2ecf20Sopenharmony_ci		u64 nozip : 1;
14168c2ecf20Sopenharmony_ci		u64 raz_11_17 : 7;
14178c2ecf20Sopenharmony_ci		u64 pll_alt_matrix : 1;
14188c2ecf20Sopenharmony_ci		u64 pll_bwadj_denom : 2;
14198c2ecf20Sopenharmony_ci		u64 chip_id : 8;
14208c2ecf20Sopenharmony_ci#else
14218c2ecf20Sopenharmony_ci		u64 chip_id : 8;
14228c2ecf20Sopenharmony_ci		u64 pll_bwadj_denom : 2;
14238c2ecf20Sopenharmony_ci		u64 pll_alt_matrix : 1;
14248c2ecf20Sopenharmony_ci		u64 raz_11_17 : 7;
14258c2ecf20Sopenharmony_ci		u64 nozip : 1;
14268c2ecf20Sopenharmony_ci		u64 efus_ign : 1;
14278c2ecf20Sopenharmony_ci		u64 bar2_sz_conf : 1;
14288c2ecf20Sopenharmony_ci		u64 zip_info : 5;
14298c2ecf20Sopenharmony_ci		u64 raz_26_39 : 14;
14308c2ecf20Sopenharmony_ci		u64 efus_lck : 3;
14318c2ecf20Sopenharmony_ci		u64 raz_43_52 : 10;
14328c2ecf20Sopenharmony_ci		u64 pll_half_dis : 1;
14338c2ecf20Sopenharmony_ci		u64 pll_mul : 3;
14348c2ecf20Sopenharmony_ci		u64 raz_57_63 : 7;
14358c2ecf20Sopenharmony_ci#endif
14368c2ecf20Sopenharmony_ci	};
14378c2ecf20Sopenharmony_ci};
14388c2ecf20Sopenharmony_ci
14398c2ecf20Sopenharmony_ci#endif /* __NITROX_CSR_H */
1440