imxtract: add support for zstd-compressed images

Allow extraction of zstd-compressed images from FIT using imxtract
command. This is especially useful when one has to load an image via
some interface (e.g. SPI) rather that just to the memory.

Signed-off-by: Dmitry Gerasimov <di.gerasimov@gmail.com>
This commit is contained in:
Dmitry Gerasimov 2024-06-02 17:25:52 +02:00 committed by Tom Rini
parent b993bd65ec
commit 822911d574

View file

@ -15,6 +15,9 @@
#include <cpu_func.h>
#include <env.h>
#include <gzip.h>
#if IS_ENABLED(CONFIG_ZSTD)
#include <linux/zstd.h>
#endif
#include <image.h>
#include <malloc.h>
#include <mapmem.h>
@ -237,6 +240,26 @@ do_imgextract(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
}
break;
#endif /* CONFIG_BZIP2 */
#if IS_ENABLED(CONFIG_ZSTD)
case IH_COMP_ZSTD:
{
int ret;
struct abuf in, out;
printf(" Uncompressing part %d ... ", part);
abuf_init_set(&in, (void *)data, len);
abuf_init_set(&out, (void *)dest, unc_len);
ret = zstd_decompress(&in, &out);
if (ret < 0) {
printf("ZSTD ERROR %d - "
"image not loaded\n", ret);
return 1;
}
len = ret;
}
break;
#endif
default:
printf("Unimplemented compression type %d\n", comp);
return 1;