uboot/common/cmd_zip.c
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2012
   3 * Lei Wen <leiwen@marvell.com>, Marvell Inc.
   4 *
   5 * SPDX-License-Identifier:     GPL-2.0+
   6 */
   7
   8#include <common.h>
   9#include <command.h>
  10
  11static int do_zip(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  12{
  13        unsigned long src, dst;
  14        unsigned long src_len, dst_len = ~0UL;
  15
  16        switch (argc) {
  17                case 5:
  18                        dst_len = simple_strtoul(argv[4], NULL, 16);
  19                        /* fall through */
  20                case 4:
  21                        src = simple_strtoul(argv[1], NULL, 16);
  22                        src_len = simple_strtoul(argv[2], NULL, 16);
  23                        dst = simple_strtoul(argv[3], NULL, 16);
  24                        break;
  25                default:
  26                        return cmd_usage(cmdtp);
  27        }
  28
  29        if (gzip((void *) dst, &dst_len, (void *) src, src_len) != 0)
  30                return 1;
  31
  32        printf("Compressed size: %ld = 0x%lX\n", dst_len, dst_len);
  33        setenv_hex("filesize", dst_len);
  34
  35        return 0;
  36}
  37
  38U_BOOT_CMD(
  39        zip,    5,      1,      do_zip,
  40        "zip a memory region",
  41        "srcaddr srcsize dstaddr [dstsize]"
  42);
  43