Commit | Line | Data |
---|---|---|
62c455ca ZW |
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" | |
62c455ca ZW |
11 | |
12 | /* hisi_zip_sqe dw3 */ | |
13 | #define HZIP_BD_STATUS_M GENMASK(7, 0) | |
14 | /* hisi_zip_sqe dw9 */ | |
15 | #define HZIP_REQ_TYPE_M GENMASK(7, 0) | |
16 | #define HZIP_ALG_TYPE_ZLIB 0x02 | |
17 | #define HZIP_ALG_TYPE_GZIP 0x03 | |
18 | #define HZIP_BUF_TYPE_M GENMASK(11, 8) | |
19 | #define HZIP_PBUFFER 0x0 | |
20 | #define HZIP_SGL 0x1 | |
21 | ||
22 | enum hisi_zip_error_type { | |
23 | /* negative compression */ | |
24 | HZIP_NC_ERR = 0x0d, | |
25 | }; | |
26 | ||
27 | struct hisi_zip_ctrl; | |
28 | ||
29 | struct hisi_zip { | |
30 | struct hisi_qm qm; | |
31 | struct list_head list; | |
32 | struct hisi_zip_ctrl *ctrl; | |
33 | }; | |
34 | ||
35 | struct hisi_zip_sqe { | |
36 | u32 consumed; | |
37 | u32 produced; | |
38 | u32 comp_data_length; | |
39 | u32 dw3; | |
40 | u32 input_data_length; | |
41 | u32 lba_l; | |
42 | u32 lba_h; | |
43 | u32 dw7; | |
44 | u32 dw8; | |
45 | u32 dw9; | |
46 | u32 dw10; | |
47 | u32 priv_info; | |
48 | u32 dw12; | |
49 | u32 tag; | |
50 | u32 dest_avail_out; | |
51 | u32 rsvd0; | |
52 | u32 comp_head_addr_l; | |
53 | u32 comp_head_addr_h; | |
54 | u32 source_addr_l; | |
55 | u32 source_addr_h; | |
56 | u32 dest_addr_l; | |
57 | u32 dest_addr_h; | |
58 | u32 stream_ctx_addr_l; | |
59 | u32 stream_ctx_addr_h; | |
60 | u32 cipher_key1_addr_l; | |
61 | u32 cipher_key1_addr_h; | |
62 | u32 cipher_key2_addr_l; | |
63 | u32 cipher_key2_addr_h; | |
64 | u32 rsvd1[4]; | |
65 | }; | |
66 | ||
67 | struct hisi_zip *find_zip_device(int node); | |
68 | int hisi_zip_register_to_crypto(void); | |
69 | void hisi_zip_unregister_from_crypto(void); | |
70 | #endif |