]>
Commit | Line | Data |
---|---|---|
0c670fc1 SG |
1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
2 | /* | |
3 | * (C) Copyright 2000-2009 | |
4 | * Wolfgang Denk, DENX Software Engineering, [email protected]. | |
5 | */ | |
6 | ||
7 | #ifndef __GZIP_H | |
8 | #define __GZIP_H | |
9 | ||
03de305e TR |
10 | #include <linux/types.h> |
11 | ||
e6f6f9e6 SG |
12 | struct blk_desc; |
13 | ||
0c670fc1 SG |
14 | /** |
15 | * gzip_parse_header() - Parse a header from a gzip file | |
16 | * | |
17 | * This returns the length of the header. | |
18 | * | |
19 | * @src: Pointer to gzip file | |
20 | * @len: Length of data | |
185f812c | 21 | * Return: length of header in bytes, or -1 if not enough data |
0c670fc1 SG |
22 | */ |
23 | int gzip_parse_header(const unsigned char *src, unsigned long len); | |
24 | ||
25 | /** | |
26 | * gunzip() - Decompress gzipped data | |
27 | * | |
28 | * @dst: Destination for uncompressed data | |
29 | * @dstlen: Size of destination buffer | |
30 | * @src: Source data to decompress | |
13f5535b SG |
31 | * @lenp: On entry, length of data at @src. On exit, number of bytes used from |
32 | * @src | |
185f812c | 33 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
34 | */ |
35 | int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp); | |
36 | ||
37 | /** | |
38 | * zunzip() - Uncompress blocks compressed with zlib without headers | |
39 | * | |
40 | * @dst: Destination for uncompressed data | |
41 | * @dstlen: Size of destination buffer | |
42 | * @src: Source data to decompress | |
13f5535b SG |
43 | * @lenp: On entry, length of data at @src. On exit, number of bytes used from |
44 | * @src | |
0c670fc1 SG |
45 | * @stoponerr: 0 to continue when a decode error is found, 1 to stop |
46 | * @offset: start offset within the src buffer | |
185f812c | 47 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
48 | */ |
49 | int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp, | |
50 | int stoponerr, int offset); | |
51 | ||
52 | /** | |
53 | * gzwrite progress indicators: defined weak to allow board-specific | |
54 | * overrides: | |
55 | * | |
56 | * gzwrite_progress_init called on startup | |
57 | * gzwrite_progress called during decompress/write loop | |
58 | * gzwrite_progress_finish called at end of loop to | |
59 | * indicate success (retcode=0) or failure | |
60 | */ | |
5a4f10d7 | 61 | void gzwrite_progress_init(ulong expected_size); |
0c670fc1 | 62 | |
5a4f10d7 | 63 | void gzwrite_progress(int iteration, ulong bytes_written, ulong total_bytes); |
0c670fc1 | 64 | |
5a4f10d7 | 65 | void gzwrite_progress_finish(int retcode, ulong totalwritten, ulong totalsize, |
0c670fc1 SG |
66 | u32 expected_crc, u32 calculated_crc); |
67 | ||
68 | /** | |
69 | * gzwrite() - decompress and write gzipped image from memory to block device | |
70 | * | |
71 | * @src: compressed image address | |
72 | * @len: compressed image length in bytes | |
73 | * @dev: block device descriptor | |
74 | * @szwritebuf: bytes per write (pad to erase size) | |
75 | * @startoffs: offset in bytes of first write | |
76 | * @szexpected: expected uncompressed length, may be zero to use gzip trailer | |
77 | * for files under 4GiB | |
185f812c | 78 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
79 | */ |
80 | int gzwrite(unsigned char *src, int len, struct blk_desc *dev, ulong szwritebuf, | |
5a4f10d7 | 81 | ulong startoffs, ulong szexpected); |
0c670fc1 SG |
82 | |
83 | /** | |
84 | * gzip()- Compress data into a buffer using the gzip algorithm | |
85 | * | |
86 | * @dst: Destination buffer for compressed data | |
87 | * @lenp: On entry, space available in destination buffer (in bytes). On exit, | |
88 | * number of bytes used in the buffer | |
89 | * @src: Source data to compress | |
90 | * @srclen: Size of source data | |
185f812c | 91 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
92 | */ |
93 | int gzip(void *dst, unsigned long *lenp, unsigned char *src, ulong srclen); | |
94 | ||
95 | /** | |
96 | * zzip() - Compress blocks with zlib | |
97 | * | |
98 | * @dst: Destination for compressed data | |
99 | * @lenp: On entry, length data at @dst. On exit, number of bytes written to | |
100 | * @dst | |
101 | * @src: Source data to compress | |
102 | * @srclen: Size of source data | |
103 | * @stoponerr: 0 to continue when a decode error is found, 1 to stop | |
104 | * @func: Some sort of function that is called to do something. !ADD DOCS HERE! | |
105 | */ | |
106 | int zzip(void *dst, ulong *lenp, unsigned char *src, ulong srclen, | |
107 | int stoponerr, int (*func)(ulong, ulong)); | |
108 | ||
109 | #endif |