[OpenWrt-Devel] [PATCH] ramips: reset m25p80 when shutdown

Arjen de Korte arjen+openwrt at de-korte.org
Wed Nov 11 06:07:40 EST 2015


Citeren Weijie Gao <hackpascal at gmail.com>:

> 2015-11-08 4:42 GMT+08:00 Shonn Lu <countrysideboy at qq.com>:
>
>> Signed-off-by: Shonn Lu <countrysideboy at 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 at lists.openwrt.org
>> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
>
> This is not enough for w25q256.

It is.

> 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.

 From the W25Q256FV datasheet (page 23):

"Upon  power  up  or  after  the  execution  of  a  Software/Hardware   
Reset,  the  Extended  Address  Register
values will be cleared to 0."

So sending the device a software reset, should be sufficient as the  
EAR will be cleared.
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list