Re: [PATCH] mtd: spinand: Wait after erase in spinand_markbad

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Den lör 5 jan. 2019 kl 05:59 skrev Boris Brezillon <bbrezillon@xxxxxxxxxx>:
>
> On Fri, 21 Dec 2018 12:58:14 +0100
> Emil Lenngren <emil.lenngren@xxxxxxxxx> wrote:
>
> > SPI NAND flashes don't accept new commands while an erase is ongoing.
> > Make sure to wait until the device is ready before writing the marker.
> >
> > Just as with the erase op, no error check is performed since we want
> > to continue writing the marker even if the erase fails.
> >
> > Signed-off-by: Emil Lenngren <emil.lenngren@xxxxxxxxx>
> > ---
> >  drivers/mtd/nand/spi/core.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c
> > index 479c2f2cf1..c2724d34e6 100644
> > --- a/drivers/mtd/nand/spi/core.c
> > +++ b/drivers/mtd/nand/spi/core.c
> > @@ -685,6 +685,8 @@ static int spinand_markbad(struct nand_device *nand, const struct nand_pos *pos)
> >
> >       spinand_erase_op(spinand, pos);
> >
> > +     spinand_wait(spinand, NULL);
> > +
>
> After thinking a bit more about it, I think we should simply write the
> BBM and skip the erase operation. Marking a block bad is just about
> writing 0 to the first 2 bytes of the OOB area, and we don't need the
> block to be erased to do that.
>

I compared with the raw and implementation in
nand_block_markbad_lowlevel, it also erases first, ignoring a
potential error.

On the other hand, a common spi flash chip MX35LF1GE4AB states in the
datasheet that it's not recommended to erase a bad block, but no
reason why. At the same time, it's generally disallowed to write the
same page twice...

But in the end I also think the best way is to avoid the erase
operation and simply write 0 0 as a raw write.

> >       memset(spinand->oobbuf, 0, 2);
> >       return spinand_write_page(spinand, &req);
> >  }
>

/Emil

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux