From a09fea1d28fe3c69a64bee092f5a764274d26ca2 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Mon, 18 Nov 2019 20:02:10 -0500 Subject: env: Finish migration of common ENV options - In ARMv8 NXP Layerscape platforms we also need to make use of CONFIG_SYS_RELOC_GD_ENV_ADDR now, do so. - On ENV_IS_IN_REMOTE, CONFIG_ENV_OFFSET is never used, drop the define to 0. - Add Kconfig entry for ENV_ADDR. - Make ENV_ADDR / ENV_OFFSET depend on the env locations that use it. - Add ENV_xxx_REDUND options that depend on their primary option and SYS_REDUNDAND_ENVIRONMENT - On a number of PowerPC platforms, use SPL_ENV_ADDR not CONFIG_ENV_ADDR for the pre-main-U-Boot environment location. - On ENV_IS_IN_SPI_FLASH, check not for CONFIG_ENV_ADDR being set but rather it being non-zero, as it will now be zero by default. - Rework the env_offset absolute in env/embedded.o to not use CONFIG_ENV_OFFSET as it was the only use of ENV_OFFSET within ENV_IS_IN_FLASH. - Migrate all platforms. Cc: Wolfgang Denk Cc: Joe Hershberger Cc: Patrick Delaunay Cc: uboot-stm32@st-md-mailman.stormreply.com Signed-off-by: Tom Rini Acked-by: Joe Hershberger Reviewed-by: Simon Goldschmidt --- env/Kconfig | 32 ++++++++++++++++++++++++++------ env/embedded.c | 2 +- env/mmc.c | 4 ---- env/remote.c | 4 ---- env/sf.c | 6 +++--- 5 files changed, 30 insertions(+), 18 deletions(-) (limited to 'env') diff --git a/env/Kconfig b/env/Kconfig index 0b97af42b1..bc88c59cd5 100644 --- a/env/Kconfig +++ b/env/Kconfig @@ -467,11 +467,25 @@ config ENV_EXT4_FILE It's a string of the EXT4 file name. This file use to store the environment (explicit path to the file) -if ARCH_ROCKCHIP || ARCH_SUNXI || ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL || ARC || ARCH_STM32MP || ARCH_OMAP2PLUS || ARCH_AT91 +config ENV_ADDR + hex "Environment address" + depends on ENV_IS_IN_FLASH || ENV_IS_IN_NVRAM || ENV_IS_IN_ONENAND || \ + ENV_IS_IN_REMOTE || ENV_IS_IN_SPI_FLASH + default 0x0 if ENV_IS_IN_SPI_FLASH + help + Offset from the start of the device (or partition) + +config ENV_ADDR_REDUND + hex "Redundant environment address" + depends on ENV_IS_IN_FLASH && SYS_REDUNDAND_ENVIRONMENT + help + Offset from the start of the device (or partition) of the redundant + environment location. config ENV_OFFSET - hex "Environment Offset" - depends on (!ENV_IS_IN_UBI && !ENV_IS_NOWHERE) || ARCH_STM32MP + hex "Environment offset" + depends on ENV_IS_IN_EEPROM || ENV_IS_IN_MMC || ENV_IS_IN_NAND || \ + ENV_IS_IN_SPI_FLASH default 0x3f8000 if ARCH_ROCKCHIP default 0x88000 if ARCH_SUNXI default 0xE0000 if ARCH_ZYNQ @@ -483,6 +497,14 @@ config ENV_OFFSET help Offset from the start of the device (or partition) +config ENV_OFFSET_REDUND + hex "Redundant environment offset" + depends on (ENV_IS_IN_EEPROM || ENV_IS_IN_MMC || ENV_IS_IN_NAND || \ + ENV_IS_IN_SPI_FLASH) && SYS_REDUNDAND_ENVIRONMENT + help + Offset from the start of the device (or partition) of the redundant + environment location. + config ENV_SIZE hex "Environment Size" default 0x40000 if ENV_IS_IN_SPI_FLASH && ARCH_ZYNQMP @@ -495,7 +517,7 @@ config ENV_SIZE config ENV_SECT_SIZE hex "Environment Sector-Size" - depends on (!ENV_IS_NOWHERE && (ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL || ARCH_OMAP2PLUS || ARCH_AT91) )|| ARCH_STM32MP + depends on ENV_IS_IN_FLASH || ENV_IS_IN_SPI_FLASH default 0x40000 if ARCH_ZYNQMP || ARCH_VERSAL default 0x20000 if ARCH_ZYNQ || ARCH_OMAP2PLUS || ARCH_AT91 help @@ -526,8 +548,6 @@ config ENV_UBI_VID_OFFSET help UBI VID offset for environment. If 0, no custom VID offset is used. -endif - config SYS_RELOC_GD_ENV_ADDR bool "Relocate gd->en_addr" help diff --git a/env/embedded.c b/env/embedded.c index a38e169fe0..208553e6af 100644 --- a/env/embedded.c +++ b/env/embedded.c @@ -91,6 +91,6 @@ unsigned long env_size __UBOOT_ENV_SECTION__(env_size) = sizeof(env_t); /* * Add in absolutes. */ -GEN_ABS(env_offset, CONFIG_ENV_OFFSET); +GEN_ABS(env_offset, (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)); #endif /* ENV_IS_EMBEDDED */ diff --git a/env/mmc.c b/env/mmc.c index fee9f0674e..b24c35cec9 100644 --- a/env/mmc.c +++ b/env/mmc.c @@ -24,10 +24,6 @@ DECLARE_GLOBAL_DATA_PTR; -#if !defined(CONFIG_ENV_OFFSET) -#define CONFIG_ENV_OFFSET 0 -#endif - #if CONFIG_IS_ENABLED(OF_CONTROL) static inline int mmc_offset_try_partition(const char *str, s64 *val) { diff --git a/env/remote.c b/env/remote.c index 02531f427b..55faa1e5d0 100644 --- a/env/remote.c +++ b/env/remote.c @@ -18,10 +18,6 @@ env_t *env_ptr = (env_t *)CONFIG_ENV_ADDR; DECLARE_GLOBAL_DATA_PTR; -#if !defined(CONFIG_ENV_OFFSET) -#define CONFIG_ENV_OFFSET 0 -#endif - static int env_remote_init(void) { if (crc32(0, env_ptr->data, ENV_SIZE) == env_ptr->crc) { diff --git a/env/sf.c b/env/sf.c index 590d0cedd8..16dba11578 100644 --- a/env/sf.c +++ b/env/sf.c @@ -284,14 +284,14 @@ out: } #endif -#ifdef CONFIG_ENV_ADDR +#if CONFIG_ENV_ADDR != 0x0 __weak void *env_sf_get_env_addr(void) { return (void *)CONFIG_ENV_ADDR; } #endif -#if defined(INITENV) && defined(CONFIG_ENV_ADDR) +#if defined(INITENV) && (CONFIG_ENV_ADDR != 0x0) static int env_sf_init(void) { env_t *env_ptr = (env_t *)env_sf_get_env_addr(); @@ -315,7 +315,7 @@ U_BOOT_ENV_LOCATION(sf) = { #ifdef CMD_SAVEENV .save = env_save_ptr(env_sf_save), #endif -#if defined(INITENV) && defined(CONFIG_ENV_ADDR) +#if defined(INITENV) && (CONFIG_ENV_ADDR != 0x0) .init = env_sf_init, #endif }; -- cgit v1.2.3