xref: /linux/drivers/crypto/intel/qat/qat_common/icp_qat_hal.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
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