imx: Introduce CONFIG_SPL_FORCE_MMC_BOOT to force MMC boot on falcon mode
This change tries to fix the following problem: - The board boots (to be more precise - ROM loads SPL) from a slow SPI-NOR memory. As a result the spl_boot_device() will return SPI-NOR as a boot device (which is correct). - The problem is that in 'falcon boot' the eMMC is used as a boot medium to load kernel from its partition. Calling spl_boot_device() will break things as it returns SPI-NOR device. To fix this issue the new CONFIG_SPL_FORCE_MMC_BOOT Kconfig flag is introduced to handle this special use case. By default it is not defined, so there is no change in the legacy code flow. Signed-off-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
		
							parent
							
								
									45aac6dd7a
								
							
						
					
					
						commit
						772b55723b
					
				| 
						 | 
				
			
			@ -178,7 +178,18 @@ int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
 | 
			
		|||
/* called from spl_mmc to see type of boot mode for storage (RAW or FAT) */
 | 
			
		||||
u32 spl_boot_mode(const u32 boot_device)
 | 
			
		||||
{
 | 
			
		||||
/*
 | 
			
		||||
 * When CONFIG_SPL_FORCE_MMC_BOOT is defined the 'boot_device' is used
 | 
			
		||||
 * unconditionally to decide about device to use for booting.
 | 
			
		||||
 * This is crucial for falcon boot mode, when board boots up (i.e. ROM
 | 
			
		||||
 * loads SPL) from slow SPI-NOR memory and afterwards the SPL's 'falcon' boot
 | 
			
		||||
 * mode is used to load Linux OS from eMMC partition.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef CONFIG_SPL_FORCE_MMC_BOOT
 | 
			
		||||
	switch (boot_device) {
 | 
			
		||||
#else
 | 
			
		||||
	switch (spl_boot_device()) {
 | 
			
		||||
#endif
 | 
			
		||||
	/* for MMC return either RAW or FAT mode */
 | 
			
		||||
	case BOOT_DEVICE_MMC1:
 | 
			
		||||
	case BOOT_DEVICE_MMC2:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -608,6 +608,15 @@ config SPL_MMC_SUPPORT
 | 
			
		|||
	  this option to build the drivers in drivers/mmc as part of an SPL
 | 
			
		||||
	  build.
 | 
			
		||||
 | 
			
		||||
config SPL_FORCE_MMC_BOOT
 | 
			
		||||
	bool "Force SPL booting from MMC"
 | 
			
		||||
	depends on SPL_MMC_SUPPORT
 | 
			
		||||
	default n
 | 
			
		||||
	help
 | 
			
		||||
	  Force SPL to use MMC device for Linux kernel booting even when the
 | 
			
		||||
	  SoC ROM recognized boot medium is not eMMC/SD. This is crucial for
 | 
			
		||||
	  factory or 'falcon mode' booting.
 | 
			
		||||
 | 
			
		||||
config SPL_MMC_TINY
 | 
			
		||||
	bool "Tiny MMC framework in SPL"
 | 
			
		||||
	depends on SPL_MMC_SUPPORT
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue