[LEDE-DEV] mtd: Fix the soft reboot problem found on MediaTek devices with 32M Flash.
diff mbox

Message ID 1484141111-11748-1-git-send-email-ldpinney@gmail.com
State Rejected
Delegated to: Mathias Kresin
Headers show

Commit Message

L. D. Pinney Jan. 11, 2017, 1:25 p.m. UTC
This patch resets the spi to 3 byte mode needed for devices with more than 16M Flash.
Tested on the Onion Omega2+ (MT7688)

Signed-off-by: L. D. Pinney <ldpinney@gmail.com>
Tested-by: Nita Vesa <werecatf@gmail.com>

---

Comments

Mathias Kresin Jan. 11, 2017, 1:45 p.m. UTC | #1
2017-01-11 14:25 GMT+01:00 L. D. Pinney <ldpinney@gmail.com>:
> This patch resets the spi to 3 byte mode needed for devices with more than 16M Flash.
> Tested on the Onion Omega2+ (MT7688)
>
> Signed-off-by: L. D. Pinney <ldpinney@gmail.com>
> Tested-by: Nita Vesa <werecatf@gmail.com>
>
> ---
>
> diff --git a/target/linux/ramips/patches-4.4/101-spi-reset-to-3-byte-mode.patch b/target/linux/ramips/patches-4.4/101-spi-reset-to-3-byte-mode.patch
> new file mode 100644
> index 0000000..b126411
> --- /dev/null
> +++ b/target/linux/ramips/patches-4.4/101-spi-reset-to-3-byte-mode.patch
> @@ -0,0 +1,24 @@
> +Index: linux-4.4.40/drivers/mtd/devices/m25p80.c
> +===================================================================
> +--- linux-4.4.40.orig/drivers/mtd/devices/m25p80.c
> ++++ linux-4.4.40/drivers/mtd/devices/m25p80.c
> +@@ -261,6 +261,11 @@ static int m25p_remove(struct spi_device
> + {
> +       struct m25p     *flash = spi_get_drvdata(spi);
> +
> ++              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->spi_nor.mtd);
> + }
> +@@ -328,6 +333,7 @@ static struct spi_driver m25p80_driver =
> +       .id_table       = m25p_ids,
> +       .probe  = m25p_probe,
> +       .remove = m25p_remove,
> ++      .shutdown = m25p_remove,
> +
> +       /* REVISIT: many of these chips have deep power-down modes, which
> +        * should clearly be entered on suspend() to minimize power use.

NAK!

This patch was already send as Github PR and dropped in favour of
backporting a patch that was send to linux-mtd. Have a look at
https://github.com/lede-project/source/pull/620 for details.

Mathias

Patch
diff mbox

diff --git a/target/linux/ramips/patches-4.4/101-spi-reset-to-3-byte-mode.patch b/target/linux/ramips/patches-4.4/101-spi-reset-to-3-byte-mode.patch
new file mode 100644
index 0000000..b126411
--- /dev/null
+++ b/target/linux/ramips/patches-4.4/101-spi-reset-to-3-byte-mode.patch
@@ -0,0 +1,24 @@ 
+Index: linux-4.4.40/drivers/mtd/devices/m25p80.c
+===================================================================
+--- linux-4.4.40.orig/drivers/mtd/devices/m25p80.c
++++ linux-4.4.40/drivers/mtd/devices/m25p80.c
+@@ -261,6 +261,11 @@ static int m25p_remove(struct spi_device
+ {
+ 	struct m25p	*flash = spi_get_drvdata(spi);
+ 
++		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->spi_nor.mtd);
+ }
+@@ -328,6 +333,7 @@ static struct spi_driver m25p80_driver =
+ 	.id_table	= m25p_ids,
+ 	.probe	= m25p_probe,
+ 	.remove	= m25p_remove,
++	.shutdown = m25p_remove,
+ 
+ 	/* REVISIT: many of these chips have deep power-down modes, which
+ 	 * should clearly be entered on suspend() to minimize power use.