summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <kevin.smith@elecsyscorp.com>2015-03-16 14:58:21 +0000
committerLuka Perkov <luka.perkov@sartura.hr>2015-06-14 17:48:28 +0200
commita0aad12346b2cc848b8d592067ca74cb6a1721f8 (patch)
treecc0fb889335f80d70da3ac60ece7abf9e3824d00
parent64d16706a052553c85d2f8f4c741879a4e3e6116 (diff)
downloadtalos-obmc-uboot-a0aad12346b2cc848b8d592067ca74cb6a1721f8.tar.gz
talos-obmc-uboot-a0aad12346b2cc848b8d592067ca74cb6a1721f8.zip
tools/kwbimage.c: Correct header size for SPI boot
If defined, the macro CONFIG_SYS_SPI_U_BOOT_OFFS allows a board to specify the offset of the payload image into the kwb image file. This value was being used to locate the image, but was not used in the "header size" field of the main header. Move the use of this macro into the function that returns the header size so that the same value is used in all places. Signed-off-by: Kevin Smith <kevin.smith@elecsyscorp.com> Tested-by: Stefan Roese <sr@denx.de>
-rw-r--r--tools/kwbimage.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/tools/kwbimage.c b/tools/kwbimage.c
index 9540e7eb84..1ff17cab26 100644
--- a/tools/kwbimage.c
+++ b/tools/kwbimage.c
@@ -420,6 +420,18 @@ static size_t image_headersz_v1(struct image_tool_params *params,
*hasext = 1;
}
+#if defined(CONFIG_SYS_SPI_U_BOOT_OFFS)
+ if (headersz > CONFIG_SYS_SPI_U_BOOT_OFFS) {
+ fprintf(stderr, "Error: Image header (incl. SPL image) too big!\n");
+ fprintf(stderr, "header=0x%x CONFIG_SYS_SPI_U_BOOT_OFFS=0x%x!\n",
+ (int)headersz, CONFIG_SYS_SPI_U_BOOT_OFFS);
+ fprintf(stderr, "Increase CONFIG_SYS_SPI_U_BOOT_OFFS!\n");
+ return 0;
+ } else {
+ headersz = CONFIG_SYS_SPI_U_BOOT_OFFS;
+ }
+#endif
+
/*
* The payload should be aligned on some reasonable
* boundary
@@ -869,16 +881,6 @@ static int kwbimage_generate(struct image_tool_params *params,
sizeof(struct ext_hdr_v0);
} else {
alloc_len = image_headersz_v1(params, NULL);
-#if defined(CONFIG_SYS_SPI_U_BOOT_OFFS)
- if (alloc_len > CONFIG_SYS_SPI_U_BOOT_OFFS) {
- fprintf(stderr, "Error: Image header (incl. SPL image) too big!\n");
- fprintf(stderr, "header=0x%x CONFIG_SYS_SPI_U_BOOT_OFFS=0x%x!\n",
- alloc_len, CONFIG_SYS_SPI_U_BOOT_OFFS);
- fprintf(stderr, "Increase CONFIG_SYS_SPI_U_BOOT_OFFS!\n");
- } else {
- alloc_len = CONFIG_SYS_SPI_U_BOOT_OFFS;
- }
-#endif
}
hdr = malloc(alloc_len);
OpenPOWER on IntegriCloud