[U-Boot] [PATCH 2/3] env_mmc: support env partition setup in runtime
Dmitry Lifshitz
lifshitz at compulab.co.il
Sun Apr 27 12:18:47 CEST 2014
Add callback with __weak annotation to allow setup of environment
partition number in runtime from a board file.
Signed-off-by: Dmitry Lifshitz <lifshitz at compulab.co.il>
Signed-off-by: Igor Grinberg <grinberg at compulab.co.il>
---
common/env_mmc.c | 35 ++++++++++++++++++++++++++---------
1 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/common/env_mmc.c b/common/env_mmc.c
index 045428c..5d4b5f4 100644
--- a/common/env_mmc.c
+++ b/common/env_mmc.c
@@ -62,6 +62,30 @@ int env_init(void)
return 0;
}
+
+#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);
+
+ if (part != mmc->part_num) {
+ if (mmc_switch_part(CONFIG_SYS_MMC_ENV_DEV, part)) {
+ puts("MMC partition switch failed\n");
+ return -1;
+ }
+ }
+
+ return 0;
+}
+#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) {
@@ -74,15 +98,8 @@ 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(CONFIG_SYS_MMC_ENV_DEV,
- CONFIG_SYS_MMC_ENV_PART)) {
- puts("MMC partition switch failed\n");
- return -1;
- }
- }
-#endif
+ if (mmc_set_env_part(mmc))
+ return -1;
return 0;
}
--
1.7.5.4
More information about the U-Boot
mailing list