diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2012-12-17 22:28:09 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2012-12-17 22:28:09 +0000 |
commit | 89cd0b0fde11d77bfc284e21933bab6a8890d3de (patch) | |
tree | 07b5b46c556522f650191ac9e652c6d137175ab8 /target/linux/ar71xx/patches-3.3/406-mtd-m25p80-allow-to-specify-max-read-size.patch | |
parent | be621b6356cd3fac9503135a5f292ed8478865db (diff) | |
download | master-187ad058-89cd0b0fde11d77bfc284e21933bab6a8890d3de.tar.gz master-187ad058-89cd0b0fde11d77bfc284e21933bab6a8890d3de.tar.bz2 master-187ad058-89cd0b0fde11d77bfc284e21933bab6a8890d3de.zip |
ar71xx: nuke 3.3 support
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34743 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar71xx/patches-3.3/406-mtd-m25p80-allow-to-specify-max-read-size.patch')
-rw-r--r-- | target/linux/ar71xx/patches-3.3/406-mtd-m25p80-allow-to-specify-max-read-size.patch | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/target/linux/ar71xx/patches-3.3/406-mtd-m25p80-allow-to-specify-max-read-size.patch b/target/linux/ar71xx/patches-3.3/406-mtd-m25p80-allow-to-specify-max-read-size.patch deleted file mode 100644 index 8861c615fa..0000000000 --- a/target/linux/ar71xx/patches-3.3/406-mtd-m25p80-allow-to-specify-max-read-size.patch +++ /dev/null @@ -1,112 +0,0 @@ ---- a/drivers/mtd/devices/m25p80.c -+++ b/drivers/mtd/devices/m25p80.c -@@ -100,6 +100,7 @@ struct m25p { - u16 addr_width; - u8 erase_opcode; - u8 *command; -+ size_t max_read_len; - }; - - static inline struct m25p *mtd_to_m25p(struct mtd_info *mtd) -@@ -352,6 +353,7 @@ static int m25p80_read(struct mtd_info * - struct m25p *flash = mtd_to_m25p(mtd); - struct spi_transfer t[2]; - struct spi_message m; -+ loff_t ofs; - - pr_debug("%s: %s from 0x%08x, len %zd\n", dev_name(&flash->spi->dev), - __func__, (u32)from, len); -@@ -374,8 +376,6 @@ static int m25p80_read(struct mtd_info * - t[0].len = m25p_cmdsz(flash) + FAST_READ_DUMMY_BYTE; - spi_message_add_tail(&t[0], &m); - -- t[1].rx_buf = buf; -- t[1].len = len; - spi_message_add_tail(&t[1], &m); - - /* Byte count starts at zero. */ -@@ -383,13 +383,6 @@ static int m25p80_read(struct mtd_info * - - mutex_lock(&flash->lock); - -- /* Wait till previous write/erase is done. */ -- if (wait_till_ready(flash)) { -- /* REVISIT status return?? */ -- mutex_unlock(&flash->lock); -- return 1; -- } -- - /* FIXME switch to OPCODE_FAST_READ. It's required for higher - * clocks; and at this writing, every chip this driver handles - * supports that opcode. -@@ -397,11 +390,44 @@ static int m25p80_read(struct mtd_info * - - /* Set up the write data buffer. */ - flash->command[0] = OPCODE_READ; -- m25p_addr2cmd(flash, from, flash->command); - -- spi_sync(flash->spi, &m); -+ ofs = 0; -+ while (len) { -+ size_t readlen; -+ size_t done; -+ int ret; -+ -+ ret = wait_till_ready(flash); -+ if (ret) { -+ mutex_unlock(&flash->lock); -+ return 1; -+ } -+ -+ if (flash->max_read_len > 0 && -+ flash->max_read_len < len) -+ readlen = flash->max_read_len; -+ else -+ readlen = len; -+ -+ t[1].rx_buf = buf + ofs; -+ t[1].len = readlen; -+ -+ m25p_addr2cmd(flash, from + ofs, flash->command); -+ -+ spi_sync(flash->spi, &m); - -- *retlen = m.actual_length - m25p_cmdsz(flash) - FAST_READ_DUMMY_BYTE; -+ done = m.actual_length - m25p_cmdsz(flash) - -+ FAST_READ_DUMMY_BYTE; -+ if (done != readlen) { -+ mutex_unlock(&flash->lock); -+ return 1; -+ } -+ -+ ofs += done; -+ len -= done; -+ } -+ -+ *retlen = ofs; - - mutex_unlock(&flash->lock); - -@@ -925,6 +951,12 @@ static int __devinit m25p_probe(struct s - flash->mtd.erase = m25p80_erase; - flash->mtd.read = m25p80_read; - -+ if (data && data->max_read_len) { -+ flash->max_read_len = data->max_read_len; -+ dev_warn(&spi->dev, "max_read_len set to %d bytes\n", -+ flash->max_read_len); -+ } -+ - /* sst flash chips use AAI word program */ - if (JEDEC_MFR(info->jedec_id) == CFI_MFR_SST) - flash->mtd.write = sst_write; ---- a/include/linux/spi/flash.h -+++ b/include/linux/spi/flash.h -@@ -25,6 +25,7 @@ struct flash_platform_data { - - char *type; - -+ size_t max_read_len; - /* we'll likely add more ... use JEDEC IDs, etc */ - }; - |