Message ID | 20191102112316.20715-16-tudor.ambarus@microchip.com |
---|---|
State | Changes Requested |
Delegated to: | Ambarus Tudor |
Headers | show |
Series | mtd: spi-nor: Quad Enable and (un)lock methods | expand |
On 02/11/19 4:53 PM, Tudor.Ambarus@microchip.com wrote: > From: Tudor Ambarus <tudor.ambarus@microchip.com> > > In case of 16-bit Write Status Register, check that both SR1 and > SR2 were written correctly. > > Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> > --- This can be merged with previous patch as changes are quite similar Regards Vignesh > drivers/mtd/spi-nor/spi-nor.c | 29 ++++++++++++++++++++++++++++- > 1 file changed, 28 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c > index 08fd2c97897d..8f11c00e8ae5 100644 > --- a/drivers/mtd/spi-nor/spi-nor.c > +++ b/drivers/mtd/spi-nor/spi-nor.c > @@ -2067,6 +2067,7 @@ static int spansion_no_read_cr_quad_enable(struct spi_nor *nor) > { > u8 *sr_cr = nor->bouncebuf; > int ret; > + u8 sr_written; > > /* Keep the current value of the Status Register. */ > ret = spi_nor_read_sr(nor, sr_cr); > @@ -2075,7 +2076,22 @@ static int spansion_no_read_cr_quad_enable(struct spi_nor *nor) > > sr_cr[1] = CR_QUAD_EN_SPAN; > > - return spi_nor_write_sr(nor, sr_cr, 2); > + ret = spi_nor_write_sr(nor, sr_cr, 2); > + if (ret) > + return ret; > + > + sr_written = sr_cr[0]; > + > + ret = spi_nor_read_sr(nor, sr_cr); > + if (ret) > + return ret; > + > + if (sr_cr[0] != sr_written) { > + dev_err(nor->dev, "SR: Read back test failed\n"); > + return -EIO; > + } > + > + return 0; > } > > /** > @@ -2116,6 +2132,17 @@ static int spansion_read_cr_quad_enable(struct spi_nor *nor) > if (ret) > return ret; > > + sr_written = sr_cr[0]; > + > + ret = spi_nor_read_sr(nor, sr_cr); > + if (ret) > + return ret; > + > + if (sr_written != sr_cr[0]) { > + dev_err(nor->dev, "SR: Read back test failed\n"); > + return -EIO; > + } > + > sr_written = sr_cr[1]; > > /* Read back and check it. */ >
On 11/05/2019 06:06 PM, Vignesh Raghavendra wrote: >> From: Tudor Ambarus <tudor.ambarus@microchip.com> >> >> In case of 16-bit Write Status Register, check that both SR1 and >> SR2 were written correctly. >> >> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> >> --- > This can be merged with previous patch as changes are quite similar Ok, I'll rename the squashed patch to "Extend the SR read back test". Thanks!
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c index 08fd2c97897d..8f11c00e8ae5 100644 --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -2067,6 +2067,7 @@ static int spansion_no_read_cr_quad_enable(struct spi_nor *nor) { u8 *sr_cr = nor->bouncebuf; int ret; + u8 sr_written; /* Keep the current value of the Status Register. */ ret = spi_nor_read_sr(nor, sr_cr); @@ -2075,7 +2076,22 @@ static int spansion_no_read_cr_quad_enable(struct spi_nor *nor) sr_cr[1] = CR_QUAD_EN_SPAN; - return spi_nor_write_sr(nor, sr_cr, 2); + ret = spi_nor_write_sr(nor, sr_cr, 2); + if (ret) + return ret; + + sr_written = sr_cr[0]; + + ret = spi_nor_read_sr(nor, sr_cr); + if (ret) + return ret; + + if (sr_cr[0] != sr_written) { + dev_err(nor->dev, "SR: Read back test failed\n"); + return -EIO; + } + + return 0; } /** @@ -2116,6 +2132,17 @@ static int spansion_read_cr_quad_enable(struct spi_nor *nor) if (ret) return ret; + sr_written = sr_cr[0]; + + ret = spi_nor_read_sr(nor, sr_cr); + if (ret) + return ret; + + if (sr_written != sr_cr[0]) { + dev_err(nor->dev, "SR: Read back test failed\n"); + return -EIO; + } + sr_written = sr_cr[1]; /* Read back and check it. */