Quelle nitrox_csr.h
Sprache: C
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NITROX_CSR_H
#define __NITROX_CSR_H
#include <asm /byteorder.h>
#include <linux/types.h>
/* EMU clusters */
#define NR_CLUSTERS 4
/* Maximum cores per cluster,
* varies based on partname
*/
#define AE_CORES_PER_CLUSTER 20
#define SE_CORES_PER_CLUSTER 16
#define AE_MAX_CORES (AE_CORES_PER_CLUSTER * NR_CLUSTERS)
#define SE_MAX_CORES (SE_CORES_PER_CLUSTER * NR_CLUSTERS)
#define ZIP_MAX_CORES 5
/* BIST registers */
#define EMU_BIST_STATUSX(_i) (0 x1402700 + ((_i) * 0 x40000))
#define UCD_BIST_STATUS 0 x12C0070
#define NPS_CORE_BIST_REG 0 x10000E8
#define NPS_CORE_NPC_BIST_REG 0 x1000128
#define NPS_PKT_SLC_BIST_REG 0 x1040088
#define NPS_PKT_IN_BIST_REG 0 x1040100
#define POM_BIST_REG 0 x11C0100
#define BMI_BIST_REG 0 x1140080
#define EFL_CORE_BIST_REGX(_i) (0 x1240100 + ((_i) * 0 x400))
#define EFL_TOP_BIST_STAT 0 x1241090
#define BMO_BIST_REG 0 x1180080
#define LBC_BIST_STATUS 0 x1200020
#define PEM_BIST_STATUSX(_i) (0 x1080468 | ((_i) << 18 ))
/* EMU registers */
#define EMU_SE_ENABLEX(_i) (0 x1400000 + ((_i) * 0 x40000))
#define EMU_AE_ENABLEX(_i) (0 x1400008 + ((_i) * 0 x40000))
#define EMU_WD_INT_ENA_W1SX(_i) (0 x1402318 + ((_i) * 0 x40000))
#define EMU_GE_INT_ENA_W1SX(_i) (0 x1402518 + ((_i) * 0 x40000))
#define EMU_FUSE_MAPX(_i) (0 x1402708 + ((_i) * 0 x40000))
/* UCD registers */
#define UCD_SE_EID_UCODE_BLOCK_NUMX(_i) (0 x12C0000 + ((_i) * 0 x1000))
#define UCD_AE_EID_UCODE_BLOCK_NUMX(_i) (0 x12C0008 + ((_i) * 0 x800))
#define UCD_UCODE_LOAD_BLOCK_NUM 0 x12C0010
#define UCD_UCODE_LOAD_IDX_DATAX(_i) (0 x12C0018 + ((_i) * 0 x20))
#define UCD_SE_CNTX(_i) (0 x12C0040 + ((_i) * 0 x1000))
#define UCD_AE_CNTX(_i) (0 x12C0048 + ((_i) * 0 x800))
/* AQM registers */
#define AQM_CTL 0 x1300000
#define AQM_INT 0 x1300008
#define AQM_DBELL_OVF_LO 0 x1300010
#define AQM_DBELL_OVF_HI 0 x1300018
#define AQM_DBELL_OVF_LO_W1S 0 x1300020
#define AQM_DBELL_OVF_LO_ENA_W1C 0 x1300028
#define AQM_DBELL_OVF_LO_ENA_W1S 0 x1300030
#define AQM_DBELL_OVF_HI_W1S 0 x1300038
#define AQM_DBELL_OVF_HI_ENA_W1C 0 x1300040
#define AQM_DBELL_OVF_HI_ENA_W1S 0 x1300048
#define AQM_DMA_RD_ERR_LO 0 x1300050
#define AQM_DMA_RD_ERR_HI 0 x1300058
#define AQM_DMA_RD_ERR_LO_W1S 0 x1300060
#define AQM_DMA_RD_ERR_LO_ENA_W1C 0 x1300068
#define AQM_DMA_RD_ERR_LO_ENA_W1S 0 x1300070
#define AQM_DMA_RD_ERR_HI_W1S 0 x1300078
#define AQM_DMA_RD_ERR_HI_ENA_W1C 0 x1300080
#define AQM_DMA_RD_ERR_HI_ENA_W1S 0 x1300088
#define AQM_EXEC_NA_LO 0 x1300090
#define AQM_EXEC_NA_HI 0 x1300098
#define AQM_EXEC_NA_LO_W1S 0 x13000A0
#define AQM_EXEC_NA_LO_ENA_W1C 0 x13000A8
#define AQM_EXEC_NA_LO_ENA_W1S 0 x13000B0
#define AQM_EXEC_NA_HI_W1S 0 x13000B8
#define AQM_EXEC_NA_HI_ENA_W1C 0 x13000C0
#define AQM_EXEC_NA_HI_ENA_W1S 0 x13000C8
#define AQM_EXEC_ERR_LO 0 x13000D0
#define AQM_EXEC_ERR_HI 0 x13000D8
#define AQM_EXEC_ERR_LO_W1S 0 x13000E0
#define AQM_EXEC_ERR_LO_ENA_W1C 0 x13000E8
#define AQM_EXEC_ERR_LO_ENA_W1S 0 x13000F0
#define AQM_EXEC_ERR_HI_W1S 0 x13000F8
#define AQM_EXEC_ERR_HI_ENA_W1C 0 x1300100
#define AQM_EXEC_ERR_HI_ENA_W1S 0 x1300108
#define AQM_ECC_INT 0 x1300110
#define AQM_ECC_INT_W1S 0 x1300118
#define AQM_ECC_INT_ENA_W1C 0 x1300120
#define AQM_ECC_INT_ENA_W1S 0 x1300128
#define AQM_ECC_CTL 0 x1300130
#define AQM_BIST_STATUS 0 x1300138
#define AQM_CMD_INF_THRX(x) (0 x1300400 + ((x) * 0 x8))
#define AQM_CMD_INFX(x) (0 x1300800 + ((x) * 0 x8))
#define AQM_GRP_EXECMSK_LOX(x) (0 x1300C00 + ((x) * 0 x10))
#define AQM_GRP_EXECMSK_HIX(x) (0 x1300C08 + ((x) * 0 x10))
#define AQM_ACTIVITY_STAT_LO 0 x1300C80
#define AQM_ACTIVITY_STAT_HI 0 x1300C88
#define AQM_Q_CMD_PROCX(x) (0 x1301000 + ((x) * 0 x8))
#define AQM_PERF_CTL_LO 0 x1301400
#define AQM_PERF_CTL_HI 0 x1301408
#define AQM_PERF_CNT 0 x1301410
#define AQMQ_DRBLX(x) (0 x20000 + ((x) * 0 x40000))
#define AQMQ_QSZX(x) (0 x20008 + ((x) * 0 x40000))
#define AQMQ_BADRX(x) (0 x20010 + ((x) * 0 x40000))
#define AQMQ_NXT_CMDX(x) (0 x20018 + ((x) * 0 x40000))
#define AQMQ_CMD_CNTX(x) (0 x20020 + ((x) * 0 x40000))
#define AQMQ_CMP_THRX(x) (0 x20028 + ((x) * 0 x40000))
#define AQMQ_CMP_CNTX(x) (0 x20030 + ((x) * 0 x40000))
#define AQMQ_TIM_LDX(x) (0 x20038 + ((x) * 0 x40000))
#define AQMQ_TIMERX(x) (0 x20040 + ((x) * 0 x40000))
#define AQMQ_ENX(x) (0 x20048 + ((x) * 0 x40000))
#define AQMQ_ACTIVITY_STATX(x) (0 x20050 + ((x) * 0 x40000))
#define AQM_VF_CMP_STATX(x) (0 x28000 + ((x) * 0 x40000))
/* NPS core registers */
#define NPS_CORE_GBL_VFCFG 0 x1000000
#define NPS_CORE_CONTROL 0 x1000008
#define NPS_CORE_INT_ACTIVE 0 x1000080
#define NPS_CORE_INT 0 x10000A0
#define NPS_CORE_INT_ENA_W1S 0 x10000B8
#define NPS_STATS_PKT_DMA_RD_CNT 0 x1000180
#define NPS_STATS_PKT_DMA_WR_CNT 0 x1000190
/* NPS packet registers */
#define NPS_PKT_INT 0 x1040018
#define NPS_PKT_MBOX_INT_LO 0 x1040020
#define NPS_PKT_MBOX_INT_LO_ENA_W1C 0 x1040030
#define NPS_PKT_MBOX_INT_LO_ENA_W1S 0 x1040038
#define NPS_PKT_MBOX_INT_HI 0 x1040040
#define NPS_PKT_MBOX_INT_HI_ENA_W1C 0 x1040050
#define NPS_PKT_MBOX_INT_HI_ENA_W1S 0 x1040058
#define NPS_PKT_IN_RERR_HI 0 x1040108
#define NPS_PKT_IN_RERR_HI_ENA_W1S 0 x1040120
#define NPS_PKT_IN_RERR_LO 0 x1040128
#define NPS_PKT_IN_RERR_LO_ENA_W1S 0 x1040140
#define NPS_PKT_IN_ERR_TYPE 0 x1040148
#define NPS_PKT_IN_ERR_TYPE_ENA_W1S 0 x1040160
#define NPS_PKT_IN_INSTR_CTLX(_i) (0 x10060 + ((_i) * 0 x40000))
#define NPS_PKT_IN_INSTR_BADDRX(_i) (0 x10068 + ((_i) * 0 x40000))
#define NPS_PKT_IN_INSTR_RSIZEX(_i) (0 x10070 + ((_i) * 0 x40000))
#define NPS_PKT_IN_DONE_CNTSX(_i) (0 x10080 + ((_i) * 0 x40000))
#define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i) (0 x10078 + ((_i) * 0 x40000))
#define NPS_PKT_IN_INT_LEVELSX(_i) (0 x10088 + ((_i) * 0 x40000))
#define NPS_PKT_SLC_RERR_HI 0 x1040208
#define NPS_PKT_SLC_RERR_HI_ENA_W1S 0 x1040220
#define NPS_PKT_SLC_RERR_LO 0 x1040228
#define NPS_PKT_SLC_RERR_LO_ENA_W1S 0 x1040240
#define NPS_PKT_SLC_ERR_TYPE 0 x1040248
#define NPS_PKT_SLC_ERR_TYPE_ENA_W1S 0 x1040260
/* Mailbox PF->VF PF Accessible Data registers */
#define NPS_PKT_MBOX_PF_VF_PFDATAX(_i) (0 x1040800 + ((_i) * 0 x8))
#define NPS_PKT_MBOX_VF_PF_PFDATAX(_i) (0 x1040C00 + ((_i) * 0 x8))
#define NPS_PKT_SLC_CTLX(_i) (0 x10000 + ((_i) * 0 x40000))
#define NPS_PKT_SLC_CNTSX(_i) (0 x10008 + ((_i) * 0 x40000))
#define NPS_PKT_SLC_INT_LEVELSX(_i) (0 x10010 + ((_i) * 0 x40000))
/* POM registers */
#define POM_INT_ENA_W1S 0 x11C0018
#define POM_GRP_EXECMASKX(_i) (0 x11C1100 | ((_i) * 8 ))
#define POM_INT 0 x11C0000
#define POM_PERF_CTL 0 x11CC400
/* BMI registers */
#define BMI_INT 0 x1140000
#define BMI_CTL 0 x1140020
#define BMI_INT_ENA_W1S 0 x1140018
#define BMI_NPS_PKT_CNT 0 x1140070
/* EFL registers */
#define EFL_CORE_INT_ENA_W1SX(_i) (0 x1240018 + ((_i) * 0 x400))
#define EFL_CORE_VF_ERR_INT0X(_i) (0 x1240050 + ((_i) * 0 x400))
#define EFL_CORE_VF_ERR_INT0_ENA_W1SX(_i) (0 x1240068 + ((_i) * 0 x400))
#define EFL_CORE_VF_ERR_INT1X(_i) (0 x1240070 + ((_i) * 0 x400))
#define EFL_CORE_VF_ERR_INT1_ENA_W1SX(_i) (0 x1240088 + ((_i) * 0 x400))
#define EFL_CORE_SE_ERR_INTX(_i) (0 x12400A0 + ((_i) * 0 x400))
#define EFL_RNM_CTL_STATUS 0 x1241800
#define EFL_CORE_INTX(_i) (0 x1240000 + ((_i) * 0 x400))
/* BMO registers */
#define BMO_CTL2 0 x1180028
#define BMO_NPS_SLC_PKT_CNT 0 x1180078
/* LBC registers */
#define LBC_INT 0 x1200000
#define LBC_INVAL_CTL 0 x1201010
#define LBC_PLM_VF1_64_INT 0 x1202008
#define LBC_INVAL_STATUS 0 x1202010
#define LBC_INT_ENA_W1S 0 x1203000
#define LBC_PLM_VF1_64_INT_ENA_W1S 0 x1205008
#define LBC_PLM_VF65_128_INT 0 x1206008
#define LBC_ELM_VF1_64_INT 0 x1208000
#define LBC_PLM_VF65_128_INT_ENA_W1S 0 x1209008
#define LBC_ELM_VF1_64_INT_ENA_W1S 0 x120B000
#define LBC_ELM_VF65_128_INT 0 x120C000
#define LBC_ELM_VF65_128_INT_ENA_W1S 0 x120F000
#define RST_BOOT 0 x10C1600
#define FUS_DAT1 0 x10C1408
/* PEM registers */
#define PEM0_INT 0 x1080428
/**
* struct ucd_core_eid_ucode_block_num - Core Eid to Ucode Blk Mapping Registers
* @ ucode_len : Ucode length identifier 32 KB or 64 KB
* @ ucode_blk : Ucode Block Number
*/
union ucd_core_eid_ucode_block_num {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_4_63 : 60 ;
u64 ucode_len : 1 ;
u64 ucode_blk : 3 ;
#else
u64 ucode_blk : 3 ;
u64 ucode_len : 1 ;
u64 raz_4_63 : 60 ;
#endif
};
};
/**
* struct aqm_grp_execmsk_lo - Available AE engines for the group
* @ exec_0_to_39 : AE engines 0 to 39 status
*/
union aqm_grp_execmsk_lo {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_40_63 : 24 ;
u64 exec_0_to_39 : 40 ;
#else
u64 exec_0_to_39 : 40 ;
u64 raz_40_63 : 24 ;
#endif
};
};
/**
* struct aqm_grp_execmsk_hi - Available AE engines for the group
* @ exec_40_to_79 : AE engines 40 to 79 status
*/
union aqm_grp_execmsk_hi {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_40_63 : 24 ;
u64 exec_40_to_79 : 40 ;
#else
u64 exec_40_to_79 : 40 ;
u64 raz_40_63 : 24 ;
#endif
};
};
/**
* struct aqmq_drbl - AQM Queue Doorbell Counter Registers
* @ dbell_count : Doorbell Counter
*/
union aqmq_drbl {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_32_63 : 32 ;
u64 dbell_count : 32 ;
#else
u64 dbell_count : 32 ;
u64 raz_32_63 : 32 ;
#endif
};
};
/**
* struct aqmq_qsz - AQM Queue Host Queue Size Registers
* @ host_queue_size : Size , in numbers of ' aqmq_command_s ' command
* of the Host Ring .
*/
union aqmq_qsz {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_32_63 : 32 ;
u64 host_queue_size : 32 ;
#else
u64 host_queue_size : 32 ;
u64 raz_32_63 : 32 ;
#endif
};
};
/**
* struct aqmq_cmp_thr - AQM Queue Commands Completed Threshold Registers
* @ commands_completed_threshold : Count of ' aqmq_command_s ' commands executed
* by AE engines for which completion interrupt is asserted .
*/
union aqmq_cmp_thr {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_32_63 : 32 ;
u64 commands_completed_threshold : 32 ;
#else
u64 commands_completed_threshold : 32 ;
u64 raz_32_63 : 32 ;
#endif
};
};
/**
* struct aqmq_cmp_cnt - AQM Queue Commands Completed Count Registers
* @ resend : Bit to request completion interrupt Resend .
* @ completion_status : Command completion status of the ring .
* @ commands_completed_count : Count of ' aqmq_command_s ' commands executed by
* AE engines .
*/
union aqmq_cmp_cnt {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_34_63 : 30 ;
u64 resend : 1 ;
u64 completion_status : 1 ;
u64 commands_completed_count : 32 ;
#else
u64 commands_completed_count : 32 ;
u64 completion_status : 1 ;
u64 resend : 1 ;
u64 raz_34_63 : 30 ;
#endif
};
};
/**
* struct aqmq_en - AQM Queue Enable Registers
* @ queue_status : 1 = AQMQ is enabled , 0 = AQMQ is disabled
*/
union aqmq_en {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_1_63 : 63 ;
u64 queue_enable : 1 ;
#else
u64 queue_enable : 1 ;
u64 raz_1_63 : 63 ;
#endif
};
};
/**
* struct aqmq_activity_stat - AQM Queue Activity Status Registers
* @ queue_active : 1 = AQMQ is active , 0 = AQMQ is quiescent
*/
union aqmq_activity_stat {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_1_63 : 63 ;
u64 queue_active : 1 ;
#else
u64 queue_active : 1 ;
u64 raz_1_63 : 63 ;
#endif
};
};
/**
* struct emu_fuse_map - EMU Fuse Map Registers
* @ ae_fuse : Fuse settings for AE 19 . . 0
* @ se_fuse : Fuse settings for SE 15 . . 0
*
* A set bit indicates the unit is fuse disabled .
*/
union emu_fuse_map {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 valid : 1 ;
u64 raz_52_62 : 11 ;
u64 ae_fuse : 20 ;
u64 raz_16_31 : 16 ;
u64 se_fuse : 16 ;
#else
u64 se_fuse : 16 ;
u64 raz_16_31 : 16 ;
u64 ae_fuse : 20 ;
u64 raz_52_62 : 11 ;
u64 valid : 1 ;
#endif
} s;
};
/**
* struct emu_se_enable - Symmetric Engine Enable Registers
* @ enable : Individual enables for each of the clusters
* 16 symmetric engines .
*/
union emu_se_enable {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz : 48 ;
u64 enable : 16 ;
#else
u64 enable : 16 ;
u64 raz : 48 ;
#endif
} s;
};
/**
* struct emu_ae_enable - EMU Asymmetric engines .
* @ enable : Individual enables for each of the cluster ' s
* 20 Asymmetric Engines .
*/
union emu_ae_enable {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz : 44 ;
u64 enable : 20 ;
#else
u64 enable : 20 ;
u64 raz : 44 ;
#endif
} s;
};
/**
* struct emu_wd_int_ena_w1s - EMU Interrupt Enable Registers
* @ ae_wd : Reads or sets enable for EMU ( 0 . . 3 ) _ WD_INT [ AE_WD ]
* @ se_wd : Reads or sets enable for EMU ( 0 . . 3 ) _ WD_INT [ SE_WD ]
*/
union emu_wd_int_ena_w1s {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz2 : 12 ;
u64 ae_wd : 20 ;
u64 raz1 : 16 ;
u64 se_wd : 16 ;
#else
u64 se_wd : 16 ;
u64 raz1 : 16 ;
u64 ae_wd : 20 ;
u64 raz2 : 12 ;
#endif
} s;
};
/**
* struct emu_ge_int_ena_w1s - EMU Interrupt Enable set registers
* @ ae_ge : Reads or sets enable for EMU ( 0 . . 3 ) _ GE_INT [ AE_GE ]
* @ se_ge : Reads or sets enable for EMU ( 0 . . 3 ) _ GE_INT [ SE_GE ]
*/
union emu_ge_int_ena_w1s {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_52_63 : 12 ;
u64 ae_ge : 20 ;
u64 raz_16_31: 16 ;
u64 se_ge : 16 ;
#else
u64 se_ge : 16 ;
u64 raz_16_31: 16 ;
u64 ae_ge : 20 ;
u64 raz_52_63 : 12 ;
#endif
} s;
};
/**
* struct nps_pkt_slc_ctl - Solicited Packet Out Control Registers
* @ rh : Indicates whether to remove or include the response header
* 1 = Include , 0 = Remove
* @ z : If set , 8 trailing 0 x00 bytes will be added to the end of the
* outgoing packet .
* @ enb : Enable for this port .
*/
union nps_pkt_slc_ctl {
u64 value;
struct {
#if defined (__BIG_ENDIAN_BITFIELD)
u64 raz : 61 ;
u64 rh : 1 ;
u64 z : 1 ;
u64 enb : 1 ;
#else
u64 enb : 1 ;
u64 z : 1 ;
u64 rh : 1 ;
u64 raz : 61 ;
#endif
} s;
};
/**
* struct nps_pkt_slc_cnts - Solicited Packet Out Count Registers
* @ slc_int : Returns a 1 when :
* NPS_PKT_SLC ( i ) _ CNTS [ CNT ] > NPS_PKT_SLC ( i ) _ INT_LEVELS [ CNT ] , or
* NPS_PKT_SLC ( i ) _ CNTS [ TIMER ] > NPS_PKT_SLC ( i ) _ INT_LEVELS [ TIMET ] .
* To clear the bit , the CNTS register must be written to clear .
* @ in_int : Returns a 1 when :
* NPS_PKT_IN ( i ) _ DONE_CNTS [ CNT ] > NPS_PKT_IN ( i ) _ INT_LEVELS [ CNT ] .
* To clear the bit , the DONE_CNTS register must be written to clear .
* @ mbox_int : Returns a 1 when :
* NPS_PKT_MBOX_PF_VF ( i ) _ INT [ INTR ] is set . To clear the bit ,
* write NPS_PKT_MBOX_PF_VF ( i ) _ INT [ INTR ] with 1 .
* @ timer : Timer , incremented every 2048 coprocessor clock cycles
* when [ CNT ] is not zero . The hardware clears both [ TIMER ] and
* [ INT ] when [ CNT ] goes to 0 .
* @ cnt : Packet counter . Hardware adds to [ CNT ] as it sends packets out .
* On a write to this CSR , hardware subtracts the amount written to the
* [ CNT ] field from [ CNT ] .
*/
union nps_pkt_slc_cnts {
u64 value;
struct {
#if defined (__BIG_ENDIAN_BITFIELD)
u64 slc_int : 1 ;
u64 uns_int : 1 ;
u64 in_int : 1 ;
u64 mbox_int : 1 ;
u64 resend : 1 ;
u64 raz : 5 ;
u64 timer : 22 ;
u64 cnt : 32 ;
#else
u64 cnt : 32 ;
u64 timer : 22 ;
u64 raz : 5 ;
u64 resend : 1 ;
u64 mbox_int : 1 ;
u64 in_int : 1 ;
u64 uns_int : 1 ;
u64 slc_int : 1 ;
#endif
} s;
};
/**
* struct nps_pkt_slc_int_levels - Solicited Packet Out Interrupt Levels
* Registers .
* @ bmode : Determines whether NPS_PKT_SLC_CNTS [ CNT ] is a byte or
* packet counter .
* @ timet : Output port counter time interrupt threshold .
* @ cnt : Output port counter interrupt threshold .
*/
union nps_pkt_slc_int_levels {
u64 value;
struct {
#if defined (__BIG_ENDIAN_BITFIELD)
u64 bmode : 1 ;
u64 raz : 9 ;
u64 timet : 22 ;
u64 cnt : 32 ;
#else
u64 cnt : 32 ;
u64 timet : 22 ;
u64 raz : 9 ;
u64 bmode : 1 ;
#endif
} s;
};
/**
* struct nps_pkt_inst - NPS Packet Interrupt Register
* @ in_err : Set when any NPS_PKT_IN_RERR_HI / LO bit and
* corresponding NPS_PKT_IN_RERR_ * _ ENA_ * bit are bot set .
* @ uns_err : Set when any NSP_PKT_UNS_RERR_HI / LO bit and
* corresponding NPS_PKT_UNS_RERR_ * _ ENA_ * bit are both set .
* @ slc_er : Set when any NSP_PKT_SLC_RERR_HI / LO bit and
* corresponding NPS_PKT_SLC_RERR_ * _ ENA_ * bit are both set .
*/
union nps_pkt_int {
u64 value;
struct {
#if defined (__BIG_ENDIAN_BITFIELD)
u64 raz : 54 ;
u64 uns_wto : 1 ;
u64 in_err : 1 ;
u64 uns_err : 1 ;
u64 slc_err : 1 ;
u64 in_dbe : 1 ;
u64 in_sbe : 1 ;
u64 uns_dbe : 1 ;
u64 uns_sbe : 1 ;
u64 slc_dbe : 1 ;
u64 slc_sbe : 1 ;
#else
u64 slc_sbe : 1 ;
u64 slc_dbe : 1 ;
u64 uns_sbe : 1 ;
u64 uns_dbe : 1 ;
u64 in_sbe : 1 ;
u64 in_dbe : 1 ;
u64 slc_err : 1 ;
u64 uns_err : 1 ;
u64 in_err : 1 ;
u64 uns_wto : 1 ;
u64 raz : 54 ;
#endif
} s;
};
/**
* struct nps_pkt_in_done_cnts - Input instruction ring counts registers
* @ slc_cnt : Returns a 1 when :
* NPS_PKT_SLC ( i ) _ CNTS [ CNT ] > NPS_PKT_SLC ( i ) _ INT_LEVELS [ CNT ] , or
* NPS_PKT_SLC ( i ) _ CNTS [ TIMER ] > NPS_PKT_SCL ( i ) _ INT_LEVELS [ TIMET ]
* To clear the bit , the CNTS register must be
* written to clear the underlying condition
* @ uns_int : Return a 1 when :
* NPS_PKT_UNS ( i ) _ CNTS [ CNT ] > NPS_PKT_UNS ( i ) _ INT_LEVELS [ CNT ] , or
* NPS_PKT_UNS ( i ) _ CNTS [ TIMER ] > NPS_PKT_UNS ( i ) _ INT_LEVELS [ TIMET ]
* To clear the bit , the CNTS register must be
* written to clear the underlying condition
* @ in_int : Returns a 1 when :
* NPS_PKT_IN ( i ) _ DONE_CNTS [ CNT ] > NPS_PKT_IN ( i ) _ INT_LEVELS [ CNT ]
* To clear the bit , the DONE_CNTS register
* must be written to clear the underlying condition
* @ mbox_int : Returns a 1 when :
* NPS_PKT_MBOX_PF_VF ( i ) _ INT [ INTR ] is set .
* To clear the bit , write NPS_PKT_MBOX_PF_VF ( i ) _ INT [ INTR ]
* with 1 .
* @ resend : A write of 1 will resend an MSI - X interrupt message if any
* of the following conditions are true for this ring " i " .
* NPS_PKT_SLC ( i ) _ CNTS [ CNT ] > NPS_PKT_SLC ( i ) _ INT_LEVELS [ CNT ]
* NPS_PKT_SLC ( i ) _ CNTS [ TIMER ] > NPS_PKT_SLC ( i ) _ INT_LEVELS [ TIMET ]
* NPS_PKT_UNS ( i ) _ CNTS [ CNT ] > NPS_PKT_UNS ( i ) _ INT_LEVELS [ CNT ]
* NPS_PKT_UNS ( i ) _ CNTS [ TIMER ] > NPS_PKT_UNS ( i ) _ INT_LEVELS [ TIMET ]
* NPS_PKT_IN ( i ) _ DONE_CNTS [ CNT ] > NPS_PKT_IN ( i ) _ INT_LEVELS [ CNT ]
* NPS_PKT_MBOX_PF_VF ( i ) _ INT [ INTR ] is set
* @ cnt : Packet counter . Hardware adds to [ CNT ] as it reads
* packets . On a write to this CSR , hardware substracts the
* amount written to the [ CNT ] field from [ CNT ] , which will
* clear PKT_IN ( i ) _ INT_STATUS [ INTR ] if [ CNT ] becomes < =
* NPS_PKT_IN ( i ) _ INT_LEVELS [ CNT ] . This register should be
* cleared before enabling a ring by reading the current
* value and writing it back .
*/
union nps_pkt_in_done_cnts {
u64 value;
struct {
#if defined (__BIG_ENDIAN_BITFIELD)
u64 slc_int : 1 ;
u64 uns_int : 1 ;
u64 in_int : 1 ;
u64 mbox_int : 1 ;
u64 resend : 1 ;
u64 raz : 27 ;
u64 cnt : 32 ;
#else
u64 cnt : 32 ;
u64 raz : 27 ;
u64 resend : 1 ;
u64 mbox_int : 1 ;
u64 in_int : 1 ;
u64 uns_int : 1 ;
u64 slc_int : 1 ;
#endif
} s;
};
/**
* struct nps_pkt_in_instr_ctl - Input Instruction Ring Control Registers .
* @ is64b : If 1 , the ring uses 64 - byte instructions . If 0 , the
* ring uses 32 - byte instructions .
* @ enb : Enable for the input ring .
*/
union nps_pkt_in_instr_ctl {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz : 62 ;
u64 is64b : 1 ;
u64 enb : 1 ;
#else
u64 enb : 1 ;
u64 is64b : 1 ;
u64 raz : 62 ;
#endif
} s;
};
/**
* struct nps_pkt_in_instr_rsize - Input instruction ring size registers
* @ rsize : Ring size ( number of instructions )
*/
union nps_pkt_in_instr_rsize {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz : 32 ;
u64 rsize : 32 ;
#else
u64 rsize : 32 ;
u64 raz : 32 ;
#endif
} s;
};
/**
* struct nps_pkt_in_instr_baoff_dbell - Input instruction ring
* base address offset and doorbell registers
* @ aoff : Address offset . The offset from the NPS_PKT_IN_INSTR_BADDR
* where the next pointer is read .
* @ dbell : Pointer list doorbell count . Write operations to this field
* increments the present value here . Read operations return the
* present value .
*/
union nps_pkt_in_instr_baoff_dbell {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 aoff : 32 ;
u64 dbell : 32 ;
#else
u64 dbell : 32 ;
u64 aoff : 32 ;
#endif
} s;
};
/**
* struct nps_core_int_ena_w1s - NPS core interrupt enable set register
* @ host_nps_wr_err : Reads or sets enable for
* NPS_CORE_INT [ HOST_NPS_WR_ERR ] .
* @ npco_dma_malform : Reads or sets enable for
* NPS_CORE_INT [ NPCO_DMA_MALFORM ] .
* @ exec_wr_timeout : Reads or sets enable for
* NPS_CORE_INT [ EXEC_WR_TIMEOUT ] .
* @ host_wr_timeout : Reads or sets enable for
* NPS_CORE_INT [ HOST_WR_TIMEOUT ] .
* @ host_wr_err : Reads or sets enable for
* NPS_CORE_INT [ HOST_WR_ERR ]
*/
union nps_core_int_ena_w1s {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz4 : 55 ;
u64 host_nps_wr_err : 1 ;
u64 npco_dma_malform : 1 ;
u64 exec_wr_timeout : 1 ;
u64 host_wr_timeout : 1 ;
u64 host_wr_err : 1 ;
u64 raz3 : 1 ;
u64 raz2 : 1 ;
u64 raz1 : 1 ;
u64 raz0 : 1 ;
#else
u64 raz0 : 1 ;
u64 raz1 : 1 ;
u64 raz2 : 1 ;
u64 raz3 : 1 ;
u64 host_wr_err : 1 ;
u64 host_wr_timeout : 1 ;
u64 exec_wr_timeout : 1 ;
u64 npco_dma_malform : 1 ;
u64 host_nps_wr_err : 1 ;
u64 raz4 : 55 ;
#endif
} s;
};
/**
* struct nps_core_gbl_vfcfg - Global VF Configuration Register .
* @ ilk_disable : When set , this bit indicates that the ILK interface has
* been disabled .
* @ obaf : BMO allocation control
* 0 = allocate per queue
* 1 = allocate per VF
* @ ibaf : BMI allocation control
* 0 = allocate per queue
* 1 = allocate per VF
* @ zaf : ZIP allocation control
* 0 = allocate per queue
* 1 = allocate per VF
* @ aeaf : AE allocation control
* 0 = allocate per queue
* 1 = allocate per VF
* @ seaf : SE allocation control
* 0 = allocation per queue
* 1 = allocate per VF
* @ cfg : VF / PF mode .
*/
union nps_core_gbl_vfcfg {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz :55 ;
u64 ilk_disable :1 ;
u64 obaf :1 ;
u64 ibaf :1 ;
u64 zaf :1 ;
u64 aeaf :1 ;
u64 seaf :1 ;
u64 cfg :3 ;
#else
u64 cfg :3 ;
u64 seaf :1 ;
u64 aeaf :1 ;
u64 zaf :1 ;
u64 ibaf :1 ;
u64 obaf :1 ;
u64 ilk_disable :1 ;
u64 raz :55 ;
#endif
} s;
};
/**
* struct nps_core_int_active - NPS Core Interrupt Active Register
* @ resend : Resend MSI - X interrupt if needs to handle interrupts
* Sofware can set this bit and then exit the ISR .
* @ ocla : Set when any OCLA ( 0 ) _ INT and corresponding OCLA ( 0 _ INT_ENA_W1C
* bit are set
* @ mbox : Set when any NPS_PKT_MBOX_INT_LO / HI and corresponding
* NPS_PKT_MBOX_INT_LO_ENA_W1C / HI_ENA_W1C bits are set
* @ emu : bit i is set in [ EMU ] when any EMU ( i ) _ INT bit is set
* @ bmo : Set when any BMO_INT bit is set
* @ bmi : Set when any BMI_INT bit is set or when any non - RO
* BMI_INT and corresponding BMI_INT_ENA_W1C bits are both set
* @ aqm : Set when any AQM_INT bit is set
* @ zqm : Set when any ZQM_INT bit is set
* @ efl : Set when any EFL_INT RO bit is set or when any non - RO EFL_INT
* and corresponding EFL_INT_ENA_W1C bits are both set
* @ ilk : Set when any ILK_INT bit is set
* @ lbc : Set when any LBC_INT RO bit is set or when any non - RO LBC_INT
* and corresponding LBC_INT_ENA_W1C bits are bot set
* @ pem : Set when any PEM ( 0 ) _ INT RO bit is set or when any non - RO
* PEM ( 0 ) _ INT and corresponding PEM ( 0 ) _ INT_ENA_W1C bit are both set
* @ ucd : Set when any UCD_INT bit is set
* @ zctl : Set when any ZIP_INT RO bit is set or when any non - RO ZIP_INT
* and corresponding ZIP_INT_ENA_W1C bits are both set
* @ lbm : Set when any LBM_INT bit is set
* @ nps_pkt : Set when any NPS_PKT_INT bit is set
* @ nps_core : Set when any NPS_CORE_INT RO bit is set or when non - RO
* NPS_CORE_INT and corresponding NSP_CORE_INT_ENA_W1C bits are both set
*/
union nps_core_int_active {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 resend : 1 ;
u64 raz : 43 ;
u64 ocla : 1 ;
u64 mbox : 1 ;
u64 emu : 4 ;
u64 bmo : 1 ;
u64 bmi : 1 ;
u64 aqm : 1 ;
u64 zqm : 1 ;
u64 efl : 1 ;
u64 ilk : 1 ;
u64 lbc : 1 ;
u64 pem : 1 ;
u64 pom : 1 ;
u64 ucd : 1 ;
u64 zctl : 1 ;
u64 lbm : 1 ;
u64 nps_pkt : 1 ;
u64 nps_core : 1 ;
#else
u64 nps_core : 1 ;
u64 nps_pkt : 1 ;
u64 lbm : 1 ;
u64 zctl: 1 ;
u64 ucd : 1 ;
u64 pom : 1 ;
u64 pem : 1 ;
u64 lbc : 1 ;
u64 ilk : 1 ;
u64 efl : 1 ;
u64 zqm : 1 ;
u64 aqm : 1 ;
u64 bmi : 1 ;
u64 bmo : 1 ;
u64 emu : 4 ;
u64 mbox : 1 ;
u64 ocla : 1 ;
u64 raz : 43 ;
u64 resend : 1 ;
#endif
} s;
};
/**
* struct efl_core_int - EFL Interrupt Registers
* @ epci_decode_err : EPCI decoded a transacation that was unknown
* This error should only occurred when there is a micrcode / SE error
* and should be considered fatal
* @ ae_err : An AE uncorrectable error occurred .
* See EFL_CORE ( 0 . . 3 ) _ AE_ERR_INT
* @ se_err : An SE uncorrectable error occurred .
* See EFL_CORE ( 0 . . 3 ) _ SE_ERR_INT
* @ dbe : Double - bit error occurred in EFL
* @ sbe : Single - bit error occurred in EFL
* @ d_left : Asserted when new POM - Header - BMI - data is
* being sent to an Exec , and that Exec has Not read all BMI
* data associated with the previous POM header
* @ len_ovr : Asserted when an Exec - Read is issued that is more than
* 14 greater in length that the BMI data left to be read
*/
union efl_core_int {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz : 57 ;
u64 epci_decode_err : 1 ;
u64 ae_err : 1 ;
u64 se_err : 1 ;
u64 dbe : 1 ;
u64 sbe : 1 ;
u64 d_left : 1 ;
u64 len_ovr : 1 ;
#else
u64 len_ovr : 1 ;
u64 d_left : 1 ;
u64 sbe : 1 ;
u64 dbe : 1 ;
u64 se_err : 1 ;
u64 ae_err : 1 ;
u64 epci_decode_err : 1 ;
u64 raz : 57 ;
#endif
} s;
};
/**
* struct efl_core_int_ena_w1s - EFL core interrupt enable set register
* @ epci_decode_err : Reads or sets enable for
* EFL_CORE ( 0 . . 3 ) _ INT [ EPCI_DECODE_ERR ] .
* @ d_left : Reads or sets enable for
* EFL_CORE ( 0 . . 3 ) _ INT [ D_LEFT ] .
* @ len_ovr : Reads or sets enable for
* EFL_CORE ( 0 . . 3 ) _ INT [ LEN_OVR ] .
*/
union efl_core_int_ena_w1s {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_7_63 : 57 ;
u64 epci_decode_err : 1 ;
u64 raz_2_5 : 4 ;
u64 d_left : 1 ;
u64 len_ovr : 1 ;
#else
u64 len_ovr : 1 ;
u64 d_left : 1 ;
u64 raz_2_5 : 4 ;
u64 epci_decode_err : 1 ;
u64 raz_7_63 : 57 ;
#endif
} s;
};
/**
* struct efl_rnm_ctl_status - RNM Control and Status Register
* @ ent_sel : Select input to RNM FIFO
* @ exp_ent : Exported entropy enable for random number generator
* @ rng_rst : Reset to RNG . Setting this bit to 1 cancels the generation
* of the current random number .
* @ rnm_rst : Reset the RNM . Setting this bit to 1 clears all sorted numbers
* in the random number memory .
* @ rng_en : Enabled the output of the RNG .
* @ ent_en : Entropy enable for random number generator .
*/
union efl_rnm_ctl_status {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_9_63 : 55 ;
u64 ent_sel : 4 ;
u64 exp_ent : 1 ;
u64 rng_rst : 1 ;
u64 rnm_rst : 1 ;
u64 rng_en : 1 ;
u64 ent_en : 1 ;
#else
u64 ent_en : 1 ;
u64 rng_en : 1 ;
u64 rnm_rst : 1 ;
u64 rng_rst : 1 ;
u64 exp_ent : 1 ;
u64 ent_sel : 4 ;
u64 raz_9_63 : 55 ;
#endif
} s;
};
/**
* struct bmi_ctl - BMI control register
* @ ilk_hdrq_thrsh : Maximum number of header queue locations
* that ILK packets may consume . When the threshold is
* exceeded ILK_XOFF is sent to the BMI_X2P_ARB .
* @ nps_hdrq_thrsh : Maximum number of header queue locations
* that NPS packets may consume . When the threshold is
* exceeded NPS_XOFF is sent to the BMI_X2P_ARB .
* @ totl_hdrq_thrsh : Maximum number of header queue locations
* that the sum of ILK and NPS packets may consume .
* @ ilk_free_thrsh : Maximum number of buffers that ILK packet
* flows may consume before ILK_XOFF is sent to the BMI_X2P_ARB .
* @ nps_free_thrsh : Maximum number of buffers that NPS packet
* flows may consume before NPS XOFF is sent to the BMI_X2p_ARB .
* @ totl_free_thrsh : Maximum number of buffers that bot ILK and NPS
* packet flows may consume before both NPS_XOFF and ILK_XOFF
* are asserted to the BMI_X2P_ARB .
* @ max_pkt_len : Maximum packet length , integral number of 256 B
* buffers .
*/
union bmi_ctl {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_56_63 : 8 ;
u64 ilk_hdrq_thrsh : 8 ;
u64 nps_hdrq_thrsh : 8 ;
u64 totl_hdrq_thrsh : 8 ;
u64 ilk_free_thrsh : 8 ;
u64 nps_free_thrsh : 8 ;
u64 totl_free_thrsh : 8 ;
u64 max_pkt_len : 8 ;
#else
u64 max_pkt_len : 8 ;
u64 totl_free_thrsh : 8 ;
u64 nps_free_thrsh : 8 ;
u64 ilk_free_thrsh : 8 ;
u64 totl_hdrq_thrsh : 8 ;
u64 nps_hdrq_thrsh : 8 ;
u64 ilk_hdrq_thrsh : 8 ;
u64 raz_56_63 : 8 ;
#endif
} s;
};
/**
* struct bmi_int_ena_w1s - BMI interrupt enable set register
* @ ilk_req_oflw : Reads or sets enable for
* BMI_INT [ ILK_REQ_OFLW ] .
* @ nps_req_oflw : Reads or sets enable for
* BMI_INT [ NPS_REQ_OFLW ] .
* @ fpf_undrrn : Reads or sets enable for
* BMI_INT [ FPF_UNDRRN ] .
* @ eop_err_ilk : Reads or sets enable for
* BMI_INT [ EOP_ERR_ILK ] .
* @ eop_err_nps : Reads or sets enable for
* BMI_INT [ EOP_ERR_NPS ] .
* @ sop_err_ilk : Reads or sets enable for
* BMI_INT [ SOP_ERR_ILK ] .
* @ sop_err_nps : Reads or sets enable for
* BMI_INT [ SOP_ERR_NPS ] .
* @ pkt_rcv_err_ilk : Reads or sets enable for
* BMI_INT [ PKT_RCV_ERR_ILK ] .
* @ pkt_rcv_err_nps : Reads or sets enable for
* BMI_INT [ PKT_RCV_ERR_NPS ] .
* @ max_len_err_ilk : Reads or sets enable for
* BMI_INT [ MAX_LEN_ERR_ILK ] .
* @ max_len_err_nps : Reads or sets enable for
* BMI_INT [ MAX_LEN_ERR_NPS ] .
*/
union bmi_int_ena_w1s {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_13_63 : 51 ;
u64 ilk_req_oflw : 1 ;
u64 nps_req_oflw : 1 ;
u64 raz_10 : 1 ;
u64 raz_9 : 1 ;
u64 fpf_undrrn : 1 ;
u64 eop_err_ilk : 1 ;
u64 eop_err_nps : 1 ;
u64 sop_err_ilk : 1 ;
u64 sop_err_nps : 1 ;
u64 pkt_rcv_err_ilk : 1 ;
u64 pkt_rcv_err_nps : 1 ;
u64 max_len_err_ilk : 1 ;
u64 max_len_err_nps : 1 ;
#else
u64 max_len_err_nps : 1 ;
u64 max_len_err_ilk : 1 ;
u64 pkt_rcv_err_nps : 1 ;
u64 pkt_rcv_err_ilk : 1 ;
u64 sop_err_nps : 1 ;
u64 sop_err_ilk : 1 ;
u64 eop_err_nps : 1 ;
u64 eop_err_ilk : 1 ;
u64 fpf_undrrn : 1 ;
u64 raz_9 : 1 ;
u64 raz_10 : 1 ;
u64 nps_req_oflw : 1 ;
u64 ilk_req_oflw : 1 ;
u64 raz_13_63 : 51 ;
#endif
} s;
};
/**
* struct bmo_ctl2 - BMO Control2 Register
* @ arb_sel : Determines P2X Arbitration
* @ ilk_buf_thrsh : Maximum number of buffers that the
* ILK packet flows may consume before ILK XOFF is
* asserted to the POM .
* @ nps_slc_buf_thrsh : Maximum number of buffers that the
* NPS_SLC packet flow may consume before NPS_SLC XOFF is
* asserted to the POM .
* @ nps_uns_buf_thrsh : Maximum number of buffers that the
* NPS_UNS packet flow may consume before NPS_UNS XOFF is
* asserted to the POM .
* @ totl_buf_thrsh : Maximum number of buffers that ILK , NPS_UNS and
* NPS_SLC packet flows may consume before NPS_UNS XOFF , NSP_SLC and
* ILK_XOFF are all asserted POM .
*/
union bmo_ctl2 {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 arb_sel : 1 ;
u64 raz_32_62 : 31 ;
u64 ilk_buf_thrsh : 8 ;
u64 nps_slc_buf_thrsh : 8 ;
u64 nps_uns_buf_thrsh : 8 ;
u64 totl_buf_thrsh : 8 ;
#else
u64 totl_buf_thrsh : 8 ;
u64 nps_uns_buf_thrsh : 8 ;
u64 nps_slc_buf_thrsh : 8 ;
u64 ilk_buf_thrsh : 8 ;
u64 raz_32_62 : 31 ;
u64 arb_sel : 1 ;
#endif
} s;
};
/**
* struct pom_int_ena_w1s - POM interrupt enable set register
* @ illegal_intf : Reads or sets enable for POM_INT [ ILLEGAL_INTF ] .
* @ illegal_dport : Reads or sets enable for POM_INT [ ILLEGAL_DPORT ] .
*/
union pom_int_ena_w1s {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz2 : 60 ;
u64 illegal_intf : 1 ;
u64 illegal_dport : 1 ;
u64 raz1 : 1 ;
u64 raz0 : 1 ;
#else
u64 raz0 : 1 ;
u64 raz1 : 1 ;
u64 illegal_dport : 1 ;
u64 illegal_intf : 1 ;
u64 raz2 : 60 ;
#endif
} s;
};
/**
* struct lbc_inval_ctl - LBC invalidation control register
* @ wait_timer : Wait timer for wait state . [ WAIT_TIMER ] must
* always be written with its reset value .
* @ cam_inval_start : Software should write [ CAM_INVAL_START ] = 1
* to initiate an LBC cache invalidation . After this , software
* should read LBC_INVAL_STATUS until LBC_INVAL_STATUS [ DONE ] is set .
* LBC hardware clears [ CAVM_INVAL_START ] before software can
* observed LBC_INVAL_STATUS [ DONE ] to be set
*/
union lbc_inval_ctl {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz2 : 48 ;
u64 wait_timer : 8 ;
u64 raz1 : 6 ;
u64 cam_inval_start : 1 ;
u64 raz0 : 1 ;
#else
u64 raz0 : 1 ;
u64 cam_inval_start : 1 ;
u64 raz1 : 6 ;
u64 wait_timer : 8 ;
u64 raz2 : 48 ;
#endif
} s;
};
/**
* struct lbc_int_ena_w1s - LBC interrupt enable set register
* @ cam_hard_err : Reads or sets enable for LBC_INT [ CAM_HARD_ERR ] .
* @ cam_inval_abort : Reads or sets enable for LBC_INT [ CAM_INVAL_ABORT ] .
* @ over_fetch_err : Reads or sets enable for LBC_INT [ OVER_FETCH_ERR ] .
* @ cache_line_to_err : Reads or sets enable for
* LBC_INT [ CACHE_LINE_TO_ERR ] .
* @ cam_soft_err : Reads or sets enable for
* LBC_INT [ CAM_SOFT_ERR ] .
* @ dma_rd_err : Reads or sets enable for
* LBC_INT [ DMA_RD_ERR ] .
*/
union lbc_int_ena_w1s {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_10_63 : 54 ;
u64 cam_hard_err : 1 ;
u64 cam_inval_abort : 1 ;
u64 over_fetch_err : 1 ;
u64 cache_line_to_err : 1 ;
u64 raz_2_5 : 4 ;
u64 cam_soft_err : 1 ;
u64 dma_rd_err : 1 ;
#else
u64 dma_rd_err : 1 ;
u64 cam_soft_err : 1 ;
u64 raz_2_5 : 4 ;
u64 cache_line_to_err : 1 ;
u64 over_fetch_err : 1 ;
u64 cam_inval_abort : 1 ;
u64 cam_hard_err : 1 ;
u64 raz_10_63 : 54 ;
#endif
} s;
};
/**
* struct lbc_int - LBC interrupt summary register
* @ cam_hard_err : indicates a fatal hardware error .
* It requires system reset .
* When [ CAM_HARD_ERR ] is set , LBC stops logging any new information in
* LBC_POM_MISS_INFO_LOG ,
* LBC_POM_MISS_ADDR_LOG ,
* LBC_EFL_MISS_INFO_LOG , and
* LBC_EFL_MISS_ADDR_LOG .
* Software should sample them .
* @ cam_inval_abort : indicates a fatal hardware error .
* System reset is required .
* @ over_fetch_err : indicates a fatal hardware error
* System reset is required
* @ cache_line_to_err : is a debug feature .
* This timeout interrupt bit tells the software that
* a cacheline in LBC has non - zero usage and the context
* has not been used for greater than the
* LBC_TO_CNT [ TO_CNT ] time interval .
* @ sbe : Memory SBE error . This is recoverable via ECC .
* See LBC_ECC_INT for more details .
* @ dbe : Memory DBE error . This is a fatal and requires a
* system reset .
* @ pref_dat_len_mismatch_err : Summary bit for context length
* mismatch errors .
* @ rd_dat_len_mismatch_err : Summary bit for SE read data length
* greater than data prefect length errors .
* @ cam_soft_err : is recoverable . Software must complete a
* LBC_INVAL_CTL [ CAM_INVAL_START ] invalidation sequence and
* then clear [ CAM_SOFT_ERR ] .
* @ dma_rd_err : A context prefect read of host memory returned with
* a read error .
*/
union lbc_int {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_10_63 : 54 ;
u64 cam_hard_err : 1 ;
u64 cam_inval_abort : 1 ;
u64 over_fetch_err : 1 ;
u64 cache_line_to_err : 1 ;
u64 sbe : 1 ;
u64 dbe : 1 ;
u64 pref_dat_len_mismatch_err : 1 ;
u64 rd_dat_len_mismatch_err : 1 ;
u64 cam_soft_err : 1 ;
u64 dma_rd_err : 1 ;
#else
u64 dma_rd_err : 1 ;
u64 cam_soft_err : 1 ;
u64 rd_dat_len_mismatch_err : 1 ;
u64 pref_dat_len_mismatch_err : 1 ;
u64 dbe : 1 ;
u64 sbe : 1 ;
u64 cache_line_to_err : 1 ;
u64 over_fetch_err : 1 ;
u64 cam_inval_abort : 1 ;
u64 cam_hard_err : 1 ;
u64 raz_10_63 : 54 ;
#endif
} s;
};
/**
* struct lbc_inval_status : LBC Invalidation status register
* @ cam_clean_entry_complete_cnt : The number of entries that are
* cleaned up successfully .
* @ cam_clean_entry_cnt : The number of entries that have the CAM
* inval command issued .
* @ cam_inval_state : cam invalidation FSM state
* @ cam_inval_abort : cam invalidation abort
* @ cam_rst_rdy : lbc_cam reset ready
* @ done : LBC clears [ DONE ] when
* LBC_INVAL_CTL [ CAM_INVAL_START ] is written with a one ,
* and sets [ DONE ] when it completes the invalidation
* sequence .
*/
union lbc_inval_status {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz3 : 23 ;
u64 cam_clean_entry_complete_cnt : 9 ;
u64 raz2 : 7 ;
u64 cam_clean_entry_cnt : 9 ;
u64 raz1 : 5 ;
u64 cam_inval_state : 3 ;
u64 raz0 : 5 ;
u64 cam_inval_abort : 1 ;
u64 cam_rst_rdy : 1 ;
u64 done : 1 ;
#else
u64 done : 1 ;
u64 cam_rst_rdy : 1 ;
u64 cam_inval_abort : 1 ;
u64 raz0 : 5 ;
u64 cam_inval_state : 3 ;
u64 raz1 : 5 ;
u64 cam_clean_entry_cnt : 9 ;
u64 raz2 : 7 ;
u64 cam_clean_entry_complete_cnt : 9 ;
u64 raz3 : 23 ;
#endif
} s;
};
/**
* struct rst_boot : RST Boot Register
* @ jtcsrdis : when set , internal CSR access via JTAG TAP controller
* is disabled
* @ jt_tst_mode : JTAG test mode
* @ io_supply : I / O power supply setting based on IO_VDD_SELECT pin :
* 0 x1 = 1 . 8 V
* 0 x2 = 2 . 5 V
* 0 x4 = 3 . 3 V
* All other values are reserved
* @ pnr_mul : clock multiplier
* @ lboot : last boot cause mask , resets only with PLL_DC_OK
* @ rboot : determines whether core 0 remains in reset after
* chip cold or warm or soft reset
* @ rboot_pin : read only access to REMOTE_BOOT pin
*/
union rst_boot {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_63 : 1 ;
u64 jtcsrdis : 1 ;
u64 raz_59_61 : 3 ;
u64 jt_tst_mode : 1 ;
u64 raz_40_57 : 18 ;
u64 io_supply : 3 ;
u64 raz_30_36 : 7 ;
u64 pnr_mul : 6 ;
u64 raz_12_23 : 12 ;
u64 lboot : 10 ;
u64 rboot : 1 ;
u64 rboot_pin : 1 ;
#else
u64 rboot_pin : 1 ;
u64 rboot : 1 ;
u64 lboot : 10 ;
u64 raz_12_23 : 12 ;
u64 pnr_mul : 6 ;
u64 raz_30_36 : 7 ;
u64 io_supply : 3 ;
u64 raz_40_57 : 18 ;
u64 jt_tst_mode : 1 ;
u64 raz_59_61 : 3 ;
u64 jtcsrdis : 1 ;
u64 raz_63 : 1 ;
#endif
};
};
/**
* struct fus_dat1 : Fuse Data 1 Register
* @ pll_mul : main clock PLL multiplier hardware limit
* @ pll_half_dis : main clock PLL control
* @ efus_lck : efuse lockdown
* @ zip_info : ZIP information
* @ bar2_sz_conf : when zero , BAR2 size conforms to
* PCIe specification
* @ efus_ign : efuse ignore
* @ nozip : ZIP disable
* @ pll_alt_matrix : select alternate PLL matrix
* @ pll_bwadj_denom : select CLKF denominator for
* BWADJ value
* @ chip_id : chip ID
*/
union fus_dat1 {
u64 value;
struct {
#if (defined (__BIG_ENDIAN_BITFIELD))
u64 raz_57_63 : 7 ;
u64 pll_mul : 3 ;
u64 pll_half_dis : 1 ;
u64 raz_43_52 : 10 ;
u64 efus_lck : 3 ;
u64 raz_26_39 : 14 ;
u64 zip_info : 5 ;
u64 bar2_sz_conf : 1 ;
u64 efus_ign : 1 ;
u64 nozip : 1 ;
u64 raz_11_17 : 7 ;
u64 pll_alt_matrix : 1 ;
u64 pll_bwadj_denom : 2 ;
u64 chip_id : 8 ;
#else
u64 chip_id : 8 ;
u64 pll_bwadj_denom : 2 ;
u64 pll_alt_matrix : 1 ;
u64 raz_11_17 : 7 ;
u64 nozip : 1 ;
u64 efus_ign : 1 ;
u64 bar2_sz_conf : 1 ;
u64 zip_info : 5 ;
u64 raz_26_39 : 14 ;
u64 efus_lck : 3 ;
u64 raz_43_52 : 10 ;
u64 pll_half_dis : 1 ;
u64 pll_mul : 3 ;
u64 raz_57_63 : 7 ;
#endif
};
};
#endif /* __NITROX_CSR_H */
Messung V0.5 in Prozent C=98 H=95 G=96
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.53Bemerkung:
¤
*© Formatika GbR, Deutschland
2026-10-11
Neuigkeiten
Aktuelles
Motto des Tages
Open Source Software
Jenseits des Üblichen ....
Besucherstatistik
Statistik
#Sources=1127926
#Domains=2039723