* [PATCH 1/2] mtd: m25p80: fix retlen usage in m25p80_read and propagate errors
@ 2016-02-27 22:48 Heiner Kallweit
0 siblings, 0 replies; only message in thread
From: Heiner Kallweit @ 2016-02-27 22:48 UTC (permalink / raw)
To: Brian Norris; +Cc: MTD Maling List
So far retlen usage in m25p80_read is different from retlen usage in other
places on the mtd subsystem. Usually bytes read are added to the current
value of *retlen, here the current value is ignored.
As a prerequisite for using m25p80_read in a loop if the transfer size is
limited we have to fix this.
Also propagate the return code of spi_sync.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/mtd/devices/m25p80.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
index c9c3b7f..c2d1f65 100644
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -126,10 +126,9 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
struct spi_device *spi = flash->spi;
struct spi_transfer t[2];
struct spi_message m;
- unsigned int dummy = nor->read_dummy;
-
/* convert the dummy cycles to the number of bytes */
- dummy /= 8;
+ unsigned int cmdlen = m25p_cmdsz(nor) + nor->read_dummy / 8;
+ int ret;
spi_message_init(&m);
memset(t, 0, (sizeof t));
@@ -138,7 +137,7 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
m25p_addr2cmd(nor, from, flash->command);
t[0].tx_buf = flash->command;
- t[0].len = m25p_cmdsz(nor) + dummy;
+ t[0].len = cmdlen;
spi_message_add_tail(&t[0], &m);
t[1].rx_buf = buf;
@@ -146,10 +145,12 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
t[1].len = len;
spi_message_add_tail(&t[1], &m);
- spi_sync(spi, &m);
+ ret = spi_sync(spi, &m);
- *retlen = m.actual_length - m25p_cmdsz(nor) - dummy;
- return 0;
+ if (m.actual_length > cmdlen)
+ *retlen += m.actual_length - cmdlen;
+
+ return ret;
}
/*
--
2.7.1
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2016-02-27 22:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-27 22:48 [PATCH 1/2] mtd: m25p80: fix retlen usage in m25p80_read and propagate errors Heiner Kallweit
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.