]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - common/spl/spl_ext.c
Merge git://git.denx.de/u-boot-tegra
[people/ms/u-boot.git] / common / spl / spl_ext.c
index b77dbf4d0ca11b8235629e8d6d4b85dfaaaf1a1a..559ba0b797126dc788ef243a67528771a90147d2 100644 (file)
@@ -9,10 +9,9 @@
 #include <errno.h>
 #include <image.h>
 
-#ifdef CONFIG_SPL_EXT_SUPPORT
-int spl_load_image_ext(struct blk_desc *block_dev,
-                                               int partition,
-                                               const char *filename)
+int spl_load_image_ext(struct spl_image_info *spl_image,
+                      struct blk_desc *block_dev, int partition,
+                      const char *filename)
 {
        s32 err;
        struct image_header *header;
@@ -42,15 +41,19 @@ int spl_load_image_ext(struct blk_desc *block_dev,
                puts("spl: ext4fs_open failed\n");
                goto end;
        }
-       err = ext4fs_read((char *)header, sizeof(struct image_header), &actlen);
+       err = ext4fs_read((char *)header, 0, sizeof(struct image_header), &actlen);
        if (err < 0) {
                puts("spl: ext4fs_read failed\n");
                goto end;
        }
 
-       spl_parse_image_header(header);
+       err = spl_parse_image_header(spl_image, header);
+       if (err < 0) {
+               puts("spl: ext: failed to parse image header\n");
+               goto end;
+       }
 
-       err = ext4fs_read((char *)spl_image.load_addr, filelen, &actlen);
+       err = ext4fs_read((char *)spl_image->load_addr, 0, filelen, &actlen);
 
 end:
 #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
@@ -63,7 +66,8 @@ end:
 }
 
 #ifdef CONFIG_SPL_OS_BOOT
-int spl_load_image_ext_os(struct blk_desc *block_dev, int partition)
+int spl_load_image_ext_os(struct spl_image_info *spl_image,
+                         struct blk_desc *block_dev, int partition)
 {
        int err;
        __maybe_unused loff_t filelen, actlen;
@@ -84,24 +88,24 @@ int spl_load_image_ext_os(struct blk_desc *block_dev, int partition)
 #endif
                return -1;
        }
-
-#if defined(CONFIG_SPL_ENV_SUPPORT) && defined(CONFIG_SPL_OS_BOOT)
-       file = getenv("falcon_args_file");
+#if defined(CONFIG_SPL_ENV_SUPPORT)
+       file = env_get("falcon_args_file");
        if (file) {
                err = ext4fs_open(file, &filelen);
                if (err < 0) {
                        puts("spl: ext4fs_open failed\n");
                        goto defaults;
                }
-               err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, filelen, &actlen);
+               err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, 0, filelen, &actlen);
                if (err < 0) {
                        printf("spl: error reading image %s, err - %d, falling back to default\n",
                               file, err);
                        goto defaults;
                }
-               file = getenv("falcon_image_file");
+               file = env_get("falcon_image_file");
                if (file) {
-                       err = spl_load_image_ext(block_dev, partition, file);
+                       err = spl_load_image_ext(spl_image, block_dev,
+                                                partition, file);
                        if (err != 0) {
                                puts("spl: falling back to default\n");
                                goto defaults;
@@ -122,7 +126,7 @@ defaults:
        if (err < 0)
                puts("spl: ext4fs_open failed\n");
 
-       err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, filelen, &actlen);
+       err = ext4fs_read((void *)CONFIG_SYS_SPL_ARGS_ADDR, 0, filelen, &actlen);
        if (err < 0) {
 #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
                printf("%s: error reading image %s, err - %d\n",
@@ -131,13 +135,13 @@ defaults:
                return -1;
        }
 
-       return spl_load_image_ext(block_dev, partition,
+       return spl_load_image_ext(spl_image, block_dev, partition,
                        CONFIG_SPL_FS_LOAD_KERNEL_NAME);
 }
 #else
-int spl_load_image_ext_os(struct blk_desc *block_dev, int partition)
+int spl_load_image_ext_os(struct spl_image_info *spl_image,
+                         struct blk_desc *block_dev, int partition)
 {
        return -ENOSYS;
 }
 #endif
-#endif