24 Jul, 2013

1 commit


05 Mar, 2013

1 commit


04 Feb, 2013

1 commit


26 Oct, 2012

1 commit

  • This makes the FAT filesystem API more consistent with other block-based
    filesystems. If in the future standard multi-filesystem commands such as
    "ls" or "load" are implemented, having FAT work the same way as other
    filesystems will be necessary.

    Convert cmd_fat.c to the new API, so the code looks more like other files
    implementing the same commands for other filesystems.

    Signed-off-by: Stephen Warren
    Reviewed-by: Benoît Thébaudeau

    Stephen Warren
     

27 Sep, 2012

1 commit

  • When storage devices contain files larger than the embedded RAM, it is
    useful to be able to read these files by chunks, e.g. for a software
    update to the embedded NAND Flash from an external storage device (USB
    stick, SD card, etc.).

    Hence, this patch makes it possible by adding a new FAT API to read
    files from a given position. This patch also adds this feature to the
    fatload command.

    Signed-off-by: Benoît Thébaudeau
    Cc: Wolfgang Denk
    Signed-off-by: Tom Rini

    Benoît Thébaudeau
     

22 May, 2012

1 commit

  • This patch fixes several issues where sector offsets can overflow due
    to being limited to 16-bits. The cases where an overflow can happen
    when accessing large FAT32 partitions are:

    - length of FAT in sectors
    - start sector of root directory
    - the sector of the first cluster

    These issues were observed when reading files from a 64GB FAT32
    filesystem.

    Signed-off-by: Aaron Williams
    Tested-by: Anatolij Gustschin
    Signed-off-by: Anatolij Gustschin

    Aaron Williams
     

27 Oct, 2011

1 commit

  • In some cases, saving data in RAM as a file with FAT format is required.
    This patch allows the file to be written in FAT formatted partition.

    The usage is similar with reading a file.
    First, fat_register_device function is called before file_fat_write function
    in order to set target partition.
    Then, file_fat_write function is invoked with desired file name,
    start ram address for writing data, and file size.

    Signed-off-by: Donggeun Kim
    Signed-off-by: Kyungmin Park

    Donggeun Kim
     

02 Oct, 2011

2 commits

  • Currently in do_fat_read() when reading FAT sectors, we have to divide down
    LINEAR_PREFETCH_SIZE by the sector size, whereas it's defined as 2 sectors
    worth of bytes. In order to avoid redundant multiplication/division, introduce
    #define PREFETCH_BLOCKS instead of #define LINEAR_PREFETCH_SIZE.

    Signed-off-by: Sergei Shtylyov

    Sergei Shtylyov
     
  • Apple iPod nanos have sector sizes of 2 or 4 KiB, which crashes U-Boot when it
    tries to read the boot sector into 512-byte buffer situated on stack. Make the
    FAT code indifferent to the sector size.

    Signed-off-by: Sergei Shtylyov

    Sergei Shtylyov
     

13 Oct, 2010

1 commit

  • The U-Boot code has the following bugs related to the processing of Long File
    Name (LFN) entries scattered across several clusters/sectors :

    1) get_vfatname() function is designed to gather scattered LFN entries by
    cluster chain processing - that doesn't work for FAT12/16 root directory.
    In other words, the function expects the following input data:
    1.1) FAT32 directory (which is cluster chain based);
    OR
    1.2) FAT12/16 non-root directory (which is also cluster chain based);
    OR
    1.3) FAT12/16 root directory (allocated as contiguous sectors area), but
    all necessary information MUST be within the input buffer of filesystem cluster
    size (thus cluster-chain jump is never initiated).

    In order to accomplish the last condition, root directory parsing code in
    do_fat_read() uses the following trick: read-out cluster-size block, process
    only first sector (512 bytes), then shift 512 forward, read-out cluster-size
    block and so on. This works great unless cluster size is equal to 512 bytes
    (in a case you have a small partition), or long file name entries are scattered
    across three sectors, see 4) for details.

    2) Despite of the fact that get_vfatname() supports FAT32 root directory
    browsing, do_fat_read() function doesn't send current cluster number correctly,
    so root directory look-up doesn't work correctly.

    3) get_vfatname() doesn't gather scattered entries correctly also is the case
    when all LFN entries are located at the end of the source cluster, but real
    directory entry (which must be returned) is at the only beginning of the
    next one. No error detected, the resulting directory entry returned contains
    a semi-random information (wrong size, wrong start cluster number and so on)
    i.e. the entry is not accessible.

    4) LFN (VFAT) allows up to 20 entries (slots) each containing 26 bytes (13
    UTF-16 code units) to represent a single long file name i.e. up to 520 bytes.
    U-Boot allocates 256 bytes buffer instead, i.e. 10 or more LFN slots record
    may cause buffer overflow / memory corruption.
    Also, it's worth to mention that 20+1 slots occupy 672 bytes space which may
    take more than one cluster of 512 bytes (medium-size FAT32 or small FAT16
    partition) - get_vfatname() function doesn't support such case as well.

    The patch attached fixes these problems in the following way:
    - keep using 256 bytes buffer for a long file name, but safely prevent a
    possible buffer overflow (skip LFN processing, if it contains 10 or more
    slots).

    - explicitly specify FAT12/16 root directory parsing buffer size, instead
    of relying on cluster size. The value used is a double sector size (to store
    current sector and the next one). This fixes the first problem and increases
    performance on big FAT12/16 partitions;

    - send current cluster number (FAT32) to get_vfatname() during root
    directory processing;

    - use LFN counter to seek the real directory entry in get_vfatname() - fixes the
    third problem;

    - skip deleted entries in the root directory (to prevent bogus buffer
    overflow detection and LFN counter steps).

    Note: it's not advised to split up the patch, because a separate part may
    operate incorrectly.

    Signed-off-by: Mikhail Zolotaryov

    Mikhail Zolotaryov
     

25 Jul, 2010

1 commit


05 Dec, 2008

1 commit

  • This code contains some non-ascii characters in comment lines and code.
    Most editors do not display those characters properly and editing those
    files results always in diffs at these places which are usually not required
    to be changed at all. This is error prone.

    So, remove those weird characters and replace them by normal C-style
    equivalents for which the proper defines were already in the header.

    Signed-off-by: Remy Bohmer

    Remy Bohmer
     

21 May, 2008

1 commit

  • This commit gets rid of a huge amount of silly white-space issues.
    Especially, all sequences of SPACEs followed by TAB characters get
    removed (unless they appear in print statements).

    Also remove all embedded "vim:" and "vi:" statements which hide
    indentation problems.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     

03 Mar, 2008

1 commit

  • This fixes the cluster size tests in the FAT32 file system.
    The current implementation of VFAT support doesn't work if the
    referred cluster has an offset > 16bit representation, causing
    "fatload" and "fatls" commands etc. to fail.

    Signed-off-by: michael trimarchi

    michael
     

15 Aug, 2006

1 commit


24 Apr, 2004

1 commit

  • sticks (including FAT / VFAT filesystem support)

    * Add SL811 Host Controller Interface driver for USB

    * Add CFG_I2C_EEPROM_ADDR_OVERFLOW desription to README

    * Patch by Pantelis Antoniou, 19 Apr 2004:
    Allow to use shell style syntax (i. e. ${var} ) with standard parser.
    Minor patches for Intracom boards.

    * Patch by Christian Pell, 19 Apr 2004:
    cleanup support for CF/IDE on PCMCIA for PXA25X

    wdenk
     

16 Apr, 2004

1 commit


24 Feb, 2004

1 commit

  • Add support for NET+50 CPU and ModNET50 board

    * Patch by Sam Song, 10 Feb 2004:
    Fix typos in cfi_flash.c

    * Patch by Leon Kukovec, 10 Feb 2004
    Fixed long dir entry slot id calculation in get_vfatname

    * Patch by Robin Gilks, 10 Feb 2004:
    add "itest" command (operators: -eq, -ne, -lt, -gt, -le, -ge, ==,
    !=, <>, , =)

    wdenk
     

10 Feb, 2004

1 commit


08 Dec, 2003

1 commit


11 Sep, 2003

1 commit

  • add FAT support for IDE, SCSI and USB

    * Patches by Gleb Natapov, 2 Sep 2003:
    - cleanup of POST code for unsupported architectures
    - MPC824x locks way0 of data cache for use as initial RAM;
    this patch unlocks it after relocation to RAM and invalidates
    the locked entries.

    * Patch by Gleb Natapov, 30 Aug 2003:
    new I2C driver for mpc107 bridge. Now works from flash.

    * Patch by Dave Ellis, 11 Aug 2003:
    - JFFS2: fix typo in common/cmd_jffs2.c
    - JFFS2: fix CFG_JFFS2_SORT_FRAGMENTS option
    - JFFS2: remove node version 0 warning
    - JFFS2: accept JFFS2 PADDING nodes
    - SXNI855T: add AM29LV800 support
    - SXNI855T: move environment from EEPROM to flash
    - SXNI855T: boot from JFFS2 in NOR or NAND flash

    * Patch by Bill Hargen, 11 Aug 2003:
    fixes for I2C on MPC8240
    - fix i2c_write routine
    - fix iprobe command
    - eliminates use of global variables, plus dead code, cleanup.

    wdenk
     

16 Jun, 2003

1 commit

  • * Patches by Kyle Harris, 13 Mar 2003:
    - Add FAT partition support
    - Add command support for FAT
    - Add command support for MMC
    ----
    - Add Intel PXA support for video
    - Add Intel PXA support for MMC
    ----
    - Enable MMC and FAT for lubbock board
    - Other misc changes for lubbock board

    wdenk