2015-11-08 4:42 GMT+08:00 Shonn Lu <countryside...@qq.com>: > Signed-off-by: Shonn Lu <countryside...@qq.com> > --- > .../0064-reset-m25p80-when-shutdown.patch | 24 > ++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > create mode 100644 > target/linux/ramips/patches-3.18/0064-reset-m25p80-when-shutdown.patch > > diff --git > a/target/linux/ramips/patches-3.18/0064-reset-m25p80-when-shutdown.patch > b/target/linux/ramips/patches-3.18/0064-reset-m25p80-when-shutdown.patch > new file mode 100644 > index 0000000..76f916a > --- /dev/null > +++ > b/target/linux/ramips/patches-3.18/0064-reset-m25p80-when-shutdown.patch > @@ -0,0 +1,24 @@ > +--- a/drivers/mtd/devices/m25p80.c > ++++ b/drivers/mtd/devices/m25p80.c > +@@ -319,6 +319,12 @@ > + { > + struct m25p *flash = spi_get_drvdata(spi); > + > ++ // play4fun: add spi flash reset code > ++ flash->command[0] = 0x66; > ++ spi_write(flash->spi, flash->command, 1); > ++ flash->command[0] = 0x99; > ++ spi_write(flash->spi, flash->command, 1); > ++ > + /* Clean up MTD stuff. */ > + return mtd_device_unregister(&flash->mtd); > + } > +@@ -382,6 +388,8 @@ > + .id_table = m25p_ids, > + .probe = m25p_probe, > + .remove = m25p_remove, > ++ // play4fun add shutdown method to reset spi flash > ++ .shutdown = m25p_remove, > + > + /* REVISIT: many of these chips have deep power-down modes, which > + * should clearly be entered on suspend() to minimize power use. > -- > 1.9.1 > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
This is not enough for w25q256. The Extended Address Register (EAR) must be cleared, or the higher half 16MB may be accessed in 3-byte addressing mode, and this will cause a boot failure.
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel