]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
arm: mvebu: spl: Fix parsing SATA kwbimage
authorPali Rohár <pali@kernel.org>
Sat, 21 Jan 2023 12:47:45 +0000 (13:47 +0100)
committerStefan Roese <sr@denx.de>
Wed, 1 Mar 2023 05:39:17 +0000 (06:39 +0100)
Despite the official specification, Marvell BootROM does not interpret
srcaddr from SATA image as number of sectors the beginning of the hard
drive, but as number of sectors relative to the main header.

To process SATA kwbimage and load U-Boot proper from it in the same way as
Marvell BootROM, it is needed to interpret srcaddr as relative offset to
the main header. This change fixes booting of U-Boot proper from SPL code
in SATA image.

Fixes: 2226ca173486 ("arm: mvebu: Load U-Boot proper binary in SPL code based on kwbimage header")
Signed-off-by: Pali Rohár <pali@kernel.org>
arch/arm/mach-mvebu/spl.c

index b238ba2f5d990e7f508a06d9a797be74268e7e86..6a398612628ee1f60c1efd5b21bec774e0b3bcd3 100644 (file)
@@ -182,19 +182,10 @@ int spl_parse_board_header(struct spl_image_info *spl_image,
 
        /*
         * For SATA srcaddr is specified in number of sectors.
-        * The main header is must be stored at sector number 1.
-        * This expects that sector size is 512 bytes and recalculates
-        * data offset to bytes relative to the main header.
+        * This expects that sector size is 512 bytes.
         */
-       if (IS_ENABLED(CONFIG_SPL_SATA) && mhdr->blockid == IBR_HDR_SATA_ID) {
-               if (spl_image->offset < 1) {
-                       printf("ERROR: Wrong srcaddr (0x%08x) in SATA kwbimage\n",
-                              spl_image->offset);
-                       return -EINVAL;
-               }
-               spl_image->offset -= 1;
+       if (IS_ENABLED(CONFIG_SPL_SATA) && mhdr->blockid == IBR_HDR_SATA_ID)
                spl_image->offset *= 512;
-       }
 
        if (spl_image->offset % 4 != 0) {
                printf("ERROR: Wrong srcaddr (0x%08x) in kwbimage\n",