summaryrefslogtreecommitdiff
path: root/drivers/crypto/qat/qat_common/icp_qat_fw_comp.h
blob: a03d43fef2b370e0583f5a2fee8ff5b707836bcb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright(c) 2022 Intel Corporation */
#ifndef _ICP_QAT_FW_COMP_H_
#define _ICP_QAT_FW_COMP_H_
#include "icp_qat_fw.h"

enum icp_qat_fw_comp_cmd_id {
	ICP_QAT_FW_COMP_CMD_STATIC = 0,
	ICP_QAT_FW_COMP_CMD_DYNAMIC = 1,
	ICP_QAT_FW_COMP_CMD_DECOMPRESS = 2,
	ICP_QAT_FW_COMP_CMD_DELIMITER
};

enum icp_qat_fw_comp_20_cmd_id {
	ICP_QAT_FW_COMP_20_CMD_LZ4_COMPRESS = 3,
	ICP_QAT_FW_COMP_20_CMD_LZ4_DECOMPRESS = 4,
	ICP_QAT_FW_COMP_20_CMD_LZ4S_COMPRESS = 5,
	ICP_QAT_FW_COMP_20_CMD_LZ4S_DECOMPRESS = 6,
	ICP_QAT_FW_COMP_20_CMD_XP10_COMPRESS = 7,
	ICP_QAT_FW_COMP_20_CMD_XP10_DECOMPRESS = 8,
	ICP_QAT_FW_COMP_20_CMD_RESERVED_9 = 9,
	ICP_QAT_FW_COMP_23_CMD_ZSTD_COMPRESS = 10,
	ICP_QAT_FW_COMP_23_CMD_ZSTD_DECOMPRESS = 11,
	ICP_QAT_FW_COMP_20_CMD_DELIMITER
};

#define ICP_QAT_FW_COMP_STATELESS_SESSION 0
#define ICP_QAT_FW_COMP_STATEFUL_SESSION 1
#define ICP_QAT_FW_COMP_NOT_AUTO_SELECT_BEST 0
#define ICP_QAT_FW_COMP_AUTO_SELECT_BEST 1
#define ICP_QAT_FW_COMP_NOT_ENH_AUTO_SELECT_BEST 0
#define ICP_QAT_FW_COMP_ENH_AUTO_SELECT_BEST 1
#define ICP_QAT_FW_COMP_NOT_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 0
#define ICP_QAT_FW_COMP_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 1
#define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_USED_AS_INTMD_BUF 1
#define ICP_QAT_FW_COMP_ENABLE_SECURE_RAM_USED_AS_INTMD_BUF 0
#define ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS 2
#define ICP_QAT_FW_COMP_SESSION_TYPE_MASK 0x1
#define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS 3
#define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK 0x1
#define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS 4
#define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK 0x1
#define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS 5
#define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK 0x1
#define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS 7
#define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK 0x1

#define ICP_QAT_FW_COMP_FLAGS_BUILD(sesstype, autoselect, enhanced_asb, \
	ret_uncomp, secure_ram) \
	((((sesstype) & ICP_QAT_FW_COMP_SESSION_TYPE_MASK) << \
	ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS) | \
	(((autoselect) & ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK) << \
	ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS) | \
	(((enhanced_asb) & ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK) << \
	ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS) | \
	(((ret_uncomp) & ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK) << \
	ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS) | \
	(((secure_ram) & ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK) << \
	ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS))

#define ICP_QAT_FW_COMP_SESSION_TYPE_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS, \
	ICP_QAT_FW_COMP_SESSION_TYPE_MASK)

#define ICP_QAT_FW_COMP_SESSION_TYPE_SET(flags, val) \
	QAT_FIELD_SET(flags, val, ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS, \
	ICP_QAT_FW_COMP_SESSION_TYPE_MASK)

#define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS, \
	ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)

#define ICP_QAT_FW_COMP_EN_ASB_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS, \
	ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK)

#define ICP_QAT_FW_COMP_RET_UNCOMP_GET(flags) \
	QAT_FIELD_GET(flags, \
	ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS, \
	ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK)

#define ICP_QAT_FW_COMP_SECURE_RAM_USE_GET(flags) \
	QAT_FIELD_GET(flags, \
	ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS, \
	ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK)

struct icp_qat_fw_comp_req_hdr_cd_pars {
	union {
		struct {
			__u64 content_desc_addr;
			__u16 content_desc_resrvd1;
			__u8 content_desc_params_sz;
			__u8 content_desc_hdr_resrvd2;
			__u32 content_desc_resrvd3;
		} s;
		struct {
			__u32 comp_slice_cfg_word[ICP_QAT_FW_NUM_LONGWORDS_2];
			__u32 content_desc_resrvd4;
		} sl;
	} u;
};

struct icp_qat_fw_comp_req_params {
	__u32 comp_len;
	__u32 out_buffer_sz;
	union {
		struct {
			__u32 initial_crc32;
			__u32 initial_adler;
		} legacy;
		__u64 crc_data_addr;
	} crc;
	__u32 req_par_flags;
	__u32 rsrvd;
};

#define ICP_QAT_FW_COMP_REQ_PARAM_FLAGS_BUILD(sop, eop, bfinal, cnv, cnvnr, \
					      cnvdfx, crc, xxhash_acc, \
					      cnv_error_type, append_crc, \
					      drop_data) \
	((((sop) & ICP_QAT_FW_COMP_SOP_MASK) << \
	ICP_QAT_FW_COMP_SOP_BITPOS) | \
	(((eop) & ICP_QAT_FW_COMP_EOP_MASK) << \
	ICP_QAT_FW_COMP_EOP_BITPOS) | \
	(((bfinal) & ICP_QAT_FW_COMP_BFINAL_MASK) \
	<< ICP_QAT_FW_COMP_BFINAL_BITPOS) | \
	(((cnv) & ICP_QAT_FW_COMP_CNV_MASK) << \
	ICP_QAT_FW_COMP_CNV_BITPOS) | \
	(((cnvnr) & ICP_QAT_FW_COMP_CNVNR_MASK) \
	<< ICP_QAT_FW_COMP_CNVNR_BITPOS) | \
	(((cnvdfx) & ICP_QAT_FW_COMP_CNV_DFX_MASK) \
	<< ICP_QAT_FW_COMP_CNV_DFX_BITPOS) | \
	(((crc) & ICP_QAT_FW_COMP_CRC_MODE_MASK) \
	<< ICP_QAT_FW_COMP_CRC_MODE_BITPOS) | \
	(((xxhash_acc) & ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK) \
	<< ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS) | \
	(((cnv_error_type) & ICP_QAT_FW_COMP_CNV_ERROR_MASK) \
	<< ICP_QAT_FW_COMP_CNV_ERROR_BITPOS) | \
	(((append_crc) & ICP_QAT_FW_COMP_APPEND_CRC_MASK) \
	<< ICP_QAT_FW_COMP_APPEND_CRC_BITPOS) | \
	(((drop_data) & ICP_QAT_FW_COMP_DROP_DATA_MASK) \
	<< ICP_QAT_FW_COMP_DROP_DATA_BITPOS))

#define ICP_QAT_FW_COMP_NOT_SOP 0
#define ICP_QAT_FW_COMP_SOP 1
#define ICP_QAT_FW_COMP_NOT_EOP 0
#define ICP_QAT_FW_COMP_EOP 1
#define ICP_QAT_FW_COMP_NOT_BFINAL 0
#define ICP_QAT_FW_COMP_BFINAL 1
#define ICP_QAT_FW_COMP_NO_CNV 0
#define ICP_QAT_FW_COMP_CNV 1
#define ICP_QAT_FW_COMP_NO_CNV_RECOVERY 0
#define ICP_QAT_FW_COMP_CNV_RECOVERY 1
#define ICP_QAT_FW_COMP_NO_CNV_DFX 0
#define ICP_QAT_FW_COMP_CNV_DFX 1
#define ICP_QAT_FW_COMP_CRC_MODE_LEGACY 0
#define ICP_QAT_FW_COMP_CRC_MODE_E2E 1
#define ICP_QAT_FW_COMP_NO_XXHASH_ACC 0
#define ICP_QAT_FW_COMP_XXHASH_ACC 1
#define ICP_QAT_FW_COMP_APPEND_CRC 1
#define ICP_QAT_FW_COMP_NO_APPEND_CRC 0
#define ICP_QAT_FW_COMP_DROP_DATA 1
#define ICP_QAT_FW_COMP_NO_DROP_DATA 0
#define ICP_QAT_FW_COMP_SOP_BITPOS 0
#define ICP_QAT_FW_COMP_SOP_MASK 0x1
#define ICP_QAT_FW_COMP_EOP_BITPOS 1
#define ICP_QAT_FW_COMP_EOP_MASK 0x1
#define ICP_QAT_FW_COMP_BFINAL_BITPOS 6
#define ICP_QAT_FW_COMP_BFINAL_MASK 0x1
#define ICP_QAT_FW_COMP_CNV_BITPOS 16
#define ICP_QAT_FW_COMP_CNV_MASK 0x1
#define ICP_QAT_FW_COMP_CNVNR_BITPOS 17
#define ICP_QAT_FW_COMP_CNVNR_MASK 0x1
#define ICP_QAT_FW_COMP_CNV_DFX_BITPOS 18
#define ICP_QAT_FW_COMP_CNV_DFX_MASK 0x1
#define ICP_QAT_FW_COMP_CRC_MODE_BITPOS 19
#define ICP_QAT_FW_COMP_CRC_MODE_MASK 0x1
#define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS 20
#define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK 0x1
#define ICP_QAT_FW_COMP_CNV_ERROR_BITPOS 21
#define ICP_QAT_FW_COMP_CNV_ERROR_MASK 0b111
#define ICP_QAT_FW_COMP_CNV_ERROR_NONE 0b000
#define ICP_QAT_FW_COMP_CNV_ERROR_CHECKSUM 0b001
#define ICP_QAT_FW_COMP_CNV_ERROR_DCPR_OBC_DIFF 0b010
#define ICP_QAT_FW_COMP_CNV_ERROR_DCPR 0b011
#define ICP_QAT_FW_COMP_CNV_ERROR_XLT 0b100
#define ICP_QAT_FW_COMP_CNV_ERROR_DCPR_IBC_DIFF 0b101
#define ICP_QAT_FW_COMP_APPEND_CRC_BITPOS 24
#define ICP_QAT_FW_COMP_APPEND_CRC_MASK 0x1
#define ICP_QAT_FW_COMP_DROP_DATA_BITPOS 25
#define ICP_QAT_FW_COMP_DROP_DATA_MASK 0x1

#define ICP_QAT_FW_COMP_SOP_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_SOP_BITPOS, \
	ICP_QAT_FW_COMP_SOP_MASK)

#define ICP_QAT_FW_COMP_SOP_SET(flags, val) \
	QAT_FIELD_SET(flags, val, ICP_QAT_FW_COMP_SOP_BITPOS, \
	ICP_QAT_FW_COMP_SOP_MASK)

#define ICP_QAT_FW_COMP_EOP_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_EOP_BITPOS, \
	ICP_QAT_FW_COMP_EOP_MASK)

#define ICP_QAT_FW_COMP_EOP_SET(flags, val) \
	QAT_FIELD_SET(flags, val, ICP_QAT_FW_COMP_EOP_BITPOS, \
	ICP_QAT_FW_COMP_EOP_MASK)

#define ICP_QAT_FW_COMP_BFINAL_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_BFINAL_BITPOS, \
	ICP_QAT_FW_COMP_BFINAL_MASK)

#define ICP_QAT_FW_COMP_BFINAL_SET(flags, val) \
	QAT_FIELD_SET(flags, val, ICP_QAT_FW_COMP_BFINAL_BITPOS, \
	ICP_QAT_FW_COMP_BFINAL_MASK)

#define ICP_QAT_FW_COMP_CNV_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_CNV_BITPOS, \
	ICP_QAT_FW_COMP_CNV_MASK)

#define ICP_QAT_FW_COMP_CNVNR_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_CNVNR_BITPOS, \
	ICP_QAT_FW_COMP_CNVNR_MASK)

#define ICP_QAT_FW_COMP_CNV_DFX_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_CNV_DFX_BITPOS, \
	ICP_QAT_FW_COMP_CNV_DFX_MASK)

#define ICP_QAT_FW_COMP_CNV_DFX_SET(flags, val) \
	QAT_FIELD_SET(flags, val, ICP_QAT_FW_COMP_CNV_DFX_BITPOS, \
	ICP_QAT_FW_COMP_CNV_DFX_MASK)

#define ICP_QAT_FW_COMP_CRC_MODE_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_CRC_MODE_BITPOS, \
	ICP_QAT_FW_COMP_CRC_MODE_MASK)

#define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS, \
	ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK)

#define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_SET(flags, val) \
	QAT_FIELD_SET(flags, val, ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS, \
	ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK)

#define ICP_QAT_FW_COMP_CNV_ERROR_TYPE_GET(flags) \
	QAT_FIELD_GET(flags, ICP_QAT_FW_COMP_CNV_ERROR_BITPOS, \
	ICP_QAT_FW_COMP_CNV_ERROR_MASK)

#define ICP_QAT_FW_COMP_CNV_ERROR_TYPE_SET(flags, val) \
	QAT_FIELD_SET(flags, val, ICP_QAT_FW_COMP_CNV_ERROR_BITPOS, \
	ICP_QAT_FW_COMP_CNV_ERROR_MASK)

struct icp_qat_fw_xlt_req_params {
	__u64 inter_buff_ptr;
};

struct icp_qat_fw_comp_cd_hdr {
	__u16 ram_bank_flags;
	__u8 comp_cfg_offset;
	__u8 next_curr_id;
	__u32 resrvd;
	__u64 comp_state_addr;
	__u64 ram_banks_addr;
};

#define COMP_CPR_INITIAL_CRC 0
#define COMP_CPR_INITIAL_ADLER 1

struct icp_qat_fw_xlt_cd_hdr {
	__u16 resrvd1;
	__u8 resrvd2;
	__u8 next_curr_id;
	__u32 resrvd3;
};

struct icp_qat_fw_comp_req {
	struct icp_qat_fw_comn_req_hdr comn_hdr;
	struct icp_qat_fw_comp_req_hdr_cd_pars cd_pars;
	struct icp_qat_fw_comn_req_mid comn_mid;
	struct icp_qat_fw_comp_req_params comp_pars;
	union {
		struct icp_qat_fw_xlt_req_params xlt_pars;
		__u32 resrvd1[ICP_QAT_FW_NUM_LONGWORDS_2];
	} u1;
	__u32 resrvd2[ICP_QAT_FW_NUM_LONGWORDS_2];
	struct icp_qat_fw_comp_cd_hdr comp_cd_ctrl;
	union {
		struct icp_qat_fw_xlt_cd_hdr xlt_cd_ctrl;
		__u32 resrvd3[ICP_QAT_FW_NUM_LONGWORDS_2];
	} u2;
};

struct icp_qat_fw_resp_comp_pars {
	__u32 input_byte_counter;
	__u32 output_byte_counter;
	union {
		struct {
			__u32 curr_crc32;
			__u32 curr_adler_32;
		} legacy;
		__u32 resrvd[ICP_QAT_FW_NUM_LONGWORDS_2];
	} crc;
};

struct icp_qat_fw_comp_state {
	__u32 rd8_counter;
	__u32 status_flags;
	__u32 in_counter;
	__u32 out_counter;
	__u64 intermediate_state;
	__u32 lobc;
	__u32 replaybc;
	__u64 pcrc64_poly;
	__u32 crc32;
	__u32 adler_xxhash32;
	__u64 pcrc64_xorout;
	__u32 out_buf_size;
	__u32 in_buf_size;
	__u64 in_pcrc64;
	__u64 out_pcrc64;
	__u32 lobs;
	__u32 libc;
	__u64 reserved;
	__u32 xxhash_state[4];
	__u32 cleartext[4];
};

struct icp_qat_fw_comp_resp {
	struct icp_qat_fw_comn_resp_hdr comn_resp;
	__u64 opaque_data;
	struct icp_qat_fw_resp_comp_pars comp_resp_pars;
};

#define QAT_FW_COMP_BANK_FLAG_MASK 0x1
#define QAT_FW_COMP_BANK_I_BITPOS 8
#define QAT_FW_COMP_BANK_H_BITPOS 7
#define QAT_FW_COMP_BANK_G_BITPOS 6
#define QAT_FW_COMP_BANK_F_BITPOS 5
#define QAT_FW_COMP_BANK_E_BITPOS 4
#define QAT_FW_COMP_BANK_D_BITPOS 3
#define QAT_FW_COMP_BANK_C_BITPOS 2
#define QAT_FW_COMP_BANK_B_BITPOS 1
#define QAT_FW_COMP_BANK_A_BITPOS 0

enum icp_qat_fw_comp_bank_enabled {
	ICP_QAT_FW_COMP_BANK_DISABLED = 0,
	ICP_QAT_FW_COMP_BANK_ENABLED = 1,
	ICP_QAT_FW_COMP_BANK_DELIMITER = 2
};

#define ICP_QAT_FW_COMP_RAM_FLAGS_BUILD(bank_i_enable, bank_h_enable, \
					bank_g_enable, bank_f_enable, \
					bank_e_enable, bank_d_enable, \
					bank_c_enable, bank_b_enable, \
					bank_a_enable) \
	((((bank_i_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_I_BITPOS) | \
	(((bank_h_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_H_BITPOS) | \
	(((bank_g_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_G_BITPOS) | \
	(((bank_f_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_F_BITPOS) | \
	(((bank_e_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_E_BITPOS) | \
	(((bank_d_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_D_BITPOS) | \
	(((bank_c_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_C_BITPOS) | \
	(((bank_b_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_B_BITPOS) | \
	(((bank_a_enable) & QAT_FW_COMP_BANK_FLAG_MASK) << \
	QAT_FW_COMP_BANK_A_BITPOS))

struct icp_qat_fw_comp_crc_data_struct {
	__u32 crc32;
	union {
		__u32 adler;
		__u32 xxhash;
	} adler_xxhash_u;
	__u32 cpr_in_crc_lo;
	__u32 cpr_in_crc_hi;
	__u32 cpr_out_crc_lo;
	__u32 cpr_out_crc_hi;
	__u32 xlt_in_crc_lo;
	__u32 xlt_in_crc_hi;
	__u32 xlt_out_crc_lo;
	__u32 xlt_out_crc_hi;
	__u32 prog_crc_poly_lo;
	__u32 prog_crc_poly_hi;
	__u32 xor_out_lo;
	__u32 xor_out_hi;
	__u32 append_crc_lo;
	__u32 append_crc_hi;
};

struct xxhash_acc_state_buff {
	__u32 in_counter;
	__u32 out_counter;
	__u32 xxhash_state[4];
	__u32 clear_txt[4];
};

#endif