diff options
author | Álvaro Fernández Rojas <noltari@gmail.com> | 2018-01-23 17:14:56 +0100 |
---|---|---|
committer | Jagan Teki <jagan@amarulasolutions.com> | 2018-01-24 12:03:43 +0530 |
commit | 8af74edc30bb60a90a5c4d2769ff3129b187796e (patch) | |
tree | f946f505c9b5ec34b4543951124cb3d4d2ca2678 /drivers/mtd/spi | |
parent | 48263504c8d501678acaa90c075f3f7cda17c316 (diff) |
drivers: spi: allow limiting reads
For some SPI controllers it's not possible to keep the CS active between
transfers and they are limited to a known number of bytes.
This splits spi_flash reads into different iterations in order to respect
the SPI controller limits.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Reviewed-by: Jagan Teki <jagan@openedev.com>
Diffstat (limited to 'drivers/mtd/spi')
-rw-r--r-- | drivers/mtd/spi/spi_flash.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c index 51e28bf07b..e40e1c01de 100644 --- a/drivers/mtd/spi/spi_flash.c +++ b/drivers/mtd/spi/spi_flash.c @@ -516,6 +516,9 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, else read_len = remain_len; + if (spi->max_read_size) + read_len = min(read_len, spi->max_read_size); + spi_flash_addr(read_addr, cmd); ret = spi_flash_read_common(flash, cmd, cmdsz, data, read_len); |