gpio: rcar: Fix runtime PM imbalance on error
[linux/fpc-iii.git] / drivers / crypto / hisilicon / zip / zip.h
blob82dc6f867171a649b3f3df071858dde30617113c
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2019 HiSilicon Limited. */
3 #ifndef HISI_ZIP_H
4 #define HISI_ZIP_H
6 #undef pr_fmt
7 #define pr_fmt(fmt) "hisi_zip: " fmt
9 #include <linux/list.h>
10 #include "../qm.h"
12 /* hisi_zip_sqe dw3 */
13 #define HZIP_BD_STATUS_M GENMASK(7, 0)
14 /* hisi_zip_sqe dw7 */
15 #define HZIP_IN_SGE_DATA_OFFSET_M GENMASK(23, 0)
16 /* hisi_zip_sqe dw8 */
17 #define HZIP_OUT_SGE_DATA_OFFSET_M GENMASK(23, 0)
18 /* hisi_zip_sqe dw9 */
19 #define HZIP_REQ_TYPE_M GENMASK(7, 0)
20 #define HZIP_ALG_TYPE_ZLIB 0x02
21 #define HZIP_ALG_TYPE_GZIP 0x03
22 #define HZIP_BUF_TYPE_M GENMASK(11, 8)
23 #define HZIP_PBUFFER 0x0
24 #define HZIP_SGL 0x1
26 enum hisi_zip_error_type {
27 /* negative compression */
28 HZIP_NC_ERR = 0x0d,
31 struct hisi_zip_ctrl;
33 struct hisi_zip {
34 struct hisi_qm qm;
35 struct list_head list;
36 struct hisi_zip_ctrl *ctrl;
39 struct hisi_zip_sqe {
40 u32 consumed;
41 u32 produced;
42 u32 comp_data_length;
43 u32 dw3;
44 u32 input_data_length;
45 u32 lba_l;
46 u32 lba_h;
47 u32 dw7;
48 u32 dw8;
49 u32 dw9;
50 u32 dw10;
51 u32 priv_info;
52 u32 dw12;
53 u32 tag;
54 u32 dest_avail_out;
55 u32 rsvd0;
56 u32 comp_head_addr_l;
57 u32 comp_head_addr_h;
58 u32 source_addr_l;
59 u32 source_addr_h;
60 u32 dest_addr_l;
61 u32 dest_addr_h;
62 u32 stream_ctx_addr_l;
63 u32 stream_ctx_addr_h;
64 u32 cipher_key1_addr_l;
65 u32 cipher_key1_addr_h;
66 u32 cipher_key2_addr_l;
67 u32 cipher_key2_addr_h;
68 u32 rsvd1[4];
71 int zip_create_qps(struct hisi_qp **qps, int ctx_num);
72 int hisi_zip_register_to_crypto(void);
73 void hisi_zip_unregister_from_crypto(void);
74 #endif