xref: /OK3568_Linux_fs/kernel/include/linux/soc/rockchip/rockchip_decompress.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /* Copyright (c) 2020 Rockchip Electronics Co., Ltd */
3 
4 #ifndef _ROCKCHIP_DECOMPRESS
5 #define _ROCKCHIP_DECOMPRESS
6 
7 enum decom_mod {
8 	LZ4_MOD,
9 	GZIP_MOD,
10 	ZLIB_MOD,
11 };
12 
13 /* The high 16 bits indicate whether decompression is non-blocking */
14 #define DECOM_NOBLOCKING		(0x00010000)
15 
rk_get_decom_mode(u32 mode)16 static inline u32 rk_get_decom_mode(u32 mode)
17 {
18 	return mode & 0x0000ffff;
19 }
20 
rk_get_noblocking_flag(u32 mode)21 static inline bool rk_get_noblocking_flag(u32 mode)
22 {
23 	return !!(mode & DECOM_NOBLOCKING);
24 }
25 
26 #ifdef CONFIG_ROCKCHIP_HW_DECOMPRESS
27 int rk_decom_start(u32 mode, phys_addr_t src, phys_addr_t dst, u32 dst_max_size);
28 /* timeout in seconds */
29 int rk_decom_wait_done(u32 timeout, u64 *decom_len);
30 #else
rk_decom_start(u32 mode,phys_addr_t src,phys_addr_t dst,u32 dst_max_size)31 static inline int rk_decom_start(u32 mode, phys_addr_t src, phys_addr_t dst, u32 dst_max_size)
32 {
33 	return -EINVAL;
34 }
35 
rk_decom_wait_done(u32 timeout,u64 * decom_len)36 static inline int rk_decom_wait_done(u32 timeout, u64 *decom_len)
37 {
38 	return -EINVAL;
39 }
40 #endif
41 
42 #endif
43