Path: blob/master/drivers/crypto/intel/qat/qat_common/adf_dc.c
29278 views
// SPDX-License-Identifier: GPL-2.0-only1/* Copyright(c) 2022 Intel Corporation */2#include "adf_accel_devices.h"3#include "adf_dc.h"4#include "icp_qat_fw_comp.h"56int qat_comp_build_ctx(struct adf_accel_dev *accel_dev, void *ctx, enum adf_dc_algo algo)7{8struct icp_qat_fw_comp_req *req_tmpl = ctx;9struct icp_qat_fw_comp_cd_hdr *comp_cd_ctrl = &req_tmpl->comp_cd_ctrl;10struct icp_qat_fw_comp_req_params *req_pars = &req_tmpl->comp_pars;11struct icp_qat_fw_comn_req_hdr *header = &req_tmpl->comn_hdr;12int ret;1314memset(req_tmpl, 0, sizeof(*req_tmpl));15header->hdr_flags =16ICP_QAT_FW_COMN_HDR_FLAGS_BUILD(ICP_QAT_FW_COMN_REQ_FLAG_SET);17header->service_type = ICP_QAT_FW_COMN_REQ_CPM_FW_COMP;18header->comn_req_flags =19ICP_QAT_FW_COMN_FLAGS_BUILD(QAT_COMN_CD_FLD_TYPE_16BYTE_DATA,20QAT_COMN_PTR_TYPE_SGL);21header->serv_specif_flags =22ICP_QAT_FW_COMP_FLAGS_BUILD(ICP_QAT_FW_COMP_STATELESS_SESSION,23ICP_QAT_FW_COMP_NOT_AUTO_SELECT_BEST,24ICP_QAT_FW_COMP_NOT_ENH_AUTO_SELECT_BEST,25ICP_QAT_FW_COMP_NOT_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST,26ICP_QAT_FW_COMP_ENABLE_SECURE_RAM_USED_AS_INTMD_BUF);2728/* Build HW config block for compression */29ret = GET_DC_OPS(accel_dev)->build_comp_block(ctx, algo);30if (ret) {31dev_err(&GET_DEV(accel_dev), "Failed to build compression block\n");32return ret;33}3435req_pars->crc.legacy.initial_adler = COMP_CPR_INITIAL_ADLER;36req_pars->crc.legacy.initial_crc32 = COMP_CPR_INITIAL_CRC;37req_pars->req_par_flags =38ICP_QAT_FW_COMP_REQ_PARAM_FLAGS_BUILD(ICP_QAT_FW_COMP_SOP,39ICP_QAT_FW_COMP_EOP,40ICP_QAT_FW_COMP_BFINAL,41ICP_QAT_FW_COMP_CNV,42ICP_QAT_FW_COMP_CNV_RECOVERY,43ICP_QAT_FW_COMP_NO_CNV_DFX,44ICP_QAT_FW_COMP_CRC_MODE_LEGACY,45ICP_QAT_FW_COMP_NO_XXHASH_ACC,46ICP_QAT_FW_COMP_CNV_ERROR_NONE,47ICP_QAT_FW_COMP_NO_APPEND_CRC,48ICP_QAT_FW_COMP_NO_DROP_DATA,49ICP_QAT_FW_COMP_NO_PARTIAL_DECOMPRESS);50ICP_QAT_FW_COMN_NEXT_ID_SET(comp_cd_ctrl, ICP_QAT_FW_SLICE_DRAM_WR);51ICP_QAT_FW_COMN_CURR_ID_SET(comp_cd_ctrl, ICP_QAT_FW_SLICE_COMP);5253/* Fill second half of the template for decompression */54memcpy(req_tmpl + 1, req_tmpl, sizeof(*req_tmpl));55req_tmpl++;5657/* Build HW config block for decompression */58ret = GET_DC_OPS(accel_dev)->build_decomp_block(req_tmpl, algo);59if (ret)60dev_err(&GET_DEV(accel_dev), "Failed to build decompression block\n");6162return ret;63}646566