Re: [U-Boot] [PATCH v3 01/10] drivers: spi: allow limiting reads

2017-06-04 Thread Daniel Schwierzeck


Am 03.06.2017 um 11:57 schrieb Álvaro Fernández Rojas:
> 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 
> Reviewed-by: Simon Glass 

Reviewed-by: Daniel Schwierzeck 

> ---
>  v3: no changes
>  v2: no changes
> 
>  drivers/mtd/spi/spi_flash.c | 3 +++
>  include/spi.h   | 3 +++
>  2 files changed, 6 insertions(+)
> 

-- 
- Daniel



signature.asc
Description: OpenPGP digital signature
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH v3 01/10] drivers: spi: allow limiting reads

2017-06-03 Thread Álvaro Fernández Rojas
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 
Reviewed-by: Simon Glass 
---
 v3: no changes
 v2: no changes

 drivers/mtd/spi/spi_flash.c | 3 +++
 include/spi.h   | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 0034a28..5ee33d8 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -487,6 +487,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);
diff --git a/include/spi.h b/include/spi.h
index 8c4b882..d0fa537 100644
--- a/include/spi.h
+++ b/include/spi.h
@@ -86,6 +86,8 @@ struct dm_spi_slave_platdata {
  * @cs:ID of the chip select connected to the slave.
  * @mode:  SPI mode to use for this slave (see SPI mode flags)
  * @wordlen:   Size of SPI word in number of bits
+ * @max_read_size: If non-zero, the maximum number of bytes which can
+ * be read at once.
  * @max_write_size:If non-zero, the maximum number of bytes which can
  * be written at once, excluding command bytes.
  * @memory_map:Address of read-only SPI flash access.
@@ -102,6 +104,7 @@ struct spi_slave {
 #endif
uint mode;
unsigned int wordlen;
+   unsigned int max_read_size;
unsigned int max_write_size;
void *memory_map;
u8 option;
-- 
2.1.4

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot