diff options
author | Patrick Delaunay <patrick.delaunay@foss.st.com> | 2022-11-10 11:48:58 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-01-10 12:37:09 -0500 |
commit | f7e07a7ef4734fb3c5b3e6636f2679b6321f58d2 (patch) | |
tree | 1839d863f93e9421ee1d1c5f3ce28ee0f9173758 /env | |
parent | 7b84c973b96775576dcff228d865e8570be26c82 (diff) | |
download | u-boot-f7e07a7ef4734fb3c5b3e6636f2679b6321f58d2.tar.gz |
env: mmc: introduced ENV_MMC_OFFSET
Introduce ENV_MMC_OFFSET defines.
It is a preliminary step to the next patches to simplify the code.
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Diffstat (limited to 'env')
-rw-r--r-- | env/mmc.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/env/mmc.c b/env/mmc.c index c28f4c6c6dc..42bcf7e775c 100644 --- a/env/mmc.c +++ b/env/mmc.c @@ -24,6 +24,17 @@ #define __STR(X) #X #define STR(X) __STR(X) +#define ENV_MMC_INVALID_OFFSET ((s64)-1) + +/* Default ENV offset when not defined in Device Tree */ +#define ENV_MMC_OFFSET CONFIG_ENV_OFFSET + +#if defined(CONFIG_ENV_OFFSET_REDUND) +#define ENV_MMC_OFFSET_REDUND CONFIG_ENV_OFFSET_REDUND +#else +#define ENV_MMC_OFFSET_REDUND ENV_MMC_INVALID_OFFSET +#endif + DECLARE_GLOBAL_DATA_PTR; /* @@ -94,12 +105,12 @@ static inline s64 mmc_offset(int copy) return val; } - defvalue = CONFIG_ENV_OFFSET; + defvalue = ENV_MMC_OFFSET; propname = dt_prop.offset; #if defined(CONFIG_ENV_OFFSET_REDUND) if (copy) { - defvalue = CONFIG_ENV_OFFSET_REDUND; + defvalue = ENV_MMC_OFFSET_REDUND; propname = dt_prop.offset_redund; } #endif @@ -108,11 +119,11 @@ static inline s64 mmc_offset(int copy) #else static inline s64 mmc_offset(int copy) { - s64 offset = CONFIG_ENV_OFFSET; + s64 offset = ENV_MMC_OFFSET; #if defined(CONFIG_ENV_OFFSET_REDUND) if (copy) - offset = CONFIG_ENV_OFFSET_REDUND; + offset = ENV_MMC_OFFSET_REDUND; #endif return offset; } @@ -122,6 +133,11 @@ __weak int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr) { s64 offset = mmc_offset(copy); + if (offset == ENV_MMC_INVALID_OFFSET) { + printf("Invalid ENV offset in MMC, copy=%d\n", copy); + return -ENOENT; + } + if (offset < 0) offset += mmc->capacity; |