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