[PATCH 4/4] mtd: cfi_cmdset_0002: add CFI detection for SST 38VF640x chips
yidong zhang
zhangyd6 at gmail.com
Sun Oct 24 21:18:16 EDT 2010
On Fri, Oct 22, 2010 at 11:40 PM, Guillaume LECERF <glecerf at gmail.com> wrote:
> Add support for SST38VF640x chips in CFI mode.
>
> Signed-off-by: Guillaume LECERF <glecerf at gmail.com>
> Signed-off-by: yidong zhang <zhangyd6 at gmail.com>
> ---
> drivers/mtd/chips/cfi_cmdset_0002.c | 19 +++++++++++++++++++
> 1 files changed, 19 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
> index a359967..0248253 100644
> --- a/drivers/mtd/chips/cfi_cmdset_0002.c
> +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> @@ -296,6 +296,21 @@ static void fixup_sst39vf_rev_b(struct mtd_info *mtd, void *param)
> sector_erase_cmd = CMD(0x50);
> }
>
> +static void fixup_sst38vf640x_sectorsize(struct mtd_info *mtd, void *param)
> +{
> + struct map_info *map = mtd->priv;
> + struct cfi_private *cfi = map->fldrv_priv;
> +
> + fixup_sst39vf_rev_b(mtd, param);
> +
> + /*
> + * CFI reports 1024 sectors (0x03ff +1) of 64KBytes (0x0100 *256) where
> + * it should report a size of 8KBytes (0x0020 *256).
> + */
> + cfi->cfiq->EraseRegionInfo[0] = 0x002003ff;
> + pr_warning("%s: Bad 38VF640x CFI data, adjust sector size from 64 to 8KBytes\n", mtd->name);
> +}
> +
> static void fixup_s29gl064n_sectors(struct mtd_info *mtd, void *param)
> {
> struct map_info *map = mtd->priv;
> @@ -347,6 +362,10 @@ 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_SST, 0x536A, fixup_sst38vf640x_sectorsize, NULL, }, /* SST38VF6402 */
> + { CFI_MFR_SST, 0x536B, fixup_sst38vf640x_sectorsize, NULL, }, /* SST38VF6401 */
> + { CFI_MFR_SST, 0x536C, fixup_sst38vf640x_sectorsize, NULL, }, /* SST38VF6404 */
> + { CFI_MFR_SST, 0x536D, fixup_sst38vf640x_sectorsize, NULL, }, /* SST38VF6403 */
> #if !FORCE_WORD_WRITE
> { CFI_MFR_ANY, CFI_ID_ANY, fixup_use_write_buffers, NULL, },
> #endif
The SST38VF640x chips have no Extended Query table. I think we should
move them to the
cfi_nopri_fixup_table.
>
>
More information about the linux-mtd
mailing list