Re: [U-Boot] [PATCH] spi: soft_spi: Support NULL din/dout buffers

2014-01-08 Thread Jagan Teki
Hi Andrew Ruder,

On Wed, Oct 23, 2013 at 5:41 AM, Andrew Ruder
andrew.ru...@elecsyscorp.com wrote:
 This mirrors the conventions used in other SPI drivers (kirkwood,
 davinci, atmel, et al) where the din/dout buffer can be NULL when the
 received/transmitted data isn't important.  This reduces the need for
 allocating additional buffers when write-only/read-only functionality is
 needed.

 In the din == NULL case, the received data is simply not stored.  In the
 dout == NULL case, zeroes are transmitted.

 Signed-off-by: Andrew Ruder andrew.ru...@elecsyscorp.com
 ---
  drivers/spi/soft_spi.c | 18 +-
  1 file changed, 13 insertions(+), 5 deletions(-)

 diff --git a/drivers/spi/soft_spi.c b/drivers/spi/soft_spi.c
 index 5d22351..5fdd091 100644
 --- a/drivers/spi/soft_spi.c
 +++ b/drivers/spi/soft_spi.c
 @@ -137,9 +137,15 @@ int  spi_xfer(struct spi_slave *slave, unsigned int 
 bitlen,
  * Check if it is time to work on a new byte.
  */
 if((j % 8) == 0) {
 -   tmpdout = *txd++;
 +   if (txd) {
 +   tmpdout = *txd++;
 +   } else {
 +   tmpdout = 0;
 +   }
 if(j != 0) {
 -   *rxd++ = tmpdin;
 +   if (rxd) {
 +   *rxd++ = tmpdin;
 +   }
 }
 tmpdin  = 0;
 }
 @@ -164,9 +170,11 @@ int  spi_xfer(struct spi_slave *slave, unsigned int 
 bitlen,
  * bits over to left-justify them.  Then store the last byte
  * read in.
  */
 -   if((bitlen % 8) != 0)
 -   tmpdin = 8 - (bitlen % 8);
 -   *rxd++ = tmpdin;
 +   if (rxd) {
 +   if((bitlen % 8) != 0)
 +   tmpdin = 8 - (bitlen % 8);
 +   *rxd++ = tmpdin;
 +   }

 if (flags  SPI_XFER_END)
 spi_cs_deactivate(slave);
 --

I'm not sure does this NULL buf config stuff will works all boards as
you listed.
I guess ie the reason the earlier code doesn't have this.

Does this tested on your board? any possibility to test others too.

Jean-Christophe, any comments here!

-- 
Thanks,
Jagan.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] spi: soft_spi: Support NULL din/dout buffers

2013-10-22 Thread Andrew Ruder
This mirrors the conventions used in other SPI drivers (kirkwood,
davinci, atmel, et al) where the din/dout buffer can be NULL when the
received/transmitted data isn't important.  This reduces the need for
allocating additional buffers when write-only/read-only functionality is
needed.

In the din == NULL case, the received data is simply not stored.  In the
dout == NULL case, zeroes are transmitted.

Signed-off-by: Andrew Ruder andrew.ru...@elecsyscorp.com
---
 drivers/spi/soft_spi.c | 18 +-
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/spi/soft_spi.c b/drivers/spi/soft_spi.c
index 5d22351..5fdd091 100644
--- a/drivers/spi/soft_spi.c
+++ b/drivers/spi/soft_spi.c
@@ -137,9 +137,15 @@ int  spi_xfer(struct spi_slave *slave, unsigned int bitlen,
 * Check if it is time to work on a new byte.
 */
if((j % 8) == 0) {
-   tmpdout = *txd++;
+   if (txd) {
+   tmpdout = *txd++;
+   } else {
+   tmpdout = 0;
+   }
if(j != 0) {
-   *rxd++ = tmpdin;
+   if (rxd) {
+   *rxd++ = tmpdin;
+   }
}
tmpdin  = 0;
}
@@ -164,9 +170,11 @@ int  spi_xfer(struct spi_slave *slave, unsigned int bitlen,
 * bits over to left-justify them.  Then store the last byte
 * read in.
 */
-   if((bitlen % 8) != 0)
-   tmpdin = 8 - (bitlen % 8);
-   *rxd++ = tmpdin;
+   if (rxd) {
+   if((bitlen % 8) != 0)
+   tmpdin = 8 - (bitlen % 8);
+   *rxd++ = tmpdin;
+   }
 
if (flags  SPI_XFER_END)
spi_cs_deactivate(slave);
-- 
1.8.4.rc3

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