
On Thu, Aug 03, 2017 at 12:21:58PM -0600, Simon Glass wrote:
Set up a location driver for each supported environment location. At present this just points to the global functions and is not used. A later patch will switch this over to use private functions in each driver.
There are several special cases here in various drivers to handle peculiarities of certain boards:
- Some boards define CONFIG_ENV_IS_IN_FAT and CONFIG_SPL_ENV_SUPPORT but
do not actually load the environment in SPL. The env load code was optimised out before but with the driver, it is not. Therefore a special case is added to env/fat.c. The correct fix (depending on board testing might be to disable CONFIG_SPL_ENV_SUPPORT.
- A similar situations happens with CONFIG_ENV_IS_IN_FLASH. Some boards
do not actually load the environment in SPL, so to reduce code size we need to drop that code. A similar fix may be possible with these boards, or it may be possible to adjust the environment CONFIG settings.
Added to the above is that the CONFIG_SPL_ENV_SUPPORT option does not apply when the environment is in flash.
Obviously the above has been discovered through painful and time-consuming trial and error. Hopefully board maintainers can take a look and figure out what is actually needed.
Signed-off-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!