aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/patches-4.4/464-spi-ath79-fix-fast-flash-read.patch
blob: f8ae4e00bbe20ac4220b33bd6ef8ba6f9c51578b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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;
 };