generic: unlock Winbond flash on boot
[oweals/openwrt.git] / target / linux / generic / pending-4.9 / 466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch
diff --git a/target/linux/generic/pending-4.9/466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch b/target/linux/generic/pending-4.9/466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch
new file mode 100644 (file)
index 0000000..e032b08
--- /dev/null
@@ -0,0 +1,37 @@
+From: Matthias Schiffer <mschiffer@universe-factory.net>
+Date: Tue, 9 Jan 2018 20:41:48 +0100
+Subject: [PATCH] Revert "mtd: spi-nor: fix Spansion regressions (aliased with
+ Winbond)"
+
+This reverts commit 67b9bcd36906e12a15ffec19463afbbd6a41660e.
+
+The underlying issue breaking Spansion flash has been fixed with "mtd: spi-nor:
+wait until lock/unlock operations are ready" and "mtd: spi-nor: wait for SR_WIP
+to clear on initial unlock", so we can support unlocking for Winbond flash
+again.
+
+Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
+---
+ drivers/mtd/spi-nor/spi-nor.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/mtd/spi-nor/spi-nor.c
++++ b/drivers/mtd/spi-nor/spi-nor.c
+@@ -1597,6 +1597,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+           JEDEC_MFR(info) == SNOR_MFR_INTEL ||
+           JEDEC_MFR(info) == SNOR_MFR_MACRONIX ||
+           JEDEC_MFR(info) == SNOR_MFR_SST ||
++          JEDEC_MFR(info) == SNOR_MFR_WINBOND ||
+           info->flags & SPI_NOR_HAS_LOCK) {
+               write_enable(nor);
+               write_sr(nor, 0);
+@@ -1615,7 +1616,8 @@ int spi_nor_scan(struct spi_nor *nor, co
+       /* NOR protection support for STmicro/Micron chips and similar */
+       if (JEDEC_MFR(info) == SNOR_MFR_MICRON ||
+-                      info->flags & SPI_NOR_HAS_LOCK) {
++          JEDEC_MFR(info) == SNOR_MFR_WINBOND ||
++          info->flags & SPI_NOR_HAS_LOCK) {
+               nor->flash_lock = stm_lock;
+               nor->flash_unlock = stm_unlock;
+               nor->flash_is_locked = stm_is_locked;