Path: blob/master/drivers/crypto/cavium/nitrox/nitrox_csr.h
26285 views
/* SPDX-License-Identifier: GPL-2.0 */1#ifndef __NITROX_CSR_H2#define __NITROX_CSR_H34#include <asm/byteorder.h>5#include <linux/types.h>67/* EMU clusters */8#define NR_CLUSTERS 49/* Maximum cores per cluster,10* varies based on partname11*/12#define AE_CORES_PER_CLUSTER 2013#define SE_CORES_PER_CLUSTER 161415#define AE_MAX_CORES (AE_CORES_PER_CLUSTER * NR_CLUSTERS)16#define SE_MAX_CORES (SE_CORES_PER_CLUSTER * NR_CLUSTERS)17#define ZIP_MAX_CORES 51819/* BIST registers */20#define EMU_BIST_STATUSX(_i) (0x1402700 + ((_i) * 0x40000))21#define UCD_BIST_STATUS 0x12C007022#define NPS_CORE_BIST_REG 0x10000E823#define NPS_CORE_NPC_BIST_REG 0x100012824#define NPS_PKT_SLC_BIST_REG 0x104008825#define NPS_PKT_IN_BIST_REG 0x104010026#define POM_BIST_REG 0x11C010027#define BMI_BIST_REG 0x114008028#define EFL_CORE_BIST_REGX(_i) (0x1240100 + ((_i) * 0x400))29#define EFL_TOP_BIST_STAT 0x124109030#define BMO_BIST_REG 0x118008031#define LBC_BIST_STATUS 0x120002032#define PEM_BIST_STATUSX(_i) (0x1080468 | ((_i) << 18))3334/* EMU registers */35#define EMU_SE_ENABLEX(_i) (0x1400000 + ((_i) * 0x40000))36#define EMU_AE_ENABLEX(_i) (0x1400008 + ((_i) * 0x40000))37#define EMU_WD_INT_ENA_W1SX(_i) (0x1402318 + ((_i) * 0x40000))38#define EMU_GE_INT_ENA_W1SX(_i) (0x1402518 + ((_i) * 0x40000))39#define EMU_FUSE_MAPX(_i) (0x1402708 + ((_i) * 0x40000))4041/* UCD registers */42#define UCD_SE_EID_UCODE_BLOCK_NUMX(_i) (0x12C0000 + ((_i) * 0x1000))43#define UCD_AE_EID_UCODE_BLOCK_NUMX(_i) (0x12C0008 + ((_i) * 0x800))44#define UCD_UCODE_LOAD_BLOCK_NUM 0x12C001045#define UCD_UCODE_LOAD_IDX_DATAX(_i) (0x12C0018 + ((_i) * 0x20))46#define UCD_SE_CNTX(_i) (0x12C0040 + ((_i) * 0x1000))47#define UCD_AE_CNTX(_i) (0x12C0048 + ((_i) * 0x800))4849/* AQM registers */50#define AQM_CTL 0x130000051#define AQM_INT 0x130000852#define AQM_DBELL_OVF_LO 0x130001053#define AQM_DBELL_OVF_HI 0x130001854#define AQM_DBELL_OVF_LO_W1S 0x130002055#define AQM_DBELL_OVF_LO_ENA_W1C 0x130002856#define AQM_DBELL_OVF_LO_ENA_W1S 0x130003057#define AQM_DBELL_OVF_HI_W1S 0x130003858#define AQM_DBELL_OVF_HI_ENA_W1C 0x130004059#define AQM_DBELL_OVF_HI_ENA_W1S 0x130004860#define AQM_DMA_RD_ERR_LO 0x130005061#define AQM_DMA_RD_ERR_HI 0x130005862#define AQM_DMA_RD_ERR_LO_W1S 0x130006063#define AQM_DMA_RD_ERR_LO_ENA_W1C 0x130006864#define AQM_DMA_RD_ERR_LO_ENA_W1S 0x130007065#define AQM_DMA_RD_ERR_HI_W1S 0x130007866#define AQM_DMA_RD_ERR_HI_ENA_W1C 0x130008067#define AQM_DMA_RD_ERR_HI_ENA_W1S 0x130008868#define AQM_EXEC_NA_LO 0x130009069#define AQM_EXEC_NA_HI 0x130009870#define AQM_EXEC_NA_LO_W1S 0x13000A071#define AQM_EXEC_NA_LO_ENA_W1C 0x13000A872#define AQM_EXEC_NA_LO_ENA_W1S 0x13000B073#define AQM_EXEC_NA_HI_W1S 0x13000B874#define AQM_EXEC_NA_HI_ENA_W1C 0x13000C075#define AQM_EXEC_NA_HI_ENA_W1S 0x13000C876#define AQM_EXEC_ERR_LO 0x13000D077#define AQM_EXEC_ERR_HI 0x13000D878#define AQM_EXEC_ERR_LO_W1S 0x13000E079#define AQM_EXEC_ERR_LO_ENA_W1C 0x13000E880#define AQM_EXEC_ERR_LO_ENA_W1S 0x13000F081#define AQM_EXEC_ERR_HI_W1S 0x13000F882#define AQM_EXEC_ERR_HI_ENA_W1C 0x130010083#define AQM_EXEC_ERR_HI_ENA_W1S 0x130010884#define AQM_ECC_INT 0x130011085#define AQM_ECC_INT_W1S 0x130011886#define AQM_ECC_INT_ENA_W1C 0x130012087#define AQM_ECC_INT_ENA_W1S 0x130012888#define AQM_ECC_CTL 0x130013089#define AQM_BIST_STATUS 0x130013890#define AQM_CMD_INF_THRX(x) (0x1300400 + ((x) * 0x8))91#define AQM_CMD_INFX(x) (0x1300800 + ((x) * 0x8))92#define AQM_GRP_EXECMSK_LOX(x) (0x1300C00 + ((x) * 0x10))93#define AQM_GRP_EXECMSK_HIX(x) (0x1300C08 + ((x) * 0x10))94#define AQM_ACTIVITY_STAT_LO 0x1300C8095#define AQM_ACTIVITY_STAT_HI 0x1300C8896#define AQM_Q_CMD_PROCX(x) (0x1301000 + ((x) * 0x8))97#define AQM_PERF_CTL_LO 0x130140098#define AQM_PERF_CTL_HI 0x130140899#define AQM_PERF_CNT 0x1301410100101#define AQMQ_DRBLX(x) (0x20000 + ((x) * 0x40000))102#define AQMQ_QSZX(x) (0x20008 + ((x) * 0x40000))103#define AQMQ_BADRX(x) (0x20010 + ((x) * 0x40000))104#define AQMQ_NXT_CMDX(x) (0x20018 + ((x) * 0x40000))105#define AQMQ_CMD_CNTX(x) (0x20020 + ((x) * 0x40000))106#define AQMQ_CMP_THRX(x) (0x20028 + ((x) * 0x40000))107#define AQMQ_CMP_CNTX(x) (0x20030 + ((x) * 0x40000))108#define AQMQ_TIM_LDX(x) (0x20038 + ((x) * 0x40000))109#define AQMQ_TIMERX(x) (0x20040 + ((x) * 0x40000))110#define AQMQ_ENX(x) (0x20048 + ((x) * 0x40000))111#define AQMQ_ACTIVITY_STATX(x) (0x20050 + ((x) * 0x40000))112#define AQM_VF_CMP_STATX(x) (0x28000 + ((x) * 0x40000))113114/* NPS core registers */115#define NPS_CORE_GBL_VFCFG 0x1000000116#define NPS_CORE_CONTROL 0x1000008117#define NPS_CORE_INT_ACTIVE 0x1000080118#define NPS_CORE_INT 0x10000A0119#define NPS_CORE_INT_ENA_W1S 0x10000B8120#define NPS_STATS_PKT_DMA_RD_CNT 0x1000180121#define NPS_STATS_PKT_DMA_WR_CNT 0x1000190122123/* NPS packet registers */124#define NPS_PKT_INT 0x1040018125#define NPS_PKT_MBOX_INT_LO 0x1040020126#define NPS_PKT_MBOX_INT_LO_ENA_W1C 0x1040030127#define NPS_PKT_MBOX_INT_LO_ENA_W1S 0x1040038128#define NPS_PKT_MBOX_INT_HI 0x1040040129#define NPS_PKT_MBOX_INT_HI_ENA_W1C 0x1040050130#define NPS_PKT_MBOX_INT_HI_ENA_W1S 0x1040058131#define NPS_PKT_IN_RERR_HI 0x1040108132#define NPS_PKT_IN_RERR_HI_ENA_W1S 0x1040120133#define NPS_PKT_IN_RERR_LO 0x1040128134#define NPS_PKT_IN_RERR_LO_ENA_W1S 0x1040140135#define NPS_PKT_IN_ERR_TYPE 0x1040148136#define NPS_PKT_IN_ERR_TYPE_ENA_W1S 0x1040160137#define NPS_PKT_IN_INSTR_CTLX(_i) (0x10060 + ((_i) * 0x40000))138#define NPS_PKT_IN_INSTR_BADDRX(_i) (0x10068 + ((_i) * 0x40000))139#define NPS_PKT_IN_INSTR_RSIZEX(_i) (0x10070 + ((_i) * 0x40000))140#define NPS_PKT_IN_DONE_CNTSX(_i) (0x10080 + ((_i) * 0x40000))141#define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i) (0x10078 + ((_i) * 0x40000))142#define NPS_PKT_IN_INT_LEVELSX(_i) (0x10088 + ((_i) * 0x40000))143144#define NPS_PKT_SLC_RERR_HI 0x1040208145#define NPS_PKT_SLC_RERR_HI_ENA_W1S 0x1040220146#define NPS_PKT_SLC_RERR_LO 0x1040228147#define NPS_PKT_SLC_RERR_LO_ENA_W1S 0x1040240148#define NPS_PKT_SLC_ERR_TYPE 0x1040248149#define NPS_PKT_SLC_ERR_TYPE_ENA_W1S 0x1040260150/* Mailbox PF->VF PF Accessible Data registers */151#define NPS_PKT_MBOX_PF_VF_PFDATAX(_i) (0x1040800 + ((_i) * 0x8))152#define NPS_PKT_MBOX_VF_PF_PFDATAX(_i) (0x1040C00 + ((_i) * 0x8))153154#define NPS_PKT_SLC_CTLX(_i) (0x10000 + ((_i) * 0x40000))155#define NPS_PKT_SLC_CNTSX(_i) (0x10008 + ((_i) * 0x40000))156#define NPS_PKT_SLC_INT_LEVELSX(_i) (0x10010 + ((_i) * 0x40000))157158/* POM registers */159#define POM_INT_ENA_W1S 0x11C0018160#define POM_GRP_EXECMASKX(_i) (0x11C1100 | ((_i) * 8))161#define POM_INT 0x11C0000162#define POM_PERF_CTL 0x11CC400163164/* BMI registers */165#define BMI_INT 0x1140000166#define BMI_CTL 0x1140020167#define BMI_INT_ENA_W1S 0x1140018168#define BMI_NPS_PKT_CNT 0x1140070169170/* EFL registers */171#define EFL_CORE_INT_ENA_W1SX(_i) (0x1240018 + ((_i) * 0x400))172#define EFL_CORE_VF_ERR_INT0X(_i) (0x1240050 + ((_i) * 0x400))173#define EFL_CORE_VF_ERR_INT0_ENA_W1SX(_i) (0x1240068 + ((_i) * 0x400))174#define EFL_CORE_VF_ERR_INT1X(_i) (0x1240070 + ((_i) * 0x400))175#define EFL_CORE_VF_ERR_INT1_ENA_W1SX(_i) (0x1240088 + ((_i) * 0x400))176#define EFL_CORE_SE_ERR_INTX(_i) (0x12400A0 + ((_i) * 0x400))177#define EFL_RNM_CTL_STATUS 0x1241800178#define EFL_CORE_INTX(_i) (0x1240000 + ((_i) * 0x400))179180/* BMO registers */181#define BMO_CTL2 0x1180028182#define BMO_NPS_SLC_PKT_CNT 0x1180078183184/* LBC registers */185#define LBC_INT 0x1200000186#define LBC_INVAL_CTL 0x1201010187#define LBC_PLM_VF1_64_INT 0x1202008188#define LBC_INVAL_STATUS 0x1202010189#define LBC_INT_ENA_W1S 0x1203000190#define LBC_PLM_VF1_64_INT_ENA_W1S 0x1205008191#define LBC_PLM_VF65_128_INT 0x1206008192#define LBC_ELM_VF1_64_INT 0x1208000193#define LBC_PLM_VF65_128_INT_ENA_W1S 0x1209008194#define LBC_ELM_VF1_64_INT_ENA_W1S 0x120B000195#define LBC_ELM_VF65_128_INT 0x120C000196#define LBC_ELM_VF65_128_INT_ENA_W1S 0x120F000197198#define RST_BOOT 0x10C1600199#define FUS_DAT1 0x10C1408200201/* PEM registers */202#define PEM0_INT 0x1080428203204/**205* struct ucd_core_eid_ucode_block_num - Core Eid to Ucode Blk Mapping Registers206* @ucode_len: Ucode length identifier 32KB or 64KB207* @ucode_blk: Ucode Block Number208*/209union ucd_core_eid_ucode_block_num {210u64 value;211struct {212#if (defined(__BIG_ENDIAN_BITFIELD))213u64 raz_4_63 : 60;214u64 ucode_len : 1;215u64 ucode_blk : 3;216#else217u64 ucode_blk : 3;218u64 ucode_len : 1;219u64 raz_4_63 : 60;220#endif221};222};223224/**225* struct aqm_grp_execmsk_lo - Available AE engines for the group226* @exec_0_to_39: AE engines 0 to 39 status227*/228union aqm_grp_execmsk_lo {229u64 value;230struct {231#if (defined(__BIG_ENDIAN_BITFIELD))232u64 raz_40_63 : 24;233u64 exec_0_to_39 : 40;234#else235u64 exec_0_to_39 : 40;236u64 raz_40_63 : 24;237#endif238};239};240241/**242* struct aqm_grp_execmsk_hi - Available AE engines for the group243* @exec_40_to_79: AE engines 40 to 79 status244*/245union aqm_grp_execmsk_hi {246u64 value;247struct {248#if (defined(__BIG_ENDIAN_BITFIELD))249u64 raz_40_63 : 24;250u64 exec_40_to_79 : 40;251#else252u64 exec_40_to_79 : 40;253u64 raz_40_63 : 24;254#endif255};256};257258/**259* struct aqmq_drbl - AQM Queue Doorbell Counter Registers260* @dbell_count: Doorbell Counter261*/262union aqmq_drbl {263u64 value;264struct {265#if (defined(__BIG_ENDIAN_BITFIELD))266u64 raz_32_63 : 32;267u64 dbell_count : 32;268#else269u64 dbell_count : 32;270u64 raz_32_63 : 32;271#endif272};273};274275/**276* struct aqmq_qsz - AQM Queue Host Queue Size Registers277* @host_queue_size: Size, in numbers of 'aqmq_command_s' command278* of the Host Ring.279*/280union aqmq_qsz {281u64 value;282struct {283#if (defined(__BIG_ENDIAN_BITFIELD))284u64 raz_32_63 : 32;285u64 host_queue_size : 32;286#else287u64 host_queue_size : 32;288u64 raz_32_63 : 32;289#endif290};291};292293/**294* struct aqmq_cmp_thr - AQM Queue Commands Completed Threshold Registers295* @commands_completed_threshold: Count of 'aqmq_command_s' commands executed296* by AE engines for which completion interrupt is asserted.297*/298union aqmq_cmp_thr {299u64 value;300struct {301#if (defined(__BIG_ENDIAN_BITFIELD))302u64 raz_32_63 : 32;303u64 commands_completed_threshold : 32;304#else305u64 commands_completed_threshold : 32;306u64 raz_32_63 : 32;307#endif308};309};310311/**312* struct aqmq_cmp_cnt - AQM Queue Commands Completed Count Registers313* @resend: Bit to request completion interrupt Resend.314* @completion_status: Command completion status of the ring.315* @commands_completed_count: Count of 'aqmq_command_s' commands executed by316* AE engines.317*/318union aqmq_cmp_cnt {319u64 value;320struct {321#if (defined(__BIG_ENDIAN_BITFIELD))322u64 raz_34_63 : 30;323u64 resend : 1;324u64 completion_status : 1;325u64 commands_completed_count : 32;326#else327u64 commands_completed_count : 32;328u64 completion_status : 1;329u64 resend : 1;330u64 raz_34_63 : 30;331#endif332};333};334335/**336* struct aqmq_en - AQM Queue Enable Registers337* @queue_status: 1 = AQMQ is enabled, 0 = AQMQ is disabled338*/339union aqmq_en {340u64 value;341struct {342#if (defined(__BIG_ENDIAN_BITFIELD))343u64 raz_1_63 : 63;344u64 queue_enable : 1;345#else346u64 queue_enable : 1;347u64 raz_1_63 : 63;348#endif349};350};351352/**353* struct aqmq_activity_stat - AQM Queue Activity Status Registers354* @queue_active: 1 = AQMQ is active, 0 = AQMQ is quiescent355*/356union aqmq_activity_stat {357u64 value;358struct {359#if (defined(__BIG_ENDIAN_BITFIELD))360u64 raz_1_63 : 63;361u64 queue_active : 1;362#else363u64 queue_active : 1;364u64 raz_1_63 : 63;365#endif366};367};368369/**370* struct emu_fuse_map - EMU Fuse Map Registers371* @ae_fuse: Fuse settings for AE 19..0372* @se_fuse: Fuse settings for SE 15..0373*374* A set bit indicates the unit is fuse disabled.375*/376union emu_fuse_map {377u64 value;378struct {379#if (defined(__BIG_ENDIAN_BITFIELD))380u64 valid : 1;381u64 raz_52_62 : 11;382u64 ae_fuse : 20;383u64 raz_16_31 : 16;384u64 se_fuse : 16;385#else386u64 se_fuse : 16;387u64 raz_16_31 : 16;388u64 ae_fuse : 20;389u64 raz_52_62 : 11;390u64 valid : 1;391#endif392} s;393};394395/**396* struct emu_se_enable - Symmetric Engine Enable Registers397* @enable: Individual enables for each of the clusters398* 16 symmetric engines.399*/400union emu_se_enable {401u64 value;402struct {403#if (defined(__BIG_ENDIAN_BITFIELD))404u64 raz : 48;405u64 enable : 16;406#else407u64 enable : 16;408u64 raz : 48;409#endif410} s;411};412413/**414* struct emu_ae_enable - EMU Asymmetric engines.415* @enable: Individual enables for each of the cluster's416* 20 Asymmetric Engines.417*/418union emu_ae_enable {419u64 value;420struct {421#if (defined(__BIG_ENDIAN_BITFIELD))422u64 raz : 44;423u64 enable : 20;424#else425u64 enable : 20;426u64 raz : 44;427#endif428} s;429};430431/**432* struct emu_wd_int_ena_w1s - EMU Interrupt Enable Registers433* @ae_wd: Reads or sets enable for EMU(0..3)_WD_INT[AE_WD]434* @se_wd: Reads or sets enable for EMU(0..3)_WD_INT[SE_WD]435*/436union emu_wd_int_ena_w1s {437u64 value;438struct {439#if (defined(__BIG_ENDIAN_BITFIELD))440u64 raz2 : 12;441u64 ae_wd : 20;442u64 raz1 : 16;443u64 se_wd : 16;444#else445u64 se_wd : 16;446u64 raz1 : 16;447u64 ae_wd : 20;448u64 raz2 : 12;449#endif450} s;451};452453/**454* struct emu_ge_int_ena_w1s - EMU Interrupt Enable set registers455* @ae_ge: Reads or sets enable for EMU(0..3)_GE_INT[AE_GE]456* @se_ge: Reads or sets enable for EMU(0..3)_GE_INT[SE_GE]457*/458union emu_ge_int_ena_w1s {459u64 value;460struct {461#if (defined(__BIG_ENDIAN_BITFIELD))462u64 raz_52_63 : 12;463u64 ae_ge : 20;464u64 raz_16_31: 16;465u64 se_ge : 16;466#else467u64 se_ge : 16;468u64 raz_16_31: 16;469u64 ae_ge : 20;470u64 raz_52_63 : 12;471#endif472} s;473};474475/**476* struct nps_pkt_slc_ctl - Solicited Packet Out Control Registers477* @rh: Indicates whether to remove or include the response header478* 1 = Include, 0 = Remove479* @z: If set, 8 trailing 0x00 bytes will be added to the end of the480* outgoing packet.481* @enb: Enable for this port.482*/483union nps_pkt_slc_ctl {484u64 value;485struct {486#if defined(__BIG_ENDIAN_BITFIELD)487u64 raz : 61;488u64 rh : 1;489u64 z : 1;490u64 enb : 1;491#else492u64 enb : 1;493u64 z : 1;494u64 rh : 1;495u64 raz : 61;496#endif497} s;498};499500/**501* struct nps_pkt_slc_cnts - Solicited Packet Out Count Registers502* @slc_int: Returns a 1 when:503* NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or504* NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET].505* To clear the bit, the CNTS register must be written to clear.506* @in_int: Returns a 1 when:507* NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT].508* To clear the bit, the DONE_CNTS register must be written to clear.509* @mbox_int: Returns a 1 when:510* NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set. To clear the bit,511* write NPS_PKT_MBOX_PF_VF(i)_INT[INTR] with 1.512* @timer: Timer, incremented every 2048 coprocessor clock cycles513* when [CNT] is not zero. The hardware clears both [TIMER] and514* [INT] when [CNT] goes to 0.515* @cnt: Packet counter. Hardware adds to [CNT] as it sends packets out.516* On a write to this CSR, hardware subtracts the amount written to the517* [CNT] field from [CNT].518*/519union nps_pkt_slc_cnts {520u64 value;521struct {522#if defined(__BIG_ENDIAN_BITFIELD)523u64 slc_int : 1;524u64 uns_int : 1;525u64 in_int : 1;526u64 mbox_int : 1;527u64 resend : 1;528u64 raz : 5;529u64 timer : 22;530u64 cnt : 32;531#else532u64 cnt : 32;533u64 timer : 22;534u64 raz : 5;535u64 resend : 1;536u64 mbox_int : 1;537u64 in_int : 1;538u64 uns_int : 1;539u64 slc_int : 1;540#endif541} s;542};543544/**545* struct nps_pkt_slc_int_levels - Solicited Packet Out Interrupt Levels546* Registers.547* @bmode: Determines whether NPS_PKT_SLC_CNTS[CNT] is a byte or548* packet counter.549* @timet: Output port counter time interrupt threshold.550* @cnt: Output port counter interrupt threshold.551*/552union nps_pkt_slc_int_levels {553u64 value;554struct {555#if defined(__BIG_ENDIAN_BITFIELD)556u64 bmode : 1;557u64 raz : 9;558u64 timet : 22;559u64 cnt : 32;560#else561u64 cnt : 32;562u64 timet : 22;563u64 raz : 9;564u64 bmode : 1;565#endif566} s;567};568569/**570* struct nps_pkt_inst - NPS Packet Interrupt Register571* @in_err: Set when any NPS_PKT_IN_RERR_HI/LO bit and572* corresponding NPS_PKT_IN_RERR_*_ENA_* bit are bot set.573* @uns_err: Set when any NSP_PKT_UNS_RERR_HI/LO bit and574* corresponding NPS_PKT_UNS_RERR_*_ENA_* bit are both set.575* @slc_er: Set when any NSP_PKT_SLC_RERR_HI/LO bit and576* corresponding NPS_PKT_SLC_RERR_*_ENA_* bit are both set.577*/578union nps_pkt_int {579u64 value;580struct {581#if defined(__BIG_ENDIAN_BITFIELD)582u64 raz : 54;583u64 uns_wto : 1;584u64 in_err : 1;585u64 uns_err : 1;586u64 slc_err : 1;587u64 in_dbe : 1;588u64 in_sbe : 1;589u64 uns_dbe : 1;590u64 uns_sbe : 1;591u64 slc_dbe : 1;592u64 slc_sbe : 1;593#else594u64 slc_sbe : 1;595u64 slc_dbe : 1;596u64 uns_sbe : 1;597u64 uns_dbe : 1;598u64 in_sbe : 1;599u64 in_dbe : 1;600u64 slc_err : 1;601u64 uns_err : 1;602u64 in_err : 1;603u64 uns_wto : 1;604u64 raz : 54;605#endif606} s;607};608609/**610* struct nps_pkt_in_done_cnts - Input instruction ring counts registers611* @slc_cnt: Returns a 1 when:612* NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT], or613* NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SCL(i)_INT_LEVELS[TIMET]614* To clear the bit, the CNTS register must be615* written to clear the underlying condition616* @uns_int: Return a 1 when:617* NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT], or618* NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET]619* To clear the bit, the CNTS register must be620* written to clear the underlying condition621* @in_int: Returns a 1 when:622* NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT]623* To clear the bit, the DONE_CNTS register624* must be written to clear the underlying condition625* @mbox_int: Returns a 1 when:626* NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set.627* To clear the bit, write NPS_PKT_MBOX_PF_VF(i)_INT[INTR]628* with 1.629* @resend: A write of 1 will resend an MSI-X interrupt message if any630* of the following conditions are true for this ring "i".631* NPS_PKT_SLC(i)_CNTS[CNT] > NPS_PKT_SLC(i)_INT_LEVELS[CNT]632* NPS_PKT_SLC(i)_CNTS[TIMER] > NPS_PKT_SLC(i)_INT_LEVELS[TIMET]633* NPS_PKT_UNS(i)_CNTS[CNT] > NPS_PKT_UNS(i)_INT_LEVELS[CNT]634* NPS_PKT_UNS(i)_CNTS[TIMER] > NPS_PKT_UNS(i)_INT_LEVELS[TIMET]635* NPS_PKT_IN(i)_DONE_CNTS[CNT] > NPS_PKT_IN(i)_INT_LEVELS[CNT]636* NPS_PKT_MBOX_PF_VF(i)_INT[INTR] is set637* @cnt: Packet counter. Hardware adds to [CNT] as it reads638* packets. On a write to this CSR, hardware substracts the639* amount written to the [CNT] field from [CNT], which will640* clear PKT_IN(i)_INT_STATUS[INTR] if [CNT] becomes <=641* NPS_PKT_IN(i)_INT_LEVELS[CNT]. This register should be642* cleared before enabling a ring by reading the current643* value and writing it back.644*/645union nps_pkt_in_done_cnts {646u64 value;647struct {648#if defined(__BIG_ENDIAN_BITFIELD)649u64 slc_int : 1;650u64 uns_int : 1;651u64 in_int : 1;652u64 mbox_int : 1;653u64 resend : 1;654u64 raz : 27;655u64 cnt : 32;656#else657u64 cnt : 32;658u64 raz : 27;659u64 resend : 1;660u64 mbox_int : 1;661u64 in_int : 1;662u64 uns_int : 1;663u64 slc_int : 1;664#endif665} s;666};667668/**669* struct nps_pkt_in_instr_ctl - Input Instruction Ring Control Registers.670* @is64b: If 1, the ring uses 64-byte instructions. If 0, the671* ring uses 32-byte instructions.672* @enb: Enable for the input ring.673*/674union nps_pkt_in_instr_ctl {675u64 value;676struct {677#if (defined(__BIG_ENDIAN_BITFIELD))678u64 raz : 62;679u64 is64b : 1;680u64 enb : 1;681#else682u64 enb : 1;683u64 is64b : 1;684u64 raz : 62;685#endif686} s;687};688689/**690* struct nps_pkt_in_instr_rsize - Input instruction ring size registers691* @rsize: Ring size (number of instructions)692*/693union nps_pkt_in_instr_rsize {694u64 value;695struct {696#if (defined(__BIG_ENDIAN_BITFIELD))697u64 raz : 32;698u64 rsize : 32;699#else700u64 rsize : 32;701u64 raz : 32;702#endif703} s;704};705706/**707* struct nps_pkt_in_instr_baoff_dbell - Input instruction ring708* base address offset and doorbell registers709* @aoff: Address offset. The offset from the NPS_PKT_IN_INSTR_BADDR710* where the next pointer is read.711* @dbell: Pointer list doorbell count. Write operations to this field712* increments the present value here. Read operations return the713* present value.714*/715union nps_pkt_in_instr_baoff_dbell {716u64 value;717struct {718#if (defined(__BIG_ENDIAN_BITFIELD))719u64 aoff : 32;720u64 dbell : 32;721#else722u64 dbell : 32;723u64 aoff : 32;724#endif725} s;726};727728/**729* struct nps_core_int_ena_w1s - NPS core interrupt enable set register730* @host_nps_wr_err: Reads or sets enable for731* NPS_CORE_INT[HOST_NPS_WR_ERR].732* @npco_dma_malform: Reads or sets enable for733* NPS_CORE_INT[NPCO_DMA_MALFORM].734* @exec_wr_timeout: Reads or sets enable for735* NPS_CORE_INT[EXEC_WR_TIMEOUT].736* @host_wr_timeout: Reads or sets enable for737* NPS_CORE_INT[HOST_WR_TIMEOUT].738* @host_wr_err: Reads or sets enable for739* NPS_CORE_INT[HOST_WR_ERR]740*/741union nps_core_int_ena_w1s {742u64 value;743struct {744#if (defined(__BIG_ENDIAN_BITFIELD))745u64 raz4 : 55;746u64 host_nps_wr_err : 1;747u64 npco_dma_malform : 1;748u64 exec_wr_timeout : 1;749u64 host_wr_timeout : 1;750u64 host_wr_err : 1;751u64 raz3 : 1;752u64 raz2 : 1;753u64 raz1 : 1;754u64 raz0 : 1;755#else756u64 raz0 : 1;757u64 raz1 : 1;758u64 raz2 : 1;759u64 raz3 : 1;760u64 host_wr_err : 1;761u64 host_wr_timeout : 1;762u64 exec_wr_timeout : 1;763u64 npco_dma_malform : 1;764u64 host_nps_wr_err : 1;765u64 raz4 : 55;766#endif767} s;768};769770/**771* struct nps_core_gbl_vfcfg - Global VF Configuration Register.772* @ilk_disable: When set, this bit indicates that the ILK interface has773* been disabled.774* @obaf: BMO allocation control775* 0 = allocate per queue776* 1 = allocate per VF777* @ibaf: BMI allocation control778* 0 = allocate per queue779* 1 = allocate per VF780* @zaf: ZIP allocation control781* 0 = allocate per queue782* 1 = allocate per VF783* @aeaf: AE allocation control784* 0 = allocate per queue785* 1 = allocate per VF786* @seaf: SE allocation control787* 0 = allocation per queue788* 1 = allocate per VF789* @cfg: VF/PF mode.790*/791union nps_core_gbl_vfcfg {792u64 value;793struct {794#if (defined(__BIG_ENDIAN_BITFIELD))795u64 raz :55;796u64 ilk_disable :1;797u64 obaf :1;798u64 ibaf :1;799u64 zaf :1;800u64 aeaf :1;801u64 seaf :1;802u64 cfg :3;803#else804u64 cfg :3;805u64 seaf :1;806u64 aeaf :1;807u64 zaf :1;808u64 ibaf :1;809u64 obaf :1;810u64 ilk_disable :1;811u64 raz :55;812#endif813} s;814};815816/**817* struct nps_core_int_active - NPS Core Interrupt Active Register818* @resend: Resend MSI-X interrupt if needs to handle interrupts819* Sofware can set this bit and then exit the ISR.820* @ocla: Set when any OCLA(0)_INT and corresponding OCLA(0_INT_ENA_W1C821* bit are set822* @mbox: Set when any NPS_PKT_MBOX_INT_LO/HI and corresponding823* NPS_PKT_MBOX_INT_LO_ENA_W1C/HI_ENA_W1C bits are set824* @emu: bit i is set in [EMU] when any EMU(i)_INT bit is set825* @bmo: Set when any BMO_INT bit is set826* @bmi: Set when any BMI_INT bit is set or when any non-RO827* BMI_INT and corresponding BMI_INT_ENA_W1C bits are both set828* @aqm: Set when any AQM_INT bit is set829* @zqm: Set when any ZQM_INT bit is set830* @efl: Set when any EFL_INT RO bit is set or when any non-RO EFL_INT831* and corresponding EFL_INT_ENA_W1C bits are both set832* @ilk: Set when any ILK_INT bit is set833* @lbc: Set when any LBC_INT RO bit is set or when any non-RO LBC_INT834* and corresponding LBC_INT_ENA_W1C bits are bot set835* @pem: Set when any PEM(0)_INT RO bit is set or when any non-RO836* PEM(0)_INT and corresponding PEM(0)_INT_ENA_W1C bit are both set837* @ucd: Set when any UCD_INT bit is set838* @zctl: Set when any ZIP_INT RO bit is set or when any non-RO ZIP_INT839* and corresponding ZIP_INT_ENA_W1C bits are both set840* @lbm: Set when any LBM_INT bit is set841* @nps_pkt: Set when any NPS_PKT_INT bit is set842* @nps_core: Set when any NPS_CORE_INT RO bit is set or when non-RO843* NPS_CORE_INT and corresponding NSP_CORE_INT_ENA_W1C bits are both set844*/845union nps_core_int_active {846u64 value;847struct {848#if (defined(__BIG_ENDIAN_BITFIELD))849u64 resend : 1;850u64 raz : 43;851u64 ocla : 1;852u64 mbox : 1;853u64 emu : 4;854u64 bmo : 1;855u64 bmi : 1;856u64 aqm : 1;857u64 zqm : 1;858u64 efl : 1;859u64 ilk : 1;860u64 lbc : 1;861u64 pem : 1;862u64 pom : 1;863u64 ucd : 1;864u64 zctl : 1;865u64 lbm : 1;866u64 nps_pkt : 1;867u64 nps_core : 1;868#else869u64 nps_core : 1;870u64 nps_pkt : 1;871u64 lbm : 1;872u64 zctl: 1;873u64 ucd : 1;874u64 pom : 1;875u64 pem : 1;876u64 lbc : 1;877u64 ilk : 1;878u64 efl : 1;879u64 zqm : 1;880u64 aqm : 1;881u64 bmi : 1;882u64 bmo : 1;883u64 emu : 4;884u64 mbox : 1;885u64 ocla : 1;886u64 raz : 43;887u64 resend : 1;888#endif889} s;890};891892/**893* struct efl_core_int - EFL Interrupt Registers894* @epci_decode_err: EPCI decoded a transacation that was unknown895* This error should only occurred when there is a micrcode/SE error896* and should be considered fatal897* @ae_err: An AE uncorrectable error occurred.898* See EFL_CORE(0..3)_AE_ERR_INT899* @se_err: An SE uncorrectable error occurred.900* See EFL_CORE(0..3)_SE_ERR_INT901* @dbe: Double-bit error occurred in EFL902* @sbe: Single-bit error occurred in EFL903* @d_left: Asserted when new POM-Header-BMI-data is904* being sent to an Exec, and that Exec has Not read all BMI905* data associated with the previous POM header906* @len_ovr: Asserted when an Exec-Read is issued that is more than907* 14 greater in length that the BMI data left to be read908*/909union efl_core_int {910u64 value;911struct {912#if (defined(__BIG_ENDIAN_BITFIELD))913u64 raz : 57;914u64 epci_decode_err : 1;915u64 ae_err : 1;916u64 se_err : 1;917u64 dbe : 1;918u64 sbe : 1;919u64 d_left : 1;920u64 len_ovr : 1;921#else922u64 len_ovr : 1;923u64 d_left : 1;924u64 sbe : 1;925u64 dbe : 1;926u64 se_err : 1;927u64 ae_err : 1;928u64 epci_decode_err : 1;929u64 raz : 57;930#endif931} s;932};933934/**935* struct efl_core_int_ena_w1s - EFL core interrupt enable set register936* @epci_decode_err: Reads or sets enable for937* EFL_CORE(0..3)_INT[EPCI_DECODE_ERR].938* @d_left: Reads or sets enable for939* EFL_CORE(0..3)_INT[D_LEFT].940* @len_ovr: Reads or sets enable for941* EFL_CORE(0..3)_INT[LEN_OVR].942*/943union efl_core_int_ena_w1s {944u64 value;945struct {946#if (defined(__BIG_ENDIAN_BITFIELD))947u64 raz_7_63 : 57;948u64 epci_decode_err : 1;949u64 raz_2_5 : 4;950u64 d_left : 1;951u64 len_ovr : 1;952#else953u64 len_ovr : 1;954u64 d_left : 1;955u64 raz_2_5 : 4;956u64 epci_decode_err : 1;957u64 raz_7_63 : 57;958#endif959} s;960};961962/**963* struct efl_rnm_ctl_status - RNM Control and Status Register964* @ent_sel: Select input to RNM FIFO965* @exp_ent: Exported entropy enable for random number generator966* @rng_rst: Reset to RNG. Setting this bit to 1 cancels the generation967* of the current random number.968* @rnm_rst: Reset the RNM. Setting this bit to 1 clears all sorted numbers969* in the random number memory.970* @rng_en: Enabled the output of the RNG.971* @ent_en: Entropy enable for random number generator.972*/973union efl_rnm_ctl_status {974u64 value;975struct {976#if (defined(__BIG_ENDIAN_BITFIELD))977u64 raz_9_63 : 55;978u64 ent_sel : 4;979u64 exp_ent : 1;980u64 rng_rst : 1;981u64 rnm_rst : 1;982u64 rng_en : 1;983u64 ent_en : 1;984#else985u64 ent_en : 1;986u64 rng_en : 1;987u64 rnm_rst : 1;988u64 rng_rst : 1;989u64 exp_ent : 1;990u64 ent_sel : 4;991u64 raz_9_63 : 55;992#endif993} s;994};995996/**997* struct bmi_ctl - BMI control register998* @ilk_hdrq_thrsh: Maximum number of header queue locations999* that ILK packets may consume. When the threshold is1000* exceeded ILK_XOFF is sent to the BMI_X2P_ARB.1001* @nps_hdrq_thrsh: Maximum number of header queue locations1002* that NPS packets may consume. When the threshold is1003* exceeded NPS_XOFF is sent to the BMI_X2P_ARB.1004* @totl_hdrq_thrsh: Maximum number of header queue locations1005* that the sum of ILK and NPS packets may consume.1006* @ilk_free_thrsh: Maximum number of buffers that ILK packet1007* flows may consume before ILK_XOFF is sent to the BMI_X2P_ARB.1008* @nps_free_thrsh: Maximum number of buffers that NPS packet1009* flows may consume before NPS XOFF is sent to the BMI_X2p_ARB.1010* @totl_free_thrsh: Maximum number of buffers that bot ILK and NPS1011* packet flows may consume before both NPS_XOFF and ILK_XOFF1012* are asserted to the BMI_X2P_ARB.1013* @max_pkt_len: Maximum packet length, integral number of 256B1014* buffers.1015*/1016union bmi_ctl {1017u64 value;1018struct {1019#if (defined(__BIG_ENDIAN_BITFIELD))1020u64 raz_56_63 : 8;1021u64 ilk_hdrq_thrsh : 8;1022u64 nps_hdrq_thrsh : 8;1023u64 totl_hdrq_thrsh : 8;1024u64 ilk_free_thrsh : 8;1025u64 nps_free_thrsh : 8;1026u64 totl_free_thrsh : 8;1027u64 max_pkt_len : 8;1028#else1029u64 max_pkt_len : 8;1030u64 totl_free_thrsh : 8;1031u64 nps_free_thrsh : 8;1032u64 ilk_free_thrsh : 8;1033u64 totl_hdrq_thrsh : 8;1034u64 nps_hdrq_thrsh : 8;1035u64 ilk_hdrq_thrsh : 8;1036u64 raz_56_63 : 8;1037#endif1038} s;1039};10401041/**1042* struct bmi_int_ena_w1s - BMI interrupt enable set register1043* @ilk_req_oflw: Reads or sets enable for1044* BMI_INT[ILK_REQ_OFLW].1045* @nps_req_oflw: Reads or sets enable for1046* BMI_INT[NPS_REQ_OFLW].1047* @fpf_undrrn: Reads or sets enable for1048* BMI_INT[FPF_UNDRRN].1049* @eop_err_ilk: Reads or sets enable for1050* BMI_INT[EOP_ERR_ILK].1051* @eop_err_nps: Reads or sets enable for1052* BMI_INT[EOP_ERR_NPS].1053* @sop_err_ilk: Reads or sets enable for1054* BMI_INT[SOP_ERR_ILK].1055* @sop_err_nps: Reads or sets enable for1056* BMI_INT[SOP_ERR_NPS].1057* @pkt_rcv_err_ilk: Reads or sets enable for1058* BMI_INT[PKT_RCV_ERR_ILK].1059* @pkt_rcv_err_nps: Reads or sets enable for1060* BMI_INT[PKT_RCV_ERR_NPS].1061* @max_len_err_ilk: Reads or sets enable for1062* BMI_INT[MAX_LEN_ERR_ILK].1063* @max_len_err_nps: Reads or sets enable for1064* BMI_INT[MAX_LEN_ERR_NPS].1065*/1066union bmi_int_ena_w1s {1067u64 value;1068struct {1069#if (defined(__BIG_ENDIAN_BITFIELD))1070u64 raz_13_63 : 51;1071u64 ilk_req_oflw : 1;1072u64 nps_req_oflw : 1;1073u64 raz_10 : 1;1074u64 raz_9 : 1;1075u64 fpf_undrrn : 1;1076u64 eop_err_ilk : 1;1077u64 eop_err_nps : 1;1078u64 sop_err_ilk : 1;1079u64 sop_err_nps : 1;1080u64 pkt_rcv_err_ilk : 1;1081u64 pkt_rcv_err_nps : 1;1082u64 max_len_err_ilk : 1;1083u64 max_len_err_nps : 1;1084#else1085u64 max_len_err_nps : 1;1086u64 max_len_err_ilk : 1;1087u64 pkt_rcv_err_nps : 1;1088u64 pkt_rcv_err_ilk : 1;1089u64 sop_err_nps : 1;1090u64 sop_err_ilk : 1;1091u64 eop_err_nps : 1;1092u64 eop_err_ilk : 1;1093u64 fpf_undrrn : 1;1094u64 raz_9 : 1;1095u64 raz_10 : 1;1096u64 nps_req_oflw : 1;1097u64 ilk_req_oflw : 1;1098u64 raz_13_63 : 51;1099#endif1100} s;1101};11021103/**1104* struct bmo_ctl2 - BMO Control2 Register1105* @arb_sel: Determines P2X Arbitration1106* @ilk_buf_thrsh: Maximum number of buffers that the1107* ILK packet flows may consume before ILK XOFF is1108* asserted to the POM.1109* @nps_slc_buf_thrsh: Maximum number of buffers that the1110* NPS_SLC packet flow may consume before NPS_SLC XOFF is1111* asserted to the POM.1112* @nps_uns_buf_thrsh: Maximum number of buffers that the1113* NPS_UNS packet flow may consume before NPS_UNS XOFF is1114* asserted to the POM.1115* @totl_buf_thrsh: Maximum number of buffers that ILK, NPS_UNS and1116* NPS_SLC packet flows may consume before NPS_UNS XOFF, NSP_SLC and1117* ILK_XOFF are all asserted POM.1118*/1119union bmo_ctl2 {1120u64 value;1121struct {1122#if (defined(__BIG_ENDIAN_BITFIELD))1123u64 arb_sel : 1;1124u64 raz_32_62 : 31;1125u64 ilk_buf_thrsh : 8;1126u64 nps_slc_buf_thrsh : 8;1127u64 nps_uns_buf_thrsh : 8;1128u64 totl_buf_thrsh : 8;1129#else1130u64 totl_buf_thrsh : 8;1131u64 nps_uns_buf_thrsh : 8;1132u64 nps_slc_buf_thrsh : 8;1133u64 ilk_buf_thrsh : 8;1134u64 raz_32_62 : 31;1135u64 arb_sel : 1;1136#endif1137} s;1138};11391140/**1141* struct pom_int_ena_w1s - POM interrupt enable set register1142* @illegal_intf: Reads or sets enable for POM_INT[ILLEGAL_INTF].1143* @illegal_dport: Reads or sets enable for POM_INT[ILLEGAL_DPORT].1144*/1145union pom_int_ena_w1s {1146u64 value;1147struct {1148#if (defined(__BIG_ENDIAN_BITFIELD))1149u64 raz2 : 60;1150u64 illegal_intf : 1;1151u64 illegal_dport : 1;1152u64 raz1 : 1;1153u64 raz0 : 1;1154#else1155u64 raz0 : 1;1156u64 raz1 : 1;1157u64 illegal_dport : 1;1158u64 illegal_intf : 1;1159u64 raz2 : 60;1160#endif1161} s;1162};11631164/**1165* struct lbc_inval_ctl - LBC invalidation control register1166* @wait_timer: Wait timer for wait state. [WAIT_TIMER] must1167* always be written with its reset value.1168* @cam_inval_start: Software should write [CAM_INVAL_START]=11169* to initiate an LBC cache invalidation. After this, software1170* should read LBC_INVAL_STATUS until LBC_INVAL_STATUS[DONE] is set.1171* LBC hardware clears [CAVM_INVAL_START] before software can1172* observed LBC_INVAL_STATUS[DONE] to be set1173*/1174union lbc_inval_ctl {1175u64 value;1176struct {1177#if (defined(__BIG_ENDIAN_BITFIELD))1178u64 raz2 : 48;1179u64 wait_timer : 8;1180u64 raz1 : 6;1181u64 cam_inval_start : 1;1182u64 raz0 : 1;1183#else1184u64 raz0 : 1;1185u64 cam_inval_start : 1;1186u64 raz1 : 6;1187u64 wait_timer : 8;1188u64 raz2 : 48;1189#endif1190} s;1191};11921193/**1194* struct lbc_int_ena_w1s - LBC interrupt enable set register1195* @cam_hard_err: Reads or sets enable for LBC_INT[CAM_HARD_ERR].1196* @cam_inval_abort: Reads or sets enable for LBC_INT[CAM_INVAL_ABORT].1197* @over_fetch_err: Reads or sets enable for LBC_INT[OVER_FETCH_ERR].1198* @cache_line_to_err: Reads or sets enable for1199* LBC_INT[CACHE_LINE_TO_ERR].1200* @cam_soft_err: Reads or sets enable for1201* LBC_INT[CAM_SOFT_ERR].1202* @dma_rd_err: Reads or sets enable for1203* LBC_INT[DMA_RD_ERR].1204*/1205union lbc_int_ena_w1s {1206u64 value;1207struct {1208#if (defined(__BIG_ENDIAN_BITFIELD))1209u64 raz_10_63 : 54;1210u64 cam_hard_err : 1;1211u64 cam_inval_abort : 1;1212u64 over_fetch_err : 1;1213u64 cache_line_to_err : 1;1214u64 raz_2_5 : 4;1215u64 cam_soft_err : 1;1216u64 dma_rd_err : 1;1217#else1218u64 dma_rd_err : 1;1219u64 cam_soft_err : 1;1220u64 raz_2_5 : 4;1221u64 cache_line_to_err : 1;1222u64 over_fetch_err : 1;1223u64 cam_inval_abort : 1;1224u64 cam_hard_err : 1;1225u64 raz_10_63 : 54;1226#endif1227} s;1228};12291230/**1231* struct lbc_int - LBC interrupt summary register1232* @cam_hard_err: indicates a fatal hardware error.1233* It requires system reset.1234* When [CAM_HARD_ERR] is set, LBC stops logging any new information in1235* LBC_POM_MISS_INFO_LOG,1236* LBC_POM_MISS_ADDR_LOG,1237* LBC_EFL_MISS_INFO_LOG, and1238* LBC_EFL_MISS_ADDR_LOG.1239* Software should sample them.1240* @cam_inval_abort: indicates a fatal hardware error.1241* System reset is required.1242* @over_fetch_err: indicates a fatal hardware error1243* System reset is required1244* @cache_line_to_err: is a debug feature.1245* This timeout interrupt bit tells the software that1246* a cacheline in LBC has non-zero usage and the context1247* has not been used for greater than the1248* LBC_TO_CNT[TO_CNT] time interval.1249* @sbe: Memory SBE error. This is recoverable via ECC.1250* See LBC_ECC_INT for more details.1251* @dbe: Memory DBE error. This is a fatal and requires a1252* system reset.1253* @pref_dat_len_mismatch_err: Summary bit for context length1254* mismatch errors.1255* @rd_dat_len_mismatch_err: Summary bit for SE read data length1256* greater than data prefect length errors.1257* @cam_soft_err: is recoverable. Software must complete a1258* LBC_INVAL_CTL[CAM_INVAL_START] invalidation sequence and1259* then clear [CAM_SOFT_ERR].1260* @dma_rd_err: A context prefect read of host memory returned with1261* a read error.1262*/1263union lbc_int {1264u64 value;1265struct {1266#if (defined(__BIG_ENDIAN_BITFIELD))1267u64 raz_10_63 : 54;1268u64 cam_hard_err : 1;1269u64 cam_inval_abort : 1;1270u64 over_fetch_err : 1;1271u64 cache_line_to_err : 1;1272u64 sbe : 1;1273u64 dbe : 1;1274u64 pref_dat_len_mismatch_err : 1;1275u64 rd_dat_len_mismatch_err : 1;1276u64 cam_soft_err : 1;1277u64 dma_rd_err : 1;1278#else1279u64 dma_rd_err : 1;1280u64 cam_soft_err : 1;1281u64 rd_dat_len_mismatch_err : 1;1282u64 pref_dat_len_mismatch_err : 1;1283u64 dbe : 1;1284u64 sbe : 1;1285u64 cache_line_to_err : 1;1286u64 over_fetch_err : 1;1287u64 cam_inval_abort : 1;1288u64 cam_hard_err : 1;1289u64 raz_10_63 : 54;1290#endif1291} s;1292};12931294/**1295* struct lbc_inval_status: LBC Invalidation status register1296* @cam_clean_entry_complete_cnt: The number of entries that are1297* cleaned up successfully.1298* @cam_clean_entry_cnt: The number of entries that have the CAM1299* inval command issued.1300* @cam_inval_state: cam invalidation FSM state1301* @cam_inval_abort: cam invalidation abort1302* @cam_rst_rdy: lbc_cam reset ready1303* @done: LBC clears [DONE] when1304* LBC_INVAL_CTL[CAM_INVAL_START] is written with a one,1305* and sets [DONE] when it completes the invalidation1306* sequence.1307*/1308union lbc_inval_status {1309u64 value;1310struct {1311#if (defined(__BIG_ENDIAN_BITFIELD))1312u64 raz3 : 23;1313u64 cam_clean_entry_complete_cnt : 9;1314u64 raz2 : 7;1315u64 cam_clean_entry_cnt : 9;1316u64 raz1 : 5;1317u64 cam_inval_state : 3;1318u64 raz0 : 5;1319u64 cam_inval_abort : 1;1320u64 cam_rst_rdy : 1;1321u64 done : 1;1322#else1323u64 done : 1;1324u64 cam_rst_rdy : 1;1325u64 cam_inval_abort : 1;1326u64 raz0 : 5;1327u64 cam_inval_state : 3;1328u64 raz1 : 5;1329u64 cam_clean_entry_cnt : 9;1330u64 raz2 : 7;1331u64 cam_clean_entry_complete_cnt : 9;1332u64 raz3 : 23;1333#endif1334} s;1335};13361337/**1338* struct rst_boot: RST Boot Register1339* @jtcsrdis: when set, internal CSR access via JTAG TAP controller1340* is disabled1341* @jt_tst_mode: JTAG test mode1342* @io_supply: I/O power supply setting based on IO_VDD_SELECT pin:1343* 0x1 = 1.8V1344* 0x2 = 2.5V1345* 0x4 = 3.3V1346* All other values are reserved1347* @pnr_mul: clock multiplier1348* @lboot: last boot cause mask, resets only with PLL_DC_OK1349* @rboot: determines whether core 0 remains in reset after1350* chip cold or warm or soft reset1351* @rboot_pin: read only access to REMOTE_BOOT pin1352*/1353union rst_boot {1354u64 value;1355struct {1356#if (defined(__BIG_ENDIAN_BITFIELD))1357u64 raz_63 : 1;1358u64 jtcsrdis : 1;1359u64 raz_59_61 : 3;1360u64 jt_tst_mode : 1;1361u64 raz_40_57 : 18;1362u64 io_supply : 3;1363u64 raz_30_36 : 7;1364u64 pnr_mul : 6;1365u64 raz_12_23 : 12;1366u64 lboot : 10;1367u64 rboot : 1;1368u64 rboot_pin : 1;1369#else1370u64 rboot_pin : 1;1371u64 rboot : 1;1372u64 lboot : 10;1373u64 raz_12_23 : 12;1374u64 pnr_mul : 6;1375u64 raz_30_36 : 7;1376u64 io_supply : 3;1377u64 raz_40_57 : 18;1378u64 jt_tst_mode : 1;1379u64 raz_59_61 : 3;1380u64 jtcsrdis : 1;1381u64 raz_63 : 1;1382#endif1383};1384};13851386/**1387* struct fus_dat1: Fuse Data 1 Register1388* @pll_mul: main clock PLL multiplier hardware limit1389* @pll_half_dis: main clock PLL control1390* @efus_lck: efuse lockdown1391* @zip_info: ZIP information1392* @bar2_sz_conf: when zero, BAR2 size conforms to1393* PCIe specification1394* @efus_ign: efuse ignore1395* @nozip: ZIP disable1396* @pll_alt_matrix: select alternate PLL matrix1397* @pll_bwadj_denom: select CLKF denominator for1398* BWADJ value1399* @chip_id: chip ID1400*/1401union fus_dat1 {1402u64 value;1403struct {1404#if (defined(__BIG_ENDIAN_BITFIELD))1405u64 raz_57_63 : 7;1406u64 pll_mul : 3;1407u64 pll_half_dis : 1;1408u64 raz_43_52 : 10;1409u64 efus_lck : 3;1410u64 raz_26_39 : 14;1411u64 zip_info : 5;1412u64 bar2_sz_conf : 1;1413u64 efus_ign : 1;1414u64 nozip : 1;1415u64 raz_11_17 : 7;1416u64 pll_alt_matrix : 1;1417u64 pll_bwadj_denom : 2;1418u64 chip_id : 8;1419#else1420u64 chip_id : 8;1421u64 pll_bwadj_denom : 2;1422u64 pll_alt_matrix : 1;1423u64 raz_11_17 : 7;1424u64 nozip : 1;1425u64 efus_ign : 1;1426u64 bar2_sz_conf : 1;1427u64 zip_info : 5;1428u64 raz_26_39 : 14;1429u64 efus_lck : 3;1430u64 raz_43_52 : 10;1431u64 pll_half_dis : 1;1432u64 pll_mul : 3;1433u64 raz_57_63 : 7;1434#endif1435};1436};14371438#endif /* __NITROX_CSR_H */143914401441