env_mmc: configure environment offsets via device tree
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>
This commit is contained in:
parent
6183b29559
commit
f8b8a55463
@ -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 CONFIG_IS_ENABLED(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;
|
||||
|
Loading…
Reference in New Issue
Block a user