• Tokunori Ikegami's avatar
    mtd: cfi_cmdset_0002: Use chip_good() to retry in do_write_oneword() · 37c673ad
    Tokunori Ikegami authored
    As reported by the OpenWRT team, write requests sometimes fail on some
    platforms.
    Currently to check the state chip_ready() is used correctly as described by
    the flash memory S29GL256P11TFI01 datasheet.
    Also chip_good() is used to check if the write is succeeded and it was
    implemented by the commit fb4a90bf ("[MTD] CFI-0002 - Improve error
    checking").
    But actually the write failure is caused on some platforms and also it can
    be fixed by using chip_good() to check the state and retry instead.
    Also it seems that it is caused after repeated about 1,000 times to retry
    the write one word with the reset command.
    By using chip_good() to check the state to be done it can be reduced the
    retry with reset.
    It is depended on the actual flash chip behavior so the root cause is
    unknown.
    
    Cc: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Cc: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
    Cc: linux-mtd@lists.infradead.org
    Cc: stable@vger.kernel.org
    Reported-by: default avatarFabio Bettoni <fbettoni@gmail.com>
    Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
    Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
    Signed-off-by: default avatarTokunori Ikegami <ikegami.t@gmail.com>
    [vigneshr@ti.com: Fix a checkpatch warning]
    Signed-off-by: default avatarVignesh Raghavendra <vigneshr@ti.com>
    37c673ad
cfi_cmdset_0002.c 82.3 KB