summaryrefslogtreecommitdiff
path: root/include/zynq_bootimg.h
diff options
context:
space:
mode:
authorSiva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>2018-06-26 15:02:19 +0530
committerMichal Simek <michal.simek@xilinx.com>2018-07-19 10:49:54 +0200
commit37e3a36a54755d15e36b52ee47caaf1cdfdc37aa (patch)
tree073fdd82a13ff07bb5003069503464af68da934e /include/zynq_bootimg.h
parent6bdf0a992c962e15ab637a096d7f7d5601e0b4c5 (diff)
xilinx: zynq: Add support to secure images
This patch basically adds two new commands for loadig secure images. 1. zynq rsa adds support to load secure image which can be both authenticated or encrypted or both authenticated and encrypted image in xilinx bootimage(BOOT.bin) format. 2. zynq aes command adds support to decrypt and load encrypted image back to DDR as per destination address. The image has to be encrypted using xilinx bootgen tool and to get only the encrypted image from tool use -split option while invoking bootgen. Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'include/zynq_bootimg.h')
-rw-r--r--include/zynq_bootimg.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/zynq_bootimg.h b/include/zynq_bootimg.h
new file mode 100644
index 0000000000..c39c0bf459
--- /dev/null
+++ b/include/zynq_bootimg.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2018 Xilinx, Inc.
+ */
+
+#ifndef _ZYNQ_BOOTIMG_H_
+#define _ZYNQ_BOOTIMG_H_
+
+#define ZYNQ_MAX_PARTITION_NUMBER 0xE
+
+struct partition_hdr {
+ u32 imagewordlen; /* 0x0 */
+ u32 datawordlen; /* 0x4 */
+ u32 partitionwordlen; /* 0x8 */
+ u32 loadaddr; /* 0xC */
+ u32 execaddr; /* 0x10 */
+ u32 partitionstart; /* 0x14 */
+ u32 partitionattr; /* 0x18 */
+ u32 sectioncount; /* 0x1C */
+ u32 checksumoffset; /* 0x20 */
+ u32 pads1[1];
+ u32 acoffset; /* 0x28 */
+ u32 pads2[4];
+ u32 checksum; /* 0x3C */
+};
+
+int zynq_get_part_count(struct partition_hdr *part_hdr_info);
+int zynq_get_partition_info(u32 image_base_addr, u32 *fsbl_len,
+ struct partition_hdr *part_hdr);
+int zynq_validate_hdr(struct partition_hdr *header);
+int zynq_validate_partition(u32 start_addr, u32 len, u32 chksum_off);
+
+#endif /* _ZYNQ_BOOTIMG_H_ */