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