Skip to content
  • Ben Gardiner's avatar
    NAND: environment offset in OOB (CONFIG_ENV_OFFSET_OOB) · c9f7351b
    Ben Gardiner authored
    This is a re-submission of the patch by Harald Welte
    <laforge@openmoko.org> with minor modifications for rebase and changes
    as suggested by Scott Wood <scottwood@freescale.com> [1] [2].
    
    This patch enables the environment partition to have a run-time dynamic
    location (offset) in the NAND flash.  The reason for this is simply that
    all NAND flashes have factory-default bad blocks, and a fixed compile
    time offset would mean that sometimes the environment partition would
    live inside factory bad blocks. Since the number of factory default
    blocks can be quite high (easily 1.3MBytes in current standard
    components), it is not economic to keep that many spare blocks inside
    the environment partition.
    
    With this patch and CONFIG_ENV_OFFSET_OOB enabled, the location of the
    environment partition is stored in the out-of-band (OOB) data of the
    first block in flash. Since the first block is where most systems boot
    from, the vendors guarantee that the first block is not a factory
    default block.
    
    This patch introduces the 'nand env.oob' command, which can be called
    from the u-boot command line. 'nand env.oob get' reads the address of
    the environment partition from the OOB data, 'nand env.oob set
    {offset,partition-name}' allows the setting of the marker by specifying
    a numeric offset or a partition name.
    
    [1] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/43916
    [2] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/79195
    
    
    
    Signed-off-by: default avatarBen Gardiner <bengardiner@nanometrics.ca>
    Acked-by: default avatarHarald Welte <laforge@gnumonks.org>
    c9f7351b