[U-Boot] [PATCH 00/30] env: Move environment code to use location drivers
Simon Glass
sjg at chromium.org
Wed Jul 12 00:32:02 UTC 2017
Hi Christophe,
On 11 July 2017 at 01:59, Christophe LEROY <christophe.leroy at c-s.fr> wrote:
> Hi Simon,
>
>
> Le 10/07/2017 à 18:38, Simon Glass a écrit :
>>
>> Hi Christophe,
>>
>> On 10 July 2017 at 02:10, Christophe LEROY <christophe.leroy at c-s.fr>
>> wrote:
>>>
>>> Simon,
>>>
>>> Le 09/07/2017 à 22:52, Simon Glass a écrit :
>>>>
>>>>
>>>> The environment code is ripe for improvement in various ways. It has
>>>> lots
>>>> of duplication and inconsistencies between how things work with
>>>> different
>>>> environment locations. It does not properly use Kconfig. Error checking
>>>> and handling is patchy.
>>>>
>>>> This series makes a start at improving things:
>>>>
>>>> - moves the rest of the CONFIG_ENV_IS_IN_... options to Kconfig
>>>> - introduces the concept of a location driver for the environment
>>>> - drops some of the duplicated code
>>>> - improves error handling a little (more to be done here)
>>>> - moves code into a new env/ directory
>>>>
>>>> There is still much more to do:
>>>> - complete Kconfig conversion (e.g. CONFIG_ENV_SIZE)
>>>> - unify environment settings so that all locations support the same
>>>> options
>>>> - try to rationalise the redundancy code (can we create a common
>>>> implementation used by all drivers?)
>>>> - allow environment in multiple locations (e.g. as a fallback)
>>>> - figure out why CONFIG_ENV_IS_IN_FLASH enables the environment in flash
>>>> even in SPL, which other locations do not
>>>>
>>>>
>>>> Simon Glass (30):
>>>> Makefile: Rename 'env' target to 'environ'
>>>> Move environment files from common/ to env/
>>>> Convert CONFIG_ENV_IS_IN_MMC et al to Kconfig
>>>> env: Move help from README to Kconfig
>>>> Convert CONFIG_ENV_IS_IN_FLASH to Kconfig
>>>> Convert CONFIG_ENV_IS_IN_NVRAM to Kconfig
>>>> Convert CONFIG_ENV_IS_IN_EEPROM to Kconfig
>>>> Convert CONFIG_ENV_IS_IN_DATAFLASH to Kconfig
>>>> Convert CONFIG_ENV_IS_IN_SPI_FLASH to Kconfig
>>>> Convert CONFIG_ENV_IS_IN_REMOTE to Kconfig
>>>> Convert CONFIG_ENV_IS_IN_FAT to Kconfig
>>>> env: common: Make env_get_addr/get_char_memory() static
>>>> env: common: Drop env_get_addr()
>>>> env: common: Factor out the common env_valid check
>>>> env: common: Drop env_get_char_init()
>>>> env: common: Drop env_get_char_memory()
>>>> env: Add an enum for environment state
>>>> env: Rename nand env_location to nand_env_location
>>>> env: Create a location driver for each location
>>>> env: Add a new implementation of environment access
>>>> env: Switch over to use environment location drivers
>>>> env: Drop common init() functions
>>>> env: Drop the env_name_spec global
>>>> env: Drop unused env_ptr variables
>>>> env: Drop env_init_new()
>>>> env: Drop env_get_char_spec()
>>>> env: Drop env_relocate_spec() in favour of env_load()
>>>> env: Drop saveenv() in favour of env_save()
>>>> env: Adjust the get_char() method to return an int
>>>> env: Adjust the load() method to return an error
>>>>
>>>> Kconfig | 2 +
>>>> Makefile | 5 +-
>>>> README | 352
>>>> ------------------
>>>> arch/Kconfig | 1 +
>>>> arch/arm/Kconfig | 2 +
>>>> arch/arm/cpu/armv7/mx6/Kconfig | 1 +
>>>> arch/arm/cpu/armv7/mx7/Kconfig | 1 +
>>>> arch/arm/mach-exynos/Kconfig | 1 +
>>>> arch/arm/mach-integrator/Kconfig | 2 +
>>>> arch/arm/mach-mvebu/Kconfig | 1 +
>>>> arch/arm/mach-omap2/boot-common.c | 3 +-
>>>> arch/arm/mach-sunxi/Kconfig | 6 +
>>>> arch/arm/mach-tegra/Kconfig | 3 +
>>>> arch/m68k/Kconfig | 8 +
>>>> arch/microblaze/Kconfig | 1 +
>>>> arch/mips/Kconfig | 7 +
>>>> arch/powerpc/Kconfig | 1 +
>>>> arch/powerpc/cpu/mpc83xx/Kconfig | 6 +
>>>> arch/powerpc/cpu/mpc85xx/Kconfig | 4 +
>>>> arch/powerpc/cpu/mpc86xx/Kconfig | 1 +
>>>
>>>
>>>
>>> It looks like the mpc8xx has been left behind.
>>
>>
>> It may just be that there are no useful 'imply' targets there.
>
>
> include/configs/MCR3000.h contains the following:
>
> #define CONFIG_ENV_IS_IN_FLASH 1
> #define CONFIG_ENV_SECT_SIZE (64 * 1024)
> #define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
> #define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE +
> CONFIG_SYS_MONITOR_LEN)
> #define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)
> #define CONFIG_ENV_OVERWRITE 1
>
> So I would expect something about it in your serie. Maybe is it because this
> target was added recently in mainline ?
Yes it looks like I need to rerun that. Overall I'm not happy with how
the flash stuff has turned out and will be taking another look.
Regards,
Simon
More information about the U-Boot
mailing list