]>
Commit | Line | Data |
---|---|---|
a1732232 YA |
1 | // SPDX-License-Identifier: GPL-2.0+ |
2 | /* | |
3 | * Copyright (C) 2020 | |
4 | * FUJITSU COMPUTERTECHNOLOGIES LIMITED. All rights reserved. | |
5 | */ | |
6 | ||
7 | #include <common.h> | |
8 | #include <command.h> | |
9 | #include <env.h> | |
10 | #include <lz4.h> | |
11 | ||
09140113 SG |
12 | static int do_unlz4(struct cmd_tbl *cmdtp, int flag, int argc, |
13 | char *const argv[]) | |
a1732232 YA |
14 | { |
15 | unsigned long src, dst; | |
16 | size_t src_len = ~0UL, dst_len = ~0UL; | |
17 | int ret; | |
18 | ||
19 | switch (argc) { | |
20 | case 4: | |
7e5f460e SG |
21 | src = hextoul(argv[1], NULL); |
22 | dst = hextoul(argv[2], NULL); | |
23 | dst_len = hextoul(argv[3], NULL); | |
a1732232 YA |
24 | break; |
25 | default: | |
26 | return CMD_RET_USAGE; | |
27 | } | |
28 | ||
29 | ret = ulz4fn((void *)src, src_len, (void *)dst, &dst_len); | |
30 | if (ret) { | |
31 | printf("Uncompressed err :%d\n", ret); | |
32 | return 1; | |
33 | } | |
34 | ||
35 | printf("Uncompressed size: %zd = 0x%zX\n", dst_len, dst_len); | |
36 | env_set_hex("filesize", dst_len); | |
37 | ||
38 | return 0; | |
39 | } | |
40 | ||
41 | U_BOOT_CMD(unlz4, 4, 1, do_unlz4, | |
42 | "lz4 uncompress a memory region", | |
43 | "srcaddr dstaddr dstsize\n" | |
44 | "NOTE: Specify the destination size that is sufficiently larger\n" | |
45 | " than the source size.\n" | |
46 | ); |