xref: /dpdk/drivers/common/qat/qat_adf/icp_qat_fw_comp.h (revision d2ab291ff964a1eff3efb9245ee1667cc386b959)
1b7691013SFiona Trahe /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2b7691013SFiona Trahe  * Copyright(c) 2015-2018 Intel Corporation
3b7691013SFiona Trahe  */
4b7691013SFiona Trahe #ifndef _ICP_QAT_FW_COMP_H_
5b7691013SFiona Trahe #define _ICP_QAT_FW_COMP_H_
6b7691013SFiona Trahe 
7b7691013SFiona Trahe #include "icp_qat_fw.h"
8b7691013SFiona Trahe 
9b7691013SFiona Trahe enum icp_qat_fw_comp_cmd_id {
10b7691013SFiona Trahe 	ICP_QAT_FW_COMP_CMD_STATIC = 0,
11b7691013SFiona Trahe 	/*!< Static Compress Request */
12b7691013SFiona Trahe 
13b7691013SFiona Trahe 	ICP_QAT_FW_COMP_CMD_DYNAMIC = 1,
14b7691013SFiona Trahe 	/*!< Dynamic Compress Request */
15b7691013SFiona Trahe 
16b7691013SFiona Trahe 	ICP_QAT_FW_COMP_CMD_DECOMPRESS = 2,
17b7691013SFiona Trahe 	/*!< Decompress Request */
18b7691013SFiona Trahe 
19b7691013SFiona Trahe 	ICP_QAT_FW_COMP_CMD_DELIMITER
20b7691013SFiona Trahe 	/**< Delimiter type */
21b7691013SFiona Trahe };
22b7691013SFiona Trahe 
23b7691013SFiona Trahe /**< Flag usage */
24b7691013SFiona Trahe 
25b7691013SFiona Trahe #define ICP_QAT_FW_COMP_STATELESS_SESSION 0
26b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
27b7691013SFiona Trahe  *  Flag representing that session is stateless
28b7691013SFiona Trahe  */
29b7691013SFiona Trahe 
30b7691013SFiona Trahe #define ICP_QAT_FW_COMP_STATEFUL_SESSION 1
31b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
32b7691013SFiona Trahe  *  Flag representing that session is stateful
33b7691013SFiona Trahe  */
34b7691013SFiona Trahe 
35b7691013SFiona Trahe #define ICP_QAT_FW_COMP_NOT_AUTO_SELECT_BEST 0
36b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
37b7691013SFiona Trahe  * Flag representing that autoselectbest is NOT used
38b7691013SFiona Trahe  */
39b7691013SFiona Trahe 
40b7691013SFiona Trahe #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST 1
41b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
42b7691013SFiona Trahe  * Flag representing that autoselectbest is used
43b7691013SFiona Trahe  */
44b7691013SFiona Trahe 
45b7691013SFiona Trahe #define ICP_QAT_FW_COMP_NOT_ENH_AUTO_SELECT_BEST 0
46b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
47b7691013SFiona Trahe  * Flag representing that enhanced autoselectbest is NOT used
48b7691013SFiona Trahe  */
49b7691013SFiona Trahe 
50b7691013SFiona Trahe #define ICP_QAT_FW_COMP_ENH_AUTO_SELECT_BEST 1
51b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
52b7691013SFiona Trahe  * Flag representing that enhanced autoselectbest is used
53b7691013SFiona Trahe  */
54b7691013SFiona Trahe 
55b7691013SFiona Trahe #define ICP_QAT_FW_COMP_NOT_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 0
56b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
57b7691013SFiona Trahe  * Flag representing that enhanced autoselectbest is NOT used
58b7691013SFiona Trahe  */
59b7691013SFiona Trahe 
60b7691013SFiona Trahe #define ICP_QAT_FW_COMP_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 1
61b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
62b7691013SFiona Trahe  * Flag representing that enhanced autoselectbest is used
63b7691013SFiona Trahe  */
64b7691013SFiona Trahe 
65b7691013SFiona Trahe #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_USED_AS_INTMD_BUF 1
66b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
67b7691013SFiona Trahe  * Flag representing secure RAM from being used as
68b7691013SFiona Trahe  * an intermediate buffer is DISABLED.
69b7691013SFiona Trahe  */
70b7691013SFiona Trahe 
71b7691013SFiona Trahe #define ICP_QAT_FW_COMP_ENABLE_SECURE_RAM_USED_AS_INTMD_BUF 0
72b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
73b7691013SFiona Trahe  * Flag representing secure RAM from being used as
74b7691013SFiona Trahe  * an intermediate buffer is ENABLED.
75b7691013SFiona Trahe  */
76b7691013SFiona Trahe 
77b7691013SFiona Trahe /**< Flag mask & bit position */
78b7691013SFiona Trahe 
79b7691013SFiona Trahe #define ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS 2
80b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
81b7691013SFiona Trahe  * Starting bit position for the session type
82b7691013SFiona Trahe  */
83b7691013SFiona Trahe 
84b7691013SFiona Trahe #define ICP_QAT_FW_COMP_SESSION_TYPE_MASK 0x1
85b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
86b7691013SFiona Trahe  * One bit mask used to determine the session type
87b7691013SFiona Trahe  */
88b7691013SFiona Trahe 
89b7691013SFiona Trahe #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS 3
90b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
91b7691013SFiona Trahe  * Starting bit position for auto select best
92b7691013SFiona Trahe  */
93b7691013SFiona Trahe 
94b7691013SFiona Trahe #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK 0x1
95b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
96b7691013SFiona Trahe  * One bit mask for auto select best
97b7691013SFiona Trahe  */
98b7691013SFiona Trahe 
99b7691013SFiona Trahe #define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS 4
100b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
101b7691013SFiona Trahe  * Starting bit position for enhanced auto select best
102b7691013SFiona Trahe  */
103b7691013SFiona Trahe 
104b7691013SFiona Trahe #define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK 0x1
105b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
106b7691013SFiona Trahe  * One bit mask for enhanced auto select best
107b7691013SFiona Trahe  */
108b7691013SFiona Trahe 
109b7691013SFiona Trahe #define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS 5
110b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
111b7691013SFiona Trahe  * Starting bit position for disabling type zero header write back
112b7691013SFiona Trahe  * when Enhanced autoselect best is enabled. If set firmware does
113b7691013SFiona Trahe  * not return type0 store block header, only copies src to dest.
114b7691013SFiona Trahe  * (if best output is Type0)
115b7691013SFiona Trahe  */
116b7691013SFiona Trahe 
117b7691013SFiona Trahe #define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK 0x1
118b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
119b7691013SFiona Trahe  * One bit mask for auto select best
120b7691013SFiona Trahe  */
121b7691013SFiona Trahe 
122b7691013SFiona Trahe #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS 7
123b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
124b7691013SFiona Trahe  * Starting bit position for flag used to disable secure ram from
125b7691013SFiona Trahe  *  being used as an intermediate buffer.
126b7691013SFiona Trahe  */
127b7691013SFiona Trahe 
128b7691013SFiona Trahe #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK 0x1
129b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
130b7691013SFiona Trahe  * One bit mask for disable secure ram for use as an intermediate
131b7691013SFiona Trahe  * buffer.
132b7691013SFiona Trahe  */
133b7691013SFiona Trahe 
134b7691013SFiona Trahe #define ICP_QAT_FW_COMP_FLAGS_BUILD(sesstype, autoselect, enhanced_asb,        \
135b7691013SFiona Trahe 				    ret_uncomp, secure_ram)                    \
136b7691013SFiona Trahe 	((((sesstype)&ICP_QAT_FW_COMP_SESSION_TYPE_MASK)                       \
137b7691013SFiona Trahe 	  << ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS) |                            \
138b7691013SFiona Trahe 	 (((autoselect)&ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)                 \
139b7691013SFiona Trahe 	  << ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS) |                        \
140b7691013SFiona Trahe 	 (((enhanced_asb)&ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK)      \
141b7691013SFiona Trahe 	  << ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS) |               \
142b7691013SFiona Trahe 	 (((ret_uncomp)&ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK)    \
143b7691013SFiona Trahe 	  << ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS) |           \
144b7691013SFiona Trahe 	 (((secure_ram)&ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK)  \
145b7691013SFiona Trahe 	  << ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS))
146b7691013SFiona Trahe 
147b7691013SFiona Trahe union icp_qat_fw_comp_req_hdr_cd_pars {
148b7691013SFiona Trahe 	/**< LWs 2-5 */
149b7691013SFiona Trahe 	struct {
150b7691013SFiona Trahe 		uint64_t content_desc_addr;
151b7691013SFiona Trahe 		/**< Address of the content descriptor */
152b7691013SFiona Trahe 
153b7691013SFiona Trahe 		uint16_t content_desc_resrvd1;
154b7691013SFiona Trahe 		/**< Content descriptor reserved field */
155b7691013SFiona Trahe 
156b7691013SFiona Trahe 		uint8_t content_desc_params_sz;
157b7691013SFiona Trahe 		/**< Size of the content descriptor parameters in quad words.
158b7691013SFiona Trahe 		 * These parameters describe the session setup configuration
159b7691013SFiona Trahe 		 * info for the slices that this request relies upon i.e.
160b7691013SFiona Trahe 		 * the configuration word and cipher key needed by the cipher
161b7691013SFiona Trahe 		 * slice if there is a request for cipher processing.
162b7691013SFiona Trahe 		 */
163b7691013SFiona Trahe 
164b7691013SFiona Trahe 		uint8_t content_desc_hdr_resrvd2;
165b7691013SFiona Trahe 		/**< Content descriptor reserved field */
166b7691013SFiona Trahe 
167b7691013SFiona Trahe 		uint32_t content_desc_resrvd3;
168b7691013SFiona Trahe 		/**< Content descriptor reserved field */
169b7691013SFiona Trahe 	} s;
170b7691013SFiona Trahe 
171b7691013SFiona Trahe 	struct {
172b7691013SFiona Trahe 		uint32_t comp_slice_cfg_word[ICP_QAT_FW_NUM_LONGWORDS_2];
173b7691013SFiona Trahe 		/* Compression Slice Config Word */
174b7691013SFiona Trahe 
175b7691013SFiona Trahe 		uint32_t content_desc_resrvd4;
176b7691013SFiona Trahe 		/**< Content descriptor reserved field */
177b7691013SFiona Trahe 
178b7691013SFiona Trahe 	} sl;
179b7691013SFiona Trahe 
180b7691013SFiona Trahe };
181b7691013SFiona Trahe 
182b7691013SFiona Trahe struct icp_qat_fw_comp_req_params {
183b7691013SFiona Trahe 	/**< LW 14 */
184b7691013SFiona Trahe 	uint32_t comp_len;
185b7691013SFiona Trahe 	/**< Size of input to process in bytes Note:  Only EOP requests can be
186b7691013SFiona Trahe 	 * odd for decompression. IA must set LSB to zero for odd sized
187b7691013SFiona Trahe 	 * intermediate inputs
188b7691013SFiona Trahe 	 */
189b7691013SFiona Trahe 
190b7691013SFiona Trahe 	/**< LW 15 */
191b7691013SFiona Trahe 	uint32_t out_buffer_sz;
192b7691013SFiona Trahe 	/**< Size of output buffer in bytes */
193b7691013SFiona Trahe 
194b7691013SFiona Trahe 	/**< LW 16 */
195b7691013SFiona Trahe 	uint32_t initial_crc32;
196b7691013SFiona Trahe 	/**< CRC of previously processed bytes */
197b7691013SFiona Trahe 
198b7691013SFiona Trahe 	/**< LW 17 */
199b7691013SFiona Trahe 	uint32_t initial_adler;
200b7691013SFiona Trahe 	/**< Adler of previously processed bytes */
201b7691013SFiona Trahe 
202b7691013SFiona Trahe 	/**< LW 18 */
203b7691013SFiona Trahe 	uint32_t req_par_flags;
204b7691013SFiona Trahe 
205b7691013SFiona Trahe 	/**< LW 19 */
206b7691013SFiona Trahe 	uint32_t rsrvd;
207b7691013SFiona Trahe };
208b7691013SFiona Trahe 
209b7691013SFiona Trahe #define ICP_QAT_FW_COMP_REQ_PARAM_FLAGS_BUILD(sop, eop, bfinal, cnv, cnvnr)    \
210b7691013SFiona Trahe 	((((sop)&ICP_QAT_FW_COMP_SOP_MASK) << ICP_QAT_FW_COMP_SOP_BITPOS) |    \
211b7691013SFiona Trahe 	 (((eop)&ICP_QAT_FW_COMP_EOP_MASK) << ICP_QAT_FW_COMP_EOP_BITPOS) |    \
212b7691013SFiona Trahe 	 (((bfinal)&ICP_QAT_FW_COMP_BFINAL_MASK)                               \
213b7691013SFiona Trahe 	  << ICP_QAT_FW_COMP_BFINAL_BITPOS) |                                  \
214b7691013SFiona Trahe 	 ((cnv & ICP_QAT_FW_COMP_CNV_MASK) << ICP_QAT_FW_COMP_CNV_BITPOS) |    \
215b7691013SFiona Trahe 	 ((cnvnr & ICP_QAT_FW_COMP_CNV_RECOVERY_MASK)                          \
216b7691013SFiona Trahe 	  << ICP_QAT_FW_COMP_CNV_RECOVERY_BITPOS))
217b7691013SFiona Trahe 
218b7691013SFiona Trahe #define ICP_QAT_FW_COMP_NOT_SOP 0
219b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
220b7691013SFiona Trahe  * Flag representing that a request is NOT Start of Packet
221b7691013SFiona Trahe  */
222b7691013SFiona Trahe 
223b7691013SFiona Trahe #define ICP_QAT_FW_COMP_SOP 1
224b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
225b7691013SFiona Trahe  * Flag representing that a request IS Start of Packet
226b7691013SFiona Trahe  */
227b7691013SFiona Trahe 
228b7691013SFiona Trahe #define ICP_QAT_FW_COMP_NOT_EOP 0
229b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
230b7691013SFiona Trahe  * Flag representing that a request is NOT Start of Packet
231b7691013SFiona Trahe  */
232b7691013SFiona Trahe 
233b7691013SFiona Trahe #define ICP_QAT_FW_COMP_EOP 1
234b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
235b7691013SFiona Trahe  * Flag representing that a request IS End of Packet
236b7691013SFiona Trahe  */
237b7691013SFiona Trahe 
238b7691013SFiona Trahe #define ICP_QAT_FW_COMP_NOT_BFINAL 0
239b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
240b7691013SFiona Trahe  * Flag representing to indicate firmware this is not the last block
241b7691013SFiona Trahe  */
242b7691013SFiona Trahe 
243b7691013SFiona Trahe #define ICP_QAT_FW_COMP_BFINAL 1
244b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
245b7691013SFiona Trahe  * Flag representing to indicate firmware this is the last block
246b7691013SFiona Trahe  */
247b7691013SFiona Trahe 
248b7691013SFiona Trahe #define ICP_QAT_FW_COMP_NO_CNV 0
249b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
250b7691013SFiona Trahe  * Flag indicating that NO cnv check is to be performed on the request
251b7691013SFiona Trahe  */
252b7691013SFiona Trahe 
253b7691013SFiona Trahe #define ICP_QAT_FW_COMP_CNV 1
254b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
255b7691013SFiona Trahe  * Flag indicating that a cnv check IS to be performed on the request
256b7691013SFiona Trahe  */
257b7691013SFiona Trahe 
258b7691013SFiona Trahe #define ICP_QAT_FW_COMP_NO_CNV_RECOVERY 0
259b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
260b7691013SFiona Trahe  * Flag indicating that NO cnv recovery is to be performed on the request
261b7691013SFiona Trahe  */
262b7691013SFiona Trahe 
263b7691013SFiona Trahe #define ICP_QAT_FW_COMP_CNV_RECOVERY 1
264b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
265b7691013SFiona Trahe  * Flag indicating that a cnv recovery is to be performed on the request
266b7691013SFiona Trahe  */
267b7691013SFiona Trahe 
268b7691013SFiona Trahe #define ICP_QAT_FW_COMP_SOP_BITPOS 0
269b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
270b7691013SFiona Trahe  * Starting bit position for SOP
271b7691013SFiona Trahe  */
272b7691013SFiona Trahe 
273b7691013SFiona Trahe #define ICP_QAT_FW_COMP_SOP_MASK 0x1
274b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
275b7691013SFiona Trahe  *  One bit mask used to determine SOP
276b7691013SFiona Trahe  */
277b7691013SFiona Trahe 
278b7691013SFiona Trahe #define ICP_QAT_FW_COMP_EOP_BITPOS 1
279b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
280b7691013SFiona Trahe  *  Starting bit position for EOP
281b7691013SFiona Trahe  */
282b7691013SFiona Trahe 
283b7691013SFiona Trahe #define ICP_QAT_FW_COMP_EOP_MASK 0x1
284b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
285b7691013SFiona Trahe  *  One bit mask used to determine EOP
286b7691013SFiona Trahe  */
287b7691013SFiona Trahe 
288b7691013SFiona Trahe #define ICP_QAT_FW_COMP_BFINAL_MASK 0x1
289b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
290b7691013SFiona Trahe  *  One bit mask for the bfinal bit
291b7691013SFiona Trahe  */
292b7691013SFiona Trahe 
293b7691013SFiona Trahe #define ICP_QAT_FW_COMP_BFINAL_BITPOS 6
294b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
295b7691013SFiona Trahe  *  Starting bit position for the bfinal bit
296b7691013SFiona Trahe  */
297b7691013SFiona Trahe 
298b7691013SFiona Trahe #define ICP_QAT_FW_COMP_CNV_MASK 0x1
299b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
300b7691013SFiona Trahe  * One bit mask for the CNV bit
301b7691013SFiona Trahe  */
302b7691013SFiona Trahe 
303b7691013SFiona Trahe #define ICP_QAT_FW_COMP_CNV_BITPOS 16
304b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
305b7691013SFiona Trahe  * Starting bit position for the CNV bit
306b7691013SFiona Trahe  */
307b7691013SFiona Trahe 
308b7691013SFiona Trahe #define ICP_QAT_FW_COMP_CNV_RECOVERY_MASK 0x1
309b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
310b7691013SFiona Trahe  * One bit mask for the CNV Recovery bit
311b7691013SFiona Trahe  */
312b7691013SFiona Trahe 
313b7691013SFiona Trahe #define ICP_QAT_FW_COMP_CNV_RECOVERY_BITPOS 17
314b7691013SFiona Trahe /**< @ingroup icp_qat_fw_comp
315b7691013SFiona Trahe  * Starting bit position for the CNV Recovery bit
316b7691013SFiona Trahe  */
317b7691013SFiona Trahe 
318b7691013SFiona Trahe struct icp_qat_fw_xlt_req_params {
319b7691013SFiona Trahe 	/**< LWs 20-21 */
320b7691013SFiona Trahe 	uint64_t inter_buff_ptr;
321b7691013SFiona Trahe 	/**< This field specifies the physical address of an intermediate
322b7691013SFiona Trahe 	 *  buffer SGL array. The array contains a pair of 64-bit
323b7691013SFiona Trahe 	 *  intermediate buffer pointers to SGL buffer descriptors, one pair
324b7691013SFiona Trahe 	 *  per CPM. Please refer to the CPM1.6 Firmware Interface HLD
325b7691013SFiona Trahe 	 *  specification for more details.
326b7691013SFiona Trahe 	 */
327b7691013SFiona Trahe };
328b7691013SFiona Trahe 
329b7691013SFiona Trahe 
330b7691013SFiona Trahe struct icp_qat_fw_comp_cd_hdr {
331b7691013SFiona Trahe 	/**< LW 24 */
332b7691013SFiona Trahe 	uint16_t ram_bank_flags;
333b7691013SFiona Trahe 	/**< Flags to show which ram banks to access */
334b7691013SFiona Trahe 
335b7691013SFiona Trahe 	uint8_t comp_cfg_offset;
336b7691013SFiona Trahe 	/**< Quad word offset from the content descriptor parameters address
337b7691013SFiona Trahe 	 * to the parameters for the compression processing
338b7691013SFiona Trahe 	 */
339b7691013SFiona Trahe 
340b7691013SFiona Trahe 	uint8_t next_curr_id;
341b7691013SFiona Trahe 	/**< This field combines the next and current id (each four bits) -
342b7691013SFiona Trahe 	 * the next id is the most significant nibble.
343b7691013SFiona Trahe 	 * Next Id:  Set to the next slice to pass the compressed data through.
344b7691013SFiona Trahe 	 * Set to ICP_QAT_FW_SLICE_DRAM_WR if the data is not to go through
345b7691013SFiona Trahe 	 * anymore slices after compression
346b7691013SFiona Trahe 	 * Current Id: Initialised with the compression slice type
347b7691013SFiona Trahe 	 */
348b7691013SFiona Trahe 
349b7691013SFiona Trahe 	/**< LW 25 */
350b7691013SFiona Trahe 	uint32_t resrvd;
351b7691013SFiona Trahe 	/**< LWs 26-27 */
352b7691013SFiona Trahe 
353b7691013SFiona Trahe 	uint64_t comp_state_addr;
354b7691013SFiona Trahe 	/**< Pointer to compression state */
355b7691013SFiona Trahe 
356b7691013SFiona Trahe 	/**< LWs 28-29 */
357b7691013SFiona Trahe 	uint64_t ram_banks_addr;
358b7691013SFiona Trahe 	/**< Pointer to banks */
359b7691013SFiona Trahe 
360b7691013SFiona Trahe };
361b7691013SFiona Trahe 
362b7691013SFiona Trahe 
363b7691013SFiona Trahe struct icp_qat_fw_xlt_cd_hdr {
364b7691013SFiona Trahe 	/**< LW 30 */
365b7691013SFiona Trahe 	uint16_t resrvd1;
366b7691013SFiona Trahe 	/**< Reserved field and assumed set to 0 */
367b7691013SFiona Trahe 
368b7691013SFiona Trahe 	uint8_t resrvd2;
369b7691013SFiona Trahe 	/**< Reserved field and assumed set to 0 */
370b7691013SFiona Trahe 
371b7691013SFiona Trahe 	uint8_t next_curr_id;
372b7691013SFiona Trahe 	/**< This field combines the next and current id (each four bits) -
373b7691013SFiona Trahe 	 * the next id is the most significant nibble.
374b7691013SFiona Trahe 	 * Next Id:  Set to the next slice to pass the translated data through.
375b7691013SFiona Trahe 	 * Set to ICP_QAT_FW_SLICE_DRAM_WR if the data is not to go through
376b7691013SFiona Trahe 	 * any more slices after compression
377b7691013SFiona Trahe 	 * Current Id: Initialised with the translation slice type
378b7691013SFiona Trahe 	 */
379b7691013SFiona Trahe 
380b7691013SFiona Trahe 	/**< LW 31 */
381b7691013SFiona Trahe 	uint32_t resrvd3;
382b7691013SFiona Trahe 	/**< Reserved and should be set to zero, needed for quadword
383b7691013SFiona Trahe 	 * alignment
384b7691013SFiona Trahe 	 */
385b7691013SFiona Trahe };
386b7691013SFiona Trahe 
387b7691013SFiona Trahe struct icp_qat_fw_comp_req {
388b7691013SFiona Trahe 	/**< LWs 0-1 */
389b7691013SFiona Trahe 	struct icp_qat_fw_comn_req_hdr comn_hdr;
390b7691013SFiona Trahe 	/**< Common request header - for Service Command Id,
391b7691013SFiona Trahe 	 * use service-specific Compression Command Id.
392b7691013SFiona Trahe 	 * Service Specific Flags - use Compression Command Flags
393b7691013SFiona Trahe 	 */
394b7691013SFiona Trahe 
395b7691013SFiona Trahe 	/**< LWs 2-5 */
396b7691013SFiona Trahe 	union icp_qat_fw_comp_req_hdr_cd_pars cd_pars;
397b7691013SFiona Trahe 	/**< Compression service-specific content descriptor field which points
398b7691013SFiona Trahe 	 * either to a content descriptor parameter block or contains the
399b7691013SFiona Trahe 	 * compression slice config word.
400b7691013SFiona Trahe 	 */
401b7691013SFiona Trahe 
402b7691013SFiona Trahe 	/**< LWs 6-13 */
403b7691013SFiona Trahe 	struct icp_qat_fw_comn_req_mid comn_mid;
404b7691013SFiona Trahe 	/**< Common request middle section */
405b7691013SFiona Trahe 
406b7691013SFiona Trahe 	/**< LWs 14-19 */
407b7691013SFiona Trahe 	struct icp_qat_fw_comp_req_params comp_pars;
408b7691013SFiona Trahe 	/**< Compression request Parameters block */
409b7691013SFiona Trahe 
410b7691013SFiona Trahe 	/**< LWs 20-21 */
411b7691013SFiona Trahe 	union {
412b7691013SFiona Trahe 		struct icp_qat_fw_xlt_req_params xlt_pars;
413b7691013SFiona Trahe 		/**< Translation request Parameters block */
414b7691013SFiona Trahe 		uint32_t resrvd1[ICP_QAT_FW_NUM_LONGWORDS_2];
415b7691013SFiona Trahe 		/**< Reserved if not used for translation */
416b7691013SFiona Trahe 
417b7691013SFiona Trahe 	} u1;
418b7691013SFiona Trahe 
419b7691013SFiona Trahe 	/**< LWs 22-23 */
420b7691013SFiona Trahe 	union {
421b7691013SFiona Trahe 		uint32_t resrvd2[ICP_QAT_FW_NUM_LONGWORDS_2];
422b7691013SFiona Trahe 		/**< Reserved - not used if Batch and Pack is disabled.*/
423b7691013SFiona Trahe 
424b7691013SFiona Trahe 		uint64_t bnp_res_table_addr;
425b7691013SFiona Trahe 		/**< A generic pointer to the unbounded list of
426b7691013SFiona Trahe 		 * icp_qat_fw_resp_comp_pars members. This pointer is only
427b7691013SFiona Trahe 		 * used when the Batch and Pack is enabled.
428b7691013SFiona Trahe 		 */
429b7691013SFiona Trahe 	} u3;
430b7691013SFiona Trahe 
431b7691013SFiona Trahe 	/**< LWs 24-29 */
432b7691013SFiona Trahe 	struct icp_qat_fw_comp_cd_hdr comp_cd_ctrl;
433b7691013SFiona Trahe 	/**< Compression request content descriptor control block header */
434b7691013SFiona Trahe 
435b7691013SFiona Trahe 	/**< LWs 30-31 */
436b7691013SFiona Trahe 	union {
437b7691013SFiona Trahe 		struct icp_qat_fw_xlt_cd_hdr xlt_cd_ctrl;
438b7691013SFiona Trahe 		/**< Translation request content descriptor
439b7691013SFiona Trahe 		 * control block header
440b7691013SFiona Trahe 		 */
441b7691013SFiona Trahe 
442b7691013SFiona Trahe 		uint32_t resrvd3[ICP_QAT_FW_NUM_LONGWORDS_2];
443b7691013SFiona Trahe 		/**< Reserved if not used for translation */
444b7691013SFiona Trahe 	} u2;
445b7691013SFiona Trahe };
446b7691013SFiona Trahe 
447b7691013SFiona Trahe struct icp_qat_fw_resp_comp_pars {
448b7691013SFiona Trahe 	/**< LW 4 */
449b7691013SFiona Trahe 	uint32_t input_byte_counter;
450b7691013SFiona Trahe 	/**< Input byte counter */
451b7691013SFiona Trahe 
452b7691013SFiona Trahe 	/**< LW 5 */
453b7691013SFiona Trahe 	uint32_t output_byte_counter;
454b7691013SFiona Trahe 	/**< Output byte counter */
455b7691013SFiona Trahe 
456b7691013SFiona Trahe 	/**< LW 6 & 7*/
457b7691013SFiona Trahe 	union {
458b7691013SFiona Trahe 		uint64_t curr_chksum;
459b7691013SFiona Trahe 		struct {
460b7691013SFiona Trahe 			/**< LW 6 */
461b7691013SFiona Trahe 			uint32_t curr_crc32;
462b7691013SFiona Trahe 			/**< LW 7 */
463b7691013SFiona Trahe 			uint32_t curr_adler_32;
464b7691013SFiona Trahe 		};
465b7691013SFiona Trahe 	};
466b7691013SFiona Trahe };
467b7691013SFiona Trahe 
468b7691013SFiona Trahe struct icp_qat_fw_comp_resp {
469b7691013SFiona Trahe 	/**< LWs 0-1 */
470b7691013SFiona Trahe 	struct icp_qat_fw_comn_resp_hdr comn_resp;
471b7691013SFiona Trahe 	/**< Common interface response format see icp_qat_fw.h */
472b7691013SFiona Trahe 
473b7691013SFiona Trahe 	/**< LWs 2-3 */
474b7691013SFiona Trahe 	uint64_t opaque_data;
475b7691013SFiona Trahe 	/**< Opaque data passed from the request to the response message */
476b7691013SFiona Trahe 
477b7691013SFiona Trahe 	/**< LWs 4-7 */
478b7691013SFiona Trahe 	struct icp_qat_fw_resp_comp_pars comp_resp_pars;
479b7691013SFiona Trahe 	/**< Common response params (checksums and byte counts) */
480b7691013SFiona Trahe };
481b7691013SFiona Trahe 
482*d2ab291fSAdam Dybkowski /* RAM Bank definitions */
483*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_FLAG_MASK 0x1
484*d2ab291fSAdam Dybkowski 
485*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_I_BITPOS 8
486*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_H_BITPOS 7
487*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_G_BITPOS 6
488*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_F_BITPOS 5
489*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_E_BITPOS 4
490*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_D_BITPOS 3
491*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_C_BITPOS 2
492*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_B_BITPOS 1
493*d2ab291fSAdam Dybkowski #define QAT_FW_COMP_BANK_A_BITPOS 0
494*d2ab291fSAdam Dybkowski 
495*d2ab291fSAdam Dybkowski /**
496*d2ab291fSAdam Dybkowski  *****************************************************************************
497*d2ab291fSAdam Dybkowski  * @ingroup icp_qat_fw_comp
498*d2ab291fSAdam Dybkowski  *      Definition of the ram bank enabled values
499*d2ab291fSAdam Dybkowski  * @description
500*d2ab291fSAdam Dybkowski  *      Enumeration used to define whether a ram bank is enabled or not
501*d2ab291fSAdam Dybkowski  *
502*d2ab291fSAdam Dybkowski  *****************************************************************************/
503*d2ab291fSAdam Dybkowski enum icp_qat_fw_comp_bank_enabled {
504*d2ab291fSAdam Dybkowski 	ICP_QAT_FW_COMP_BANK_DISABLED = 0, /*!< BANK DISABLED */
505*d2ab291fSAdam Dybkowski 	ICP_QAT_FW_COMP_BANK_ENABLED = 1,  /*!< BANK ENABLED */
506*d2ab291fSAdam Dybkowski 	ICP_QAT_FW_COMP_BANK_DELIMITER = 2 /**< Delimiter type */
507*d2ab291fSAdam Dybkowski };
508*d2ab291fSAdam Dybkowski 
509*d2ab291fSAdam Dybkowski /**
510*d2ab291fSAdam Dybkowski  ******************************************************************************
511*d2ab291fSAdam Dybkowski  * @ingroup icp_qat_fw_comp
512*d2ab291fSAdam Dybkowski  *
513*d2ab291fSAdam Dybkowski  * @description
514*d2ab291fSAdam Dybkowski  *      Build the ram bank flags in the compression content descriptor
515*d2ab291fSAdam Dybkowski  *      which specify which banks are used to save history
516*d2ab291fSAdam Dybkowski  *
517*d2ab291fSAdam Dybkowski  * @param bank_i_enable
518*d2ab291fSAdam Dybkowski  * @param bank_h_enable
519*d2ab291fSAdam Dybkowski  * @param bank_g_enable
520*d2ab291fSAdam Dybkowski  * @param bank_f_enable
521*d2ab291fSAdam Dybkowski  * @param bank_e_enable
522*d2ab291fSAdam Dybkowski  * @param bank_d_enable
523*d2ab291fSAdam Dybkowski  * @param bank_c_enable
524*d2ab291fSAdam Dybkowski  * @param bank_b_enable
525*d2ab291fSAdam Dybkowski  * @param bank_a_enable
526*d2ab291fSAdam Dybkowski  *****************************************************************************/
527*d2ab291fSAdam Dybkowski #define ICP_QAT_FW_COMP_RAM_FLAGS_BUILD(bank_i_enable,                         \
528*d2ab291fSAdam Dybkowski 					bank_h_enable,                         \
529*d2ab291fSAdam Dybkowski 					bank_g_enable,                         \
530*d2ab291fSAdam Dybkowski 					bank_f_enable,                         \
531*d2ab291fSAdam Dybkowski 					bank_e_enable,                         \
532*d2ab291fSAdam Dybkowski 					bank_d_enable,                         \
533*d2ab291fSAdam Dybkowski 					bank_c_enable,                         \
534*d2ab291fSAdam Dybkowski 					bank_b_enable,                         \
535*d2ab291fSAdam Dybkowski 					bank_a_enable)                         \
536*d2ab291fSAdam Dybkowski 	((((bank_i_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
537*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_I_BITPOS) |                                \
538*d2ab291fSAdam Dybkowski 	(((bank_h_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                          \
539*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_H_BITPOS) |                                \
540*d2ab291fSAdam Dybkowski 	(((bank_g_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                          \
541*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_G_BITPOS) |                                \
542*d2ab291fSAdam Dybkowski 	(((bank_f_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                          \
543*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_F_BITPOS) |                                \
544*d2ab291fSAdam Dybkowski 	(((bank_e_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                          \
545*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_E_BITPOS) |                                \
546*d2ab291fSAdam Dybkowski 	(((bank_d_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                          \
547*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_D_BITPOS) |                                \
548*d2ab291fSAdam Dybkowski 	(((bank_c_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                          \
549*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_C_BITPOS) |                                \
550*d2ab291fSAdam Dybkowski 	(((bank_b_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                          \
551*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_B_BITPOS) |                                \
552*d2ab291fSAdam Dybkowski 	(((bank_a_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                          \
553*d2ab291fSAdam Dybkowski 		<< QAT_FW_COMP_BANK_A_BITPOS))
554*d2ab291fSAdam Dybkowski 
555b7691013SFiona Trahe #endif
556