lkml.org 
[lkml]   [2009]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[039/136] mtd: cfi_cmdset_0002: add 0xFF intolerance for M29W128G
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Massimo Cirillo <maxcir@gmail.com>

    commit 23af51ecfb04ff65bae51bd8e2270f4449abc789 upstream.

    The M29W128G Numonyx flash devices are intolerant to any 0xFF command:
    in the Cfi_util.c the function cfi_qry_mode_off() (that resets the device
    after the autoselect mode) must have a 0xF0 command after the 0xFF command.
    This fix solves also the cause of the fixup_M29W128G_write_buffer() fix,
    that can be removed now.
    The following patch applies to 2.6.30 kernel.

    Signed-off-by: Massimo Cirillo <maxcir@gmail.com>
    Acked-by: Alexey Korolev <akorolev@infradead.org>
    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/mtd/chips/cfi_cmdset_0002.c | 11 -----------
    drivers/mtd/chips/cfi_util.c | 4 ++++
    2 files changed, 4 insertions(+), 11 deletions(-)

    --- a/drivers/mtd/chips/cfi_cmdset_0002.c
    +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
    @@ -282,16 +282,6 @@ static void fixup_s29gl032n_sectors(stru
    }
    }

    -static void fixup_M29W128G_write_buffer(struct mtd_info *mtd, void *param)
    -{
    - struct map_info *map = mtd->priv;
    - struct cfi_private *cfi = map->fldrv_priv;
    - if (cfi->cfiq->BufWriteTimeoutTyp) {
    - pr_warning("Don't use write buffer on ST flash M29W128G\n");
    - cfi->cfiq->BufWriteTimeoutTyp = 0;
    - }
    -}
    -
    static struct cfi_fixup cfi_fixup_table[] = {
    { CFI_MFR_ATMEL, CFI_ID_ANY, fixup_convert_atmel_pri, NULL },
    #ifdef AMD_BOOTLOC_BUG
    @@ -308,7 +298,6 @@ static struct cfi_fixup cfi_fixup_table[
    { CFI_MFR_AMD, 0x1301, fixup_s29gl064n_sectors, NULL, },
    { CFI_MFR_AMD, 0x1a00, fixup_s29gl032n_sectors, NULL, },
    { CFI_MFR_AMD, 0x1a01, fixup_s29gl032n_sectors, NULL, },
    - { CFI_MFR_ST, 0x227E, fixup_M29W128G_write_buffer, NULL, },
    #if !FORCE_WORD_WRITE
    { CFI_MFR_ANY, CFI_ID_ANY, fixup_use_write_buffers, NULL, },
    #endif
    --- a/drivers/mtd/chips/cfi_util.c
    +++ b/drivers/mtd/chips/cfi_util.c
    @@ -81,6 +81,10 @@ void __xipram cfi_qry_mode_off(uint32_t
    {
    cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
    cfi_send_gen_cmd(0xFF, 0, base, map, cfi, cfi->device_type, NULL);
    + /* M29W128G flashes require an additional reset command
    + when exit qry mode */
    + if ((cfi->mfr == CFI_MFR_ST) && (cfi->id == 0x227E || cfi->id == 0x7E))
    + cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
    }
    EXPORT_SYMBOL_GPL(cfi_qry_mode_off);




    \
     
     \ /
      Last update: 2009-10-02 03:39    [W:4.763 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site