diff --git a/cmd/Makefile b/cmd/Makefile index 31513c7062..353972e0a6 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -24,7 +24,7 @@ obj-$(CONFIG_CMD_BDI) += bdinfo.o obj-$(CONFIG_CMD_BEDBUG) += bedbug.o obj-$(CONFIG_CMD_BLOCK_CACHE) += blkcache.o obj-$(CONFIG_CMD_BMP) += bmp.o -obj-$(CONFIG_CMD_BOOT_ANDROID) += boot_android.o +obj-$(CONFIG_CMD_BOOT_ANDROID) += boot_android.o android.o obj-$(CONFIG_CMD_BOOT_ROCKCHIP) += bootrkp.o obj-$(CONFIG_CMD_BOOTEFI) += bootefi.o obj-$(CONFIG_CMD_BOOTMENU) += bootmenu.o diff --git a/cmd/android.c b/cmd/android.c new file mode 100644 index 0000000000..50916b2759 --- /dev/null +++ b/cmd/android.c @@ -0,0 +1,69 @@ +/* + * (C) Copyright 2019 Rockchip Electronics Co., Ltd + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include + +static int do_android_print_hdr(cmd_tbl_t *cmdtp, int flag, + int argc, char * const argv[]) +{ + struct blk_desc *dev_desc; + struct andr_img_hdr *hdr; + disk_partition_t part_info; + const char *part_name; + int blkcnt, ret; + + if (argc != 2) + return CMD_RET_USAGE; + + part_name = argv[1]; + + dev_desc = rockchip_get_bootdev(); + if (!dev_desc) { + printf("dev_desc is NULL!\n"); + return -ENODEV; + } + + ret = part_get_info_by_name(dev_desc, part_name, &part_info); + if (ret < 0) { + printf("Failed to get \"%s\" part, ret=%d\n", part_name, ret); + return -ENODEV; + } + + hdr = memalign(ARCH_DMA_MINALIGN, sizeof(*hdr)); + if (!hdr) { + printf("%s: out of memory!\n", __func__); + return -ENOMEM; + } + + blkcnt = sizeof(*hdr) / dev_desc->blksz; + ret = blk_dread(dev_desc, part_info.start, blkcnt, hdr); + if (ret != blkcnt) { + printf("Failed to read %s sector, ret=%d\n", part_info.name, ret); + free(hdr); + return -EIO; + } + + if (!android_image_check_header(hdr)) { + printf("Partition \"%s\"\n", part_info.name); + android_print_contents(hdr); + } else { + printf("Not an android image\n"); + } + + free(hdr); + + return 0; +} + +U_BOOT_CMD( + android_print_hdr, 2, 1, do_android_print_hdr, + "print android image header", "" +);