Merge tag 'u-boot-amlogic-20200618' of https://gitlab.denx.de/u-boot/custodians/u...
[oweals/u-boot.git] / common / spl / spl_ext.c
index b93e1eacd3033bc10f3c528791a43153b1151e79..3898041d106c926e85016bc69330b6dd7fba7745 100644 (file)
@@ -1,15 +1,14 @@
-/*
- * SPDX-License-Identifier:    GPL-2.0+
- */
+// SPDX-License-Identifier: GPL-2.0+
 
 #include <common.h>
+#include <env.h>
+#include <part.h>
 #include <spl.h>
 #include <asm/u-boot.h>
 #include <ext4fs.h>
 #include <errno.h>
 #include <image.h>
 
-#ifdef CONFIG_SPL_EXT_SUPPORT
 int spl_load_image_ext(struct spl_image_info *spl_image,
                       struct blk_desc *block_dev, int partition,
                       const char *filename)
@@ -17,10 +16,9 @@ int spl_load_image_ext(struct spl_image_info *spl_image,
        s32 err;
        struct image_header *header;
        loff_t filelen, actlen;
-       disk_partition_t part_info = {};
+       struct disk_partition part_info = {};
 
-       header = (struct image_header *)(CONFIG_SYS_TEXT_BASE -
-                                               sizeof(struct image_header));
+       header = spl_get_load_buffer(-sizeof(*header), sizeof(*header));
 
        if (part_get_info(block_dev, partition, &part_info)) {
                printf("spl: no partition table found\n");
@@ -42,7 +40,7 @@ int spl_load_image_ext(struct spl_image_info *spl_image,
                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;
@@ -54,7 +52,7 @@ int spl_load_image_ext(struct spl_image_info *spl_image,
                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
@@ -72,7 +70,7 @@ int spl_load_image_ext_os(struct spl_image_info *spl_image,
 {
        int err;
        __maybe_unused loff_t filelen, actlen;
-       disk_partition_t part_info = {};
+       struct disk_partition part_info = {};
        __maybe_unused char *file;
 
        if (part_get_info(block_dev, partition, &part_info)) {
@@ -90,20 +88,20 @@ int spl_load_image_ext_os(struct spl_image_info *spl_image,
                return -1;
        }
 #if defined(CONFIG_SPL_ENV_SUPPORT)
-       file = getenv("falcon_args_file");
+       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(spl_image, block_dev,
                                                 partition, file);
@@ -127,7 +125,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",
@@ -146,4 +144,3 @@ int spl_load_image_ext_os(struct spl_image_info *spl_image,
        return -ENOSYS;
 }
 #endif
-#endif