@ -48,6 +48,18 @@ static int spi_load_image_os(struct spi_flash *flash,
}
# endif
static ulong spl_spi_fit_read ( struct spl_load_info * load , ulong sector ,
ulong count , void * buf )
{
struct spi_flash * flash = load - > dev ;
ulong ret ;
ret = spi_flash_read ( flash , sector , count , buf ) ;
if ( ! ret )
return count ;
else
return 0 ;
}
/*
* The main entry for SPI booting . It ' s necessary that SDRAM is already
* configured and available since this code loads the main U - Boot image
@ -85,11 +97,26 @@ int spl_spi_load_image(void)
if ( err )
return err ;
err = spl_parse_image_header ( header ) ;
if ( err )
return err ;
err = spi_flash_read ( flash , CONFIG_SYS_SPI_U_BOOT_OFFS ,
spl_image . size , ( void * ) spl_image . load_addr ) ;
if ( IS_ENABLED ( CONFIG_SPL_LOAD_FIT ) ) {
struct spl_load_info load ;
debug ( " Found FIT \n " ) ;
load . dev = flash ;
load . priv = NULL ;
load . filename = NULL ;
load . bl_len = 1 ;
load . read = spl_spi_fit_read ;
err = spl_load_simple_fit ( & load ,
CONFIG_SYS_SPI_U_BOOT_OFFS ,
header ) ;
} else {
err = spl_parse_image_header ( header ) ;
if ( err )
return err ;
err = spi_flash_read ( flash , CONFIG_SYS_SPI_U_BOOT_OFFS ,
spl_image . size ,
( void * ) spl_image . load_addr ) ;
}
}
return err ;