]>
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 | ||
a79fc7a7 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 | |
31 | * @lenp: Returns length of uncompressed data | |
185f812c | 32 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
33 | */ |
34 | int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp); | |
35 | ||
36 | /** | |
37 | * zunzip() - Uncompress blocks compressed with zlib without headers | |
38 | * | |
39 | * @dst: Destination for uncompressed data | |
40 | * @dstlen: Size of destination buffer | |
41 | * @src: Source data to decompress | |
42 | * @lenp: On entry, length data at @src. On exit, number of bytes used from @src | |
43 | * @stoponerr: 0 to continue when a decode error is found, 1 to stop | |
44 | * @offset: start offset within the src buffer | |
185f812c | 45 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
46 | */ |
47 | int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp, | |
48 | int stoponerr, int offset); | |
49 | ||
50 | /** | |
51 | * gzwrite progress indicators: defined weak to allow board-specific | |
52 | * overrides: | |
53 | * | |
54 | * gzwrite_progress_init called on startup | |
55 | * gzwrite_progress called during decompress/write loop | |
56 | * gzwrite_progress_finish called at end of loop to | |
57 | * indicate success (retcode=0) or failure | |
58 | */ | |
5a4f10d7 | 59 | void gzwrite_progress_init(ulong expected_size); |
0c670fc1 | 60 | |
5a4f10d7 | 61 | void gzwrite_progress(int iteration, ulong bytes_written, ulong total_bytes); |
0c670fc1 | 62 | |
5a4f10d7 | 63 | void gzwrite_progress_finish(int retcode, ulong totalwritten, ulong totalsize, |
0c670fc1 SG |
64 | u32 expected_crc, u32 calculated_crc); |
65 | ||
66 | /** | |
67 | * gzwrite() - decompress and write gzipped image from memory to block device | |
68 | * | |
69 | * @src: compressed image address | |
70 | * @len: compressed image length in bytes | |
71 | * @dev: block device descriptor | |
72 | * @szwritebuf: bytes per write (pad to erase size) | |
73 | * @startoffs: offset in bytes of first write | |
74 | * @szexpected: expected uncompressed length, may be zero to use gzip trailer | |
75 | * for files under 4GiB | |
185f812c | 76 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
77 | */ |
78 | int gzwrite(unsigned char *src, int len, struct blk_desc *dev, ulong szwritebuf, | |
5a4f10d7 | 79 | ulong startoffs, ulong szexpected); |
0c670fc1 SG |
80 | |
81 | /** | |
82 | * gzip()- Compress data into a buffer using the gzip algorithm | |
83 | * | |
84 | * @dst: Destination buffer for compressed data | |
85 | * @lenp: On entry, space available in destination buffer (in bytes). On exit, | |
86 | * number of bytes used in the buffer | |
87 | * @src: Source data to compress | |
88 | * @srclen: Size of source data | |
185f812c | 89 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
90 | */ |
91 | int gzip(void *dst, unsigned long *lenp, unsigned char *src, ulong srclen); | |
92 | ||
93 | /** | |
94 | * zzip() - Compress blocks with zlib | |
95 | * | |
96 | * @dst: Destination for compressed data | |
97 | * @lenp: On entry, length data at @dst. On exit, number of bytes written to | |
98 | * @dst | |
99 | * @src: Source data to compress | |
100 | * @srclen: Size of source data | |
101 | * @stoponerr: 0 to continue when a decode error is found, 1 to stop | |
102 | * @func: Some sort of function that is called to do something. !ADD DOCS HERE! | |
103 | */ | |
104 | int zzip(void *dst, ulong *lenp, unsigned char *src, ulong srclen, | |
105 | int stoponerr, int (*func)(ulong, ulong)); | |
106 | ||
107 | #endif |