| From 44a80df4bfce02f5d51fe5040bdbdf10d0d78f4e Mon Sep 17 00:00:00 2001 |
| From: Alexander Sverdlin <alexander.sverdlin@nokia.com> |
| Date: Wed, 22 Jul 2020 16:01:36 +0200 |
| Subject: mtd: spi-nor: intel-spi: Simulate WRDI command |
| |
| From: Alexander Sverdlin <alexander.sverdlin@nokia.com> |
| |
| commit 44a80df4bfce02f5d51fe5040bdbdf10d0d78f4e upstream. |
| |
| After spi_nor_write_disable() return code checks were introduced in the |
| spi-nor front end intel-spi backend stopped to work because WRDI was never |
| supported and always failed. |
| |
| Just pretend it was sucessful and ignore the command itself. HW sequencer |
| shall do the right thing automatically, while with SW sequencer we cannot |
| do it anyway, because the only tool we had was preopcode and it makes no |
| sense for WRDI. |
| |
| Fixes: bce679e5ae3a ("mtd: spi-nor: Check for errors after each Register Operation") |
| Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com> |
| Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> |
| Cc: stable@vger.kernel.org |
| Link: https://lore.kernel.org/r/282e1305-fd08-e446-1a22-eb4dff78cfb4@nokia.com |
| Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/mtd/spi-nor/controllers/intel-spi.c | 9 +++++++++ |
| 1 file changed, 9 insertions(+) |
| |
| --- a/drivers/mtd/spi-nor/controllers/intel-spi.c |
| +++ b/drivers/mtd/spi-nor/controllers/intel-spi.c |
| @@ -612,6 +612,15 @@ static int intel_spi_write_reg(struct sp |
| return 0; |
| } |
| |
| + /* |
| + * We hope that HW sequencer will do the right thing automatically and |
| + * with the SW sequencer we cannot use preopcode anyway, so just ignore |
| + * the Write Disable operation and pretend it was completed |
| + * successfully. |
| + */ |
| + if (opcode == SPINOR_OP_WRDI) |
| + return 0; |
| + |
| writel(0, ispi->base + FADDR); |
| |
| /* Write the value beforehand */ |