178ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */
278ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */
378ee8d1cSJulian Grajkowski /**
478ee8d1cSJulian Grajkowski  *****************************************************************************
578ee8d1cSJulian Grajkowski  * @file icp_qat_fw_comp.h
678ee8d1cSJulian Grajkowski  * @defgroup icp_qat_fw_comp ICP QAT FW Compression Service
778ee8d1cSJulian Grajkowski  *           Interface Definitions
878ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw
978ee8d1cSJulian Grajkowski  * @description
1078ee8d1cSJulian Grajkowski  *      This file documents structs used to provide the interface to the
1178ee8d1cSJulian Grajkowski  *      Compression QAT FW service
1278ee8d1cSJulian Grajkowski  *
1378ee8d1cSJulian Grajkowski  *****************************************************************************/
1478ee8d1cSJulian Grajkowski 
1578ee8d1cSJulian Grajkowski #ifndef _ICP_QAT_FW_COMP_H_
1678ee8d1cSJulian Grajkowski #define _ICP_QAT_FW_COMP_H_
1778ee8d1cSJulian Grajkowski 
1878ee8d1cSJulian Grajkowski /*
1978ee8d1cSJulian Grajkowski ******************************************************************************
2078ee8d1cSJulian Grajkowski * Include local header files
2178ee8d1cSJulian Grajkowski ******************************************************************************
2278ee8d1cSJulian Grajkowski */
2378ee8d1cSJulian Grajkowski #include "icp_qat_fw.h"
2478ee8d1cSJulian Grajkowski 
2578ee8d1cSJulian Grajkowski /**
2678ee8d1cSJulian Grajkowski  *****************************************************************************
2778ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
2878ee8d1cSJulian Grajkowski  *        Definition of the Compression command types
2978ee8d1cSJulian Grajkowski  * @description
3078ee8d1cSJulian Grajkowski  *        Enumeration which is used to indicate the ids of functions
3178ee8d1cSJulian Grajkowski  *        that are exposed by the Compression QAT FW service
3278ee8d1cSJulian Grajkowski  *
3378ee8d1cSJulian Grajkowski  *****************************************************************************/
3478ee8d1cSJulian Grajkowski 
3578ee8d1cSJulian Grajkowski typedef enum {
3678ee8d1cSJulian Grajkowski 	ICP_QAT_FW_COMP_CMD_STATIC = 0,
3778ee8d1cSJulian Grajkowski 	/*!< Static Compress Request */
3878ee8d1cSJulian Grajkowski 
3978ee8d1cSJulian Grajkowski 	ICP_QAT_FW_COMP_CMD_DYNAMIC = 1,
4078ee8d1cSJulian Grajkowski 	/*!< Dynamic Compress Request */
4178ee8d1cSJulian Grajkowski 
4278ee8d1cSJulian Grajkowski 	ICP_QAT_FW_COMP_CMD_DECOMPRESS = 2,
4378ee8d1cSJulian Grajkowski 	/*!< Decompress Request */
4478ee8d1cSJulian Grajkowski 
4578ee8d1cSJulian Grajkowski 	ICP_QAT_FW_COMP_CMD_DELIMITER
4678ee8d1cSJulian Grajkowski 	/**< Delimiter type */
4778ee8d1cSJulian Grajkowski 
4878ee8d1cSJulian Grajkowski } icp_qat_fw_comp_cmd_id_t;
4978ee8d1cSJulian Grajkowski 
5022cf89c9SPiotr Kasierski 
5178ee8d1cSJulian Grajkowski /*
5278ee8d1cSJulian Grajkowski  *  REQUEST FLAGS IN COMMON COMPRESSION
5378ee8d1cSJulian Grajkowski  *  In common message it is named as SERVICE SPECIFIC FLAGS.
5478ee8d1cSJulian Grajkowski  *
5578ee8d1cSJulian Grajkowski  *  + ===== + ------ + ------ + --- + -----  + ----- + ----- + -- + ---- + --- +
5678ee8d1cSJulian Grajkowski  *  |  Bit  | 15 - 8 |   7    |  6  |   5    |   4   |   3   |  2 |   1  |  0  |
5778ee8d1cSJulian Grajkowski  *  + ===== + ------ + -----  + --- + -----  + ----- + ----- + -- + ---- + --- +
5878ee8d1cSJulian Grajkowski  *  | Flags |  Rsvd  |  Dis.  |Resvd| Dis.   | Enh.  |Auto   |Sess| Rsvd | Rsvd|
5978ee8d1cSJulian Grajkowski  *  |       |  Bits  | secure |  =0 | Type0  | ASB   |Select |Type| = 0  | = 0 |
6078ee8d1cSJulian Grajkowski  *  |       |  = 0   |RAM use |     | Header |       |Best   |    |      |     |
6178ee8d1cSJulian Grajkowski  *  |       |        |as intmd|     |        |       |       |    |      |     |
6278ee8d1cSJulian Grajkowski  *  |       |        |  buf   |     |        |       |       |    |      |     |
6378ee8d1cSJulian Grajkowski  *  + ===== + ------ + -----  + --- + ------ + ----- + ----- + -- + ---- + --- +
64a977168cSMichal Gulbicki  * Note: For QAT 2.0 Disable Secure Ram, DisType0 Header and Enhanced ASB bits
65a977168cSMichal Gulbicki  * are don't care. i.e., these features are removed from QAT 2.0.
6678ee8d1cSJulian Grajkowski  */
6778ee8d1cSJulian Grajkowski 
6822cf89c9SPiotr Kasierski 
6922cf89c9SPiotr Kasierski /**< Flag usage */
7078ee8d1cSJulian Grajkowski 
7178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_STATELESS_SESSION 0
7278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
7378ee8d1cSJulian Grajkowski  * Flag representing that session is stateless */
7478ee8d1cSJulian Grajkowski 
7578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_STATEFUL_SESSION 1
7678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
7778ee8d1cSJulian Grajkowski  * Flag representing that session is stateful  */
7878ee8d1cSJulian Grajkowski 
7978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_NOT_AUTO_SELECT_BEST 0
8078ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
8178ee8d1cSJulian Grajkowski  * Flag representing that autoselectbest is NOT used */
8278ee8d1cSJulian Grajkowski 
8378ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST 1
8478ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
8578ee8d1cSJulian Grajkowski  * Flag representing that autoselectbest is used */
8678ee8d1cSJulian Grajkowski 
8778ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_NOT_ENH_AUTO_SELECT_BEST 0
8878ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
8978ee8d1cSJulian Grajkowski  * Flag representing that enhanced autoselectbest is NOT used */
9078ee8d1cSJulian Grajkowski 
9178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_ENH_AUTO_SELECT_BEST 1
9278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
9378ee8d1cSJulian Grajkowski  * Flag representing that enhanced autoselectbest is used */
9478ee8d1cSJulian Grajkowski 
9578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_NOT_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 0
9678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
9778ee8d1cSJulian Grajkowski  * Flag representing that enhanced autoselectbest is NOT used */
9878ee8d1cSJulian Grajkowski 
9978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 1
10078ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
10178ee8d1cSJulian Grajkowski  * Flag representing that enhanced autoselectbest is used */
10278ee8d1cSJulian Grajkowski 
10378ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_USED_AS_INTMD_BUF 1
10478ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
10578ee8d1cSJulian Grajkowski  * Flag representing secure RAM from being used as
10678ee8d1cSJulian Grajkowski  * an intermediate buffer is DISABLED.  */
10778ee8d1cSJulian Grajkowski 
10878ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_ENABLE_SECURE_RAM_USED_AS_INTMD_BUF 0
10978ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
11078ee8d1cSJulian Grajkowski  * Flag representing secure RAM from being used as
11178ee8d1cSJulian Grajkowski  * an intermediate buffer is ENABLED.  */
11278ee8d1cSJulian Grajkowski 
11322cf89c9SPiotr Kasierski /**< Flag mask & bit position */
11478ee8d1cSJulian Grajkowski 
11578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS 2
11678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
11778ee8d1cSJulian Grajkowski  * Starting bit position for the session type */
11878ee8d1cSJulian Grajkowski 
11978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_SESSION_TYPE_MASK 0x1
12078ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
12178ee8d1cSJulian Grajkowski  * One bit mask used to determine the session type */
12278ee8d1cSJulian Grajkowski 
12378ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS 3
12478ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
12578ee8d1cSJulian Grajkowski  * Starting bit position for auto select best */
12678ee8d1cSJulian Grajkowski 
12778ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK 0x1
12878ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
12978ee8d1cSJulian Grajkowski  * One bit mask for auto select best */
13078ee8d1cSJulian Grajkowski 
13178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS 4
13278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
13378ee8d1cSJulian Grajkowski  * Starting bit position for enhanced auto select best */
13478ee8d1cSJulian Grajkowski 
13578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK 0x1
13678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
13778ee8d1cSJulian Grajkowski  * One bit mask for enhanced auto select best */
13878ee8d1cSJulian Grajkowski 
13978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS 5
14078ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
14178ee8d1cSJulian Grajkowski  * Starting bit position for disabling type zero header write back
14278ee8d1cSJulian Grajkowski    when Enhanced autoselect best is enabled. If set firmware does
14378ee8d1cSJulian Grajkowski    not return type0 store block header, only copies src to dest.
14478ee8d1cSJulian Grajkowski    (if best output is Type0) */
14578ee8d1cSJulian Grajkowski 
14678ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK 0x1
14778ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
14878ee8d1cSJulian Grajkowski  * One bit mask for auto select best */
14978ee8d1cSJulian Grajkowski 
15078ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS 7
15178ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
15278ee8d1cSJulian Grajkowski  * Starting bit position for flag used to disable secure ram from
15322cf89c9SPiotr Kasierski    being used as an intermediate buffer.  */
15478ee8d1cSJulian Grajkowski 
15578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK 0x1
15678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
15778ee8d1cSJulian Grajkowski  * One bit mask for disable secure ram for use as an intermediate
15878ee8d1cSJulian Grajkowski    buffer.  */
15978ee8d1cSJulian Grajkowski 
16078ee8d1cSJulian Grajkowski /**
16178ee8d1cSJulian Grajkowski  ******************************************************************************
16278ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
16378ee8d1cSJulian Grajkowski  *
16478ee8d1cSJulian Grajkowski  * @description
16578ee8d1cSJulian Grajkowski  * Macro used for the generation of the command flags for Compression Request.
16678ee8d1cSJulian Grajkowski  * This should always be used for the generation of the flags. No direct sets or
16778ee8d1cSJulian Grajkowski  * masks should be performed on the flags data
16878ee8d1cSJulian Grajkowski  *
16978ee8d1cSJulian Grajkowski  * @param sesstype         Session Type
17078ee8d1cSJulian Grajkowski  * @param autoselect       AutoSelectBest
17178ee8d1cSJulian Grajkowski  * @enhanced_asb           Enhanced AutoSelectBest
17278ee8d1cSJulian Grajkowski  * @ret_uncomp             RetUnCompressed
17378ee8d1cSJulian Grajkowski  * @secure_ram             Secure Ram usage
17478ee8d1cSJulian Grajkowski  *
17522cf89c9SPiotr Kasierski  ******************************************************************************/
17678ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_FLAGS_BUILD(                                           \
17778ee8d1cSJulian Grajkowski     sesstype, autoselect, enhanced_asb, ret_uncomp, secure_ram)                \
17878ee8d1cSJulian Grajkowski 	(((sesstype & ICP_QAT_FW_COMP_SESSION_TYPE_MASK)                       \
17978ee8d1cSJulian Grajkowski 	  << ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS) |                            \
18078ee8d1cSJulian Grajkowski 	 ((autoselect & ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)                 \
18178ee8d1cSJulian Grajkowski 	  << ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS) |                        \
18278ee8d1cSJulian Grajkowski 	 ((enhanced_asb & ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK)      \
18378ee8d1cSJulian Grajkowski 	  << ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS) |               \
18478ee8d1cSJulian Grajkowski 	 ((ret_uncomp & ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK)    \
18578ee8d1cSJulian Grajkowski 	  << ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS) |           \
18678ee8d1cSJulian Grajkowski 	 ((secure_ram & ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK)  \
18778ee8d1cSJulian Grajkowski 	  << ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS))
18878ee8d1cSJulian Grajkowski 
18978ee8d1cSJulian Grajkowski /**
19078ee8d1cSJulian Grajkowski ******************************************************************************
19178ee8d1cSJulian Grajkowski * @ingroup icp_qat_fw_comp
19278ee8d1cSJulian Grajkowski *
19378ee8d1cSJulian Grajkowski * @description
194a977168cSMichal Gulbicki * Macro used for the generation of the command flags for Compression Request.
195a977168cSMichal Gulbicki * This should always be used for the generation of the flags. No direct sets or
196a977168cSMichal Gulbicki * masks should be performed on the flags data
197a977168cSMichal Gulbicki *
198a977168cSMichal Gulbicki * @param sesstype         Session Type
199a977168cSMichal Gulbicki * @param autoselect       AutoSelectBest
200a977168cSMichal Gulbicki *                         Selects between compressed and uncompressed output.
201a977168cSMichal Gulbicki *                         No distinction made between static and dynamic
202a977168cSMichal Gulbicki *                         compressed data.
203a977168cSMichal Gulbicki *
204a977168cSMichal Gulbicki *********************************************************************************/
205a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_20_FLAGS_BUILD(sesstype, autoselect)                   \
206a977168cSMichal Gulbicki 	(((sesstype & ICP_QAT_FW_COMP_SESSION_TYPE_MASK)                       \
207a977168cSMichal Gulbicki 	  << ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS) |                            \
208a977168cSMichal Gulbicki 	 ((autoselect & ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)                 \
209a977168cSMichal Gulbicki 	  << ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS))
210a977168cSMichal Gulbicki 
211a977168cSMichal Gulbicki /**
212a977168cSMichal Gulbicki  ******************************************************************************
213a977168cSMichal Gulbicki  * @ingroup icp_qat_fw_comp
214a977168cSMichal Gulbicki  *
215a977168cSMichal Gulbicki  * @description
21678ee8d1cSJulian Grajkowski  *        Macro for extraction of the session type bit
21778ee8d1cSJulian Grajkowski  *
21878ee8d1cSJulian Grajkowski  * @param flags        Flags to extract the session type bit from
21978ee8d1cSJulian Grajkowski  *
22022cf89c9SPiotr Kasierski  *****************************************************************************/
22178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_SESSION_TYPE_GET(flags)                                \
22278ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
22378ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS,                     \
22478ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_SESSION_TYPE_MASK)
22578ee8d1cSJulian Grajkowski 
22678ee8d1cSJulian Grajkowski /**
22778ee8d1cSJulian Grajkowski  ******************************************************************************
22878ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
22978ee8d1cSJulian Grajkowski  *
23078ee8d1cSJulian Grajkowski  * @description
23178ee8d1cSJulian Grajkowski  *        Macro for extraction of the autoSelectBest bit
23278ee8d1cSJulian Grajkowski  *
23378ee8d1cSJulian Grajkowski  * @param flags        Flags to extract the autoSelectBest bit from
23478ee8d1cSJulian Grajkowski  *
23522cf89c9SPiotr Kasierski  *****************************************************************************/
23678ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_GET(flags)                            \
23778ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
23878ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS,                 \
23978ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)
24078ee8d1cSJulian Grajkowski 
24178ee8d1cSJulian Grajkowski /**
24278ee8d1cSJulian Grajkowski  ******************************************************************************
24378ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
24478ee8d1cSJulian Grajkowski  *
24578ee8d1cSJulian Grajkowski  * @description
24678ee8d1cSJulian Grajkowski  *        Macro for extraction of the enhanced asb bit
24778ee8d1cSJulian Grajkowski  *
24878ee8d1cSJulian Grajkowski  * @param flags        Flags to extract the enhanced asb bit from
24978ee8d1cSJulian Grajkowski  *
25022cf89c9SPiotr Kasierski  *****************************************************************************/
25178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_EN_ASB_GET(flags)                                      \
25278ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
25378ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS,        \
25478ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK)
25578ee8d1cSJulian Grajkowski 
25678ee8d1cSJulian Grajkowski /**
25778ee8d1cSJulian Grajkowski  ******************************************************************************
25878ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
25978ee8d1cSJulian Grajkowski  *
26078ee8d1cSJulian Grajkowski  * @description
26178ee8d1cSJulian Grajkowski  *        Macro for extraction of the RetUncomp bit
26278ee8d1cSJulian Grajkowski  *
26378ee8d1cSJulian Grajkowski  * @param flags        Flags to extract the Ret Uncomp bit from
26478ee8d1cSJulian Grajkowski  *
26522cf89c9SPiotr Kasierski  *****************************************************************************/
26678ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_RET_UNCOMP_GET(flags)                                  \
26778ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
26878ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS,    \
26978ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK)
27078ee8d1cSJulian Grajkowski 
27178ee8d1cSJulian Grajkowski /**
27278ee8d1cSJulian Grajkowski  ******************************************************************************
27378ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
27478ee8d1cSJulian Grajkowski  *
27578ee8d1cSJulian Grajkowski  * @description
27678ee8d1cSJulian Grajkowski  *        Macro for extraction of the Secure Ram usage bit
27778ee8d1cSJulian Grajkowski  *
27878ee8d1cSJulian Grajkowski  * @param flags        Flags to extract the Secure Ram usage from
27978ee8d1cSJulian Grajkowski  *
28022cf89c9SPiotr Kasierski  *****************************************************************************/
28178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_SECURE_RAM_USE_GET(flags)                              \
28278ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
28378ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS,  \
28478ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK)
28578ee8d1cSJulian Grajkowski 
28678ee8d1cSJulian Grajkowski /**
28722cf89c9SPiotr Kasierski  *****************************************************************************
28878ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
28978ee8d1cSJulian Grajkowski  *        Definition of the compression header cd pars block
29078ee8d1cSJulian Grajkowski  * @description
29178ee8d1cSJulian Grajkowski  *      Definition of the compression processing cd pars block.
29278ee8d1cSJulian Grajkowski  *      The structure is a service-specific implementation of the common
29378ee8d1cSJulian Grajkowski  *      structure.
29422cf89c9SPiotr Kasierski  *****************************************************************************/
29578ee8d1cSJulian Grajkowski typedef union icp_qat_fw_comp_req_hdr_cd_pars_s {
29678ee8d1cSJulian Grajkowski 	/**< LWs 2-5 */
29778ee8d1cSJulian Grajkowski 	struct {
29878ee8d1cSJulian Grajkowski 		uint64_t content_desc_addr;
29978ee8d1cSJulian Grajkowski 		/**< Address of the content descriptor */
30078ee8d1cSJulian Grajkowski 
30178ee8d1cSJulian Grajkowski 		uint16_t content_desc_resrvd1;
30278ee8d1cSJulian Grajkowski 		/**< Content descriptor reserved field */
30378ee8d1cSJulian Grajkowski 
30478ee8d1cSJulian Grajkowski 		uint8_t content_desc_params_sz;
30578ee8d1cSJulian Grajkowski 		/**< Size of the content descriptor parameters in quad words.
30622cf89c9SPiotr Kasierski 		 * These parameters describe the session setup configuration
30722cf89c9SPiotr Kasierski 		 * info for the slices that this request relies upon i.e. the
30822cf89c9SPiotr Kasierski 		 * configuration word and cipher key needed by the cipher slice
30922cf89c9SPiotr Kasierski 		 * if there is a request for cipher processing. */
31078ee8d1cSJulian Grajkowski 
31178ee8d1cSJulian Grajkowski 		uint8_t content_desc_hdr_resrvd2;
31278ee8d1cSJulian Grajkowski 		/**< Content descriptor reserved field */
31378ee8d1cSJulian Grajkowski 
31478ee8d1cSJulian Grajkowski 		uint32_t content_desc_resrvd3;
31578ee8d1cSJulian Grajkowski 		/**< Content descriptor reserved field */
31678ee8d1cSJulian Grajkowski 	} s;
31778ee8d1cSJulian Grajkowski 
31878ee8d1cSJulian Grajkowski 	struct {
31978ee8d1cSJulian Grajkowski 		uint32_t comp_slice_cfg_word[ICP_QAT_FW_NUM_LONGWORDS_2];
32078ee8d1cSJulian Grajkowski 		/* Compression Slice Config Word */
32178ee8d1cSJulian Grajkowski 
32278ee8d1cSJulian Grajkowski 		uint32_t content_desc_resrvd4;
32378ee8d1cSJulian Grajkowski 		/**< Content descriptor reserved field */
32422cf89c9SPiotr Kasierski 
32578ee8d1cSJulian Grajkowski 	} sl;
32678ee8d1cSJulian Grajkowski 
32778ee8d1cSJulian Grajkowski } icp_qat_fw_comp_req_hdr_cd_pars_t;
32878ee8d1cSJulian Grajkowski 
32978ee8d1cSJulian Grajkowski /**
33022cf89c9SPiotr Kasierski  *****************************************************************************
33178ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
33278ee8d1cSJulian Grajkowski  *        Definition of the compression request parameters block
33378ee8d1cSJulian Grajkowski  * @description
33478ee8d1cSJulian Grajkowski  *      Definition of the compression processing request parameters block.
33578ee8d1cSJulian Grajkowski  *      The structure below forms part of the Compression + Translation
33622cf89c9SPiotr Kasierski  *      Parameters block spanning LWs 14-23, thus differing from the common
33778ee8d1cSJulian Grajkowski  *      base Parameters block structure. Unused fields must be set to 0.
33878ee8d1cSJulian Grajkowski  *
33922cf89c9SPiotr Kasierski  *****************************************************************************/
34078ee8d1cSJulian Grajkowski typedef struct icp_qat_fw_comp_req_params_s {
34178ee8d1cSJulian Grajkowski 	/**< LW 14 */
34278ee8d1cSJulian Grajkowski 	uint32_t comp_len;
34378ee8d1cSJulian Grajkowski 	/**< Size of input to process in bytes Note:  Only EOP requests can be
34422cf89c9SPiotr Kasierski 	 * odd for decompression. IA must set LSB to zero for odd sized
34522cf89c9SPiotr Kasierski 	 * intermediate inputs */
34678ee8d1cSJulian Grajkowski 
34778ee8d1cSJulian Grajkowski 	/**< LW 15 */
34878ee8d1cSJulian Grajkowski 	uint32_t out_buffer_sz;
34978ee8d1cSJulian Grajkowski 	/**< Size of output buffer in bytes */
35078ee8d1cSJulian Grajkowski 
35178ee8d1cSJulian Grajkowski 	/**< LW 16 */
35278ee8d1cSJulian Grajkowski 	union {
35378ee8d1cSJulian Grajkowski 		struct {
35478ee8d1cSJulian Grajkowski 			/** LW 16 */
35578ee8d1cSJulian Grajkowski 			uint32_t initial_crc32;
35678ee8d1cSJulian Grajkowski 			/**< CRC for processed bytes (input byte count) */
35778ee8d1cSJulian Grajkowski 
35878ee8d1cSJulian Grajkowski 			/** LW 17 */
35978ee8d1cSJulian Grajkowski 			uint32_t initial_adler;
36078ee8d1cSJulian Grajkowski 			/**< Adler for processed bytes (input byte count) */
36178ee8d1cSJulian Grajkowski 		} legacy;
36278ee8d1cSJulian Grajkowski 
36378ee8d1cSJulian Grajkowski 		/** LW 16-17 */
36478ee8d1cSJulian Grajkowski 		uint64_t crc_data_addr;
36578ee8d1cSJulian Grajkowski 		/**< CRC data structure pointer */
36678ee8d1cSJulian Grajkowski 	} crc;
36778ee8d1cSJulian Grajkowski 
36822cf89c9SPiotr Kasierski 	/**< LW 18 */
36978ee8d1cSJulian Grajkowski 	uint32_t req_par_flags;
37078ee8d1cSJulian Grajkowski 
37122cf89c9SPiotr Kasierski 	/**< LW 19 */
37278ee8d1cSJulian Grajkowski 	uint32_t rsrvd;
37378ee8d1cSJulian Grajkowski 
37478ee8d1cSJulian Grajkowski } icp_qat_fw_comp_req_params_t;
37578ee8d1cSJulian Grajkowski 
37678ee8d1cSJulian Grajkowski /**
37778ee8d1cSJulian Grajkowski  ******************************************************************************
37878ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
37978ee8d1cSJulian Grajkowski  *
38078ee8d1cSJulian Grajkowski  * @description
38178ee8d1cSJulian Grajkowski  * Macro used for the generation of the request parameter flags.
38278ee8d1cSJulian Grajkowski  * This should always be used for the generation of the flags. No direct sets or
38378ee8d1cSJulian Grajkowski  * masks should be performed on the flags data
38478ee8d1cSJulian Grajkowski  *
38578ee8d1cSJulian Grajkowski  * @param sop                SOP Flag, 0 restore, 1 don't restore
38678ee8d1cSJulian Grajkowski  * @param eop                EOP Flag, 0 restore, 1 don't restore
38778ee8d1cSJulian Grajkowski  * @param bfinal             Set bfinal in this block or not
38878ee8d1cSJulian Grajkowski  * @param cnv                Whether internal CNV check is to be performed
38978ee8d1cSJulian Grajkowski  *                            * ICP_QAT_FW_COMP_NO_CNV
39078ee8d1cSJulian Grajkowski  *                            * ICP_QAT_FW_COMP_CNV
39178ee8d1cSJulian Grajkowski  * @param cnvnr              Whether internal CNV recovery is to be performed
39278ee8d1cSJulian Grajkowski  *                            * ICP_QAT_FW_COMP_NO_CNV_RECOVERY
39378ee8d1cSJulian Grajkowski  *                            * ICP_QAT_FW_COMP_CNV_RECOVERY
39422cf89c9SPiotr Kasierski  * @param cnvdfx             Whether CNV error injection is to be performed
39522cf89c9SPiotr Kasierski  *                            * ICP_QAT_FW_COMP_NO_CNV_DFX
39622cf89c9SPiotr Kasierski  *                            * ICP_QAT_FW_COMP_CNV_DFX
39778ee8d1cSJulian Grajkowski  * @param crc                CRC Mode Flag - 0 legacy, 1 crc data struct
39878ee8d1cSJulian Grajkowski  *****************************************************************************/
39978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_REQ_PARAM_FLAGS_BUILD(                                 \
400a977168cSMichal Gulbicki     sop, eop, bfinal, cnv, cnvnr, cnvdfx, crc)                                 \
40178ee8d1cSJulian Grajkowski 	(((sop & ICP_QAT_FW_COMP_SOP_MASK) << ICP_QAT_FW_COMP_SOP_BITPOS) |    \
40278ee8d1cSJulian Grajkowski 	 ((eop & ICP_QAT_FW_COMP_EOP_MASK) << ICP_QAT_FW_COMP_EOP_BITPOS) |    \
40378ee8d1cSJulian Grajkowski 	 ((bfinal & ICP_QAT_FW_COMP_BFINAL_MASK)                               \
40478ee8d1cSJulian Grajkowski 	  << ICP_QAT_FW_COMP_BFINAL_BITPOS) |                                  \
40578ee8d1cSJulian Grajkowski 	 ((cnv & ICP_QAT_FW_COMP_CNV_MASK) << ICP_QAT_FW_COMP_CNV_BITPOS) |    \
406a977168cSMichal Gulbicki 	 ((cnvnr & ICP_QAT_FW_COMP_CNVNR_MASK)                                 \
407a977168cSMichal Gulbicki 	  << ICP_QAT_FW_COMP_CNVNR_BITPOS) |                                   \
408a977168cSMichal Gulbicki 	 ((cnvdfx & ICP_QAT_FW_COMP_CNV_DFX_MASK)                              \
409a977168cSMichal Gulbicki 	  << ICP_QAT_FW_COMP_CNV_DFX_BITPOS) |                                 \
41078ee8d1cSJulian Grajkowski 	 ((crc & ICP_QAT_FW_COMP_CRC_MODE_MASK)                                \
41178ee8d1cSJulian Grajkowski 	  << ICP_QAT_FW_COMP_CRC_MODE_BITPOS))
41278ee8d1cSJulian Grajkowski 
41322cf89c9SPiotr Kasierski 
41478ee8d1cSJulian Grajkowski /*
41578ee8d1cSJulian Grajkowski  * REQUEST FLAGS IN REQUEST PARAMETERS COMPRESSION
41678ee8d1cSJulian Grajkowski  *
41722cf89c9SPiotr Kasierski  * +=====+-----+----- + --- + --- +-----+ --- + ----- + --- + ---- + -- + -- +
41822cf89c9SPiotr Kasierski  * | Bit |31-24| 20   | 19  |  18 | 17  | 16  | 15-7  |  6  | 5-2  | 1  | 0  |
41922cf89c9SPiotr Kasierski  * +=====+-----+----- + --- + ----+-----+ --- + ----- + --- + ---- + -- + -- +
42022cf89c9SPiotr Kasierski  * |Flags|Resvd|xxHash| CRC | CNV |CNVNR| CNV | Resvd |BFin | Resvd|EOP |SOP |
42122cf89c9SPiotr Kasierski  * |     |=0   |acc   | MODE| DFX |     |     | =0    |     | =0   |    |    |
42222cf89c9SPiotr Kasierski  * |     |     |      |     |     |     |     |       |     |      |    |    |
42322cf89c9SPiotr Kasierski  * +=====+-----+----- + --- + ----+-----+ --- + ----- + --- + ---- + -- + -- +
42422cf89c9SPiotr Kasierski  */
42522cf89c9SPiotr Kasierski 
42622cf89c9SPiotr Kasierski 
42722cf89c9SPiotr Kasierski /**
42822cf89c9SPiotr Kasierski *****************************************************************************
42922cf89c9SPiotr Kasierski * @ingroup icp_qat_fw_comp
43022cf89c9SPiotr Kasierski *        Definition of the additional QAT2.0 Compression command types
43122cf89c9SPiotr Kasierski * @description
43222cf89c9SPiotr Kasierski *        Enumeration which is used to indicate the ids of functions
43322cf89c9SPiotr Kasierski *              that are exposed by the Compression QAT FW service
43422cf89c9SPiotr Kasierski *
43522cf89c9SPiotr Kasierski *****************************************************************************/
43622cf89c9SPiotr Kasierski typedef enum {
43722cf89c9SPiotr Kasierski 	ICP_QAT_FW_COMP_20_CMD_LZ4_COMPRESS = 3,
43822cf89c9SPiotr Kasierski 	/*!< LZ4 Compress Request */
43922cf89c9SPiotr Kasierski 
44022cf89c9SPiotr Kasierski 	ICP_QAT_FW_COMP_20_CMD_LZ4_DECOMPRESS = 4,
44122cf89c9SPiotr Kasierski 	/*!< LZ4 Decompress Request */
44222cf89c9SPiotr Kasierski 
44322cf89c9SPiotr Kasierski 	ICP_QAT_FW_COMP_20_CMD_LZ4S_COMPRESS = 5,
44422cf89c9SPiotr Kasierski 	/*!< LZ4S Compress Request */
44522cf89c9SPiotr Kasierski 
44622cf89c9SPiotr Kasierski 	ICP_QAT_FW_COMP_20_CMD_LZ4S_DECOMPRESS = 6,
44722cf89c9SPiotr Kasierski 	/*!< LZ4S Decompress Request */
44822cf89c9SPiotr Kasierski 
44922cf89c9SPiotr Kasierski 	ICP_QAT_FW_COMP_20_CMD_XP10_COMPRESS = 7,
45022cf89c9SPiotr Kasierski 	/*!< XP10 Compress Request -- Placeholder */
45122cf89c9SPiotr Kasierski 
45222cf89c9SPiotr Kasierski 	ICP_QAT_FW_COMP_20_CMD_XP10_DECOMPRESS = 8,
45322cf89c9SPiotr Kasierski 	/*!< XP10 Decompress Request -- Placeholder */
45422cf89c9SPiotr Kasierski 
45522cf89c9SPiotr Kasierski 	ICP_QAT_FW_COMP_20_CMD_DELIMITER
45622cf89c9SPiotr Kasierski 	/**< Delimiter type */
45722cf89c9SPiotr Kasierski 
45822cf89c9SPiotr Kasierski } icp_qat_fw_comp_20_cmd_id_t;
45922cf89c9SPiotr Kasierski 
46022cf89c9SPiotr Kasierski 
46122cf89c9SPiotr Kasierski /*
46222cf89c9SPiotr Kasierski  *  REQUEST FLAGS IN REQUEST PARAMETERS COMPRESSION
46322cf89c9SPiotr Kasierski  *
46422cf89c9SPiotr Kasierski  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- + ---- + --- + --- +
46522cf89c9SPiotr Kasierski  *  |  Bit  | 31-20 |  19 |  18 |   17  | 16  |  15 - 7  |  6  |  5-2 |  1  |  0  |
46622cf89c9SPiotr Kasierski  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- | ---- + --- + --- +
46722cf89c9SPiotr Kasierski  *  | Flags | Resvd | CRC | CNV | CNVNR | CNV |Resvd Bits|BFin |Resvd | EOP | SOP |
46822cf89c9SPiotr Kasierski  *  |       | =0    | Mode| DFX |       |     | =0       |     | =0   |     |     |
46978ee8d1cSJulian Grajkowski  *  |       |       |     |     |       |     |          |     |      |     |     |
47022cf89c9SPiotr Kasierski  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- | ---- + --- + --- +
47178ee8d1cSJulian Grajkowski  */
47278ee8d1cSJulian Grajkowski 
47378ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_NOT_SOP 0
47478ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
47578ee8d1cSJulian Grajkowski  * Flag representing that a request is NOT Start of Packet */
47678ee8d1cSJulian Grajkowski 
47778ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_SOP 1
47878ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
47922cf89c9SPiotr Kasierski  * * Flag representing that a request IS Start of Packet */
48078ee8d1cSJulian Grajkowski 
48178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_NOT_EOP 0
48278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
48378ee8d1cSJulian Grajkowski  * Flag representing that a request is NOT Start of Packet  */
48478ee8d1cSJulian Grajkowski 
48578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_EOP 1
48678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
48778ee8d1cSJulian Grajkowski  * Flag representing that a request IS End of Packet  */
48878ee8d1cSJulian Grajkowski 
48978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_NOT_BFINAL 0
49078ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
49178ee8d1cSJulian Grajkowski  * Flag representing to indicate firmware this is not the last block */
49278ee8d1cSJulian Grajkowski 
49378ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_BFINAL 1
49478ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
49578ee8d1cSJulian Grajkowski  * Flag representing to indicate firmware this is the last block */
49678ee8d1cSJulian Grajkowski 
49778ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_NO_CNV 0
49878ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
49978ee8d1cSJulian Grajkowski  * Flag indicating that NO cnv check is to be performed on the request */
50078ee8d1cSJulian Grajkowski 
50178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CNV 1
50278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
50378ee8d1cSJulian Grajkowski  * Flag indicating that a cnv check IS to be performed on the request */
50478ee8d1cSJulian Grajkowski 
50578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_NO_CNV_RECOVERY 0
50678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
50778ee8d1cSJulian Grajkowski  * Flag indicating that NO cnv recovery is to be performed on the request */
50878ee8d1cSJulian Grajkowski 
50978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CNV_RECOVERY 1
51078ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
51178ee8d1cSJulian Grajkowski  * Flag indicating that a cnv recovery is to be performed on the request */
51278ee8d1cSJulian Grajkowski 
513a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_NO_CNV_DFX 0
514a977168cSMichal Gulbicki /**< @ingroup icp_qat_fw_comp
515a977168cSMichal Gulbicki  * Flag indicating that NO CNV inject error is to be performed on the request */
516a977168cSMichal Gulbicki 
517a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_CNV_DFX 1
518a977168cSMichal Gulbicki /**< @ingroup icp_qat_fw_comp
519a977168cSMichal Gulbicki  * Flag indicating that CNV inject error is to be performed on the request */
520a977168cSMichal Gulbicki 
52178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CRC_MODE_LEGACY 0
52278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
52378ee8d1cSJulian Grajkowski  * Flag representing to use the legacy CRC mode */
52478ee8d1cSJulian Grajkowski 
52578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CRC_MODE_E2E 1
52678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
52778ee8d1cSJulian Grajkowski  * Flag representing to use the external CRC data struct */
52878ee8d1cSJulian Grajkowski 
52922cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_NO_XXHASH_ACC 0
53022cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
53122cf89c9SPiotr Kasierski  *  * Flag indicating that xxHash will NOT be accumulated across requests */
53222cf89c9SPiotr Kasierski 
53322cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_XXHASH_ACC 1
53422cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
53522cf89c9SPiotr Kasierski  *  * Flag indicating that xxHash WILL be accumulated across requests */
53622cf89c9SPiotr Kasierski 
53722cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_PART_DECOMP 1
53822cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
53922cf89c9SPiotr Kasierski  *  * Flag indicating to perform partial de-compressing */
54022cf89c9SPiotr Kasierski 
54122cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_NO_PART_DECOMP 1
54222cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
54322cf89c9SPiotr Kasierski  *  * Flag indicating to not perform partial de-compressing */
54422cf89c9SPiotr Kasierski 
54522cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_ZEROPAD 1
54622cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
54722cf89c9SPiotr Kasierski  *  * Flag indicating to perform zero-padding in compression request */
54822cf89c9SPiotr Kasierski 
54922cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_NO_ZEROPAD 0
55022cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
55122cf89c9SPiotr Kasierski  *  * Flag indicating to not perform zero-padding in compression request */
55222cf89c9SPiotr Kasierski 
55378ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_SOP_BITPOS 0
55478ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
55578ee8d1cSJulian Grajkowski  * Starting bit position for SOP */
55678ee8d1cSJulian Grajkowski 
55778ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_SOP_MASK 0x1
55878ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
55978ee8d1cSJulian Grajkowski  * One bit mask used to determine SOP */
56078ee8d1cSJulian Grajkowski 
56178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_EOP_BITPOS 1
56278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
56378ee8d1cSJulian Grajkowski  * Starting bit position for EOP */
56478ee8d1cSJulian Grajkowski 
56578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_EOP_MASK 0x1
56678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
56778ee8d1cSJulian Grajkowski  * One bit mask used to determine EOP */
56878ee8d1cSJulian Grajkowski 
56978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_BFINAL_MASK 0x1
57078ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
57178ee8d1cSJulian Grajkowski  * One bit mask for the bfinal bit */
57278ee8d1cSJulian Grajkowski 
57378ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_BFINAL_BITPOS 6
57478ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
57578ee8d1cSJulian Grajkowski  * Starting bit position for the bfinal bit */
57678ee8d1cSJulian Grajkowski 
57778ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CNV_MASK 0x1
57878ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
57978ee8d1cSJulian Grajkowski  * One bit mask for the CNV bit */
58078ee8d1cSJulian Grajkowski 
58178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CNV_BITPOS 16
58278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
58378ee8d1cSJulian Grajkowski  * Starting bit position for the CNV bit */
58478ee8d1cSJulian Grajkowski 
585a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_CNVNR_MASK 0x1
586a977168cSMichal Gulbicki /**< @ingroup icp_qat_fw_comp
587a977168cSMichal Gulbicki  * One bit mask for the CNV Recovery bit */
588a977168cSMichal Gulbicki 
589a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_CNVNR_BITPOS 17
590a977168cSMichal Gulbicki /**< @ingroup icp_qat_fw_comp
591a977168cSMichal Gulbicki  * Starting bit position for the CNV Recovery bit */
592a977168cSMichal Gulbicki 
593a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_CNV_DFX_BITPOS 18
594a977168cSMichal Gulbicki /**< @ingroup icp_qat_fw_comp
595a977168cSMichal Gulbicki  * Starting bit position for the CNV DFX bit */
596a977168cSMichal Gulbicki 
597a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_CNV_DFX_MASK 0x1
598a977168cSMichal Gulbicki /**< @ingroup icp_qat_fw_comp
599a977168cSMichal Gulbicki  * One bit mask for the CNV DFX bit */
600a977168cSMichal Gulbicki 
60178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CRC_MODE_BITPOS 19
60278ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
60378ee8d1cSJulian Grajkowski  * Starting bit position for CRC mode */
60478ee8d1cSJulian Grajkowski 
60578ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CRC_MODE_MASK 0x1
60678ee8d1cSJulian Grajkowski /**< @ingroup icp_qat_fw_comp
60778ee8d1cSJulian Grajkowski  * One bit mask used to determine CRC mode */
60878ee8d1cSJulian Grajkowski 
609a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS 20
610a977168cSMichal Gulbicki /**< @ingroup icp_qat_fw_comp
611a977168cSMichal Gulbicki  * Starting bit position for xxHash accumulate mode */
612a977168cSMichal Gulbicki 
613a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK 0x1
614a977168cSMichal Gulbicki /**< @ingroup icp_qat_fw_comp
615a977168cSMichal Gulbicki  * One bit mask used to determine xxHash accumulate mode */
616a977168cSMichal Gulbicki 
61722cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_PART_DECOMP_BITPOS 27
61822cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
61922cf89c9SPiotr Kasierski  * Starting bit position for the partial de-compress bit */
62022cf89c9SPiotr Kasierski 
62122cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_PART_DECOMP_MASK 0x1
62222cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
62322cf89c9SPiotr Kasierski  * Starting bit position for the partial de-compress mask */
62422cf89c9SPiotr Kasierski 
62522cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_ZEROPAD_BITPOS 26
62622cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
62722cf89c9SPiotr Kasierski  * Starting bit position for the partial zero-pad bit */
62822cf89c9SPiotr Kasierski 
62922cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_ZEROPAD_MASK 0x1
63022cf89c9SPiotr Kasierski /**< @ingroup icp_qat_fw_comp
63122cf89c9SPiotr Kasierski  * Starting bit position for the partial zero-pad mask */
63222cf89c9SPiotr Kasierski 
63378ee8d1cSJulian Grajkowski /**
63478ee8d1cSJulian Grajkowski  ******************************************************************************
63578ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
63678ee8d1cSJulian Grajkowski  *
63778ee8d1cSJulian Grajkowski  * @description
63878ee8d1cSJulian Grajkowski  *        Macro for extraction of the SOP bit
63978ee8d1cSJulian Grajkowski  *
64078ee8d1cSJulian Grajkowski  * @param flags        Flags to extract the SOP bit from
64178ee8d1cSJulian Grajkowski  *
64222cf89c9SPiotr Kasierski  *****************************************************************************/
64378ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_SOP_GET(flags)                                         \
64478ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
64578ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_SOP_BITPOS,                              \
64678ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_SOP_MASK)
64778ee8d1cSJulian Grajkowski 
64878ee8d1cSJulian Grajkowski /**
64978ee8d1cSJulian Grajkowski ******************************************************************************
65078ee8d1cSJulian Grajkowski * @ingroup icp_qat_fw_comp
65178ee8d1cSJulian Grajkowski *
65278ee8d1cSJulian Grajkowski * @description
65378ee8d1cSJulian Grajkowski *        Macro for extraction of the EOP bit
65478ee8d1cSJulian Grajkowski *
65578ee8d1cSJulian Grajkowski * @param flags        Flags to extract the EOP bit from
65678ee8d1cSJulian Grajkowski *
65778ee8d1cSJulian Grajkowski *****************************************************************************/
65878ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_EOP_GET(flags)                                         \
65978ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
66078ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_EOP_BITPOS,                              \
66178ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_EOP_MASK)
66278ee8d1cSJulian Grajkowski /**
66322cf89c9SPiotr Kasierski 
66422cf89c9SPiotr Kasierski 
66578ee8d1cSJulian Grajkowski  ******************************************************************************
66678ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
66778ee8d1cSJulian Grajkowski  *
66878ee8d1cSJulian Grajkowski  * @description
66978ee8d1cSJulian Grajkowski  *        Macro for extraction of the bfinal bit
67078ee8d1cSJulian Grajkowski  *
67178ee8d1cSJulian Grajkowski  * @param flags        Flags to extract the bfinal bit from
67278ee8d1cSJulian Grajkowski  *
67322cf89c9SPiotr Kasierski  *****************************************************************************/
67478ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_BFINAL_GET(flags)                                      \
67578ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
67678ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_BFINAL_BITPOS,                           \
67778ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_BFINAL_MASK)
67878ee8d1cSJulian Grajkowski 
67978ee8d1cSJulian Grajkowski /**
68078ee8d1cSJulian Grajkowski  ******************************************************************************
68178ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
68278ee8d1cSJulian Grajkowski  *
68378ee8d1cSJulian Grajkowski  * @description
68478ee8d1cSJulian Grajkowski  *        Macro for extraction of the CNV bit
68578ee8d1cSJulian Grajkowski  *
68678ee8d1cSJulian Grajkowski  * @param flags        Flag set containing the CNV flag
68778ee8d1cSJulian Grajkowski  *
68878ee8d1cSJulian Grajkowski  *****************************************************************************/
68978ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CNV_GET(flags)                                         \
69078ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
69178ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_CNV_BITPOS,                              \
69278ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_CNV_MASK)
69378ee8d1cSJulian Grajkowski 
69478ee8d1cSJulian Grajkowski /**
69578ee8d1cSJulian Grajkowski  ******************************************************************************
69678ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
69778ee8d1cSJulian Grajkowski  *
69878ee8d1cSJulian Grajkowski  * @description
69978ee8d1cSJulian Grajkowski  *        Macro for extraction of the crc mode bit
70078ee8d1cSJulian Grajkowski  *
70178ee8d1cSJulian Grajkowski  * @param flags        Flags to extract the crc mode bit from
70278ee8d1cSJulian Grajkowski  *
70378ee8d1cSJulian Grajkowski  ******************************************************************************/
70478ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_CRC_MODE_GET(flags)                                    \
70578ee8d1cSJulian Grajkowski 	QAT_FIELD_GET(flags,                                                   \
70678ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_CRC_MODE_BITPOS,                         \
70778ee8d1cSJulian Grajkowski 		      ICP_QAT_FW_COMP_CRC_MODE_MASK)
70878ee8d1cSJulian Grajkowski 
70978ee8d1cSJulian Grajkowski /**
71078ee8d1cSJulian Grajkowski  ******************************************************************************
71178ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
712a977168cSMichal Gulbicki  *
713a977168cSMichal Gulbicki  * @description
714a977168cSMichal Gulbicki  *        Macro for extraction of the xxHash accumulate mode bit
715a977168cSMichal Gulbicki  *
716a977168cSMichal Gulbicki  * @param flags        Flags to extract the xxHash accumulate mode bit from
717a977168cSMichal Gulbicki  *
718a977168cSMichal Gulbicki  *****************************************************************************/
719a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_GET(flags)                             \
720a977168cSMichal Gulbicki 	QAT_FIELD_GET(flags,                                                   \
721a977168cSMichal Gulbicki 		      ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS,                  \
722a977168cSMichal Gulbicki 		      ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK)
723a977168cSMichal Gulbicki 
724a977168cSMichal Gulbicki /**
725a977168cSMichal Gulbicki  ******************************************************************************
726a977168cSMichal Gulbicki  * @ingroup icp_qat_fw_comp
727a977168cSMichal Gulbicki  *
728a977168cSMichal Gulbicki  * @description
729a977168cSMichal Gulbicki  *        Macro for setting of the xxHash accumulate mode bit
730a977168cSMichal Gulbicki  *
731a977168cSMichal Gulbicki  * @param flags        Flags to set the xxHash accumulate mode bit to
732a977168cSMichal Gulbicki  * @param val          xxHash accumulate mode to set
733a977168cSMichal Gulbicki  *
734a977168cSMichal Gulbicki  *****************************************************************************/
735a977168cSMichal Gulbicki #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_SET(flags, val)                        \
736a977168cSMichal Gulbicki 	QAT_FIELD_SET(flags,                                                   \
737a977168cSMichal Gulbicki 		      val,                                                     \
738a977168cSMichal Gulbicki 		      ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS,                  \
739a977168cSMichal Gulbicki 		      ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK)
740a977168cSMichal Gulbicki 
741a977168cSMichal Gulbicki /**
742a977168cSMichal Gulbicki  ******************************************************************************
743a977168cSMichal Gulbicki  * @ingroup icp_qat_fw_comp
74422cf89c9SPiotr Kasierski  *
74522cf89c9SPiotr Kasierski  * @description
74622cf89c9SPiotr Kasierski  *        Macro for extraction of the partial de-compress on/off bit
74722cf89c9SPiotr Kasierski  *
74822cf89c9SPiotr Kasierski  * @param flags        Flags to extract the partial de-compress on/off bit from
74922cf89c9SPiotr Kasierski  *
75022cf89c9SPiotr Kasierski  ******************************************************************************/
75122cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_PART_DECOMP_GET(flags)                                 \
75222cf89c9SPiotr Kasierski 	QAT_FIELD_GET(flags,                                                   \
75322cf89c9SPiotr Kasierski 		      ICP_QAT_FW_COMP_PART_DECOMP_BITPOS,                      \
75422cf89c9SPiotr Kasierski 		      ICP_QAT_FW_COMP_PART_DECOMP_MASK)
75522cf89c9SPiotr Kasierski 
75622cf89c9SPiotr Kasierski /**
75722cf89c9SPiotr Kasierski  ******************************************************************************
75822cf89c9SPiotr Kasierski  * @ingroup icp_qat_fw_comp
75922cf89c9SPiotr Kasierski  *
76022cf89c9SPiotr Kasierski  * @description
76122cf89c9SPiotr Kasierski  *        Macro for setting of the partial de-compress on/off bit
76222cf89c9SPiotr Kasierski  *
76322cf89c9SPiotr Kasierski  * @param flags        Flags to set the partial de-compress on/off bit to
76422cf89c9SPiotr Kasierski  * @param val          partial de-compress on/off bit
76522cf89c9SPiotr Kasierski  *
76622cf89c9SPiotr Kasierski  *****************************************************************************/
76722cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_PART_DECOMP_SET(flags, val)                            \
76822cf89c9SPiotr Kasierski 	QAT_FIELD_SET(flags,                                                   \
76922cf89c9SPiotr Kasierski 		      val,                                                     \
77022cf89c9SPiotr Kasierski 		      ICP_QAT_FW_COMP_PART_DECOMP_BITPOS,                      \
77122cf89c9SPiotr Kasierski 		      ICP_QAT_FW_COMP_PART_DECOMP_MASK)
77222cf89c9SPiotr Kasierski 
77322cf89c9SPiotr Kasierski /**
77422cf89c9SPiotr Kasierski  ******************************************************************************
77522cf89c9SPiotr Kasierski  * @ingroup icp_qat_fw_comp
77622cf89c9SPiotr Kasierski  *
77722cf89c9SPiotr Kasierski  * @description
77822cf89c9SPiotr Kasierski  *        Macro for extraction of the zero padding on/off bit
77922cf89c9SPiotr Kasierski  *
78022cf89c9SPiotr Kasierski  * @param flags        Flags to extract the zero padding on/off bit from
78122cf89c9SPiotr Kasierski  *
78222cf89c9SPiotr Kasierski  ******************************************************************************/
78322cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_ZEROPAD_GET(flags)                                     \
78422cf89c9SPiotr Kasierski 	QAT_FIELD_GET(flags,                                                   \
78522cf89c9SPiotr Kasierski 		      ICP_QAT_FW_COMP_ZEROPAD_BITPOS,                          \
78622cf89c9SPiotr Kasierski 		      ICP_QAT_FW_COMP_ZEROPAD_MASK)
78722cf89c9SPiotr Kasierski 
78822cf89c9SPiotr Kasierski /**
78922cf89c9SPiotr Kasierski  ******************************************************************************
79022cf89c9SPiotr Kasierski  * @ingroup icp_qat_fw_comp
79122cf89c9SPiotr Kasierski  *
79222cf89c9SPiotr Kasierski  * @description
79322cf89c9SPiotr Kasierski  *        Macro for setting of the zero-padding on/off bit
79422cf89c9SPiotr Kasierski  *
79522cf89c9SPiotr Kasierski  * @param flags        Flags to set the zero-padding on/off bit to
79622cf89c9SPiotr Kasierski  * @param val          zero-padding on/off bit
79722cf89c9SPiotr Kasierski  *
79822cf89c9SPiotr Kasierski  *****************************************************************************/
79922cf89c9SPiotr Kasierski #define ICP_QAT_FW_COMP_ZEROPAD_SET(flags, val)                                \
80022cf89c9SPiotr Kasierski 	QAT_FIELD_SET(flags,                                                   \
80122cf89c9SPiotr Kasierski 		      val,                                                     \
80222cf89c9SPiotr Kasierski 		      ICP_QAT_FW_COMP_ZEROPAD_BITPOS,                          \
80322cf89c9SPiotr Kasierski 		      ICP_QAT_FW_COMP_ZEROPAD_MASK)
80422cf89c9SPiotr Kasierski 
80522cf89c9SPiotr Kasierski /**
80622cf89c9SPiotr Kasierski  ******************************************************************************
80722cf89c9SPiotr Kasierski  * @ingroup icp_qat_fw_comp
80878ee8d1cSJulian Grajkowski  *        Definition of the translator request parameters block
80978ee8d1cSJulian Grajkowski  * @description
81078ee8d1cSJulian Grajkowski  *        Definition of the translator processing request parameters block
81178ee8d1cSJulian Grajkowski  *        The structure below forms part of the Compression + Translation
81222cf89c9SPiotr Kasierski  *        Parameters block spanning LWs 14-23, thus differing from the common
81378ee8d1cSJulian Grajkowski  *        base Parameters block structure. Unused fields must be set to 0.
81478ee8d1cSJulian Grajkowski  *
81522cf89c9SPiotr Kasierski  *****************************************************************************/
81678ee8d1cSJulian Grajkowski typedef struct icp_qat_fw_xlt_req_params_s {
81778ee8d1cSJulian Grajkowski 	/**< LWs 20-21 */
81878ee8d1cSJulian Grajkowski 	uint64_t inter_buff_ptr;
81978ee8d1cSJulian Grajkowski 	/**< This field specifies the physical address of an intermediate
82078ee8d1cSJulian Grajkowski 	 * buffer SGL array. The array contains a pair of 64-bit
82178ee8d1cSJulian Grajkowski 	 * intermediate buffer pointers to SGL buffer descriptors, one pair
82278ee8d1cSJulian Grajkowski 	 * per CPM. Please refer to the CPM1.6 Firmware Interface HLD
82322cf89c9SPiotr Kasierski 	 * specification for more details. */
82422cf89c9SPiotr Kasierski 
82578ee8d1cSJulian Grajkowski } icp_qat_fw_xlt_req_params_t;
82678ee8d1cSJulian Grajkowski 
82778ee8d1cSJulian Grajkowski /**
82822cf89c9SPiotr Kasierski  *****************************************************************************
82978ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
83078ee8d1cSJulian Grajkowski  *      Compression header of the content descriptor block
83178ee8d1cSJulian Grajkowski  * @description
83278ee8d1cSJulian Grajkowski  *      Definition of the service-specific compression control block header
83378ee8d1cSJulian Grajkowski  *      structure. The compression parameters are defined per algorithm
83478ee8d1cSJulian Grajkowski  *      and are located in the icp_qat_hw.h file. This compression
83578ee8d1cSJulian Grajkowski  *      cd block spans LWs 24-29, forming part of the compression + translation
83678ee8d1cSJulian Grajkowski  *      cd block, thus differing from the common base content descriptor
83778ee8d1cSJulian Grajkowski  *      structure.
83878ee8d1cSJulian Grajkowski  *
83922cf89c9SPiotr Kasierski  *****************************************************************************/
84078ee8d1cSJulian Grajkowski typedef struct icp_qat_fw_comp_cd_hdr_s {
84178ee8d1cSJulian Grajkowski 	/**< LW 24 */
84278ee8d1cSJulian Grajkowski 	uint16_t ram_bank_flags;
84378ee8d1cSJulian Grajkowski 	/**< Flags to show which ram banks to access */
84478ee8d1cSJulian Grajkowski 
84578ee8d1cSJulian Grajkowski 	uint8_t comp_cfg_offset;
84678ee8d1cSJulian Grajkowski 	/**< Quad word offset from the content descriptor parameters address to
84722cf89c9SPiotr Kasierski 	 * the parameters for the compression processing */
84878ee8d1cSJulian Grajkowski 
84978ee8d1cSJulian Grajkowski 	uint8_t next_curr_id;
85078ee8d1cSJulian Grajkowski 	/**< This field combines the next and current id (each four bits) -
85178ee8d1cSJulian Grajkowski 	 * the next id is the most significant nibble.
85278ee8d1cSJulian Grajkowski 	 * Next Id:  Set to the next slice to pass the compressed data through.
85378ee8d1cSJulian Grajkowski 	 * Set to ICP_QAT_FW_SLICE_DRAM_WR if the data is not to go through
85478ee8d1cSJulian Grajkowski 	 * anymore slices after compression
85578ee8d1cSJulian Grajkowski 	 * Current Id: Initialised with the compression slice type */
85678ee8d1cSJulian Grajkowski 
85778ee8d1cSJulian Grajkowski 	/**< LW 25 */
85878ee8d1cSJulian Grajkowski 	uint32_t resrvd;
85978ee8d1cSJulian Grajkowski 
86078ee8d1cSJulian Grajkowski 	/**< LWs 26-27 */
86178ee8d1cSJulian Grajkowski 	uint64_t comp_state_addr;
86278ee8d1cSJulian Grajkowski 	/**< Pointer to compression state */
86378ee8d1cSJulian Grajkowski 
86478ee8d1cSJulian Grajkowski 	/**< LWs 28-29 */
86578ee8d1cSJulian Grajkowski 	uint64_t ram_banks_addr;
86678ee8d1cSJulian Grajkowski 	/**< Pointer to banks */
86778ee8d1cSJulian Grajkowski 
86878ee8d1cSJulian Grajkowski } icp_qat_fw_comp_cd_hdr_t;
86978ee8d1cSJulian Grajkowski 
87078ee8d1cSJulian Grajkowski #define COMP_CPR_INITIAL_CRC 0
87178ee8d1cSJulian Grajkowski #define COMP_CPR_INITIAL_ADLER 1
87278ee8d1cSJulian Grajkowski 
87378ee8d1cSJulian Grajkowski /**
87422cf89c9SPiotr Kasierski  *****************************************************************************
87578ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
87678ee8d1cSJulian Grajkowski  *      Translator content descriptor header block
87778ee8d1cSJulian Grajkowski  * @description
87878ee8d1cSJulian Grajkowski  *      Definition of the structure used to describe the translation processing
87978ee8d1cSJulian Grajkowski  *      to perform on data. The translator parameters are defined per algorithm
88078ee8d1cSJulian Grajkowski  *      and are located in the icp_qat_hw.h file. This translation cd block
88178ee8d1cSJulian Grajkowski  *      spans LWs 30-31, forming part of the compression + translation cd block,
88278ee8d1cSJulian Grajkowski  *      thus differing from the common base content descriptor structure.
88378ee8d1cSJulian Grajkowski  *
88422cf89c9SPiotr Kasierski  *****************************************************************************/
88578ee8d1cSJulian Grajkowski typedef struct icp_qat_fw_xlt_cd_hdr_s {
88678ee8d1cSJulian Grajkowski 	/**< LW 30 */
88778ee8d1cSJulian Grajkowski 	uint16_t resrvd1;
88878ee8d1cSJulian Grajkowski 	/**< Reserved field and assumed set to 0 */
88978ee8d1cSJulian Grajkowski 
89078ee8d1cSJulian Grajkowski 	uint8_t resrvd2;
89178ee8d1cSJulian Grajkowski 	/**< Reserved field and assumed set to 0 */
89278ee8d1cSJulian Grajkowski 
89378ee8d1cSJulian Grajkowski 	uint8_t next_curr_id;
89478ee8d1cSJulian Grajkowski 	/**< This field combines the next and current id (each four bits) -
89578ee8d1cSJulian Grajkowski 	 * the next id is the most significant nibble.
89678ee8d1cSJulian Grajkowski 	 * Next Id:  Set to the next slice to pass the translated data through.
89778ee8d1cSJulian Grajkowski 	 * Set to ICP_QAT_FW_SLICE_DRAM_WR if the data is not to go through
89878ee8d1cSJulian Grajkowski 	 * any more slices after compression
89978ee8d1cSJulian Grajkowski 	 * Current Id: Initialised with the translation slice type */
90078ee8d1cSJulian Grajkowski 
90178ee8d1cSJulian Grajkowski 	/**< LW 31 */
90278ee8d1cSJulian Grajkowski 	uint32_t resrvd3;
90378ee8d1cSJulian Grajkowski 	/**< Reserved and should be set to zero, needed for quadword alignment
90478ee8d1cSJulian Grajkowski 	 */
90522cf89c9SPiotr Kasierski 
90678ee8d1cSJulian Grajkowski } icp_qat_fw_xlt_cd_hdr_t;
90778ee8d1cSJulian Grajkowski 
90878ee8d1cSJulian Grajkowski /**
90922cf89c9SPiotr Kasierski  *****************************************************************************
91078ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
91178ee8d1cSJulian Grajkowski  *        Definition of the common Compression QAT FW request
91278ee8d1cSJulian Grajkowski  * @description
91378ee8d1cSJulian Grajkowski  *        This is a definition of the full request structure for
91478ee8d1cSJulian Grajkowski  *        compression and translation.
91578ee8d1cSJulian Grajkowski  *
91622cf89c9SPiotr Kasierski  *****************************************************************************/
91778ee8d1cSJulian Grajkowski typedef struct icp_qat_fw_comp_req_s {
91878ee8d1cSJulian Grajkowski 	/**< LWs 0-1 */
91978ee8d1cSJulian Grajkowski 	icp_qat_fw_comn_req_hdr_t comn_hdr;
92078ee8d1cSJulian Grajkowski 	/**< Common request header - for Service Command Id,
92178ee8d1cSJulian Grajkowski 	 * use service-specific Compression Command Id.
92278ee8d1cSJulian Grajkowski 	 * Service Specific Flags - use Compression Command Flags */
92378ee8d1cSJulian Grajkowski 
92478ee8d1cSJulian Grajkowski 	/**< LWs 2-5 */
92578ee8d1cSJulian Grajkowski 	icp_qat_fw_comp_req_hdr_cd_pars_t cd_pars;
92678ee8d1cSJulian Grajkowski 	/**< Compression service-specific content descriptor field which points
92778ee8d1cSJulian Grajkowski 	 * either to a content descriptor parameter block or contains the
92878ee8d1cSJulian Grajkowski 	 * compression slice config word. */
92978ee8d1cSJulian Grajkowski 
93078ee8d1cSJulian Grajkowski 	/**< LWs 6-13 */
93178ee8d1cSJulian Grajkowski 	icp_qat_fw_comn_req_mid_t comn_mid;
93278ee8d1cSJulian Grajkowski 	/**< Common request middle section */
93378ee8d1cSJulian Grajkowski 
93478ee8d1cSJulian Grajkowski 	/**< LWs 14-19 */
93578ee8d1cSJulian Grajkowski 	icp_qat_fw_comp_req_params_t comp_pars;
93678ee8d1cSJulian Grajkowski 	/**< Compression request Parameters block */
93778ee8d1cSJulian Grajkowski 
93878ee8d1cSJulian Grajkowski 	/**< LWs 20-21 */
93978ee8d1cSJulian Grajkowski 	union {
94078ee8d1cSJulian Grajkowski 		icp_qat_fw_xlt_req_params_t xlt_pars;
94178ee8d1cSJulian Grajkowski 		/**< Translation request Parameters block */
94278ee8d1cSJulian Grajkowski 
94378ee8d1cSJulian Grajkowski 		uint32_t resrvd1[ICP_QAT_FW_NUM_LONGWORDS_2];
94478ee8d1cSJulian Grajkowski 		/**< Reserved if not used for translation */
94522cf89c9SPiotr Kasierski 
94622cf89c9SPiotr Kasierski 		struct {
94722cf89c9SPiotr Kasierski 			uint32_t partial_decompress_length;
94822cf89c9SPiotr Kasierski 			/**< LW 20 \n Length of the decompressed data to return
94922cf89c9SPiotr Kasierski 			 */
95022cf89c9SPiotr Kasierski 
95122cf89c9SPiotr Kasierski 			uint32_t partial_decompress_offset;
95222cf89c9SPiotr Kasierski 			/**< LW 21 \n Offset of the decompressed data at which
95322cf89c9SPiotr Kasierski 			 * to return */
95422cf89c9SPiotr Kasierski 
95522cf89c9SPiotr Kasierski 		} partial_decompress;
95622cf89c9SPiotr Kasierski 
95778ee8d1cSJulian Grajkowski 	} u1;
95878ee8d1cSJulian Grajkowski 
95978ee8d1cSJulian Grajkowski 	/**< LWs 22-23 */
96078ee8d1cSJulian Grajkowski 	union {
96178ee8d1cSJulian Grajkowski 		uint32_t resrvd2[ICP_QAT_FW_NUM_LONGWORDS_2];
96278ee8d1cSJulian Grajkowski 		/**< Reserved - not used if Batch and Pack is disabled.*/
96378ee8d1cSJulian Grajkowski 
96422cf89c9SPiotr Kasierski 		uint64_t resrvd3;
96522cf89c9SPiotr Kasierski 		/**< Reserved - not used if Batch and Pack is disabled.*/
96678ee8d1cSJulian Grajkowski 	} u3;
96778ee8d1cSJulian Grajkowski 
96878ee8d1cSJulian Grajkowski 	/**< LWs 24-29 */
96978ee8d1cSJulian Grajkowski 	icp_qat_fw_comp_cd_hdr_t comp_cd_ctrl;
97078ee8d1cSJulian Grajkowski 	/**< Compression request content descriptor control
97178ee8d1cSJulian Grajkowski 	 * block header */
97278ee8d1cSJulian Grajkowski 
97378ee8d1cSJulian Grajkowski 	/**< LWs 30-31 */
97478ee8d1cSJulian Grajkowski 	union {
97578ee8d1cSJulian Grajkowski 		icp_qat_fw_xlt_cd_hdr_t xlt_cd_ctrl;
97678ee8d1cSJulian Grajkowski 		/**< Translation request content descriptor
97778ee8d1cSJulian Grajkowski 		 * control block header */
97878ee8d1cSJulian Grajkowski 
97978ee8d1cSJulian Grajkowski 		uint32_t resrvd3[ICP_QAT_FW_NUM_LONGWORDS_2];
98078ee8d1cSJulian Grajkowski 		/**< Reserved if not used for translation */
98122cf89c9SPiotr Kasierski 
98278ee8d1cSJulian Grajkowski 	} u2;
98378ee8d1cSJulian Grajkowski 
98478ee8d1cSJulian Grajkowski } icp_qat_fw_comp_req_t;
98578ee8d1cSJulian Grajkowski 
98678ee8d1cSJulian Grajkowski /**
98722cf89c9SPiotr Kasierski  *****************************************************************************
98878ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
98922cf89c9SPiotr Kasierski  *        Definition of the compression QAT FW response descriptor parameters
99078ee8d1cSJulian Grajkowski  * @description
99178ee8d1cSJulian Grajkowski  *        This part of the response is specific to the compression response.
99278ee8d1cSJulian Grajkowski  *
99322cf89c9SPiotr Kasierski  *****************************************************************************/
99478ee8d1cSJulian Grajkowski typedef struct icp_qat_fw_resp_comp_pars_s {
99578ee8d1cSJulian Grajkowski 	/**< LW 4 */
99678ee8d1cSJulian Grajkowski 	uint32_t input_byte_counter;
99778ee8d1cSJulian Grajkowski 	/**< Input byte counter */
99878ee8d1cSJulian Grajkowski 
99978ee8d1cSJulian Grajkowski 	/**< LW 5 */
100078ee8d1cSJulian Grajkowski 	uint32_t output_byte_counter;
100178ee8d1cSJulian Grajkowski 	/**< Output byte counter */
100278ee8d1cSJulian Grajkowski 
100378ee8d1cSJulian Grajkowski 	/** LW 6-7 */
100478ee8d1cSJulian Grajkowski 	union {
100578ee8d1cSJulian Grajkowski 		struct {
100678ee8d1cSJulian Grajkowski 			/** LW 6 */
100778ee8d1cSJulian Grajkowski 			uint32_t curr_crc32;
100878ee8d1cSJulian Grajkowski 			/**< Current CRC32 */
100978ee8d1cSJulian Grajkowski 
101078ee8d1cSJulian Grajkowski 			/** LW 7 */
101178ee8d1cSJulian Grajkowski 			uint32_t curr_adler_32;
101278ee8d1cSJulian Grajkowski 			/**< Current Adler32 */
101378ee8d1cSJulian Grajkowski 		} legacy;
101478ee8d1cSJulian Grajkowski 
101578ee8d1cSJulian Grajkowski 		uint32_t resrvd[ICP_QAT_FW_NUM_LONGWORDS_2];
101678ee8d1cSJulian Grajkowski 		/**< Reserved if not in legacy mode */
101778ee8d1cSJulian Grajkowski 	} crc;
101878ee8d1cSJulian Grajkowski 
101978ee8d1cSJulian Grajkowski } icp_qat_fw_resp_comp_pars_t;
102078ee8d1cSJulian Grajkowski 
102178ee8d1cSJulian Grajkowski /**
102278ee8d1cSJulian Grajkowski  *****************************************************************************
102378ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
102478ee8d1cSJulian Grajkowski  *        Definition of the Compression Eagle Tail Response
102578ee8d1cSJulian Grajkowski  * @description
102678ee8d1cSJulian Grajkowski  *        This is the response delivered to the ET rings by the Compression
102778ee8d1cSJulian Grajkowski  *        QAT FW service for all commands
102878ee8d1cSJulian Grajkowski  *
102922cf89c9SPiotr Kasierski  *****************************************************************************/
103078ee8d1cSJulian Grajkowski typedef struct icp_qat_fw_comp_resp_s {
103178ee8d1cSJulian Grajkowski 	/**< LWs 0-1 */
103278ee8d1cSJulian Grajkowski 	icp_qat_fw_comn_resp_hdr_t comn_resp;
103378ee8d1cSJulian Grajkowski 	/**< Common interface response format see icp_qat_fw.h */
103478ee8d1cSJulian Grajkowski 
103578ee8d1cSJulian Grajkowski 	/**< LWs 2-3 */
103678ee8d1cSJulian Grajkowski 	uint64_t opaque_data;
103778ee8d1cSJulian Grajkowski 	/**< Opaque data passed from the request to the response message */
103878ee8d1cSJulian Grajkowski 
103978ee8d1cSJulian Grajkowski 	/**< LWs 4-7 */
104078ee8d1cSJulian Grajkowski 	icp_qat_fw_resp_comp_pars_t comp_resp_pars;
104178ee8d1cSJulian Grajkowski 	/**< Common response params (checksums and byte counts) */
104222cf89c9SPiotr Kasierski 
104378ee8d1cSJulian Grajkowski } icp_qat_fw_comp_resp_t;
104478ee8d1cSJulian Grajkowski 
104578ee8d1cSJulian Grajkowski /* RAM Bank defines */
104678ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_FLAG_MASK 0x1
104778ee8d1cSJulian Grajkowski 
104878ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_I_BITPOS 8
104978ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_H_BITPOS 7
105078ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_G_BITPOS 6
105178ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_F_BITPOS 5
105278ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_E_BITPOS 4
105378ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_D_BITPOS 3
105478ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_C_BITPOS 2
105578ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_B_BITPOS 1
105678ee8d1cSJulian Grajkowski #define QAT_FW_COMP_BANK_A_BITPOS 0
105778ee8d1cSJulian Grajkowski 
105878ee8d1cSJulian Grajkowski /**
105922cf89c9SPiotr Kasierski  *****************************************************************************
106078ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
106178ee8d1cSJulian Grajkowski  *      Definition of the ram bank enabled values
106278ee8d1cSJulian Grajkowski  * @description
106378ee8d1cSJulian Grajkowski  *      Enumeration used to define whether a ram bank is enabled or not
106478ee8d1cSJulian Grajkowski  *
106522cf89c9SPiotr Kasierski  *****************************************************************************/
106678ee8d1cSJulian Grajkowski typedef enum {
106778ee8d1cSJulian Grajkowski 	ICP_QAT_FW_COMP_BANK_DISABLED = 0, /*!< BANK DISABLED */
106878ee8d1cSJulian Grajkowski 	ICP_QAT_FW_COMP_BANK_ENABLED = 1,  /*!< BANK ENABLED */
106978ee8d1cSJulian Grajkowski 	ICP_QAT_FW_COMP_BANK_DELIMITER = 2 /**< Delimiter type */
107022cf89c9SPiotr Kasierski 
107178ee8d1cSJulian Grajkowski } icp_qat_fw_comp_bank_enabled_t;
107278ee8d1cSJulian Grajkowski 
107378ee8d1cSJulian Grajkowski /**
107478ee8d1cSJulian Grajkowski  ******************************************************************************
107578ee8d1cSJulian Grajkowski  * @ingroup icp_qat_fw_comp
107678ee8d1cSJulian Grajkowski  *
107778ee8d1cSJulian Grajkowski  * @description
107878ee8d1cSJulian Grajkowski  *      Build the ram bank flags in the compression content descriptor
107978ee8d1cSJulian Grajkowski  *      which specify which banks are used to save history
108078ee8d1cSJulian Grajkowski  *
108178ee8d1cSJulian Grajkowski  * @param bank_i_enable
108278ee8d1cSJulian Grajkowski  * @param bank_h_enable
108378ee8d1cSJulian Grajkowski  * @param bank_g_enable
108478ee8d1cSJulian Grajkowski  * @param bank_f_enable
108578ee8d1cSJulian Grajkowski  * @param bank_e_enable
108678ee8d1cSJulian Grajkowski  * @param bank_d_enable
108778ee8d1cSJulian Grajkowski  * @param bank_c_enable
108878ee8d1cSJulian Grajkowski  * @param bank_b_enable
108978ee8d1cSJulian Grajkowski  * @param bank_a_enable
109022cf89c9SPiotr Kasierski  *****************************************************************************/
109178ee8d1cSJulian Grajkowski #define ICP_QAT_FW_COMP_RAM_FLAGS_BUILD(bank_i_enable,                         \
109278ee8d1cSJulian Grajkowski 					bank_h_enable,                         \
109378ee8d1cSJulian Grajkowski 					bank_g_enable,                         \
109478ee8d1cSJulian Grajkowski 					bank_f_enable,                         \
109578ee8d1cSJulian Grajkowski 					bank_e_enable,                         \
109678ee8d1cSJulian Grajkowski 					bank_d_enable,                         \
109778ee8d1cSJulian Grajkowski 					bank_c_enable,                         \
109878ee8d1cSJulian Grajkowski 					bank_b_enable,                         \
109978ee8d1cSJulian Grajkowski 					bank_a_enable)                         \
110078ee8d1cSJulian Grajkowski 	((((bank_i_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
110178ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_I_BITPOS) |                                      \
110278ee8d1cSJulian Grajkowski 	 (((bank_h_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
110378ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_H_BITPOS) |                                      \
110478ee8d1cSJulian Grajkowski 	 (((bank_g_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
110578ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_G_BITPOS) |                                      \
110678ee8d1cSJulian Grajkowski 	 (((bank_f_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
110778ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_F_BITPOS) |                                      \
110878ee8d1cSJulian Grajkowski 	 (((bank_e_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
110978ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_E_BITPOS) |                                      \
111078ee8d1cSJulian Grajkowski 	 (((bank_d_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
111178ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_D_BITPOS) |                                      \
111278ee8d1cSJulian Grajkowski 	 (((bank_c_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
111378ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_C_BITPOS) |                                      \
111478ee8d1cSJulian Grajkowski 	 (((bank_b_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
111578ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_B_BITPOS) |                                      \
111678ee8d1cSJulian Grajkowski 	 (((bank_a_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
111778ee8d1cSJulian Grajkowski 	  << QAT_FW_COMP_BANK_A_BITPOS))
111878ee8d1cSJulian Grajkowski 
1119a977168cSMichal Gulbicki /**
1120a977168cSMichal Gulbicki  *****************************************************************************
1121a977168cSMichal Gulbicki  * @ingroup icp_qat_fw_comp
1122a977168cSMichal Gulbicki  *      Definition of the xxhash32 acc state buffer
1123a977168cSMichal Gulbicki  * @description
1124a977168cSMichal Gulbicki  *      This is data structure used in stateful lite for xxhash32
1125a977168cSMichal Gulbicki  *
1126a977168cSMichal Gulbicki  *****************************************************************************/
1127a977168cSMichal Gulbicki typedef struct xxhash_acc_state_buff_s {
1128a977168cSMichal Gulbicki 	/**< LW 0 */
1129a977168cSMichal Gulbicki 	uint32_t in_counter;
1130a977168cSMichal Gulbicki 	/**< Accumulated (total) consumed bytes. As oppose to the per request
1131a977168cSMichal Gulbicki 	 * IBC in the response.*/
1132a977168cSMichal Gulbicki 
1133a977168cSMichal Gulbicki 	/**< LW 1 */
1134a977168cSMichal Gulbicki 	uint32_t out_counter;
1135a977168cSMichal Gulbicki 	/**< OBC as in the response.*/
1136a977168cSMichal Gulbicki 
1137a977168cSMichal Gulbicki 	/**< LW 2-5 */
1138a977168cSMichal Gulbicki 	uint32_t xxhash_state[4];
1139a977168cSMichal Gulbicki 	/**< Initial value is set by IA to the values stated in HAS.*/
1140a977168cSMichal Gulbicki 
1141a977168cSMichal Gulbicki 	/**< LW 6-9 */
1142a977168cSMichal Gulbicki 	uint32_t clear_txt[4];
1143a977168cSMichal Gulbicki 	/**< Set to 0 for the first request.*/
1144a977168cSMichal Gulbicki } xxhash_acc_state_buff_t;
1145a977168cSMichal Gulbicki 
114678ee8d1cSJulian Grajkowski #endif /* _ICP_QAT_FW_COMP_H_ */
1147