Re: [U-Boot] [PATCH v2 2/2] env_mmc: support env partition setup in runtime

2014-08-01 Thread Pantelis Antoniou
Hi Dmitry,

On Jul 30, 2014, at 1:19 PM, Dmitry Lifshitz wrote:

 Add callback with __weak annotation to allow setup of environment
 partition number in runtime from a board file.
 
 Propagate mmc_switch_part() return value into init_mmc_for_env() instead
 of -1 in case of failure.
 
 Signed-off-by: Dmitry Lifshitz lifsh...@compulab.co.il
 Signed-off-by: Igor Grinberg grinb...@compulab.co.il
 ---
 
 Changes in v2:
 
* Added mmc_get_env_part() proto in environment.h.
 
 common/env_mmc.c  |   35 +++
 include/environment.h |3 +++
 2 files changed, 26 insertions(+), 12 deletions(-)
 
 diff --git a/common/env_mmc.c b/common/env_mmc.c
 index 7da10e6..a7621a8 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)
 diff --git a/include/environment.h b/include/environment.h
 index d7a1adf..1fdbdad 100644
 --- a/include/environment.h
 +++ b/include/environment.h
 @@ -184,6 +184,9 @@ extern void env_reloc(void);
 #include mmc.h
 
 extern int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr);
 +# ifdef CONFIG_SYS_MMC_ENV_PART
 +extern uint mmc_get_env_part(struct mmc *mmc);
 +# endif
 #endif
 
 #ifndef DO_DEPS_ONLY
 -- 
 1.7.5.4

Applied, thanks.

-- Pantelis

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 2/2] env_mmc: support env partition setup in runtime

2014-07-30 Thread Dmitry Lifshitz
Add callback with __weak annotation to allow setup of environment
partition number in runtime from a board file.

Propagate mmc_switch_part() return value into init_mmc_for_env() instead
of -1 in case of failure.

Signed-off-by: Dmitry Lifshitz lifsh...@compulab.co.il
Signed-off-by: Igor Grinberg grinb...@compulab.co.il
---

 Changes in v2:

* Added mmc_get_env_part() proto in environment.h.

 common/env_mmc.c  |   35 +++
 include/environment.h |3 +++
 2 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/common/env_mmc.c b/common/env_mmc.c
index 7da10e6..a7621a8 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)
diff --git a/include/environment.h b/include/environment.h
index d7a1adf..1fdbdad 100644
--- a/include/environment.h
+++ b/include/environment.h
@@ -184,6 +184,9 @@ extern void env_reloc(void);
 #include mmc.h
 
 extern int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr);
+# ifdef CONFIG_SYS_MMC_ENV_PART
+extern uint mmc_get_env_part(struct mmc *mmc);
+# endif
 #endif
 
 #ifndef DO_DEPS_ONLY
-- 
1.7.5.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot