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