aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2018-03-14 11:02:24 +0100
committerMichal Simek <michal.simek@xilinx.com>2018-03-23 09:36:15 +0100
commitd28baea078fac4c438874880df385e1e4e8d2b6b (patch)
treeddbe6ead71fbb0f5c8621b422b2c5b9f21fa3e62 /tools
parentc436bf92f6bf4014710bfeb067a0a35692e68bd3 (diff)
downloadu-boot-d28baea078fac4c438874880df385e1e4e8d2b6b.zip
u-boot-d28baea078fac4c438874880df385e1e4e8d2b6b.tar.gz
u-boot-d28baea078fac4c438874880df385e1e4e8d2b6b.tar.bz2
tools: xilinx: Fix zynq/zynqmp image recognition
There is an issue to recognize zynq or zynqmp image because header checking is just the same. That's why zynqmp images are recognized as zynq one. Check unused fields which are initialized to zero in zynq format (__reserved1 0x38 and __reserved2 0x44) which are initialized for zynqmp. This should ensure that images are properly recognized by: ./tools/mkimage -l spl/boot.bin Also show image type as ZynqMP instead of Zynq which is confusing. Reported-by: Alexander Graf <agraf@suse.de> Signed-off-by: Michal Simek <michal.simek@xilinx.com> Tested-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'tools')
-rw-r--r--tools/zynqimage.c6
-rw-r--r--tools/zynqmpimage.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/tools/zynqimage.c b/tools/zynqimage.c
index 021d2d3..aa003a7 100644
--- a/tools/zynqimage.c
+++ b/tools/zynqimage.c
@@ -147,6 +147,12 @@ static int zynqimage_verify_header(unsigned char *ptr, int image_size,
if (image_size < sizeof(struct zynq_header))
return -1;
+ if (zynqhdr->__reserved1 != 0)
+ return -1;
+
+ if (zynqhdr->__reserved2 != 0)
+ return -1;
+
if (zynqhdr->width_detection != HEADER_WIDTHDETECTION)
return -1;
if (zynqhdr->image_identifier != HEADER_IMAGEIDENTIFIER)
diff --git a/tools/zynqmpimage.c b/tools/zynqmpimage.c
index f48ac6d..a61fb17 100644
--- a/tools/zynqmpimage.c
+++ b/tools/zynqmpimage.c
@@ -178,7 +178,7 @@ static void zynqmpimage_print_header(const void *ptr)
struct zynqmp_header *zynqhdr = (struct zynqmp_header *)ptr;
int i;
- printf("Image Type : Xilinx Zynq Boot Image support\n");
+ printf("Image Type : Xilinx ZynqMP Boot Image support\n");
printf("Image Offset : 0x%08x\n", le32_to_cpu(zynqhdr->image_offset));
printf("Image Size : %lu bytes (%lu bytes packed)\n",
(unsigned long)le32_to_cpu(zynqhdr->image_size),