aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorPali Rohár <pali@kernel.org>2021-11-08 18:12:51 +0100
committerStefan Roese <sr@denx.de>2021-11-10 12:08:06 +0100
commit5c61710c9880290d54db72878c4435cdaee07d78 (patch)
treea86c04fe7c2ca6c3da2beeae5fe9ebd192536456 /tools
parent851114be1a63d1004fc59e4c9e75bf93aed1adb7 (diff)
downloadu-boot-5c61710c9880290d54db72878c4435cdaee07d78.zip
u-boot-5c61710c9880290d54db72878c4435cdaee07d78.tar.gz
u-boot-5c61710c9880290d54db72878c4435cdaee07d78.tar.bz2
tools: kwbimage: Properly set srcaddr in kwbimage v0
Field srcaddr in kwbimage v0 needs to be adjusted similarly like in v1. Signed-off-by: Pali Rohár <pali@kernel.org> Signed-off-by: Marek Behún <marek.behun@nic.cz> Reviewed-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'tools')
-rw-r--r--tools/kwbimage.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/tools/kwbimage.c b/tools/kwbimage.c
index 952023c..875f636 100644
--- a/tools/kwbimage.c
+++ b/tools/kwbimage.c
@@ -937,6 +937,28 @@ static void *image_create_v0(size_t *imagesz, struct image_tool_params *params,
main_hdr->checksum = image_checksum8(image,
sizeof(struct main_hdr_v0));
+ /*
+ * For SATA srcaddr is specified in number of sectors starting from
+ * sector 0. The main header is stored at sector number 1.
+ * This expects the sector size to be 512 bytes.
+ * Header size is already aligned.
+ */
+ if (main_hdr->blockid == IBR_HDR_SATA_ID)
+ main_hdr->srcaddr = cpu_to_le32(headersz / 512 + 1);
+
+ /*
+ * For SDIO srcaddr is specified in number of sectors starting from
+ * sector 0. The main header is stored at sector number 0.
+ * This expects sector size to be 512 bytes.
+ * Header size is already aligned.
+ */
+ if (main_hdr->blockid == IBR_HDR_SDIO_ID)
+ main_hdr->srcaddr = cpu_to_le32(headersz / 512);
+
+ /* For PCIe srcaddr is not used and must be set to 0xFFFFFFFF. */
+ if (main_hdr->blockid == IBR_HDR_PEX_ID)
+ main_hdr->srcaddr = cpu_to_le32(0xFFFFFFFF);
+
/* Generate the ext header */
if (has_ext) {
struct ext_hdr_v0 *ext_hdr;