1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * (C) Copyright 2000-2009
4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
10 #include <linux/types.h>
15 * gzip_parse_header() - Parse a header from a gzip file
17 * This returns the length of the header.
19 * @src: Pointer to gzip file
20 * @len: Length of data
21 * Return: length of header in bytes, or -1 if not enough data
23 int gzip_parse_header(const unsigned char *src
, unsigned long len
);
26 * gunzip() - Decompress gzipped data
28 * @dst: Destination for uncompressed data
29 * @dstlen: Size of destination buffer
30 * @src: Source data to decompress
31 * @lenp: On entry, length of data at @src. On exit, number of bytes used from
33 * Return: 0 if OK, -1 on error
35 int gunzip(void *dst
, int dstlen
, unsigned char *src
, unsigned long *lenp
);
38 * zunzip() - Uncompress blocks compressed with zlib without headers
40 * @dst: Destination for uncompressed data
41 * @dstlen: Size of destination buffer
42 * @src: Source data to decompress
43 * @lenp: On entry, length of data at @src. On exit, number of bytes used from
45 * @stoponerr: 0 to continue when a decode error is found, 1 to stop
46 * @offset: start offset within the src buffer
47 * Return: 0 if OK, -1 on error
49 int zunzip(void *dst
, int dstlen
, unsigned char *src
, unsigned long *lenp
,
50 int stoponerr
, int offset
);
53 * gzwrite progress indicators: defined weak to allow board-specific
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
61 void gzwrite_progress_init(ulong expected_size
);
63 void gzwrite_progress(int iteration
, ulong bytes_written
, ulong total_bytes
);
65 void gzwrite_progress_finish(int retcode
, ulong totalwritten
, ulong totalsize
,
66 u32 expected_crc
, u32 calculated_crc
);
69 * gzwrite() - decompress and write gzipped image from memory to block device
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
78 * Return: 0 if OK, -1 on error
80 int gzwrite(unsigned char *src
, int len
, struct blk_desc
*dev
, ulong szwritebuf
,
81 ulong startoffs
, ulong szexpected
);
84 * gzip()- Compress data into a buffer using the gzip algorithm
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
91 * Return: 0 if OK, -1 on error
93 int gzip(void *dst
, unsigned long *lenp
, unsigned char *src
, ulong srclen
);
96 * zzip() - Compress blocks with zlib
98 * @dst: Destination for compressed data
99 * @lenp: On entry, length data at @dst. On exit, number of bytes written to
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!
106 int zzip(void *dst
, ulong
*lenp
, unsigned char *src
, ulong srclen
,
107 int stoponerr
, int (*func
)(ulong
, ulong
));