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