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