tools: kwbimage: Set BOOT_FROM by default to SPI

kwbimage must have valid blockid member instead of zero value. Thus if
config file does not contain BOOT_FROM command, use by default the value
for SPI booting (which is probably the most common).

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>
This commit is contained in:
Pali Rohár 2021-11-08 18:12:43 +01:00 committed by Stefan Roese
parent 01bdac6df6
commit d1547b3672

View File

@ -266,6 +266,18 @@ static bool image_get_spezialized_img(void)
return e->sec_specialized_img; return e->sec_specialized_img;
} }
static int image_get_bootfrom(void)
{
struct image_cfg_element *e;
e = image_find_option(IMAGE_CFG_BOOT_FROM);
if (!e)
/* fallback to SPI if no BOOT_FROM is not provided */
return IBR_HDR_SPI_ID;
return e->bootfrom;
}
/* /*
* Compute a 8-bit checksum of a memory area. This algorithm follows * Compute a 8-bit checksum of a memory area. This algorithm follows
* the requirements of the Marvell SoC BootROM specifications. * the requirements of the Marvell SoC BootROM specifications.
@ -884,10 +896,8 @@ static void *image_create_v0(size_t *imagesz, struct image_tool_params *params,
main_hdr->version = 0; main_hdr->version = 0;
main_hdr->destaddr = cpu_to_le32(params->addr); main_hdr->destaddr = cpu_to_le32(params->addr);
main_hdr->execaddr = cpu_to_le32(params->ep); main_hdr->execaddr = cpu_to_le32(params->ep);
main_hdr->blockid = image_get_bootfrom();
e = image_find_option(IMAGE_CFG_BOOT_FROM);
if (e)
main_hdr->blockid = e->bootfrom;
e = image_find_option(IMAGE_CFG_NAND_ECC_MODE); e = image_find_option(IMAGE_CFG_NAND_ECC_MODE);
if (e) if (e)
main_hdr->nandeccmode = e->nandeccmode; main_hdr->nandeccmode = e->nandeccmode;
@ -1232,9 +1242,8 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
main_hdr->srcaddr = cpu_to_le32(headersz); main_hdr->srcaddr = cpu_to_le32(headersz);
main_hdr->ext = hasext; main_hdr->ext = hasext;
main_hdr->version = 1; main_hdr->version = 1;
e = image_find_option(IMAGE_CFG_BOOT_FROM); main_hdr->blockid = image_get_bootfrom();
if (e)
main_hdr->blockid = e->bootfrom;
e = image_find_option(IMAGE_CFG_NAND_BLKSZ); e = image_find_option(IMAGE_CFG_NAND_BLKSZ);
if (e) if (e)
main_hdr->nandblocksize = e->nandblksz / (64 * 1024); main_hdr->nandblocksize = e->nandblksz / (64 * 1024);
@ -1559,17 +1568,6 @@ static int image_get_version(void)
return e->version; return e->version;
} }
static int image_get_bootfrom(void)
{
struct image_cfg_element *e;
e = image_find_option(IMAGE_CFG_BOOT_FROM);
if (!e)
return -1;
return e->bootfrom;
}
static void kwbimage_set_header(void *ptr, struct stat *sbuf, int ifd, static void kwbimage_set_header(void *ptr, struct stat *sbuf, int ifd,
struct image_tool_params *params) struct image_tool_params *params)
{ {