summaryrefslogtreecommitdiff
path: root/target/linux/ar71xx/patches-4.4/464-spi-ath79-fix-fast-flash-read.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ar71xx/patches-4.4/464-spi-ath79-fix-fast-flash-read.patch')
-rw-r--r--target/linux/ar71xx/patches-4.4/464-spi-ath79-fix-fast-flash-read.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/target/linux/ar71xx/patches-4.4/464-spi-ath79-fix-fast-flash-read.patch b/target/linux/ar71xx/patches-4.4/464-spi-ath79-fix-fast-flash-read.patch
new file mode 100644
index 0000000..f8ae4e0
--- /dev/null
+++ b/target/linux/ar71xx/patches-4.4/464-spi-ath79-fix-fast-flash-read.patch
@@ -0,0 +1,35 @@
+--- a/drivers/mtd/devices/m25p80.c
++++ b/drivers/mtd/devices/m25p80.c
+@@ -137,6 +137,9 @@ static int m25p80_read(struct spi_nor *n
+ flash->command[0] = nor->read_opcode;
+ m25p_addr2cmd(nor, from, flash->command);
+
++ if (dummy == 1)
++ t[0].dummy = true;
++
+ t[0].type = SPI_TRANSFER_FLASH_READ_CMD;
+ t[0].tx_buf = flash->command;
+ t[0].len = m25p_cmdsz(nor) + dummy;
+--- a/drivers/spi/spi-ath79.c
++++ b/drivers/spi/spi-ath79.c
+@@ -268,6 +268,10 @@ static int ath79_spi_do_read_flash_cmd(s
+ sp->read_addr = 0;
+
+ len = t->len - 1;
++
++ if (t->dummy)
++ len -= 1;
++
+ p = t->tx_buf;
+
+ while (len--) {
+--- a/include/linux/spi/spi.h
++++ b/include/linux/spi/spi.h
+@@ -705,6 +705,7 @@ struct spi_transfer {
+ u16 delay_usecs;
+ u32 speed_hz;
+ enum spi_transfer_type type;
++ bool dummy;
+
+ struct list_head transfer_list;
+ };