20 Feb, 2018

1 commit


13 Feb, 2018

1 commit

  • When saving the environment on a platform which has DMA alignment
    larger than the natural alignment, env_fat_save triggers a debug
    message in file_fat_write:

    Saving Environment to FAT... writing uboot.env
    FAT: Misaligned buffer address (9df1c8e0)
    OK

    Signed-off-by: Alex Kiernan

    Alex Kiernan
     

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
     

27 Jan, 2018

1 commit

  • Since we have global messages to indicate what's going on, the custom
    messages in the environment drivers only make the output less readable.

    Make FAT play a little nicer by removing all the extra \n and formatting
    that is redundant with the global output.

    Reviewed-by: Andre Przywara
    Signed-off-by: Maxime Ripard

    Maxime Ripard
     

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