Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / drivers / crypto / hisilicon / zip / zip.h
CommitLineData
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
22enum hisi_zip_error_type {
23 /* negative compression */
24 HZIP_NC_ERR = 0x0d,
25};
26
27struct hisi_zip_ctrl;
28
29struct hisi_zip {
30 struct hisi_qm qm;
31 struct list_head list;
32 struct hisi_zip_ctrl *ctrl;
33};
34
35struct 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
67struct hisi_zip *find_zip_device(int node);
68int hisi_zip_register_to_crypto(void);
69void hisi_zip_unregister_from_crypto(void);
70#endif