31 Jul, 2008

1 commit


25 Jul, 2008

2 commits

  • The unlock_addr rework in kernel 2.6.25 breaks 16-bit SST chips. SST
    39LF160 and SST 39VF1601 are both 16-bit only chip (do not have BYTE#
    pin) and new uaddr value is not correct for them. Add
    MTD_UADDR_0xAAAA_0x5555 for those chips. Tested with SST 39VF1601
    chip.

    Signed-off-by: Atsushi Nemoto
    Signed-off-by: David Woodhouse

    Atsushi Nemoto
     
  • Existing CFI driver has problems with excessive writes during erase.
    If CFI driver does many writes during one erase cycle we may face the
    messages with -ETIMEO error on erase operation. It may cause the
    following data corruption and kernel panics.

    The reason of the issue is related to specifics of suspend operation:
    if we write to flash during erase, suspend operation will cost some time
    to erase procedure (for P30 it could be significant). In current version of
    cfi driver the problem of many suspends is partially workarounded by adding
    some time reserv to any operation (8xerase_time) but if we have many writes
    during one erase the problem appears.

    This patch detects the suspend and resets timer if suspend occured. It
    has been well verified on different chips. No problems were found.
    Could you please include the patch as it is simple and fixes bad issue.

    Signed-off-by: Alexey Korolev
    Signed-off-by: David Woodhouse

    Alexey Korolev
     

12 Jul, 2008

1 commit


05 Jun, 2008

4 commits


14 May, 2008

1 commit


06 May, 2008

1 commit

  • Fix typo in erase suspend while write fixup code leading to compile time
    error if CMDSET0001_DISABLE_ERASE_SUSPEND_ON_WRITE was defined.

    drivers/mtd/chips/cfi_cmdset_0001.c: In function 'fixup_intel_strataflash':
    drivers/mtd/chips/cfi_cmdset_0001.c:212: error: 'struct cfi_pri_amdstd' has no member named 'SuspendCmdSupport'

    Signed-off-by: Alexander Belyakov
    Signed-off-by: David Woodhouse

    Alexander Belyakov
     

02 May, 2008

1 commit

  • Adding the ability to get a physical address from point() in addition
    to virtual address. This physical address is required for XIP of
    userspace code from flash.

    Signed-off-by: Jared Hulbert
    Reviewed-by: Jörn Engel
    Acked-by: Nicolas Pitre
    Acked-by: Greg Ungerer
    Signed-off-by: David Woodhouse

    Jared Hulbert
     

23 Apr, 2008

5 commits

  • collie seems to contain LH28F640BF flash chips. According to
    http://sharp-world.com/products/device/flash/pdf/*FUM00701*@E.pdf
    (page 83) if they have 0x51 of Extended Query Table (number of hardware
    partitions) set to zero, they have a single fixed partition.
    This patch makes those chips work.

    Signed-off-by: Thomas Kunze
    Signed-off-by: David Woodhouse

    Thomas Kunze
     
  • This is a known erratum confirmed by Spansion. I have an errata document,
    but I can't find a link to it anywhere on their site to include here.

    Some of the S29GL064N chips report 64 sectors when they should report 128,
    and some of S29GL032N chips report 127 sectors when they should report 63.

    Note that when the chip dies are fixed by Spansion, they will still have
    the same id. The fix is done in such a way that it won't affect corrected
    chips.

    The fixups use the extended id made available by a previous patch. Without
    that, virtually all newer AMD/Spansion chips will have the same ID (0x227e)
    and it's not possible to apply the fixup to the correct chips.

    Signed-off-by: Trent Piepho
    Signed-off-by: David Woodhouse

    Trent Piepho
     
  • AMD/Spansion use a device id of 0x7e to indicate an extended device is
    present at offset 0xe and 0xf in the query data.

    I've verified with Spansion that all their chips (mfr == 0x01) with an id
    of 0x7e use it to indicate an extended id is present. What's more, there
    are no chips with a NON-extended id that is the same as a different chip's
    extended id. In other words, when the extended ID is present, one can
    replace the normal id with the extended id without losing any information.
    Which is what I've done.

    Signed-off-by: Trent Piepho
    Signed-off-by: David Woodhouse

    Trent Piepho
     
  • Add support for the SST 36VF3203 flash chip. It is used on Emerson
    KSI8560 board.

    Signed-off-by: Andrei Dolnikov
    Signed-off-by: David Woodhouse

    Andrei Dolnikov
     
  • Untested, but shouldn't break anything... Makes MTD_XIP arch
    independent. I guess this is why xip_iprefetch() was made for.

    Signed-off-by: Paulius Zaleckas
    Acked-by: Nicolas Pitre
    Signed-off-by: David Woodhouse

    Paulius Zaleckas
     

22 Apr, 2008

4 commits


09 Apr, 2008

1 commit

  • cfi_amdstd_sync() and cfi_staa_sync() call schedule() without changing task's
    state appropriately.

    In case of e.g. chip->state == FL_ERASING, cfi_*_sync() will be busy-looping
    either redundantly for a fixed interval of time (for SCHED_NORMAL tasks) or
    possibly endlessly (for RT tasks and UP).

    Signed-off-by: Dmitry Adamushko
    Cc: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dmitry Adamushko
     

05 Apr, 2008

1 commit

  • THe CFI driver in 2.6.24 kernel is broken. Not so intensive read/write
    operations cause incomplete writes which lead to kernel panics in JFFS2.

    We investigated the issue - it is caused by bug in FL_SHUTDOWN parsing code.
    Sometimes chip returns -EIO as if it is in FL_SHUTDOWN state when it should
    wait in FL_PONT (error in order of conditions).

    The following patch fixes the bug in state parsing code of CFI. Also I've
    added comments to notify developers if they want to add new case in future.

    Signed-off-by: Alexey Korolev
    Reviewed-by: Joern Engel
    Cc: David Woodhouse
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Korolev
     

07 Feb, 2008

1 commit


03 Feb, 2008

4 commits


12 Jan, 2008

1 commit

  • The bug causes corruptions of data read from flash.

    The original code performs cache invalidation from "adr" to "adr + len"
    in do_write_buffer(). Since len and adr could be updated in the code
    before invalidation - it causes improper setting of cache invalidation
    regions.

    Signed-off-by: Massimo Cirillo
    Signed-off-by: Giuseppe D'Eliseo
    Acked-by: Nicolas Pitre
    Acked-by: Jörn Engel
    Signed-off-by: David Woohouse
    Signed-off-by: Linus Torvalds

    Massimo Cirillo
     

11 Jan, 2008

1 commit


03 Dec, 2007

3 commits


26 Nov, 2007

1 commit

  • while running stress tests we have met cfi_cmdset_0001.c driver issue.
    Working on multipartitional devices with erase suspend on write
    feature enabled it is possible to get erase operation invoked on chip
    with suspended erase. get_chip() looses information about earlier
    suspended erase and new erase operation gets issued. New erase
    operations report successful completion, but blocks remain dirty
    causing, for example, JFFS2 error messages like:

    ...
    Newly-erased block contained word 0x20031985 at offset 0x00200000
    Newly-erased block contained word 0x20031985 at offset 0x00280000
    Newly-erased block contained word 0x20031985 at offset 0x00240000
    ...

    The patch below fixes that issue.

    Signed-off-by: Alexander Belyakov
    Acked-by: Nicolas Pitre
    Signed-off-by: David Woodhouse

    Alexander Belyakov
     

23 Nov, 2007

1 commit


10 Nov, 2007

1 commit


31 Oct, 2007

1 commit

  • Convert CFI tables from Atmel cmdset_0001 chips to Intel format and set
    BufWrite timeouts to 0 for Atmel cmdset_0001 and cmdset_0002 chips.
    Some chips may indicate support for buffered writes even though they
    only support dual-word writes.

    The CFI fixup must run before fixup_use_write_buffers for this to work.

    Signed-off-by: Håvard Skinnemoen
    Signed-off-by: David Woodhouse

    Hans-Christian Egtvedt
     

23 Oct, 2007

1 commit


13 Oct, 2007

1 commit

  • When we press ctrl-alt-del,kernel_restart_prepare will invoke
    cfi_intelext_reboot which will set flash to read array mode, but later
    when device_shutdown is invoked which may put current work queue to
    sleep and other process may be scheduled to running and programming
    flash in not FL_READY mode again. So we can't boot up if this flash is
    used for bootloader.

    Signed-off-by: Andrew Morton
    Signed-off-by: David Woodhouse

    Kevin Hao
     

24 Sep, 2007

1 commit

  • The CFI probe routine is capable of detecting flash banks consisting of
    identical chips mapped to physically discontiguous addresses. (One
    common way this can occur is if a flash bank is populated with chips of
    less capacity than the hardware was designed to support.) The CFI
    point() routine currently ignores any such gaps. This patch fixes
    the CFI point() routine so that it truncates any request that would
    span a gap.

    Signed-off-by: Andy Lowe
    Signed-off-by: Nicolas Pitre
    Signed-off-by: David Woodhouse

    Andy Lowe
     

23 Jul, 2007

1 commit