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_FW_PKE_
4*a4b16dadSTom Zanussi #define _ICP_QAT_FW_PKE_
5*a4b16dadSTom Zanussi 
6*a4b16dadSTom Zanussi #include "icp_qat_fw.h"
7*a4b16dadSTom Zanussi 
8*a4b16dadSTom Zanussi struct icp_qat_fw_req_hdr_pke_cd_pars {
9*a4b16dadSTom Zanussi 	__u64 content_desc_addr;
10*a4b16dadSTom Zanussi 	__u32 content_desc_resrvd;
11*a4b16dadSTom Zanussi 	__u32 func_id;
12*a4b16dadSTom Zanussi };
13*a4b16dadSTom Zanussi 
14*a4b16dadSTom Zanussi struct icp_qat_fw_req_pke_mid {
15*a4b16dadSTom Zanussi 	__u64 opaque;
16*a4b16dadSTom Zanussi 	__u64 src_data_addr;
17*a4b16dadSTom Zanussi 	__u64 dest_data_addr;
18*a4b16dadSTom Zanussi };
19*a4b16dadSTom Zanussi 
20*a4b16dadSTom Zanussi struct icp_qat_fw_req_pke_hdr {
21*a4b16dadSTom Zanussi 	__u8 resrvd1;
22*a4b16dadSTom Zanussi 	__u8 resrvd2;
23*a4b16dadSTom Zanussi 	__u8 service_type;
24*a4b16dadSTom Zanussi 	__u8 hdr_flags;
25*a4b16dadSTom Zanussi 	__u16 comn_req_flags;
26*a4b16dadSTom Zanussi 	__u16 resrvd4;
27*a4b16dadSTom Zanussi 	struct icp_qat_fw_req_hdr_pke_cd_pars cd_pars;
28*a4b16dadSTom Zanussi };
29*a4b16dadSTom Zanussi 
30*a4b16dadSTom Zanussi struct icp_qat_fw_pke_request {
31*a4b16dadSTom Zanussi 	struct icp_qat_fw_req_pke_hdr pke_hdr;
32*a4b16dadSTom Zanussi 	struct icp_qat_fw_req_pke_mid pke_mid;
33*a4b16dadSTom Zanussi 	__u8 output_param_count;
34*a4b16dadSTom Zanussi 	__u8 input_param_count;
35*a4b16dadSTom Zanussi 	__u16 resrvd1;
36*a4b16dadSTom Zanussi 	__u32 resrvd2;
37*a4b16dadSTom Zanussi 	__u64 next_req_adr;
38*a4b16dadSTom Zanussi };
39*a4b16dadSTom Zanussi 
40*a4b16dadSTom Zanussi struct icp_qat_fw_resp_pke_hdr {
41*a4b16dadSTom Zanussi 	__u8 resrvd1;
42*a4b16dadSTom Zanussi 	__u8 resrvd2;
43*a4b16dadSTom Zanussi 	__u8 response_type;
44*a4b16dadSTom Zanussi 	__u8 hdr_flags;
45*a4b16dadSTom Zanussi 	__u16 comn_resp_flags;
46*a4b16dadSTom Zanussi 	__u16 resrvd4;
47*a4b16dadSTom Zanussi };
48*a4b16dadSTom Zanussi 
49*a4b16dadSTom Zanussi struct icp_qat_fw_pke_resp {
50*a4b16dadSTom Zanussi 	struct icp_qat_fw_resp_pke_hdr pke_resp_hdr;
51*a4b16dadSTom Zanussi 	__u64 opaque;
52*a4b16dadSTom Zanussi 	__u64 src_data_addr;
53*a4b16dadSTom Zanussi 	__u64 dest_data_addr;
54*a4b16dadSTom Zanussi };
55*a4b16dadSTom Zanussi 
56*a4b16dadSTom Zanussi #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_BITPOS              7
57*a4b16dadSTom Zanussi #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_MASK                0x1
58*a4b16dadSTom Zanussi #define ICP_QAT_FW_PKE_RESP_PKE_STAT_GET(status_word) \
59*a4b16dadSTom Zanussi 	QAT_FIELD_GET(((status_word >> ICP_QAT_FW_COMN_ONE_BYTE_SHIFT) & \
60*a4b16dadSTom Zanussi 		ICP_QAT_FW_COMN_SINGLE_BYTE_MASK), \
61*a4b16dadSTom Zanussi 		QAT_COMN_RESP_PKE_STATUS_BITPOS, \
62*a4b16dadSTom Zanussi 		QAT_COMN_RESP_PKE_STATUS_MASK)
63*a4b16dadSTom Zanussi 
64*a4b16dadSTom Zanussi #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(hdr_t, val) \
65*a4b16dadSTom Zanussi 	QAT_FIELD_SET((hdr_t.hdr_flags), (val), \
66*a4b16dadSTom Zanussi 		ICP_QAT_FW_PKE_HDR_VALID_FLAG_BITPOS, \
67*a4b16dadSTom Zanussi 		ICP_QAT_FW_PKE_HDR_VALID_FLAG_MASK)
68*a4b16dadSTom Zanussi #endif
69