20 Feb, 2018

1 commit


01 Feb, 2018

1 commit

  • For multiple env drivers to correctly implement fallback when
    one environment fails to load (e.g. crc error), the return value
    of env_import has to be propagated by all env driver's load
    function.

    Without this change, the first driver that succeeds to load an
    environment with an invalid CRC return 0 (success) and no other
    drivers are checked.

    Signed-off-by: Simon Goldschmidt
    Acked-by: Maxime Ripard

    Simon Goldschmidt
     

16 Jan, 2018

1 commit

  • For example to store the environment in a file named "/uboot.env" in MMC
    "0", where partition "1" contains the EXT4 filesystem, the following
    configs should be added to the board's default config:

    CONFIG_ENV_IS_IN_EXT4=y
    CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1"
    CONFIG_ENV_EXT4_FILE="/uboot.env"
    CONFIG_ENV_EXT4_INTERFACE="mmc"

    Signed-off-by: Jorge Ramirez-Ortiz
    [trini: Fix some line over 80 chars issues]
    Signed-off-by: Tom Rini

    Jorge Ramirez-Ortiz
     

16 Aug, 2017

5 commits

  • The load() methods have inconsistent behaviour on error. Some of them load
    an empty default environment. Some load an environment containing an error
    message. Others do nothing.

    As a step in the right direction, have the method return an error code.
    Then the caller could handle this itself in a consistent way.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • This variable is declared as a global in most environment location
    drivers. But it is not used outside the drivers and most of the
    declarations are unnecessary.

    Also some drivers call free() on env_ptr which seems wrong since it is
    not in the heap.

    Drop the variable where possible, and all calls to free().

    Signed-off-by: Simon Glass
    Reviewed-by: Tom Rini

    Simon Glass
     
  • Add a name to the driver and use that instead of the global variable
    declared by each driver.

    Signed-off-by: Simon Glass
    Reviewed-by: Tom Rini

    Simon Glass
     
  • Most of the init() implementations just use the default environment.
    Adjust env_init_new() to do this automatically, and drop the redundant
    code.

    Signed-off-by: Simon Glass
    Reviewed-by: Tom Rini

    Simon Glass
     
  • Move over to use a the master implementation of the location drivers, with
    each method calling out to the appropriate driver.

    Signed-off-by: Simon Glass
    Reviewed-by: Tom Rini

    Simon Glass
     

15 Aug, 2017

3 commits

  • 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:

    1. 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.

    2. 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

    Simon Glass
     
  • At present we have three states for the environment, numbered 0, 1 and 2.
    Add an enum to record this to avoid open-coded values.

    Signed-off-by: Simon Glass
    Reviewed-by: Tom Rini

    Simon Glass
     
  • About a quarter of the files in common/ relate to the environment. It
    seems better to put these into their own subdirectory and remove the
    prefix.

    Signed-off-by: Simon Glass
    Reviewed-by: Tom Rini

    Simon Glass