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