Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.4.
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/* Copyright(c) 2022 Intel Corporation */
  3#ifndef _QAT_COMP_REQ_H_
  4#define _QAT_COMP_REQ_H_
  5
  6#include "icp_qat_fw_comp.h"
  7
  8#define QAT_COMP_REQ_SIZE (sizeof(struct icp_qat_fw_comp_req))
  9#define QAT_COMP_CTX_SIZE (QAT_COMP_REQ_SIZE * 2)
 10
 11static inline void qat_comp_create_req(void *ctx, void *req, u64 src, u32 slen,
 12				       u64 dst, u32 dlen, u64 opaque)
 13{
 14	struct icp_qat_fw_comp_req *fw_tmpl = ctx;
 15	struct icp_qat_fw_comp_req *fw_req = req;
 16	struct icp_qat_fw_comp_req_params *req_pars = &fw_req->comp_pars;
 17
 18	memcpy(fw_req, fw_tmpl, sizeof(*fw_req));
 19	fw_req->comn_mid.src_data_addr = src;
 20	fw_req->comn_mid.src_length = slen;
 21	fw_req->comn_mid.dest_data_addr = dst;
 22	fw_req->comn_mid.dst_length = dlen;
 23	fw_req->comn_mid.opaque_data = opaque;
 24	req_pars->comp_len = slen;
 25	req_pars->out_buffer_sz = dlen;
 26}
 27
 28static inline void qat_comp_override_dst(void *req, u64 dst, u32 dlen)
 29{
 30	struct icp_qat_fw_comp_req *fw_req = req;
 31	struct icp_qat_fw_comp_req_params *req_pars = &fw_req->comp_pars;
 32
 33	fw_req->comn_mid.dest_data_addr = dst;
 34	fw_req->comn_mid.dst_length = dlen;
 35	req_pars->out_buffer_sz = dlen;
 36}
 37
 38static inline void qat_comp_create_compression_req(void *ctx, void *req,
 39						   u64 src, u32 slen,
 40						   u64 dst, u32 dlen,
 41						   u64 opaque)
 42{
 43	qat_comp_create_req(ctx, req, src, slen, dst, dlen, opaque);
 44}
 45
 46static inline void qat_comp_create_decompression_req(void *ctx, void *req,
 47						     u64 src, u32 slen,
 48						     u64 dst, u32 dlen,
 49						     u64 opaque)
 50{
 51	struct icp_qat_fw_comp_req *fw_tmpl = ctx;
 52
 53	fw_tmpl++;
 54	qat_comp_create_req(fw_tmpl, req, src, slen, dst, dlen, opaque);
 55}
 56
 57static inline u32 qat_comp_get_consumed_ctr(void *resp)
 58{
 59	struct icp_qat_fw_comp_resp *qat_resp = resp;
 60
 61	return qat_resp->comp_resp_pars.input_byte_counter;
 62}
 63
 64static inline u32 qat_comp_get_produced_ctr(void *resp)
 65{
 66	struct icp_qat_fw_comp_resp *qat_resp = resp;
 67
 68	return qat_resp->comp_resp_pars.output_byte_counter;
 69}
 70
 71static inline u32 qat_comp_get_produced_adler32(void *resp)
 72{
 73	struct icp_qat_fw_comp_resp *qat_resp = resp;
 74
 75	return qat_resp->comp_resp_pars.crc.legacy.curr_adler_32;
 76}
 77
 78static inline u64 qat_comp_get_opaque(void *resp)
 79{
 80	struct icp_qat_fw_comp_resp *qat_resp = resp;
 81
 82	return qat_resp->opaque_data;
 83}
 84
 85static inline s8 qat_comp_get_cmp_err(void *resp)
 86{
 87	struct icp_qat_fw_comp_resp *qat_resp = resp;
 88
 89	return qat_resp->comn_resp.comn_error.cmp_err_code;
 90}
 91
 92static inline s8 qat_comp_get_xlt_err(void *resp)
 93{
 94	struct icp_qat_fw_comp_resp *qat_resp = resp;
 95
 96	return qat_resp->comn_resp.comn_error.xlat_err_code;
 97}
 98
 99static inline s8 qat_comp_get_cmp_status(void *resp)
100{
101	struct icp_qat_fw_comp_resp *qat_resp = resp;
102	u8 stat_filed = qat_resp->comn_resp.comn_status;
103
104	return ICP_QAT_FW_COMN_RESP_CMP_STAT_GET(stat_filed);
105}
106
107static inline s8 qat_comp_get_xlt_status(void *resp)
108{
109	struct icp_qat_fw_comp_resp *qat_resp = resp;
110	u8 stat_filed = qat_resp->comn_resp.comn_status;
111
112	return ICP_QAT_FW_COMN_RESP_XLAT_STAT_GET(stat_filed);
113}
114
115static inline u8 qat_comp_get_cmp_cnv_flag(void *resp)
116{
117	struct icp_qat_fw_comp_resp *qat_resp = resp;
118	u8 flags = qat_resp->comn_resp.hdr_flags;
119
120	return ICP_QAT_FW_COMN_HDR_CNV_FLAG_GET(flags);
121}
122
123#endif