18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* Copyright (c) 2019 HiSilicon Limited. */ 38c2ecf20Sopenharmony_ci#ifndef HISI_ZIP_H 48c2ecf20Sopenharmony_ci#define HISI_ZIP_H 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#undef pr_fmt 78c2ecf20Sopenharmony_ci#define pr_fmt(fmt) "hisi_zip: " fmt 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <linux/list.h> 108c2ecf20Sopenharmony_ci#include "../qm.h" 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cienum hisi_zip_error_type { 138c2ecf20Sopenharmony_ci /* negative compression */ 148c2ecf20Sopenharmony_ci HZIP_NC_ERR = 0x0d, 158c2ecf20Sopenharmony_ci}; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cistruct hisi_zip_dfx { 188c2ecf20Sopenharmony_ci atomic64_t send_cnt; 198c2ecf20Sopenharmony_ci atomic64_t recv_cnt; 208c2ecf20Sopenharmony_ci atomic64_t send_busy_cnt; 218c2ecf20Sopenharmony_ci atomic64_t err_bd_cnt; 228c2ecf20Sopenharmony_ci}; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_cistruct hisi_zip_ctrl; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cistruct hisi_zip { 278c2ecf20Sopenharmony_ci struct hisi_qm qm; 288c2ecf20Sopenharmony_ci struct hisi_zip_ctrl *ctrl; 298c2ecf20Sopenharmony_ci struct hisi_zip_dfx dfx; 308c2ecf20Sopenharmony_ci}; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistruct hisi_zip_sqe { 338c2ecf20Sopenharmony_ci u32 consumed; 348c2ecf20Sopenharmony_ci u32 produced; 358c2ecf20Sopenharmony_ci u32 comp_data_length; 368c2ecf20Sopenharmony_ci u32 dw3; 378c2ecf20Sopenharmony_ci u32 input_data_length; 388c2ecf20Sopenharmony_ci u32 lba_l; 398c2ecf20Sopenharmony_ci u32 lba_h; 408c2ecf20Sopenharmony_ci u32 dw7; 418c2ecf20Sopenharmony_ci u32 dw8; 428c2ecf20Sopenharmony_ci u32 dw9; 438c2ecf20Sopenharmony_ci u32 dw10; 448c2ecf20Sopenharmony_ci u32 priv_info; 458c2ecf20Sopenharmony_ci u32 dw12; 468c2ecf20Sopenharmony_ci u32 tag; 478c2ecf20Sopenharmony_ci u32 dest_avail_out; 488c2ecf20Sopenharmony_ci u32 rsvd0; 498c2ecf20Sopenharmony_ci u32 comp_head_addr_l; 508c2ecf20Sopenharmony_ci u32 comp_head_addr_h; 518c2ecf20Sopenharmony_ci u32 source_addr_l; 528c2ecf20Sopenharmony_ci u32 source_addr_h; 538c2ecf20Sopenharmony_ci u32 dest_addr_l; 548c2ecf20Sopenharmony_ci u32 dest_addr_h; 558c2ecf20Sopenharmony_ci u32 stream_ctx_addr_l; 568c2ecf20Sopenharmony_ci u32 stream_ctx_addr_h; 578c2ecf20Sopenharmony_ci u32 cipher_key1_addr_l; 588c2ecf20Sopenharmony_ci u32 cipher_key1_addr_h; 598c2ecf20Sopenharmony_ci u32 cipher_key2_addr_l; 608c2ecf20Sopenharmony_ci u32 cipher_key2_addr_h; 618c2ecf20Sopenharmony_ci u32 rsvd1[4]; 628c2ecf20Sopenharmony_ci}; 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ciint zip_create_qps(struct hisi_qp **qps, int ctx_num, int node); 658c2ecf20Sopenharmony_ciint hisi_zip_register_to_crypto(void); 668c2ecf20Sopenharmony_civoid hisi_zip_unregister_from_crypto(void); 678c2ecf20Sopenharmony_ci#endif 68