15e8ce833SSrujana Challa /* SPDX-License-Identifier: GPL-2.0-only 25e8ce833SSrujana Challa * Copyright (C) 2020 Marvell. 35e8ce833SSrujana Challa */ 45e8ce833SSrujana Challa 55e8ce833SSrujana Challa #ifndef __OTX2_CPT_HW_TYPES_H 65e8ce833SSrujana Challa #define __OTX2_CPT_HW_TYPES_H 75e8ce833SSrujana Challa 85e8ce833SSrujana Challa #include <linux/types.h> 95e8ce833SSrujana Challa 105e8ce833SSrujana Challa /* Device IDs */ 115e8ce833SSrujana Challa #define OTX2_CPT_PCI_PF_DEVICE_ID 0xA0FD 125e8ce833SSrujana Challa #define OTX2_CPT_PCI_VF_DEVICE_ID 0xA0FE 134cd8c315SSrujana Challa #define CN10K_CPT_PCI_PF_DEVICE_ID 0xA0F2 144cd8c315SSrujana Challa #define CN10K_CPT_PCI_VF_DEVICE_ID 0xA0F3 155e8ce833SSrujana Challa 165e8ce833SSrujana Challa /* Mailbox interrupts offset */ 175e8ce833SSrujana Challa #define OTX2_CPT_PF_MBOX_INT 6 185e8ce833SSrujana Challa #define OTX2_CPT_PF_INT_VEC_E_MBOXX(x, a) ((x) + (a)) 195e8ce833SSrujana Challa 205e8ce833SSrujana Challa /* Maximum supported microcode groups */ 215e8ce833SSrujana Challa #define OTX2_CPT_MAX_ENGINE_GROUPS 8 225e8ce833SSrujana Challa 235e8ce833SSrujana Challa /* CPT instruction size in bytes */ 245e8ce833SSrujana Challa #define OTX2_CPT_INST_SIZE 64 255e8ce833SSrujana Challa /* 265e8ce833SSrujana Challa * CPT VF MSIX vectors and their offsets 275e8ce833SSrujana Challa */ 285e8ce833SSrujana Challa #define OTX2_CPT_VF_MSIX_VECTORS 1 295e8ce833SSrujana Challa #define OTX2_CPT_VF_INTR_MBOX_MASK BIT(0) 304cd8c315SSrujana Challa #define CN10K_CPT_VF_MBOX_REGION (0xC0000) 315e8ce833SSrujana Challa 325e8ce833SSrujana Challa /* CPT LF MSIX vectors */ 335e8ce833SSrujana Challa #define OTX2_CPT_LF_MSIX_VECTORS 2 345e8ce833SSrujana Challa 355e8ce833SSrujana Challa /* OcteonTX2 CPT PF registers */ 365e8ce833SSrujana Challa #define OTX2_CPT_PF_CONSTANTS (0x0) 375e8ce833SSrujana Challa #define OTX2_CPT_PF_RESET (0x100) 385e8ce833SSrujana Challa #define OTX2_CPT_PF_DIAG (0x120) 395e8ce833SSrujana Challa #define OTX2_CPT_PF_BIST_STATUS (0x160) 405e8ce833SSrujana Challa #define OTX2_CPT_PF_ECC0_CTL (0x200) 415e8ce833SSrujana Challa #define OTX2_CPT_PF_ECC0_FLIP (0x210) 425e8ce833SSrujana Challa #define OTX2_CPT_PF_ECC0_INT (0x220) 435e8ce833SSrujana Challa #define OTX2_CPT_PF_ECC0_INT_W1S (0x230) 445e8ce833SSrujana Challa #define OTX2_CPT_PF_ECC0_ENA_W1S (0x240) 455e8ce833SSrujana Challa #define OTX2_CPT_PF_ECC0_ENA_W1C (0x250) 465e8ce833SSrujana Challa #define OTX2_CPT_PF_MBOX_INTX(b) (0x400 | (b) << 3) 475e8ce833SSrujana Challa #define OTX2_CPT_PF_MBOX_INT_W1SX(b) (0x420 | (b) << 3) 485e8ce833SSrujana Challa #define OTX2_CPT_PF_MBOX_ENA_W1CX(b) (0x440 | (b) << 3) 495e8ce833SSrujana Challa #define OTX2_CPT_PF_MBOX_ENA_W1SX(b) (0x460 | (b) << 3) 505e8ce833SSrujana Challa #define OTX2_CPT_PF_EXEC_INT (0x500) 515e8ce833SSrujana Challa #define OTX2_CPT_PF_EXEC_INT_W1S (0x520) 525e8ce833SSrujana Challa #define OTX2_CPT_PF_EXEC_ENA_W1C (0x540) 535e8ce833SSrujana Challa #define OTX2_CPT_PF_EXEC_ENA_W1S (0x560) 545e8ce833SSrujana Challa #define OTX2_CPT_PF_GX_EN(b) (0x600 | (b) << 3) 555e8ce833SSrujana Challa #define OTX2_CPT_PF_EXEC_INFO (0x700) 565e8ce833SSrujana Challa #define OTX2_CPT_PF_EXEC_BUSY (0x800) 575e8ce833SSrujana Challa #define OTX2_CPT_PF_EXEC_INFO0 (0x900) 585e8ce833SSrujana Challa #define OTX2_CPT_PF_EXEC_INFO1 (0x910) 595e8ce833SSrujana Challa #define OTX2_CPT_PF_INST_REQ_PC (0x10000) 605e8ce833SSrujana Challa #define OTX2_CPT_PF_INST_LATENCY_PC (0x10020) 615e8ce833SSrujana Challa #define OTX2_CPT_PF_RD_REQ_PC (0x10040) 625e8ce833SSrujana Challa #define OTX2_CPT_PF_RD_LATENCY_PC (0x10060) 635e8ce833SSrujana Challa #define OTX2_CPT_PF_RD_UC_PC (0x10080) 645e8ce833SSrujana Challa #define OTX2_CPT_PF_ACTIVE_CYCLES_PC (0x10100) 655e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_CTL (0x4000000) 665e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_STATUS (0x4000008) 675e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_CLK (0x4000010) 685e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_DBG_CTL (0x4000018) 695e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_DBG_DATA (0x4000020) 705e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_BIST_STATUS (0x4000028) 715e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_REQ_TIMER (0x4000030) 725e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_MEM_CTL (0x4000038) 735e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_PERF_CTL (0x4001000) 745e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_DBG_CNTX(b) (0x4001100 | (b) << 3) 755e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_PERF_EVENT_CNT (0x4001180) 765e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_EPCI_INBX_CNT(b) (0x4001200 | (b) << 3) 775e8ce833SSrujana Challa #define OTX2_CPT_PF_EXE_EPCI_OUTBX_CNT(b) (0x4001240 | (b) << 3) 785e8ce833SSrujana Challa #define OTX2_CPT_PF_ENGX_UCODE_BASE(b) (0x4002000 | (b) << 3) 795e8ce833SSrujana Challa #define OTX2_CPT_PF_QX_CTL(b) (0x8000000 | (b) << 20) 805e8ce833SSrujana Challa #define OTX2_CPT_PF_QX_GMCTL(b) (0x8000020 | (b) << 20) 815e8ce833SSrujana Challa #define OTX2_CPT_PF_QX_CTL2(b) (0x8000100 | (b) << 20) 825e8ce833SSrujana Challa #define OTX2_CPT_PF_VFX_MBOXX(b, c) (0x8001000 | (b) << 20 | \ 835e8ce833SSrujana Challa (c) << 8) 845e8ce833SSrujana Challa 855e8ce833SSrujana Challa /* OcteonTX2 CPT LF registers */ 865e8ce833SSrujana Challa #define OTX2_CPT_LF_CTL (0x10) 875e8ce833SSrujana Challa #define OTX2_CPT_LF_DONE_WAIT (0x30) 885e8ce833SSrujana Challa #define OTX2_CPT_LF_INPROG (0x40) 895e8ce833SSrujana Challa #define OTX2_CPT_LF_DONE (0x50) 905e8ce833SSrujana Challa #define OTX2_CPT_LF_DONE_ACK (0x60) 915e8ce833SSrujana Challa #define OTX2_CPT_LF_DONE_INT_ENA_W1S (0x90) 925e8ce833SSrujana Challa #define OTX2_CPT_LF_DONE_INT_ENA_W1C (0xa0) 935e8ce833SSrujana Challa #define OTX2_CPT_LF_MISC_INT (0xb0) 945e8ce833SSrujana Challa #define OTX2_CPT_LF_MISC_INT_W1S (0xc0) 955e8ce833SSrujana Challa #define OTX2_CPT_LF_MISC_INT_ENA_W1S (0xd0) 965e8ce833SSrujana Challa #define OTX2_CPT_LF_MISC_INT_ENA_W1C (0xe0) 975e8ce833SSrujana Challa #define OTX2_CPT_LF_Q_BASE (0xf0) 985e8ce833SSrujana Challa #define OTX2_CPT_LF_Q_SIZE (0x100) 995e8ce833SSrujana Challa #define OTX2_CPT_LF_Q_INST_PTR (0x110) 1005e8ce833SSrujana Challa #define OTX2_CPT_LF_Q_GRP_PTR (0x120) 1015e8ce833SSrujana Challa #define OTX2_CPT_LF_NQX(a) (0x400 | (a) << 3) 1025e8ce833SSrujana Challa #define OTX2_CPT_RVU_FUNC_BLKADDR_SHIFT 20 1035e8ce833SSrujana Challa /* LMT LF registers */ 1045e8ce833SSrujana Challa #define OTX2_CPT_LMT_LFBASE BIT_ULL(OTX2_CPT_RVU_FUNC_BLKADDR_SHIFT) 1055e8ce833SSrujana Challa #define OTX2_CPT_LMT_LF_LMTLINEX(a) (OTX2_CPT_LMT_LFBASE | 0x000 | \ 1065e8ce833SSrujana Challa (a) << 12) 1075e8ce833SSrujana Challa /* RVU VF registers */ 1085e8ce833SSrujana Challa #define OTX2_RVU_VF_INT (0x20) 1095e8ce833SSrujana Challa #define OTX2_RVU_VF_INT_W1S (0x28) 1105e8ce833SSrujana Challa #define OTX2_RVU_VF_INT_ENA_W1S (0x30) 1115e8ce833SSrujana Challa #define OTX2_RVU_VF_INT_ENA_W1C (0x38) 1125e8ce833SSrujana Challa 1135e8ce833SSrujana Challa /* 1145e8ce833SSrujana Challa * Enumeration otx2_cpt_ucode_error_code_e 1155e8ce833SSrujana Challa * 1165e8ce833SSrujana Challa * Enumerates ucode errors 1175e8ce833SSrujana Challa */ 1185e8ce833SSrujana Challa enum otx2_cpt_ucode_comp_code_e { 1195e8ce833SSrujana Challa OTX2_CPT_UCC_SUCCESS = 0x00, 1205e8ce833SSrujana Challa OTX2_CPT_UCC_INVALID_OPCODE = 0x01, 1215e8ce833SSrujana Challa 1225e8ce833SSrujana Challa /* Scatter gather */ 1235e8ce833SSrujana Challa OTX2_CPT_UCC_SG_WRITE_LENGTH = 0x02, 1245e8ce833SSrujana Challa OTX2_CPT_UCC_SG_LIST = 0x03, 1255e8ce833SSrujana Challa OTX2_CPT_UCC_SG_NOT_SUPPORTED = 0x04, 1265e8ce833SSrujana Challa 1275e8ce833SSrujana Challa }; 1285e8ce833SSrujana Challa 1295e8ce833SSrujana Challa /* 1305e8ce833SSrujana Challa * Enumeration otx2_cpt_comp_e 1315e8ce833SSrujana Challa * 1325e8ce833SSrujana Challa * OcteonTX2 CPT Completion Enumeration 1335e8ce833SSrujana Challa * Enumerates the values of CPT_RES_S[COMPCODE]. 1345e8ce833SSrujana Challa */ 1355e8ce833SSrujana Challa enum otx2_cpt_comp_e { 1365e8ce833SSrujana Challa OTX2_CPT_COMP_E_NOTDONE = 0x00, 1375e8ce833SSrujana Challa OTX2_CPT_COMP_E_GOOD = 0x01, 1385e8ce833SSrujana Challa OTX2_CPT_COMP_E_FAULT = 0x02, 1395e8ce833SSrujana Challa OTX2_CPT_COMP_E_HWERR = 0x04, 1405e8ce833SSrujana Challa OTX2_CPT_COMP_E_INSTERR = 0x05, 141*40a645f7SSrujana Challa OTX2_CPT_COMP_E_WARN = 0x06 1425e8ce833SSrujana Challa }; 1435e8ce833SSrujana Challa 1445e8ce833SSrujana Challa /* 1455e8ce833SSrujana Challa * Enumeration otx2_cpt_vf_int_vec_e 1465e8ce833SSrujana Challa * 1475e8ce833SSrujana Challa * OcteonTX2 CPT VF MSI-X Vector Enumeration 1485e8ce833SSrujana Challa * Enumerates the MSI-X interrupt vectors. 1495e8ce833SSrujana Challa */ 1505e8ce833SSrujana Challa enum otx2_cpt_vf_int_vec_e { 1515e8ce833SSrujana Challa OTX2_CPT_VF_INT_VEC_E_MBOX = 0x00 1525e8ce833SSrujana Challa }; 1535e8ce833SSrujana Challa 1545e8ce833SSrujana Challa /* 1555e8ce833SSrujana Challa * Enumeration otx2_cpt_lf_int_vec_e 1565e8ce833SSrujana Challa * 1575e8ce833SSrujana Challa * OcteonTX2 CPT LF MSI-X Vector Enumeration 1585e8ce833SSrujana Challa * Enumerates the MSI-X interrupt vectors. 1595e8ce833SSrujana Challa */ 1605e8ce833SSrujana Challa enum otx2_cpt_lf_int_vec_e { 1615e8ce833SSrujana Challa OTX2_CPT_LF_INT_VEC_E_MISC = 0x00, 1625e8ce833SSrujana Challa OTX2_CPT_LF_INT_VEC_E_DONE = 0x01 1635e8ce833SSrujana Challa }; 1645e8ce833SSrujana Challa 1655e8ce833SSrujana Challa /* 1665e8ce833SSrujana Challa * Structure otx2_cpt_inst_s 1675e8ce833SSrujana Challa * 1685e8ce833SSrujana Challa * CPT Instruction Structure 1695e8ce833SSrujana Challa * This structure specifies the instruction layout. Instructions are 1705e8ce833SSrujana Challa * stored in memory as little-endian unless CPT()_PF_Q()_CTL[INST_BE] is set. 1715e8ce833SSrujana Challa * cpt_inst_s_s 1725e8ce833SSrujana Challa * Word 0 1735e8ce833SSrujana Challa * doneint:1 Done interrupt. 1745e8ce833SSrujana Challa * 0 = No interrupts related to this instruction. 1755e8ce833SSrujana Challa * 1 = When the instruction completes, CPT()_VQ()_DONE[DONE] will be 1765e8ce833SSrujana Challa * incremented,and based on the rules described there an interrupt may 1775e8ce833SSrujana Challa * occur. 1785e8ce833SSrujana Challa * Word 1 1795e8ce833SSrujana Challa * res_addr [127: 64] Result IOVA. 1805e8ce833SSrujana Challa * If nonzero, specifies where to write CPT_RES_S. 1815e8ce833SSrujana Challa * If zero, no result structure will be written. 1825e8ce833SSrujana Challa * Address must be 16-byte aligned. 1835e8ce833SSrujana Challa * Bits <63:49> are ignored by hardware; software should use a 1845e8ce833SSrujana Challa * sign-extended bit <48> for forward compatibility. 1855e8ce833SSrujana Challa * Word 2 1865e8ce833SSrujana Challa * grp:10 [171:162] If [WQ_PTR] is nonzero, the SSO guest-group to use when 1875e8ce833SSrujana Challa * CPT submits work SSO. 1885e8ce833SSrujana Challa * For the SSO to not discard the add-work request, FPA_PF_MAP() must map 1895e8ce833SSrujana Challa * [GRP] and CPT()_PF_Q()_GMCTL[GMID] as valid. 1905e8ce833SSrujana Challa * tt:2 [161:160] If [WQ_PTR] is nonzero, the SSO tag type to use when CPT 1915e8ce833SSrujana Challa * submits work to SSO 1925e8ce833SSrujana Challa * tag:32 [159:128] If [WQ_PTR] is nonzero, the SSO tag to use when CPT 1935e8ce833SSrujana Challa * submits work to SSO. 1945e8ce833SSrujana Challa * Word 3 1955e8ce833SSrujana Challa * wq_ptr [255:192] If [WQ_PTR] is nonzero, it is a pointer to a 1965e8ce833SSrujana Challa * work-queue entry that CPT submits work to SSO after all context, 1975e8ce833SSrujana Challa * output data, and result write operations are visible to other 1985e8ce833SSrujana Challa * CNXXXX units and the cores. Bits <2:0> must be zero. 1995e8ce833SSrujana Challa * Bits <63:49> are ignored by hardware; software should 2005e8ce833SSrujana Challa * use a sign-extended bit <48> for forward compatibility. 2015e8ce833SSrujana Challa * Internal: 2025e8ce833SSrujana Challa * Bits <63:49>, <2:0> are ignored by hardware, treated as always 0x0. 2035e8ce833SSrujana Challa * Word 4 2045e8ce833SSrujana Challa * ei0; [319:256] Engine instruction word 0. Passed to the AE/SE. 2055e8ce833SSrujana Challa * Word 5 2065e8ce833SSrujana Challa * ei1; [383:320] Engine instruction word 1. Passed to the AE/SE. 2075e8ce833SSrujana Challa * Word 6 2085e8ce833SSrujana Challa * ei2; [447:384] Engine instruction word 1. Passed to the AE/SE. 2095e8ce833SSrujana Challa * Word 7 2105e8ce833SSrujana Challa * ei3; [511:448] Engine instruction word 1. Passed to the AE/SE. 2115e8ce833SSrujana Challa * 2125e8ce833SSrujana Challa */ 2135e8ce833SSrujana Challa union otx2_cpt_inst_s { 2145e8ce833SSrujana Challa u64 u[8]; 2155e8ce833SSrujana Challa 2165e8ce833SSrujana Challa struct { 2175e8ce833SSrujana Challa /* Word 0 */ 2185e8ce833SSrujana Challa u64 nixtxl:3; 2195e8ce833SSrujana Challa u64 doneint:1; 2205e8ce833SSrujana Challa u64 nixtx_addr:60; 2215e8ce833SSrujana Challa /* Word 1 */ 2225e8ce833SSrujana Challa u64 res_addr; 2235e8ce833SSrujana Challa /* Word 2 */ 2245e8ce833SSrujana Challa u64 tag:32; 2255e8ce833SSrujana Challa u64 tt:2; 2265e8ce833SSrujana Challa u64 grp:10; 2275e8ce833SSrujana Challa u64 reserved_172_175:4; 2285e8ce833SSrujana Challa u64 rvu_pf_func:16; 2295e8ce833SSrujana Challa /* Word 3 */ 2305e8ce833SSrujana Challa u64 qord:1; 2315e8ce833SSrujana Challa u64 reserved_194_193:2; 2325e8ce833SSrujana Challa u64 wq_ptr:61; 2335e8ce833SSrujana Challa /* Word 4 */ 2345e8ce833SSrujana Challa u64 ei0; 2355e8ce833SSrujana Challa /* Word 5 */ 2365e8ce833SSrujana Challa u64 ei1; 2375e8ce833SSrujana Challa /* Word 6 */ 2385e8ce833SSrujana Challa u64 ei2; 2395e8ce833SSrujana Challa /* Word 7 */ 2405e8ce833SSrujana Challa u64 ei3; 2415e8ce833SSrujana Challa } s; 2425e8ce833SSrujana Challa }; 2435e8ce833SSrujana Challa 2445e8ce833SSrujana Challa /* 2455e8ce833SSrujana Challa * Structure otx2_cpt_res_s 2465e8ce833SSrujana Challa * 2475e8ce833SSrujana Challa * CPT Result Structure 2485e8ce833SSrujana Challa * The CPT coprocessor writes the result structure after it completes a 2495e8ce833SSrujana Challa * CPT_INST_S instruction. The result structure is exactly 16 bytes, and 2505e8ce833SSrujana Challa * each instruction completion produces exactly one result structure. 2515e8ce833SSrujana Challa * 2525e8ce833SSrujana Challa * This structure is stored in memory as little-endian unless 2535e8ce833SSrujana Challa * CPT()_PF_Q()_CTL[INST_BE] is set. 2545e8ce833SSrujana Challa * cpt_res_s_s 2555e8ce833SSrujana Challa * Word 0 2565e8ce833SSrujana Challa * doneint:1 [16:16] Done interrupt. This bit is copied from the 2575e8ce833SSrujana Challa * corresponding instruction's CPT_INST_S[DONEINT]. 2585e8ce833SSrujana Challa * compcode:8 [7:0] Indicates completion/error status of the CPT coprocessor 2595e8ce833SSrujana Challa * for the associated instruction, as enumerated by CPT_COMP_E. 2605e8ce833SSrujana Challa * Core software may write the memory location containing [COMPCODE] to 2615e8ce833SSrujana Challa * 0x0 before ringing the doorbell, and then poll for completion by 2625e8ce833SSrujana Challa * checking for a nonzero value. 2635e8ce833SSrujana Challa * Once the core observes a nonzero [COMPCODE] value in this case,the CPT 2645e8ce833SSrujana Challa * coprocessor will have also completed L2/DRAM write operations. 2655e8ce833SSrujana Challa * Word 1 2665e8ce833SSrujana Challa * reserved 2675e8ce833SSrujana Challa * 2685e8ce833SSrujana Challa */ 2695e8ce833SSrujana Challa union otx2_cpt_res_s { 2705e8ce833SSrujana Challa u64 u[2]; 2715e8ce833SSrujana Challa 272*40a645f7SSrujana Challa struct cn9k_cpt_res_s { 2735e8ce833SSrujana Challa u64 compcode:8; 2745e8ce833SSrujana Challa u64 uc_compcode:8; 2755e8ce833SSrujana Challa u64 doneint:1; 2765e8ce833SSrujana Challa u64 reserved_17_63:47; 2775e8ce833SSrujana Challa u64 reserved_64_127; 2785e8ce833SSrujana Challa } s; 279*40a645f7SSrujana Challa 280*40a645f7SSrujana Challa struct cn10k_cpt_res_s { 281*40a645f7SSrujana Challa u64 compcode:7; 282*40a645f7SSrujana Challa u64 doneint:1; 283*40a645f7SSrujana Challa u64 uc_compcode:8; 284*40a645f7SSrujana Challa u64 rlen:16; 285*40a645f7SSrujana Challa u64 spi:32; 286*40a645f7SSrujana Challa u64 esn; 287*40a645f7SSrujana Challa } cn10k; 2885e8ce833SSrujana Challa }; 2895e8ce833SSrujana Challa 2905e8ce833SSrujana Challa /* 2915e8ce833SSrujana Challa * Register (RVU_PF_BAR0) cpt#_af_constants1 2925e8ce833SSrujana Challa * 2935e8ce833SSrujana Challa * CPT AF Constants Register 2945e8ce833SSrujana Challa * This register contains implementation-related parameters of CPT. 2955e8ce833SSrujana Challa */ 2965e8ce833SSrujana Challa union otx2_cptx_af_constants1 { 2975e8ce833SSrujana Challa u64 u; 2985e8ce833SSrujana Challa struct otx2_cptx_af_constants1_s { 2995e8ce833SSrujana Challa u64 se:16; 3005e8ce833SSrujana Challa u64 ie:16; 3015e8ce833SSrujana Challa u64 ae:16; 3025e8ce833SSrujana Challa u64 reserved_48_63:16; 3035e8ce833SSrujana Challa } s; 3045e8ce833SSrujana Challa }; 3055e8ce833SSrujana Challa 3065e8ce833SSrujana Challa /* 3075e8ce833SSrujana Challa * RVU_PFVF_BAR2 - cpt_lf_misc_int 3085e8ce833SSrujana Challa * 3095e8ce833SSrujana Challa * This register contain the per-queue miscellaneous interrupts. 3105e8ce833SSrujana Challa * 3115e8ce833SSrujana Challa */ 3125e8ce833SSrujana Challa union otx2_cptx_lf_misc_int { 3135e8ce833SSrujana Challa u64 u; 3145e8ce833SSrujana Challa struct otx2_cptx_lf_misc_int_s { 3155e8ce833SSrujana Challa u64 reserved_0:1; 3165e8ce833SSrujana Challa u64 nqerr:1; 3175e8ce833SSrujana Challa u64 irde:1; 3185e8ce833SSrujana Challa u64 nwrp:1; 3195e8ce833SSrujana Challa u64 reserved_4:1; 3205e8ce833SSrujana Challa u64 hwerr:1; 3215e8ce833SSrujana Challa u64 fault:1; 3225e8ce833SSrujana Challa u64 reserved_7_63:57; 3235e8ce833SSrujana Challa } s; 3245e8ce833SSrujana Challa }; 3255e8ce833SSrujana Challa 3265e8ce833SSrujana Challa /* 3275e8ce833SSrujana Challa * RVU_PFVF_BAR2 - cpt_lf_misc_int_ena_w1s 3285e8ce833SSrujana Challa * 3295e8ce833SSrujana Challa * This register sets interrupt enable bits. 3305e8ce833SSrujana Challa * 3315e8ce833SSrujana Challa */ 3325e8ce833SSrujana Challa union otx2_cptx_lf_misc_int_ena_w1s { 3335e8ce833SSrujana Challa u64 u; 3345e8ce833SSrujana Challa struct otx2_cptx_lf_misc_int_ena_w1s_s { 3355e8ce833SSrujana Challa u64 reserved_0:1; 3365e8ce833SSrujana Challa u64 nqerr:1; 3375e8ce833SSrujana Challa u64 irde:1; 3385e8ce833SSrujana Challa u64 nwrp:1; 3395e8ce833SSrujana Challa u64 reserved_4:1; 3405e8ce833SSrujana Challa u64 hwerr:1; 3415e8ce833SSrujana Challa u64 fault:1; 3425e8ce833SSrujana Challa u64 reserved_7_63:57; 3435e8ce833SSrujana Challa } s; 3445e8ce833SSrujana Challa }; 3455e8ce833SSrujana Challa 3465e8ce833SSrujana Challa /* 3475e8ce833SSrujana Challa * RVU_PFVF_BAR2 - cpt_lf_ctl 3485e8ce833SSrujana Challa * 3495e8ce833SSrujana Challa * This register configures the queue. 3505e8ce833SSrujana Challa * 3515e8ce833SSrujana Challa * When the queue is not execution-quiescent (see CPT_LF_INPROG[EENA,INFLIGHT]), 3525e8ce833SSrujana Challa * software must only write this register with [ENA]=0. 3535e8ce833SSrujana Challa */ 3545e8ce833SSrujana Challa union otx2_cptx_lf_ctl { 3555e8ce833SSrujana Challa u64 u; 3565e8ce833SSrujana Challa struct otx2_cptx_lf_ctl_s { 3575e8ce833SSrujana Challa u64 ena:1; 3585e8ce833SSrujana Challa u64 fc_ena:1; 3595e8ce833SSrujana Challa u64 fc_up_crossing:1; 3605e8ce833SSrujana Challa u64 reserved_3:1; 3615e8ce833SSrujana Challa u64 fc_hyst_bits:4; 3625e8ce833SSrujana Challa u64 reserved_8_63:56; 3635e8ce833SSrujana Challa } s; 3645e8ce833SSrujana Challa }; 3655e8ce833SSrujana Challa 3665e8ce833SSrujana Challa /* 3675e8ce833SSrujana Challa * RVU_PFVF_BAR2 - cpt_lf_done_wait 3685e8ce833SSrujana Challa * 3695e8ce833SSrujana Challa * This register specifies the per-queue interrupt coalescing settings. 3705e8ce833SSrujana Challa */ 3715e8ce833SSrujana Challa union otx2_cptx_lf_done_wait { 3725e8ce833SSrujana Challa u64 u; 3735e8ce833SSrujana Challa struct otx2_cptx_lf_done_wait_s { 3745e8ce833SSrujana Challa u64 num_wait:20; 3755e8ce833SSrujana Challa u64 reserved_20_31:12; 3765e8ce833SSrujana Challa u64 time_wait:16; 3775e8ce833SSrujana Challa u64 reserved_48_63:16; 3785e8ce833SSrujana Challa } s; 3795e8ce833SSrujana Challa }; 3805e8ce833SSrujana Challa 3815e8ce833SSrujana Challa /* 3825e8ce833SSrujana Challa * RVU_PFVF_BAR2 - cpt_lf_done 3835e8ce833SSrujana Challa * 3845e8ce833SSrujana Challa * This register contain the per-queue instruction done count. 3855e8ce833SSrujana Challa */ 3865e8ce833SSrujana Challa union otx2_cptx_lf_done { 3875e8ce833SSrujana Challa u64 u; 3885e8ce833SSrujana Challa struct otx2_cptx_lf_done_s { 3895e8ce833SSrujana Challa u64 done:20; 3905e8ce833SSrujana Challa u64 reserved_20_63:44; 3915e8ce833SSrujana Challa } s; 3925e8ce833SSrujana Challa }; 3935e8ce833SSrujana Challa 3945e8ce833SSrujana Challa /* 3955e8ce833SSrujana Challa * RVU_PFVF_BAR2 - cpt_lf_inprog 3965e8ce833SSrujana Challa * 3975e8ce833SSrujana Challa * These registers contain the per-queue instruction in flight registers. 3985e8ce833SSrujana Challa * 3995e8ce833SSrujana Challa */ 4005e8ce833SSrujana Challa union otx2_cptx_lf_inprog { 4015e8ce833SSrujana Challa u64 u; 4025e8ce833SSrujana Challa struct otx2_cptx_lf_inprog_s { 4035e8ce833SSrujana Challa u64 inflight:9; 4045e8ce833SSrujana Challa u64 reserved_9_15:7; 4055e8ce833SSrujana Challa u64 eena:1; 4065e8ce833SSrujana Challa u64 grp_drp:1; 4075e8ce833SSrujana Challa u64 reserved_18_30:13; 4085e8ce833SSrujana Challa u64 grb_partial:1; 4095e8ce833SSrujana Challa u64 grb_cnt:8; 4105e8ce833SSrujana Challa u64 gwb_cnt:8; 4115e8ce833SSrujana Challa u64 reserved_48_63:16; 4125e8ce833SSrujana Challa } s; 4135e8ce833SSrujana Challa }; 4145e8ce833SSrujana Challa 4155e8ce833SSrujana Challa /* 4165e8ce833SSrujana Challa * RVU_PFVF_BAR2 - cpt_lf_q_base 4175e8ce833SSrujana Challa * 4185e8ce833SSrujana Challa * CPT initializes these CSR fields to these values on any CPT_LF_Q_BASE write: 4195e8ce833SSrujana Challa * _ CPT_LF_Q_INST_PTR[XQ_XOR]=0. 4205e8ce833SSrujana Challa * _ CPT_LF_Q_INST_PTR[NQ_PTR]=2. 4215e8ce833SSrujana Challa * _ CPT_LF_Q_INST_PTR[DQ_PTR]=2. 4225e8ce833SSrujana Challa * _ CPT_LF_Q_GRP_PTR[XQ_XOR]=0. 4235e8ce833SSrujana Challa * _ CPT_LF_Q_GRP_PTR[NQ_PTR]=1. 4245e8ce833SSrujana Challa * _ CPT_LF_Q_GRP_PTR[DQ_PTR]=1. 4255e8ce833SSrujana Challa */ 4265e8ce833SSrujana Challa union otx2_cptx_lf_q_base { 4275e8ce833SSrujana Challa u64 u; 4285e8ce833SSrujana Challa struct otx2_cptx_lf_q_base_s { 4295e8ce833SSrujana Challa u64 fault:1; 4305e8ce833SSrujana Challa u64 reserved_1_6:6; 4315e8ce833SSrujana Challa u64 addr:46; 4325e8ce833SSrujana Challa u64 reserved_53_63:11; 4335e8ce833SSrujana Challa } s; 4345e8ce833SSrujana Challa }; 4355e8ce833SSrujana Challa 4365e8ce833SSrujana Challa /* 4375e8ce833SSrujana Challa * RVU_PFVF_BAR2 - cpt_lf_q_size 4385e8ce833SSrujana Challa * 4395e8ce833SSrujana Challa * CPT initializes these CSR fields to these values on any CPT_LF_Q_SIZE write: 4405e8ce833SSrujana Challa * _ CPT_LF_Q_INST_PTR[XQ_XOR]=0. 4415e8ce833SSrujana Challa * _ CPT_LF_Q_INST_PTR[NQ_PTR]=2. 4425e8ce833SSrujana Challa * _ CPT_LF_Q_INST_PTR[DQ_PTR]=2. 4435e8ce833SSrujana Challa * _ CPT_LF_Q_GRP_PTR[XQ_XOR]=0. 4445e8ce833SSrujana Challa * _ CPT_LF_Q_GRP_PTR[NQ_PTR]=1. 4455e8ce833SSrujana Challa * _ CPT_LF_Q_GRP_PTR[DQ_PTR]=1. 4465e8ce833SSrujana Challa */ 4475e8ce833SSrujana Challa union otx2_cptx_lf_q_size { 4485e8ce833SSrujana Challa u64 u; 4495e8ce833SSrujana Challa struct otx2_cptx_lf_q_size_s { 4505e8ce833SSrujana Challa u64 size_div40:15; 4515e8ce833SSrujana Challa u64 reserved_15_63:49; 4525e8ce833SSrujana Challa } s; 4535e8ce833SSrujana Challa }; 4545e8ce833SSrujana Challa 4555e8ce833SSrujana Challa /* 4565e8ce833SSrujana Challa * RVU_PF_BAR0 - cpt_af_lf_ctl 4575e8ce833SSrujana Challa * 4585e8ce833SSrujana Challa * This register configures queues. This register should be written only 4595e8ce833SSrujana Challa * when the queue is execution-quiescent (see CPT_LF_INPROG[INFLIGHT]). 4605e8ce833SSrujana Challa */ 4615e8ce833SSrujana Challa union otx2_cptx_af_lf_ctrl { 4625e8ce833SSrujana Challa u64 u; 4635e8ce833SSrujana Challa struct otx2_cptx_af_lf_ctrl_s { 4645e8ce833SSrujana Challa u64 pri:1; 4655e8ce833SSrujana Challa u64 reserved_1_8:8; 4665e8ce833SSrujana Challa u64 pf_func_inst:1; 4675e8ce833SSrujana Challa u64 cont_err:1; 4685e8ce833SSrujana Challa u64 reserved_11_15:5; 4695e8ce833SSrujana Challa u64 nixtx_en:1; 4705e8ce833SSrujana Challa u64 reserved_17_47:31; 4715e8ce833SSrujana Challa u64 grp:8; 4725e8ce833SSrujana Challa u64 reserved_56_63:8; 4735e8ce833SSrujana Challa } s; 4745e8ce833SSrujana Challa }; 4755e8ce833SSrujana Challa 4765e8ce833SSrujana Challa #endif /* __OTX2_CPT_HW_TYPES_H */ 477