Patchwork [1/1] mtd: cfi_cmdset_0002:add fixup for Micron M29EW after erase operation

login
register
mail settings
Submitter bpqw
Date Sept. 1, 2014, 2:20 a.m.
Message ID <A765B125120D1346A63912DDE6D8B6315DB7BE@NTXXIAMBX02.xacn.micron.com>
Download mbox | patch
Permalink /patch/384618/
State New
Headers show

Comments

bpqw - Sept. 1, 2014, 2:20 a.m.
For Micron M29EW,20ms delay is needed after erase operation.

Signed-off-by: BeanHuo <bpqw@micron.com>
---
 drivers/mtd/chips/cfi_cmdset_0002.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

 	}
 
+	cfi_fixup_m29ew_delay_after_erase(cfi);
 	chip->state = FL_READY;
 	DISABLE_VPP(map);
 	put_chip(map, chip, adr);
--
1.7.9.5
Jingoo Han - Sept. 1, 2014, 2:47 a.m.
On Monday, September 01, 2014 11:21 AM, Bean Huo wrote:
> 
> For Micron M29EW,20ms delay is needed after erase operation.

You already added the reason to cfi_fixup_m29ew_delay_after_erase().
However, please add the comment to this commit message.

> 
> Signed-off-by: BeanHuo <bpqw@micron.com>

BeanHuo/Bean Huo

Others look good.

Best regards,
Jingoo Han

> ---
>  drivers/mtd/chips/cfi_cmdset_0002.c |   11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
> index 5a4bfe3..9b0de91 100644
> --- a/drivers/mtd/chips/cfi_cmdset_0002.c
> +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> @@ -509,6 +509,16 @@ static void cfi_fixup_m29ew_delay_after_resume(struct cfi_private *cfi)
>  		cfi_udelay(500);
>  }
> 
> +static void cfi_fixup_m29ew_delay_after_erase(struct cfi_private *cfi)
> +{
> +	/*
> +	 * Resolving the Delay After ERASE Issue @low temperature.
> +	 * 20ms delay is needed after erase operation.
> +	 */
> +	if (is_m29ew(cfi))
> +		cfi_udelay(20000);
> +}
> +
>  struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)  {
>  	struct cfi_private *cfi = map->fldrv_priv; @@ -2397,6 +2407,7 @@ static int __xipram
> do_erase_oneblock(struct map_info *map, struct flchip *chip,
>  		ret = -EIO;
>  	}
> 
> +	cfi_fixup_m29ew_delay_after_erase(cfi);
>  	chip->state = FL_READY;
>  	DISABLE_VPP(map);
>  	put_chip(map, chip, adr);
> --
> 1.7.9.5
Christian Riesch - Sept. 1, 2014, 8 a.m.
Hi,

On Mon, Sep 1, 2014 at 4:20 AM, bpqw <bpqw@micron.com> wrote:
> For Micron M29EW,20ms delay is needed after erase operation.

Is there a datasheet/application note/technical note from Micron
describing this issue? Like the TN-13-07 for the other M29EW fixes?
Are all M29EW types affected?

Thanks,
Christian

>
> Signed-off-by: BeanHuo <bpqw@micron.com>
> ---
>  drivers/mtd/chips/cfi_cmdset_0002.c |   11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
> index 5a4bfe3..9b0de91 100644
> --- a/drivers/mtd/chips/cfi_cmdset_0002.c
> +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> @@ -509,6 +509,16 @@ static void cfi_fixup_m29ew_delay_after_resume(struct cfi_private *cfi)
>                 cfi_udelay(500);
>  }
>
> +static void cfi_fixup_m29ew_delay_after_erase(struct cfi_private *cfi)
> +{
> +       /*
> +        * Resolving the Delay After ERASE Issue @low temperature.
> +        * 20ms delay is needed after erase operation.
> +        */
> +       if (is_m29ew(cfi))
> +               cfi_udelay(20000);
> +}
> +
>  struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)  {
>         struct cfi_private *cfi = map->fldrv_priv; @@ -2397,6 +2407,7 @@ static int __xipram do_erase_oneblock(struct map_info *map, struct flchip *chip,
>                 ret = -EIO;
>         }
>
> +       cfi_fixup_m29ew_delay_after_erase(cfi);
>         chip->state = FL_READY;
>         DISABLE_VPP(map);
>         put_chip(map, chip, adr);
> --
> 1.7.9.5
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
Christian Riesch - Sept. 1, 2014, 8:04 a.m.
On Mon, Sep 1, 2014 at 4:20 AM, bpqw <bpqw@micron.com> wrote:
> For Micron M29EW,20ms delay is needed after erase operation.
>
> Signed-off-by: BeanHuo <bpqw@micron.com>
> ---
>  drivers/mtd/chips/cfi_cmdset_0002.c |   11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
> index 5a4bfe3..9b0de91 100644
> --- a/drivers/mtd/chips/cfi_cmdset_0002.c
> +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> @@ -509,6 +509,16 @@ static void cfi_fixup_m29ew_delay_after_resume(struct cfi_private *cfi)
>                 cfi_udelay(500);
>  }
>
> +static void cfi_fixup_m29ew_delay_after_erase(struct cfi_private *cfi)
> +{
> +       /*
> +        * Resolving the Delay After ERASE Issue @low temperature.
> +        * 20ms delay is needed after erase operation.
> +        */
> +       if (is_m29ew(cfi))
> +               cfi_udelay(20000);
> +}
> +
>  struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)  {
>         struct cfi_private *cfi = map->fldrv_priv; @@ -2397,6 +2407,7 @@ static int __xipram do_erase_oneblock(struct map_info *map, struct flchip *chip,
>                 ret = -EIO;
>         }
>
> +       cfi_fixup_m29ew_delay_after_erase(cfi);
>         chip->state = FL_READY;
>         DISABLE_VPP(map);
>         put_chip(map, chip, adr);
> --
> 1.7.9.5
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
Christian Riesch - Sept. 1, 2014, 8:05 a.m.
On Mon, Sep 1, 2014 at 4:20 AM, bpqw <bpqw@micron.com> wrote:
> For Micron M29EW,20ms delay is needed after erase operation.
>
> Signed-off-by: BeanHuo <bpqw@micron.com>
> ---
>  drivers/mtd/chips/cfi_cmdset_0002.c |   11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
> index 5a4bfe3..9b0de91 100644
> --- a/drivers/mtd/chips/cfi_cmdset_0002.c
> +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> @@ -509,6 +509,16 @@ static void cfi_fixup_m29ew_delay_after_resume(struct cfi_private *cfi)
>                 cfi_udelay(500);
>  }
>
> +static void cfi_fixup_m29ew_delay_after_erase(struct cfi_private *cfi)
> +{
> +       /*
> +        * Resolving the Delay After ERASE Issue @low temperature.
> +        * 20ms delay is needed after erase operation.
> +        */
> +       if (is_m29ew(cfi))
> +               cfi_udelay(20000);
> +}
> +
>  struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)  {
>         struct cfi_private *cfi = map->fldrv_priv; @@ -2397,6 +2407,7 @@ static int __xipram do_erase_oneblock(struct map_info *map, struct flchip *chip,

Missing line break? The patch does not apply.
Christian

>                 ret = -EIO;
>         }
>
> +       cfi_fixup_m29ew_delay_after_erase(cfi);
>         chip->state = FL_READY;
>         DISABLE_VPP(map);
>         put_chip(map, chip, adr);
> --
> 1.7.9.5
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/

Patch

diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
index 5a4bfe3..9b0de91 100644
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -509,6 +509,16 @@  static void cfi_fixup_m29ew_delay_after_resume(struct cfi_private *cfi)
 		cfi_udelay(500);
 }
 
+static void cfi_fixup_m29ew_delay_after_erase(struct cfi_private *cfi) 
+{
+	/*
+	 * Resolving the Delay After ERASE Issue @low temperature.
+	 * 20ms delay is needed after erase operation.
+	 */
+	if (is_m29ew(cfi))
+		cfi_udelay(20000);
+}
+
 struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)  {
 	struct cfi_private *cfi = map->fldrv_priv; @@ -2397,6 +2407,7 @@ static int __xipram do_erase_oneblock(struct map_info *map, struct flchip *chip,
 		ret = -EIO;