diff options
author | Stefano Babic <sbabic@denx.de> | 2014-08-11 10:21:03 +0200 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2014-08-11 10:21:03 +0200 |
commit | e82abaeb7f2a0833fccf90460c48b9f2100258f8 (patch) | |
tree | de701f5c90b7373966412d566b5c00d3837954bc /common | |
parent | f93f21906e374d46c6abfbdf4eb9cb1ab51b6384 (diff) | |
parent | 1899fac925eda817e12234aef3d01d354788662e (diff) |
Merge branch 'master' of git://git.denx.de/u-boot-arm
Conflicts:
boards.cfg
Signed-off-by: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'common')
-rw-r--r-- | common/env_mmc.c | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/common/env_mmc.c b/common/env_mmc.c index 7da10e61af..a7621a897c 100644 --- a/common/env_mmc.c +++ b/common/env_mmc.c @@ -62,16 +62,36 @@ int env_init(void) return 0; } -static int init_mmc_for_env(struct mmc *mmc) -{ #ifdef CONFIG_SYS_MMC_ENV_PART +__weak uint mmc_get_env_part(struct mmc *mmc) +{ + return CONFIG_SYS_MMC_ENV_PART; +} + +static int mmc_set_env_part(struct mmc *mmc) +{ + uint part = mmc_get_env_part(mmc); int dev = CONFIG_SYS_MMC_ENV_DEV; + int ret = 0; #ifdef CONFIG_SPL_BUILD dev = 0; #endif + + if (part != mmc->part_num) { + ret = mmc_switch_part(dev, part); + if (ret) + puts("MMC partition switch failed\n"); + } + + return ret; +} +#else +static inline int mmc_set_env_part(struct mmc *mmc) {return 0; }; #endif +static int init_mmc_for_env(struct mmc *mmc) +{ if (!mmc) { puts("No MMC card found\n"); return -1; @@ -82,16 +102,7 @@ static int init_mmc_for_env(struct mmc *mmc) return -1; } -#ifdef CONFIG_SYS_MMC_ENV_PART - if (CONFIG_SYS_MMC_ENV_PART != mmc->part_num) { - if (mmc_switch_part(dev, CONFIG_SYS_MMC_ENV_PART)) { - puts("MMC partition switch failed\n"); - return -1; - } - } -#endif - - return 0; + return mmc_set_env_part(mmc); } static void fini_mmc_for_env(struct mmc *mmc) |