
Hi Philipp,
On 05/10/2017 09:44 PM, Philipp Tomsich wrote:
This introduces the ability to override the environment offets from the device tree by setting the following nodes in '/config': 'u-boot,mmc-env-offset' - overrides CONFIG_ENV_OFFSET 'u-boot,mmc-env-offset-redundant' - overrides CONFIG_ENV_OFFSET_REDUND
To keep with the previous logic, the CONFIG_* defines still need to be available and the statically defined values become the defaults, when the corresponding properties are not set in the device-tree.
Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com Acked-by: Simon Glass sjg@chromium.org
your patch has the compile error about building spl.
+common/built-in.o: In function `mmc_offset': +common/env_mmc.c:53: undefined reference to `fdtdec_get_config_int' +make[2]: *** [spl/u-boot-spl] Error 1 +make[1]: *** [spl/u-boot-spl] Error 2 +make: *** [sub-make] Error 2
Plz, fix this.
Best Regards, Jaehoon Chung
Changes in v3:
- changes the config-check to depend on CONFIG_OF_CONTROL to detect if 'fdtdec_get_config_int' is available
Changes in v2: None
common/env_mmc.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/common/env_mmc.c b/common/env_mmc.c index a5d14d4..c10eec5 100644 --- a/common/env_mmc.c +++ b/common/env_mmc.c @@ -10,6 +10,7 @@
#include <command.h> #include <environment.h> +#include <fdtdec.h> #include <linux/stddef.h> #include <malloc.h> #include <memalign.h> @@ -36,15 +37,37 @@ DECLARE_GLOBAL_DATA_PTR; #define CONFIG_ENV_OFFSET 0 #endif
-__weak int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr) +#if defined(CONFIG_OF_CONTROL) +static inline s64 mmc_offset(int copy) {
- s64 offset;
- const char *propname = "u-boot,mmc-env-offset";
- s64 defvalue = CONFIG_ENV_OFFSET;
- offset = CONFIG_ENV_OFFSET;
-#ifdef CONFIG_ENV_OFFSET_REDUND +#if defined(CONFIG_ENV_OFFSET_REDUND)
- if (copy) {
propname = "u-boot,mmc-env-offset-redundant";
defvalue = CONFIG_ENV_OFFSET_REDUND;
- }
+#endif
- return fdtdec_get_config_int(gd->fdt_blob, propname, defvalue);
+} +#else +static inline s64 mmc_offset(int copy) +{
- s64 offset = CONFIG_ENV_OFFSET;
+#if defined(CONFIG_ENV_OFFSET_REDUND) if (copy) offset = CONFIG_ENV_OFFSET_REDUND; #endif
- return offset;
+} +#endif
+__weak int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr) +{
s64 offset = mmc_offset(copy);
if (offset < 0) offset += mmc->capacity;