Add SCSI scan for ENV in EXT4 or FAT

When having environment stored in EXT4 or FAT
and using an AHCI or SCSI device / partition
the scan would not be performed early enough
and hence the device would not be recognized.
This change adds the scan when the interface
is "scsi" in a similar way to mmc_initialize.

Signed-off-by: Rogier Stam <rogier@unrailed.org>
Reviewed-by: Pali Rohár <pali@kernel.org>
This commit is contained in:
Rogier Stam 2022-05-11 23:20:28 +02:00 committed by Tom Rini
parent ea92f95d63
commit 54ee5ae841
2 changed files with 12 additions and 1 deletions

5
env/ext4.c vendored
View File

@ -31,6 +31,7 @@
#include <errno.h> #include <errno.h>
#include <ext4fs.h> #include <ext4fs.h>
#include <mmc.h> #include <mmc.h>
#include <scsi.h>
#include <asm/global_data.h> #include <asm/global_data.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -146,6 +147,10 @@ static int env_ext4_load(void)
if (!strcmp(ifname, "mmc")) if (!strcmp(ifname, "mmc"))
mmc_initialize(NULL); mmc_initialize(NULL);
#endif #endif
#if defined(CONFIG_AHCI) || defined(CONFIG_SCSI)
if (!strcmp(ifname, "scsi"))
scsi_scan(true);
#endif
part = blk_get_device_part_str(ifname, dev_and_part, part = blk_get_device_part_str(ifname, dev_and_part,
&dev_desc, &info, 1); &dev_desc, &info, 1);

8
env/fat.c vendored
View File

@ -17,6 +17,7 @@
#include <errno.h> #include <errno.h>
#include <fat.h> #include <fat.h>
#include <mmc.h> #include <mmc.h>
#include <scsi.h>
#include <asm/cache.h> #include <asm/cache.h>
#include <asm/global_data.h> #include <asm/global_data.h>
#include <linux/stddef.h> #include <linux/stddef.h>
@ -128,7 +129,12 @@ static int env_fat_load(void)
if (!strcmp(ifname, "mmc")) if (!strcmp(ifname, "mmc"))
mmc_initialize(NULL); mmc_initialize(NULL);
#endif #endif
#ifndef CONFIG_SPL_BUILD
#if defined(CONFIG_AHCI) || defined(CONFIG_SCSI)
if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "scsi"))
scsi_scan(true);
#endif
#endif
part = blk_get_device_part_str(ifname, dev_and_part, part = blk_get_device_part_str(ifname, dev_and_part,
&dev_desc, &info, 1); &dev_desc, &info, 1);
if (part < 0) if (part < 0)