1*a4b16dadSTom Zanussi /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */ 2*a4b16dadSTom Zanussi /* Copyright(c) 2014 - 2020 Intel Corporation */ 3*a4b16dadSTom Zanussi #ifndef __ICP_QAT_HAL_H 4*a4b16dadSTom Zanussi #define __ICP_QAT_HAL_H 5*a4b16dadSTom Zanussi #include "icp_qat_fw_loader_handle.h" 6*a4b16dadSTom Zanussi 7*a4b16dadSTom Zanussi enum hal_global_csr { 8*a4b16dadSTom Zanussi MISC_CONTROL = 0xA04, 9*a4b16dadSTom Zanussi ICP_RESET = 0xA0c, 10*a4b16dadSTom Zanussi ICP_GLOBAL_CLK_ENABLE = 0xA50 11*a4b16dadSTom Zanussi }; 12*a4b16dadSTom Zanussi 13*a4b16dadSTom Zanussi enum { 14*a4b16dadSTom Zanussi MISC_CONTROL_C4XXX = 0xAA0, 15*a4b16dadSTom Zanussi ICP_RESET_CPP0 = 0x938, 16*a4b16dadSTom Zanussi ICP_RESET_CPP1 = 0x93c, 17*a4b16dadSTom Zanussi ICP_GLOBAL_CLK_ENABLE_CPP0 = 0x964, 18*a4b16dadSTom Zanussi ICP_GLOBAL_CLK_ENABLE_CPP1 = 0x968 19*a4b16dadSTom Zanussi }; 20*a4b16dadSTom Zanussi 21*a4b16dadSTom Zanussi enum hal_ae_csr { 22*a4b16dadSTom Zanussi USTORE_ADDRESS = 0x000, 23*a4b16dadSTom Zanussi USTORE_DATA_LOWER = 0x004, 24*a4b16dadSTom Zanussi USTORE_DATA_UPPER = 0x008, 25*a4b16dadSTom Zanussi ALU_OUT = 0x010, 26*a4b16dadSTom Zanussi CTX_ARB_CNTL = 0x014, 27*a4b16dadSTom Zanussi CTX_ENABLES = 0x018, 28*a4b16dadSTom Zanussi CC_ENABLE = 0x01c, 29*a4b16dadSTom Zanussi CSR_CTX_POINTER = 0x020, 30*a4b16dadSTom Zanussi CTX_STS_INDIRECT = 0x040, 31*a4b16dadSTom Zanussi ACTIVE_CTX_STATUS = 0x044, 32*a4b16dadSTom Zanussi CTX_SIG_EVENTS_INDIRECT = 0x048, 33*a4b16dadSTom Zanussi CTX_SIG_EVENTS_ACTIVE = 0x04c, 34*a4b16dadSTom Zanussi CTX_WAKEUP_EVENTS_INDIRECT = 0x050, 35*a4b16dadSTom Zanussi LM_ADDR_0_INDIRECT = 0x060, 36*a4b16dadSTom Zanussi LM_ADDR_1_INDIRECT = 0x068, 37*a4b16dadSTom Zanussi LM_ADDR_2_INDIRECT = 0x0cc, 38*a4b16dadSTom Zanussi LM_ADDR_3_INDIRECT = 0x0d4, 39*a4b16dadSTom Zanussi INDIRECT_LM_ADDR_0_BYTE_INDEX = 0x0e0, 40*a4b16dadSTom Zanussi INDIRECT_LM_ADDR_1_BYTE_INDEX = 0x0e8, 41*a4b16dadSTom Zanussi INDIRECT_LM_ADDR_2_BYTE_INDEX = 0x10c, 42*a4b16dadSTom Zanussi INDIRECT_LM_ADDR_3_BYTE_INDEX = 0x114, 43*a4b16dadSTom Zanussi INDIRECT_T_INDEX = 0x0f8, 44*a4b16dadSTom Zanussi INDIRECT_T_INDEX_BYTE_INDEX = 0x0fc, 45*a4b16dadSTom Zanussi FUTURE_COUNT_SIGNAL_INDIRECT = 0x078, 46*a4b16dadSTom Zanussi TIMESTAMP_LOW = 0x0c0, 47*a4b16dadSTom Zanussi TIMESTAMP_HIGH = 0x0c4, 48*a4b16dadSTom Zanussi PROFILE_COUNT = 0x144, 49*a4b16dadSTom Zanussi SIGNATURE_ENABLE = 0x150, 50*a4b16dadSTom Zanussi AE_MISC_CONTROL = 0x160, 51*a4b16dadSTom Zanussi LOCAL_CSR_STATUS = 0x180, 52*a4b16dadSTom Zanussi }; 53*a4b16dadSTom Zanussi 54*a4b16dadSTom Zanussi enum fcu_csr { 55*a4b16dadSTom Zanussi FCU_CONTROL = 0x8c0, 56*a4b16dadSTom Zanussi FCU_STATUS = 0x8c4, 57*a4b16dadSTom Zanussi FCU_STATUS1 = 0x8c8, 58*a4b16dadSTom Zanussi FCU_DRAM_ADDR_LO = 0x8cc, 59*a4b16dadSTom Zanussi FCU_DRAM_ADDR_HI = 0x8d0, 60*a4b16dadSTom Zanussi FCU_RAMBASE_ADDR_HI = 0x8d4, 61*a4b16dadSTom Zanussi FCU_RAMBASE_ADDR_LO = 0x8d8 62*a4b16dadSTom Zanussi }; 63*a4b16dadSTom Zanussi 64*a4b16dadSTom Zanussi enum fcu_csr_4xxx { 65*a4b16dadSTom Zanussi FCU_CONTROL_4XXX = 0x1000, 66*a4b16dadSTom Zanussi FCU_STATUS_4XXX = 0x1004, 67*a4b16dadSTom Zanussi FCU_ME_BROADCAST_MASK_TYPE = 0x1008, 68*a4b16dadSTom Zanussi FCU_AE_LOADED_4XXX = 0x1010, 69*a4b16dadSTom Zanussi FCU_DRAM_ADDR_LO_4XXX = 0x1014, 70*a4b16dadSTom Zanussi FCU_DRAM_ADDR_HI_4XXX = 0x1018, 71*a4b16dadSTom Zanussi }; 72*a4b16dadSTom Zanussi 73*a4b16dadSTom Zanussi enum fcu_cmd { 74*a4b16dadSTom Zanussi FCU_CTRL_CMD_NOOP = 0, 75*a4b16dadSTom Zanussi FCU_CTRL_CMD_AUTH = 1, 76*a4b16dadSTom Zanussi FCU_CTRL_CMD_LOAD = 2, 77*a4b16dadSTom Zanussi FCU_CTRL_CMD_START = 3 78*a4b16dadSTom Zanussi }; 79*a4b16dadSTom Zanussi 80*a4b16dadSTom Zanussi enum fcu_sts { 81*a4b16dadSTom Zanussi FCU_STS_NO_STS = 0, 82*a4b16dadSTom Zanussi FCU_STS_VERI_DONE = 1, 83*a4b16dadSTom Zanussi FCU_STS_LOAD_DONE = 2, 84*a4b16dadSTom Zanussi FCU_STS_VERI_FAIL = 3, 85*a4b16dadSTom Zanussi FCU_STS_LOAD_FAIL = 4, 86*a4b16dadSTom Zanussi FCU_STS_BUSY = 5 87*a4b16dadSTom Zanussi }; 88*a4b16dadSTom Zanussi 89*a4b16dadSTom Zanussi #define ALL_AE_MASK 0xFFFFFFFF 90*a4b16dadSTom Zanussi #define UA_ECS (0x1 << 31) 91*a4b16dadSTom Zanussi #define ACS_ABO_BITPOS 31 92*a4b16dadSTom Zanussi #define ACS_ACNO 0x7 93*a4b16dadSTom Zanussi #define CE_ENABLE_BITPOS 0x8 94*a4b16dadSTom Zanussi #define CE_LMADDR_0_GLOBAL_BITPOS 16 95*a4b16dadSTom Zanussi #define CE_LMADDR_1_GLOBAL_BITPOS 17 96*a4b16dadSTom Zanussi #define CE_LMADDR_2_GLOBAL_BITPOS 22 97*a4b16dadSTom Zanussi #define CE_LMADDR_3_GLOBAL_BITPOS 23 98*a4b16dadSTom Zanussi #define CE_T_INDEX_GLOBAL_BITPOS 21 99*a4b16dadSTom Zanussi #define CE_NN_MODE_BITPOS 20 100*a4b16dadSTom Zanussi #define CE_REG_PAR_ERR_BITPOS 25 101*a4b16dadSTom Zanussi #define CE_BREAKPOINT_BITPOS 27 102*a4b16dadSTom Zanussi #define CE_CNTL_STORE_PARITY_ERROR_BITPOS 29 103*a4b16dadSTom Zanussi #define CE_INUSE_CONTEXTS_BITPOS 31 104*a4b16dadSTom Zanussi #define CE_NN_MODE (0x1 << CE_NN_MODE_BITPOS) 105*a4b16dadSTom Zanussi #define CE_INUSE_CONTEXTS (0x1 << CE_INUSE_CONTEXTS_BITPOS) 106*a4b16dadSTom Zanussi #define XCWE_VOLUNTARY (0x1) 107*a4b16dadSTom Zanussi #define LCS_STATUS (0x1) 108*a4b16dadSTom Zanussi #define MMC_SHARE_CS_BITPOS 2 109*a4b16dadSTom Zanussi #define WAKEUP_EVENT 0x10000 110*a4b16dadSTom Zanussi #define FCU_CTRL_BROADCAST_POS 0x4 111*a4b16dadSTom Zanussi #define FCU_CTRL_AE_POS 0x8 112*a4b16dadSTom Zanussi #define FCU_AUTH_STS_MASK 0x7 113*a4b16dadSTom Zanussi #define FCU_STS_DONE_POS 0x9 114*a4b16dadSTom Zanussi #define FCU_STS_AUTHFWLD_POS 0X8 115*a4b16dadSTom Zanussi #define FCU_LOADED_AE_POS 0x16 116*a4b16dadSTom Zanussi #define FW_AUTH_WAIT_PERIOD 10 117*a4b16dadSTom Zanussi #define FW_AUTH_MAX_RETRY 300 118*a4b16dadSTom Zanussi #define ICP_QAT_AE_OFFSET 0x20000 119*a4b16dadSTom Zanussi #define ICP_QAT_CAP_OFFSET (ICP_QAT_AE_OFFSET + 0x10000) 120*a4b16dadSTom Zanussi #define LOCAL_TO_XFER_REG_OFFSET 0x800 121*a4b16dadSTom Zanussi #define ICP_QAT_EP_OFFSET 0x3a000 122*a4b16dadSTom Zanussi #define ICP_QAT_EP_OFFSET_4XXX 0x200000 /* HI MMIO CSRs */ 123*a4b16dadSTom Zanussi #define ICP_QAT_AE_OFFSET_4XXX 0x600000 124*a4b16dadSTom Zanussi #define ICP_QAT_CAP_OFFSET_4XXX 0x640000 125*a4b16dadSTom Zanussi #define SET_CAP_CSR(handle, csr, val) \ 126*a4b16dadSTom Zanussi ADF_CSR_WR((handle)->hal_cap_g_ctl_csr_addr_v, csr, val) 127*a4b16dadSTom Zanussi #define GET_CAP_CSR(handle, csr) \ 128*a4b16dadSTom Zanussi ADF_CSR_RD((handle)->hal_cap_g_ctl_csr_addr_v, csr) 129*a4b16dadSTom Zanussi #define AE_CSR(handle, ae) \ 130*a4b16dadSTom Zanussi ((char __iomem *)(handle)->hal_cap_ae_local_csr_addr_v + ((ae) << 12)) 131*a4b16dadSTom Zanussi #define AE_CSR_ADDR(handle, ae, csr) (AE_CSR(handle, ae) + (0x3ff & (csr))) 132*a4b16dadSTom Zanussi #define SET_AE_CSR(handle, ae, csr, val) \ 133*a4b16dadSTom Zanussi ADF_CSR_WR(AE_CSR_ADDR(handle, ae, csr), 0, val) 134*a4b16dadSTom Zanussi #define GET_AE_CSR(handle, ae, csr) ADF_CSR_RD(AE_CSR_ADDR(handle, ae, csr), 0) 135*a4b16dadSTom Zanussi #define AE_XFER(handle, ae) \ 136*a4b16dadSTom Zanussi ((char __iomem *)(handle)->hal_cap_ae_xfer_csr_addr_v + ((ae) << 12)) 137*a4b16dadSTom Zanussi #define AE_XFER_ADDR(handle, ae, reg) (AE_XFER(handle, ae) + \ 138*a4b16dadSTom Zanussi (((reg) & 0xff) << 2)) 139*a4b16dadSTom Zanussi #define SET_AE_XFER(handle, ae, reg, val) \ 140*a4b16dadSTom Zanussi ADF_CSR_WR(AE_XFER_ADDR(handle, ae, reg), 0, val) 141*a4b16dadSTom Zanussi #define SRAM_WRITE(handle, addr, val) \ 142*a4b16dadSTom Zanussi ADF_CSR_WR((handle)->hal_sram_addr_v, addr, val) 143*a4b16dadSTom Zanussi #endif 144