25 Sep, 2014

1 commit

  • The libc headers on FreeBSD and likely related projects as well contain an
    header file, cdefs.h which provides similiar functionality as linux/compiler.h.
    It provides compiler independent defines like __weak __packed, to allow
    compiling with multiple compilers which might have a different syntax for such
    extension.

    Since that header file is included in multiple standard headers, like stddef.h
    and stdarg.h, multiple definitions of those defines will be present if both are
    included. When compiling u-boot the compiler will warn about it hundreds of
    times since e.g. common.h will include both files indirectly.

    commit 7ea50d52849fe8ffa5b5b74c979b60b1045d6fc9 "compiler_gcc: do not redefine
    __gnu_attributes" prevented such redefinitions, but this was undone by commit
    fb8ffd7cfc68b3dc44e182356a207d784cb30b34 "compiler*.h: sync
    include/linux/compiler*.h with Linux 3.16".

    Add the checks back where necessary to prevent such warnings.

    As the original patch this checkpatch warning is ignored:
    "WARNING: Adding new packed members is to be done with care"

    Cc: Masahiro Yamada
    Cc: Tom Rini
    Signed-off-by: Jeroen Hofstee
    Acked-by: Masahiro Yamada

    Jeroen Hofstee
     

17 Sep, 2014

2 commits


09 Sep, 2014

1 commit


26 Aug, 2014

7 commits

  • snyc with linux v3.15:

    commit 1860e379875dfe7271c649058aeddffe5afd9d0d
    Author: Linus Torvalds
    Date: Sun Jun 8 11:19:54 2014 -0700

    Linux 3.15

    Signed-off-by: Heiko Schocher
    Cc: Scott Wood
    Cc: Tom Rini

    Heiko Schocher
     
  • while playing with the new mtd/ubi/ubifs sync, found some
    small updates for it:

    - add del_mtd_partition() to include/linux/mtd/mtd
    - mtd: add a debug_printf
    - remove some not used functions

    Signed-off-by: Heiko Schocher
    Cc: Scott Wood
    Cc: Tom Rini

    Heiko Schocher
     
  • resync ubi subsystem with linux:

    commit 455c6fdbd219161bd09b1165f11699d6d73de11c
    Author: Linus Torvalds
    Date: Sun Mar 30 20:40:15 2014 -0700

    Linux 3.14

    A nice side effect of this, is we introduce UBI Fastmap support
    to U-Boot.

    Signed-off-by: Heiko Schocher
    Signed-off-by: Tom Rini
    Cc: Marek Vasut
    Cc: Sergey Lapin
    Cc: Scott Wood
    Cc: Joerg Krause

    Heiko Schocher
     
  • - move linux specific defines from usb and video code
    into linux/compat.h
    - move common linux specific defines from include/ubi_uboot.h
    to linux/compat.h
    - add for new mtd/ubi/ubifs sync new needed linux specific
    defines to linux/compat.h

    Signed-off-by: Heiko Schocher
    Cc: Marek Vasut
    Cc: Anatolij Gustschin
    [trini: Add spin_lock_irqsave/spin_unlock_irqrestore dummies from
    usb/lin_gadet_compat.h]
    Signed-off-by: Tom Rini

    Heiko Schocher
     
  • add missing ERR_CAST to linux/err.h as it is needed for ubi/ubifs support

    Signed-off-by: Heiko Schocher

    Heiko Schocher
     
  • from linux 3.14:

    commit 455c6fdbd219161bd09b1165f11699d6d73de11c
    Author: Linus Torvalds
    Date: Sun Mar 30 20:40:15 2014 -0700

    Linux 3.14

    Needed for the MTD/UBI/UBIFS resync

    Just copied the files from Linux, and added in the c-file
    the "#define __UBOOT__" for adding U-Boot special code. In
    this case we use this just for adding including U-Boot
    headers.

    Signed-off-by: Heiko Schocher
    Cc: Marek Vasut
    Cc: Sergey Lapin
    Cc: Scott Wood
    Cc: Tom Rini

    Heiko Schocher
     
  • resync with linux:

    commit 455c6fdbd219161bd09b1165f11699d6d73de11c
    Author: Linus Torvalds
    Date: Sun Mar 30 20:40:15 2014 -0700

    Linux 3.14

    Needed for the MTD/UBI/UBIFS resync

    Just copied the files from Linux, changed the license file header,
    and add in the c-file:

    +#define __UBOOT__
    #include
    +#ifndef __UBOOT__
    #include
    +#else
    +#include
    +#endif

    so, it compiles for U-Boot.

    Signed-off-by: Heiko Schocher
    Cc: Marek Vasut
    Cc: Sergey Lapin
    Cc: Scott Wood
    Cc: Tom Rini

    Heiko Schocher
     

30 Jul, 2014

1 commit


23 Jul, 2014

1 commit


22 Jul, 2014

1 commit

  • [backport from linux commit 204b885e and 218e180e7]
    64 bit processors are becomming more and more popular.
    lower_32_bits and upper_32_bits save our labor doing
    shifts/manipulations like (u32)(n) and (u32)((n) >> 32).
    They are good helpers in both little and big endian cases.
    Port these two functions here from Linux:include/linux/kernel.h,
    cater the comment message to little/big endian cases.
    Later on, developers could include linux/compat.h if they want to
    use these two functions.

    Signed-off-by: Lijun Pan

    Lijun Pan
     

07 Jun, 2014

6 commits

  • This patch add support for BCH16_ECC to omap_gpmc driver.

    *need to BCH16 ECC scheme*
    With newer SLC Flash technologies and MLC NAND, and large densities, pagesizes
    Flash devices have become more suspectible to bit-flips. Thus stronger
    ECC schemes are required for protecting the data.
    But stronger ECC schemes have come with larger-sized ECC syndromes which require
    more space in OOB/Spare. This puts constrains like;
    (a) BCH16_ECC can correct 16 bit-flips per 512Bytes of data.
    (b) BCH16_ECC generates 26-bytes of ECC syndrome / 512B.
    Due to (b) this scheme can only be used with NAND devices which have enough
    OOB to satisfy following equation:
    OOBsize per page >= 26 * (page-size / 512)

    Signed-off-by: Pekon Gupta

    pekon gupta
     
  • GPMC can support simultaneous processing of 8 512Byte data chunks, in parallel

    Signed-off-by: Pekon Gupta

    pekon gupta
     
  • As per following Sections in ONFI Spec, GET_FEATURES and SET_FEATURES also need
    byte-addressing on 16-bit devices.

    *Section: Target Initialization"
    "The Read ID and Read Parameter Page commands only use the lower 8-bits of the
    data bus. The host shall not issue commands that use a word data width on x16
    devices until the host determines the device supports a 16-bit data bus width
    in the parameter page."

    *Section: Bus Width Requirements*
    "When the host supports a 16-bit bus width, only data is transferred at the
    16-bit width. All address and command line transfers shall use only the lower
    8-bits of the data bus. During command transfers, the host may place any value
    on the upper 8-bits of the data bus. During address transfers, the host shall
    set the upper 8-bits of the data bus to 00h."

    So porting following commit from linux kernel
    commit e34fcb07a6d57411de6e15a47724fbe92c5caa42
    Author: David Mosberger (preserving authorship)
    mtd: nand: fix GET/SET_FEATURES address on 16-bit devices

    Signed-off-by: Pekon Gupta

    David Mosberger
     
  • As per following Sections in ONFI Spec, NAND_CMD_READID should use only
    lower 8-bit for transfering command, address and data even on x16 NAND device.

    *Section: Target Initialization"
    "The Read ID and Read Parameter Page commands only use the lower 8-bits of the
    data bus. The host shall not issue commands that use a word data width on x16
    devices until the host determines the device supports a 16-bit data bus width
    in the parameter page."

    *Section: Bus Width Requirements*
    "When the host supports a 16-bit bus width, only data is transferred at the
    16-bit width. All address and command line transfers shall use only the lower
    8-bits of the data bus. During command transfers, the host may place any value
    on the upper 8-bits of the data bus. During address transfers, the host shall
    set the upper 8-bits of the data bus to 00h."

    Thus porting following commit from linux-kernel to ensure that column address
    is not altered to align to x16 bus when issuing NAND_CMD_READID command.

    commit 3dad2344e92c6e1aeae42df1c4824f307c51bcc7
    mtd: nand: force NAND_CMD_READID onto 8-bit bus
    Author: Brian Norris (preserving authorship)

    The NAND command helpers tend to automatically shift the column address
    for x16 bus devices, since most commands expect a word address, not a
    byte address. The Read ID command, however, expects an 8-bit address
    (i.e., 0x00, 0x20, or 0x40 should not be translated to 0x00, 0x10, or
    0x20).

    This fixes the column address for a few drivers which imitate the
    nand_base defaults.

    Signed-off-by: Pekon Gupta

    Brian Norris
     
  • This patch adds macros for following parameters of ELM Hardware engine
    - ELM_MAX_CHANNELS: ELM can process 8 data streams simultaneously
    - ELM_MAX_ERRORS: ELM can detect upto 16 ECC error when using BCH16 scheme

    Signed-off-by: Pekon Gupta
    Reviewed-by: Stefan Roese

    pekon gupta
     
  • ELM hardware engine support ECC error detection for multiple ECC strengths like
    +------+------------------------+
    |Type | ECC syndrome length |
    +------+------------------------+
    |BCH4 | 6.5 bytes = 13 nibbles |
    |BCH8 | 13 byte = 26 nibbles |
    |BCH16 | 26 bytes = 52 nibbles |
    +------+------------------------+

    Current implementation of omap_elm driver uses ECC syndrom length (in 'nibbles')
    to differentiate between BCH4/BCH8/BCH16. This patch replaces it with 'bch_type'

    Signed-off-by: Pekon Gupta
    Reviewed-by: Stefan Roese

    pekon gupta
     

18 Apr, 2014

1 commit


14 Mar, 2014

1 commit


05 Mar, 2014

5 commits


25 Jan, 2014

1 commit


10 Jan, 2014

1 commit


09 Jan, 2014

2 commits


22 Nov, 2013

1 commit

  • nand_ecclayout is present in mtd.h at Linux.
    Move this structure to mtd.h to comply with Linux.

    Also, increase the ecc placement locations to 640 to suport device having
    writesize/oobsize of 8KB/640B. This means that the maximum oobsize has gone
    up to 640 bytes and consequently the maximum ecc placement locations have
    also gone up to 640.

    Changes from Prabhabkar's version (squashed into one patch to preserve
    bisectability):
    - Added _LARGE to MTD_MAX_*_ENTRIES

    This makes the names match current Linux source, and resolves
    a conflict between
    http://patchwork.ozlabs.org/patch/280488/
    and
    http://patchwork.ozlabs.org/patch/284513/

    The former was posted first and is closer to matching Linux, but
    unlike Linux it does not add _LARGE to the names. The second adds
    _LARGE to one of the names, and depends on it in a subsequent patch
    (http://patchwork.ozlabs.org/patch/284512/).

    - Made max oobfree/eccpos configurable, and used this on tricorder,
    alpr, ASH405, T4160QDS, and T4240QDS (these boards failed to build
    for me without doing so, due to a size increase).

    On tricorder SPL, this saves 2576 bytes (and makes the SPL build
    again) versus the new default of 640 eccpos and 32 oobfree, and
    saves 336 bytes versus the old default of 128 eccpos and 8 oobfree.

    Signed-off-by: Prabhakar Kushwaha
    CC: Vipin Kumar
    [scottwood@freescale.com: changes as described above]
    Signed-off-by: Scott Wood
    Cc: Thomas Weber
    Cc: Matthias Fuchs
    Cc: Stefan Roese
    Cc: York Sun
    Cc: Tom Rini
    Reviewed-by: Stefan Roese

    Prabhakar Kushwaha
     

09 Nov, 2013

1 commit

  • Linux Kernel abolished include/linux/config.h long time ago.
    (around version v2.6.18..v2.6.19)

    We don't need to provide Linux copatibility any more.

    This commit deletes include/linux/config.h
    and fixes source files not to include this.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

21 Oct, 2013

5 commits


10 Oct, 2013

1 commit

  • Linux modified the MTD driver interface in commit edbc4540 (with the
    same name as this commit). The effect is that calls to mtd_read will
    not return -EUCLEAN if the number of ECC-corrected bit errors is below
    a certain threshold, which defaults to the strength of the ECC. This
    allows -EUCLEAN to stop indicating "some bits were corrected" and begin
    indicating "a large number of bits were corrected, the data held in
    this region of flash may be lost soon". UBI makes use of this and when
    -EUCLEAN is returned from mtd_read it will move data to another block
    of flash. Without adopting this interface change UBI on U-boot attempts
    to move data between blocks every time a single bit is corrected using
    the ECC, which is a very common occurance on some devices.

    For some devices where bit errors are common enough, UBI can get stuck
    constantly moving data around because each block it attempts to use has
    a single bit error. This condition is hit when wear_leveling_worker
    attempts to move data from one PEB to another in response to an
    -EUCLEAN/UBI_IO_BITFLIPS error. When this happens ubi_eba_copy_leb is
    called to perform the data copy, and after the data is written it is
    read back to check its validity. If that read returns UBI_IO_BITFLIPS
    (in response to an MTD -EUCLEAN) then ubi_eba_copy_leb returns 1 to
    wear_leveling worker, which then proceeds to schedule the destination
    PEB for erasure. This leads to erase_worker running on the PEB, and
    following a successful erase wear_leveling_worker is called which
    begins this whole cycle all over again. The end result is that (without
    UBI debug output enabled) the boot appears to simply hang whilst in
    reality U-boot busily works away at destroying a block of the NAND
    flash. Debug output from this situation:

    UBI DBG: ensure_wear_leveling: schedule scrubbing
    UBI DBG: wear_leveling_worker: scrub PEB 1027 to PEB 4083
    UBI DBG: ubi_io_read_vid_hdr: read VID header from PEB 1027
    UBI DBG: ubi_io_read: read 4096 bytes from PEB 1027:4096
    UBI DBG: ubi_eba_copy_leb: copy LEB 0:0, PEB 1027 to PEB 4083
    UBI DBG: ubi_eba_copy_leb: read 1040384 bytes of data
    UBI DBG: ubi_io_read: read 1040384 bytes from PEB 1027:8192
    UBI: fixable bit-flip detected at PEB 1027
    UBI DBG: ubi_io_write_vid_hdr: write VID header to PEB 4083
    UBI DBG: ubi_io_write: write 4096 bytes to PEB 4083:4096
    UBI DBG: ubi_io_read_vid_hdr: read VID header from PEB 4083
    UBI DBG: ubi_io_read: read 4096 bytes from PEB 4083:4096
    UBI DBG: ubi_io_write: write 4096 bytes to PEB 4083:8192
    UBI DBG: ubi_io_read: read 4096 bytes from PEB 4083:8192
    UBI: fixable bit-flip detected at PEB 4083
    UBI DBG: schedule_erase: schedule erasure of PEB 4083, EC 55, torture 0
    UBI DBG: erase_worker: erase PEB 4083 EC 55
    UBI DBG: sync_erase: erase PEB 4083, old EC 55
    UBI DBG: do_sync_erase: erase PEB 4083
    UBI DBG: sync_erase: erased PEB 4083, new EC 56
    UBI DBG: ubi_io_write_ec_hdr: write EC header to PEB 4083
    UBI DBG: ubi_io_write: write 4096 bytes to PEB 4083:0
    UBI DBG: ensure_wear_leveling: schedule scrubbing
    UBI DBG: wear_leveling_worker: scrub PEB 1027 to PEB 4083
    ...

    This patch adopts the interface change as in Linux commit edbc4540 in
    order to avoid such situations. Given that none of the drivers under
    drivers/mtd return -EUCLEAN, this should only affect those using
    software ECC. I have tested that it works on a board which is
    currently out of tree, but which I hope to be able to begin
    upstreaming soon.

    Signed-off-by: Paul Burton
    Acked-by: Stefan Roese

    Paul Burton
     

07 Oct, 2013

1 commit

  • The modelist data uses the list definition but the 'list.h' header
    were not being included. The build failure is bellow:

    ,----
    | In file included from yyyy.c:16:0:
    | .../u-boot/include/linux/fb.h:503:19: error: field 'modelist' has incomplete type
    | struct list_head modelist; /* mode list */
    | ^
    | make[1]: *** [yyyy.o] Error 1
    | make[1]: Leaving directory `.../u-boot/board/xxx/yyyy'
    | make: *** [board/xxx/yyyy/libyyyy.o] Error 2
    `----

    Signed-off-by: Otavio Salvador

    Otavio Salvador