diff --git a/target/linux/ar71xx/patches-3.10/940-add-32mb-flash-support.patch b/target/linux/ar71xx/patches-3.10/940-add-32mb-flash-support.patch
new file mode 100644
index 0000000..7bca77e
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.10/940-add-32mb-flash-support.patch
@@ -0,0 +1,31 @@
+--- a/drivers/mtd/devices/m25p80.c
++++ b/drivers/mtd/devices/m25p80.c
+@@ -1137,6 +1137,13 @@ static int m25p_remove(struct spi_device
+ struct m25p *flash = dev_get_drvdata(&spi->dev);
+ int status;
+
++ const struct spi_device_id *id = spi_get_device_id(spi);
++
++ struct flash_info *info = (void *)id->driver_data;
++ // return 3-byte address mode so harware FTLs do not get confused.
++
++ set_4byte(flash, info->jedec_id, 0);
++
+ /* Clean up MTD stuff. */
+ status = mtd_device_unregister(&flash->mtd);
+ if (status == 0) {
+--- a/drivers/spi/spi-ath79.c
++++ b/drivers/spi/spi-ath79.c
+@@ -335,9 +335,9 @@ static int ath79_spi_setup_transfer(stru
+ return ret;
+
+ cdata = spi->controller_data;
+- if (cdata->is_flash)
+- sp->bitbang.txrx_bufs = ath79_spi_txrx_bufs;
+- else
++ // if (cdata->is_flash)
++ // sp->bitbang.txrx_bufs = ath79_spi_txrx_bufs;
++ // else
+ sp->bitbang.txrx_bufs = spi_bitbang_bufs;
+
+ return ret;
i quilt this patch,but not success. who do quilt it successfully