Commit f2b96dfbbcd0636e31ebf26bfa9ca91c656660d2

Authored by Lei Wen
Committed by Tom Rini
1 parent 88d52c6aff

common: add zip command support

Signed-off-by: Lei Wen <leiwen@marvell.com>

Showing 3 changed files with 67 additions and 0 deletions Side-by-side Diff

... ... @@ -1483,6 +1483,12 @@
1483 1483 can be displayed via the splashscreen support or the
1484 1484 bmp command.
1485 1485  
  1486 +- Do compresssing for memory range:
  1487 + CONFIG_CMD_ZIP
  1488 +
  1489 + If this option is set, it would use zlib deflate method
  1490 + to compress the specified memory at its best effort.
  1491 +
1486 1492 - Compression support:
1487 1493 CONFIG_BZIP2
1488 1494  
... ... @@ -170,6 +170,7 @@
170 170 COBJS-$(CONFIG_CMD_XIMG) += cmd_ximg.o
171 171 COBJS-$(CONFIG_YAFFS2) += cmd_yaffs2.o
172 172 COBJS-$(CONFIG_CMD_SPL) += cmd_spl.o
  173 +COBJS-$(CONFIG_CMD_ZIP) += cmd_zip.o
173 174 COBJS-$(CONFIG_CMD_ZFS) += cmd_zfs.o
174 175  
175 176 # others
  1 +/*
  2 + * (C) Copyright 2012
  3 + * Lei Wen <leiwen@marvell.com>, Marvell Inc.
  4 + *
  5 + * See file CREDITS for list of people who contributed to this
  6 + * project.
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Public License as
  10 + * published by the Free Software Foundation; either version 2 of
  11 + * the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 + * MA 02111-1307 USA
  22 + */
  23 +
  24 +#include <common.h>
  25 +#include <command.h>
  26 +
  27 +static int do_zip(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  28 +{
  29 + unsigned long src, dst;
  30 + unsigned long src_len, dst_len = ~0UL;
  31 + char buf[32];
  32 +
  33 + switch (argc) {
  34 + case 5:
  35 + dst_len = simple_strtoul(argv[4], NULL, 16);
  36 + /* fall through */
  37 + case 4:
  38 + src = simple_strtoul(argv[1], NULL, 16);
  39 + src_len = simple_strtoul(argv[2], NULL, 16);
  40 + dst = simple_strtoul(argv[3], NULL, 16);
  41 + break;
  42 + default:
  43 + return cmd_usage(cmdtp);
  44 + }
  45 +
  46 + if (gzip((void *) dst, &dst_len, (void *) src, src_len) != 0)
  47 + return 1;
  48 +
  49 + printf("Compressed size: %ld = 0x%lX\n", dst_len, dst_len);
  50 + sprintf(buf, "%lX", dst_len);
  51 + setenv("filesize", buf);
  52 +
  53 + return 0;
  54 +}
  55 +
  56 +U_BOOT_CMD(
  57 + zip, 5, 1, do_zip,
  58 + "zip a memory region",
  59 + "srcaddr srcsize dstaddr [dstsize]"
  60 +);