xref: /linux/drivers/crypto/hisilicon/zip/zip.h (revision f97a3d7558d7f77deccbac79eaf8ffa9d1a131d3)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2019 HiSilicon Limited. */
3 #ifndef HISI_ZIP_H
4 #define HISI_ZIP_H
5 
6 #undef pr_fmt
7 #define pr_fmt(fmt)	"hisi_zip: " fmt
8 
9 #include <linux/list.h>
10 #include "../qm.h"
11 
12 enum hisi_zip_error_type {
13 	/* negative compression */
14 	HZIP_NC_ERR = 0x0d,
15 };
16 
17 struct hisi_zip_dfx {
18 	atomic64_t send_cnt;
19 	atomic64_t recv_cnt;
20 	atomic64_t send_busy_cnt;
21 	atomic64_t err_bd_cnt;
22 };
23 
24 struct hisi_zip_ctrl;
25 
26 struct hisi_zip {
27 	struct hisi_qm qm;
28 	struct hisi_zip_ctrl *ctrl;
29 	struct hisi_zip_dfx dfx;
30 };
31 
32 struct hisi_zip_sqe {
33 	u32 consumed;
34 	u32 produced;
35 	u32 comp_data_length;
36 	u32 dw3;
37 	u32 input_data_length;
38 	u32 lba_l;
39 	u32 lba_h;
40 	u32 dw7;
41 	u32 dw8;
42 	u32 dw9;
43 	u32 dw10;
44 	u32 priv_info;
45 	u32 dw12;
46 	u32 tag;
47 	u32 dest_avail_out;
48 	u32 rsvd0;
49 	u32 comp_head_addr_l;
50 	u32 comp_head_addr_h;
51 	u32 source_addr_l;
52 	u32 source_addr_h;
53 	u32 dest_addr_l;
54 	u32 dest_addr_h;
55 	u32 stream_ctx_addr_l;
56 	u32 stream_ctx_addr_h;
57 	u32 cipher_key1_addr_l;
58 	u32 cipher_key1_addr_h;
59 	u32 cipher_key2_addr_l;
60 	u32 cipher_key2_addr_h;
61 	u32 rsvd1[4];
62 };
63 
64 int zip_create_qps(struct hisi_qp **qps, int ctx_num, int node);
65 int hisi_zip_register_to_crypto(void);
66 void hisi_zip_unregister_from_crypto(void);
67 #endif
68