diff options
| -rw-r--r-- | arch/arm/cpu/armv7/mx6/soc.c | 36 | 
1 files changed, 33 insertions, 3 deletions
| diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c index 8aeeaecfd29..db6eabf548d 100644 --- a/arch/arm/cpu/armv7/mx6/soc.c +++ b/arch/arm/cpu/armv7/mx6/soc.c @@ -21,6 +21,7 @@  #include <asm/arch/crm_regs.h>  #include <dm.h>  #include <imx_thermal.h> +#include <mmc.h>  enum ldo_reg {  	LDO_ARM, @@ -355,7 +356,7 @@ __weak int board_mmc_get_env_dev(int devno)  	return CONFIG_SYS_MMC_ENV_DEV;  } -int mmc_get_env_dev(void) +static int mmc_get_boot_dev(void)  {  	struct src *src_regs = (struct src *)SRC_BASE_ADDR;  	u32 soc_sbmr = readl(&src_regs->sbmr1); @@ -370,15 +371,44 @@ int mmc_get_env_dev(void)  	 */  	bootsel = (soc_sbmr & 0x000000FF) >> 6; -	/* If not boot from sd/mmc, use default value */ +	/* No boot from sd/mmc */  	if (bootsel != 1) -		return CONFIG_SYS_MMC_ENV_DEV; +		return -1;  	/* BOOT_CFG2[3] and BOOT_CFG2[4] */  	devno = (soc_sbmr & 0x00001800) >> 11; +	return devno; +} + +int mmc_get_env_dev(void) +{ +	int devno = mmc_get_boot_dev(); + +	/* If not boot from sd/mmc, use default value */ +	if (devno < 0) +		return CONFIG_SYS_MMC_ENV_DEV; +  	return board_mmc_get_env_dev(devno);  } + +#ifdef CONFIG_SYS_MMC_ENV_PART +__weak int board_mmc_get_env_part(int devno) +{ +	return CONFIG_SYS_MMC_ENV_PART; +} + +uint mmc_get_env_part(struct mmc *mmc) +{ +	int devno = mmc_get_boot_dev(); + +	/* If not boot from sd/mmc, use default value */ +	if (devno < 0) +		return CONFIG_SYS_MMC_ENV_PART; + +	return board_mmc_get_env_part(devno); +} +#endif  #endif  int board_postclk_init(void) | 
