From 5b6ceab69b16ae9c10c8374f78bee809f83e1b52 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Sun, 30 Mar 2014 19:03:55 +0000
Subject: [PATCH] ralink: fix chuncked-io module

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 40342
---
 ...0131-mtd-add-chunked-read-io-to-m25p80.patch | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/target/linux/ramips/patches-3.10/0131-mtd-add-chunked-read-io-to-m25p80.patch b/target/linux/ramips/patches-3.10/0131-mtd-add-chunked-read-io-to-m25p80.patch
index 6a4f8abf35..6123ec1105 100644
--- a/target/linux/ramips/patches-3.10/0131-mtd-add-chunked-read-io-to-m25p80.patch
+++ b/target/linux/ramips/patches-3.10/0131-mtd-add-chunked-read-io-to-m25p80.patch
@@ -8,9 +8,11 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  drivers/mtd/devices/m25p80.c |  127 ++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 127 insertions(+)
 
---- a/drivers/mtd/devices/m25p80.c
-+++ b/drivers/mtd/devices/m25p80.c
-@@ -392,6 +392,57 @@ static int m25p80_read(struct mtd_info *
+Index: linux-3.10.34/drivers/mtd/devices/m25p80.c
+===================================================================
+--- linux-3.10.34.orig/drivers/mtd/devices/m25p80.c	2014-03-30 19:40:10.135292951 +0100
++++ linux-3.10.34/drivers/mtd/devices/m25p80.c	2014-03-30 19:44:40.151295482 +0100
+@@ -392,6 +392,58 @@
  	return 0;
  }
  
@@ -34,6 +36,8 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +	spi_message_add_tail(&t[0], &m);
 +	spi_message_add_tail(&t[1], &m);
 +
++	*retlen = 0;
++
 +	while (idx < len) {
 +		int rlen = (len - idx > 4) ? (4) : (len - idx);
 +
@@ -56,8 +60,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +
 +		spi_sync(flash->spi, &m);
 +
-+		*retlen = m.actual_length - m25p_cmdsz(flash) -
-+			(flash->fast_read ? 1 : 0);
++		*retlen += m.actual_length - m25p_cmdsz(flash);
 +
 +		mutex_unlock(&flash->lock);
 +		idx += rlen;
@@ -68,7 +71,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  /*
   * Write an address range to the flash chip.  Data must be written in
   * FLASH_PAGESIZE chunks.  The address range may be any size provided
-@@ -479,6 +530,76 @@ static int m25p80_write(struct mtd_info
+@@ -479,6 +531,76 @@
  	return 0;
  }
  
@@ -145,7 +148,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  static int sst_write(struct mtd_info *mtd, loff_t to, size_t len,
  		size_t *retlen, const u_char *buf)
  {
-@@ -1058,6 +1179,12 @@ static int m25p_probe(struct spi_device
+@@ -1058,6 +1180,12 @@
  		flash->fast_read = true;
  #endif
  
-- 
2.30.2