14fa9c49fSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
256cf2635SRahul Lakkireddy /*
356cf2635SRahul Lakkireddy  *  Copyright (C) 2018 Chelsio Communications.  All rights reserved.
456cf2635SRahul Lakkireddy  */
556cf2635SRahul Lakkireddy 
656cf2635SRahul Lakkireddy #ifndef __CUDBG_ZLIB_H__
756cf2635SRahul Lakkireddy #define __CUDBG_ZLIB_H__
856cf2635SRahul Lakkireddy 
991c1953dSRahul Lakkireddy #include <linux/zlib.h>
1091c1953dSRahul Lakkireddy 
1191c1953dSRahul Lakkireddy #define CUDBG_ZLIB_COMPRESS_ID 17
1291c1953dSRahul Lakkireddy #define CUDBG_ZLIB_WIN_BITS 12
1391c1953dSRahul Lakkireddy #define CUDBG_ZLIB_MEM_LVL 4
1491c1953dSRahul Lakkireddy 
1591c1953dSRahul Lakkireddy struct cudbg_compress_hdr {
1691c1953dSRahul Lakkireddy 	u32 compress_id;
1791c1953dSRahul Lakkireddy 	u64 decompress_size;
1891c1953dSRahul Lakkireddy 	u64 compress_size;
1991c1953dSRahul Lakkireddy 	u64 rsvd[32];
2091c1953dSRahul Lakkireddy };
2191c1953dSRahul Lakkireddy 
cudbg_get_workspace_size(void)2291c1953dSRahul Lakkireddy static inline int cudbg_get_workspace_size(void)
2391c1953dSRahul Lakkireddy {
2491c1953dSRahul Lakkireddy 	return zlib_deflate_workspacesize(CUDBG_ZLIB_WIN_BITS,
2591c1953dSRahul Lakkireddy 					  CUDBG_ZLIB_MEM_LVL);
2691c1953dSRahul Lakkireddy }
2791c1953dSRahul Lakkireddy 
2891c1953dSRahul Lakkireddy int cudbg_compress_buff(struct cudbg_init *pdbg_init,
2991c1953dSRahul Lakkireddy 			struct cudbg_buffer *pin_buff,
3091c1953dSRahul Lakkireddy 			struct cudbg_buffer *pout_buff);
3156cf2635SRahul Lakkireddy #endif /* __CUDBG_ZLIB_H__ */
32