[U-Boot] [PATCH v3 1/2] env_mmc: configure environment offsets via device tree
Jaehoon Chung
jh80.chung at samsung.com
Mon May 15 21:33:38 UTC 2017
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 at theobroma-systems.com>
> Acked-by: Simon Glass <sjg at 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;
>
More information about the U-Boot
mailing list