Adapt driver to do a memory mapped read. Signed-off-by: Sourav Poddar <sourav.poddar@xxxxxx> --- drivers/mtd/devices/m25p80.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c index 6a27677..b7ed4be 100644 --- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -514,6 +514,7 @@ static int m25p80_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf) { struct m25p *flash = mtd_to_m25p(mtd); + struct spi_master *master = flash->spi->master; struct spi_transfer t[2]; struct spi_message m; uint8_t opcode; @@ -522,6 +523,14 @@ static int m25p80_read(struct mtd_info *mtd, loff_t from, size_t len, pr_debug("%s: %s from 0x%08x, len %zd\n", dev_name(&flash->spi->dev), __func__, (u32)from, len); + if (master->mmap) { + master->get_buf(master); + memcpy(buf, master->mem + from, len); + master->put_buf(master); + *retlen = len; + goto out; + } + spi_message_init(&m); memset(t, 0, (sizeof t)); @@ -559,6 +568,7 @@ static int m25p80_read(struct mtd_info *mtd, loff_t from, size_t len, mutex_unlock(&flash->lock); +out: return 0; } @@ -1285,6 +1295,9 @@ static int m25p_probe(struct spi_device *spi) flash->addr_width = 3; } + if (spi->master->configure_from_slave) + m25p80_fill_flash_information(flash); + dev_info(&spi->dev, "%s (%lld Kbytes)\n", id->name, (long long)flash->mtd.size >> 10); -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html