@ -16,6 +16,7 @@
# include <spi_flash.h>
# include <search.h>
# include <errno.h>
# include <dm/device-internal.h>
# ifndef CONFIG_ENV_SPI_BUS
# define CONFIG_ENV_SPI_BUS 0
@ -51,6 +52,19 @@ int saveenv(void)
char * saved_buffer = NULL , flag = OBSOLETE_FLAG ;
u32 saved_size , saved_offset , sector = 1 ;
int ret ;
# ifdef CONFIG_DM_SPI_FLASH
struct udevice * new ;
ret = spi_flash_probe_bus_cs ( CONFIG_ENV_SPI_BUS , CONFIG_ENV_SPI_CS ,
CONFIG_ENV_SPI_MAX_HZ ,
CONFIG_ENV_SPI_MODE , & new ) ;
if ( ret ) {
set_default_env ( " !spi_flash_probe_bus_cs() failed " ) ;
return 1 ;
}
env_flash = dev_get_uclass_priv ( new ) ;
# else
if ( ! env_flash ) {
env_flash = spi_flash_probe ( CONFIG_ENV_SPI_BUS ,
@ -61,6 +75,7 @@ int saveenv(void)
return 1 ;
}
}
# endif
ret = env_export ( & env_new ) ;
if ( ret )
@ -227,6 +242,19 @@ int saveenv(void)
char * saved_buffer = NULL ;
int ret = 1 ;
env_t env_new ;
# ifdef CONFIG_DM_SPI_FLASH
struct udevice * new ;
ret = spi_flash_probe_bus_cs ( CONFIG_ENV_SPI_BUS , CONFIG_ENV_SPI_CS ,
CONFIG_ENV_SPI_MAX_HZ ,
CONFIG_ENV_SPI_MODE , & new ) ;
if ( ret ) {
set_default_env ( " !spi_flash_probe_bus_cs() failed " ) ;
return 1 ;
}
env_flash = dev_get_uclass_priv ( new ) ;
# else
if ( ! env_flash ) {
env_flash = spi_flash_probe ( CONFIG_ENV_SPI_BUS ,
@ -237,6 +265,7 @@ int saveenv(void)
return 1 ;
}
}
# endif
/* Is the sector larger than the env (i.e. embedded) */
if ( CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE ) {