On Monday 07 February 2022 23:56:25 Rogier Stam wrote: > Hi > > Per Pali's comments adapted the patch. This one also includes the changes > necessary for storing ENV in FAT. I also added CONFIG_SCSI for both ext4 and > fat should anyone want to use SCSI instead of AHCI. > > Regards > > Rogier > > On 07-02-2022 09:11, Rogier Stam wrote: > > Hi > > > > I was attemting to boot from SATA on an Espressobin. As such I wanted to > > store the Environment in a SATA partition and not in the SPI flash. In > > order to get this running I had to make a few changes, as the original > > code assumes the Environment is always in SPI flash. Additionally I also > > had to force scsci_scan to ensure the AHCI disk / partitions could be > > found. > > > > Hope it will be considered to merge > > > > Regards > > > > Rogier Stam > >
+ Marek > From e2c1b825700b6356b8b0758dcbe8c3c64bd79805 Mon Sep 17 00:00:00 2001 > From: Rogier Stam <rog...@unrailed.org> > Date: Mon, 31 Jan 2022 23:06:19 +0100 > Subject: [PATCH] Fix Espressobin build for configs where ENV is not in SPI > > When storing the UBoot Environment in for example EXT4, > the U-Boot build is broken for several reasons: > 1. armada-385-turris-omnia-u-boot.dtsi will not allow > CONFIG_ENV_OFFSET and CONFIG_ENV_SIZE to be undefined > 2. armada-37xx/board.c ft_board_setup function does not > exist if CONFIG_ENV_IS_IN_SPI_FLASH is not defined > 3. When defining CONFIG_ENV_IS_IN_EXT4 and using AHCI > SCSI scan is not performed and hence the partition on > AHCI is not available when the environment is loaded. > 4. Same for CONFIG_ENV_IS_IN_FAT and using AHCI. SCSI > scan is not performed. > > This change fixes these 4 points so that the UBoot config > can be on a AHCI (SATA) drive partition instead of > enforced in SPI flash. > > Signed-off-by: Rogier Stam <rog...@unrailed.org> Reviewed-by: Pali Rohár <p...@kernel.org> > --- > arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi | 2 ++ > board/Marvell/mvebu_armada-37xx/board.c | 4 +++- > env/ext4.c | 5 +++++ > env/fat.c | 5 +++++ > 4 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi > b/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi > index 3ff76c9..008787e 100644 > --- a/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi > +++ b/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi > @@ -38,6 +38,7 @@ > }; > }; > > +#ifdef CONFIG_ENV_IS_IN_SPI_FLASH > &spi0 { > u-boot,dm-pre-reloc; > > @@ -56,6 +57,7 @@ > }; > }; > }; > +#endif > > &uart0 { > u-boot,dm-pre-reloc; > diff --git a/board/Marvell/mvebu_armada-37xx/board.c > b/board/Marvell/mvebu_armada-37xx/board.c > index d7b6eca..5bace0c 100644 > --- a/board/Marvell/mvebu_armada-37xx/board.c > +++ b/board/Marvell/mvebu_armada-37xx/board.c > @@ -328,9 +328,10 @@ int board_network_enable(struct mii_dev *bus) > return 0; > } > > -#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_ENV_IS_IN_SPI_FLASH) > +#ifdef CONFIG_OF_BOARD_SETUP > int ft_board_setup(void *blob, struct bd_info *bd) > { > +#ifdef CONFIG_ENV_IS_IN_SPI_FLASH > int ret; > int spi_off; > int parts_off; > @@ -424,6 +425,7 @@ int ft_board_setup(void *blob, struct bd_info *bd) > return 0; > } > > +#endif > return 0; > } > #endif > diff --git a/env/ext4.c b/env/ext4.c > index 9f65afb..47e05a4 100644 > --- a/env/ext4.c > +++ b/env/ext4.c > @@ -31,6 +31,7 @@ > #include <errno.h> > #include <ext4fs.h> > #include <mmc.h> > +#include <scsi.h> > #include <asm/global_data.h> > > DECLARE_GLOBAL_DATA_PTR; > @@ -146,6 +147,10 @@ static int env_ext4_load(void) > if (!strcmp(ifname, "mmc")) > mmc_initialize(NULL); > #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, > &dev_desc, &info, 1); > diff --git a/env/fat.c b/env/fat.c > index fdccd6c..dbd6a13 100644 > --- a/env/fat.c > +++ b/env/fat.c > @@ -17,6 +17,7 @@ > #include <errno.h> > #include <fat.h> > #include <mmc.h> > +#include <scsi.h> > #include <asm/cache.h> > #include <asm/global_data.h> > #include <linux/stddef.h> > @@ -122,6 +123,10 @@ static int env_fat_load(void) > if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "mmc")) > mmc_initialize(NULL); > #endif > +#if defined(CONFIG_AHCI) || defined(CONFIG_SCSI) > + if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "scsi")) > + scsi_scan(true); > +#endif > > part = blk_get_device_part_str(CONFIG_ENV_FAT_INTERFACE, > env_fat_device_and_part(), > -- > 2.7.4 >