X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=common%2Fspl%2Fspl_fat.c;h=350f7d9fd684f610c223f1dc8a58658b43b7f7eb;hb=ecdc3df611385625dc3902b3de118dfcbfd8fb0c;hp=1e532d5963e0e0ef84bbf3a90809c9b0aafc982d;hpb=c0cae2e24552d57f3e2f841ec235453413cd7389;p=oweals%2Fu-boot.git diff --git a/common/spl/spl_fat.c b/common/spl/spl_fat.c index 1e532d5963..350f7d9fd6 100644 --- a/common/spl/spl_fat.c +++ b/common/spl/spl_fat.c @@ -30,7 +30,7 @@ static int spl_register_fat_device(block_dev_desc_t *block_dev, int partition) #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT printf("%s: fat register err - %d\n", __func__, err); #endif - hang(); + return err; } fat_registered = 1; @@ -74,23 +74,50 @@ end: int spl_load_image_fat_os(block_dev_desc_t *block_dev, int partition) { int err; + __maybe_unused char *file; err = spl_register_fat_device(block_dev, partition); if (err) return err; - err = file_fat_read(CONFIG_SPL_FAT_LOAD_ARGS_NAME, +#if defined(CONFIG_SPL_ENV_SUPPORT) && defined(CONFIG_SPL_OS_BOOT) + file = getenv("falcon_args_file"); + if (file) { + err = file_fat_read(file, (void *)CONFIG_SYS_SPL_ARGS_ADDR, 0); + 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"); + if (file) { + err = spl_load_image_fat(block_dev, partition, file); + if (err != 0) { + puts("spl: falling back to default\n"); + goto defaults; + } + + return 0; + } else + puts("spl: falcon_image_file not set in environment, falling back to default\n"); + } else + puts("spl: falcon_args_file not set in environment, falling back to default\n"); + +defaults: +#endif + + err = file_fat_read(CONFIG_SPL_FS_LOAD_ARGS_NAME, (void *)CONFIG_SYS_SPL_ARGS_ADDR, 0); if (err <= 0) { #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT printf("%s: error reading image %s, err - %d\n", - __func__, CONFIG_SPL_FAT_LOAD_ARGS_NAME, err); + __func__, CONFIG_SPL_FS_LOAD_ARGS_NAME, err); #endif return -1; } return spl_load_image_fat(block_dev, partition, - CONFIG_SPL_FAT_LOAD_KERNEL_NAME); + CONFIG_SPL_FS_LOAD_KERNEL_NAME); } #endif #endif