Commit f2b96dfbbcd0636e31ebf26bfa9ca91c656660d2
Committed by
Tom Rini
1 parent
88d52c6aff
Exists in
master
and in
54 other branches
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
README
... | ... | @@ -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 |
common/Makefile
common/cmd_zip.c
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 | +); |