[U-Boot] [PATCH v4 1/2] 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 ---
Changes in v4: - change the test for OF_CONTROL to use CONFIG_IS_ENABLED to pick up the differece between SPL_OF_CONTROL and OF_CONTROL
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..45d95a1 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 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;

Adding documentation on the new config properties: 'u-boot,mmc-env-offset' - overrides CONFIG_ENV_OFFSET 'u-boot,mmc-env-offset-redundant' - overrides CONFIG_ENV_OFFSET_REDUND
Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com
---
Changes in v4: None Changes in v3: None Changes in v2: - added documentation in config.txt
doc/device-tree-bindings/config.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/doc/device-tree-bindings/config.txt b/doc/device-tree-bindings/config.txt index d4bc1df..fe0e04a 100644 --- a/doc/device-tree-bindings/config.txt +++ b/doc/device-tree-bindings/config.txt @@ -21,6 +21,18 @@ u-boot,efi-partition-entries-offset
This setting will override any values configured via Kconfig.
+u-boot,mmc-env-offset +u-boot,mmc-env-offset-redundant + If present, the values of the 'u-boot,mmc-env-offset' and/or + of the u-boot,mmc-env-offset-redundant' properties overrides + CONFIG_ENV_OFFSET and CONFIG_ENV_OFFSET_REDUND, respectively, + for SD/MMC devices. + + Values are interpreted as the offset from the start of the + device, specified in bytes. It is assumed that the setting + will point at the beginning of a LBA and values that are not + LBA-aligned will be rounded up to the next LBA address. + u-boot,spl-payload-offset If present (and SPL is controlled by the device-tree), this allows to override the CONFIG_SYS_SPI_U_BOOT_OFFS setting using a value

On 05/16/2017 07:16 AM, Philipp Tomsich wrote:
Adding documentation on the new config properties: 'u-boot,mmc-env-offset' - overrides CONFIG_ENV_OFFSET 'u-boot,mmc-env-offset-redundant' - overrides CONFIG_ENV_OFFSET_REDUND
Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com
Reviewed-by: Jaehoon Chung jh80.chung@samsung.com
Changes in v4: None Changes in v3: None Changes in v2:
- added documentation in config.txt
doc/device-tree-bindings/config.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/doc/device-tree-bindings/config.txt b/doc/device-tree-bindings/config.txt index d4bc1df..fe0e04a 100644 --- a/doc/device-tree-bindings/config.txt +++ b/doc/device-tree-bindings/config.txt @@ -21,6 +21,18 @@ u-boot,efi-partition-entries-offset
This setting will override any values configured via Kconfig.
+u-boot,mmc-env-offset +u-boot,mmc-env-offset-redundant
- If present, the values of the 'u-boot,mmc-env-offset' and/or
- of the u-boot,mmc-env-offset-redundant' properties overrides
- CONFIG_ENV_OFFSET and CONFIG_ENV_OFFSET_REDUND, respectively,
- for SD/MMC devices.
- Values are interpreted as the offset from the start of the
- device, specified in bytes. It is assumed that the setting
- will point at the beginning of a LBA and values that are not
- LBA-aligned will be rounded up to the next LBA address.
u-boot,spl-payload-offset If present (and SPL is controlled by the device-tree), this allows to override the CONFIG_SYS_SPI_U_BOOT_OFFS setting using a value

On 05/25/2017 10:51 PM, Jaehoon Chung wrote:
On 05/16/2017 07:16 AM, Philipp Tomsich wrote:
Adding documentation on the new config properties: 'u-boot,mmc-env-offset' - overrides CONFIG_ENV_OFFSET 'u-boot,mmc-env-offset-redundant' - overrides CONFIG_ENV_OFFSET_REDUND
Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com
Reviewed-by: Jaehoon Chung jh80.chung@samsung.com
Applied to u-boot-mmc. Thanks!
Best Regards, Jaehoon Chung
Changes in v4: None Changes in v3: None Changes in v2:
- added documentation in config.txt
doc/device-tree-bindings/config.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/doc/device-tree-bindings/config.txt b/doc/device-tree-bindings/config.txt index d4bc1df..fe0e04a 100644 --- a/doc/device-tree-bindings/config.txt +++ b/doc/device-tree-bindings/config.txt @@ -21,6 +21,18 @@ u-boot,efi-partition-entries-offset
This setting will override any values configured via Kconfig.
+u-boot,mmc-env-offset +u-boot,mmc-env-offset-redundant
- If present, the values of the 'u-boot,mmc-env-offset' and/or
- of the u-boot,mmc-env-offset-redundant' properties overrides
- CONFIG_ENV_OFFSET and CONFIG_ENV_OFFSET_REDUND, respectively,
- for SD/MMC devices.
- Values are interpreted as the offset from the start of the
- device, specified in bytes. It is assumed that the setting
- will point at the beginning of a LBA and values that are not
- LBA-aligned will be rounded up to the next LBA address.
u-boot,spl-payload-offset If present (and SPL is controlled by the device-tree), this allows to override the CONFIG_SYS_SPI_U_BOOT_OFFS setting using a value
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

Hi Philipp,
On 05/16/2017 07:16 AM, 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
I'm doing check this patches..after building,,if there is no problem, i will pick.
Thanks!
Best Regards, Jaehoon Chung
Changes in v4:
- change the test for OF_CONTROL to use CONFIG_IS_ENABLED to pick up the differece between SPL_OF_CONTROL and OF_CONTROL
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..45d95a1 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 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;

On 05/25/2017 10:51 PM, Jaehoon Chung wrote:
Hi Philipp,
On 05/16/2017 07:16 AM, 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
I'm doing check this patches..after building,,if there is no problem, i will pick.
Applied to u-boot-mmc. Thanks!
Best Regards, Jaehoon Chung
Thanks!
Best Regards, Jaehoon Chung
Changes in v4:
- change the test for OF_CONTROL to use CONFIG_IS_ENABLED to pick up the differece between SPL_OF_CONTROL and OF_CONTROL
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..45d95a1 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 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;
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
participants (2)
-
Jaehoon Chung
-
Philipp Tomsich