spi/bitbang: initialize bits_per_word as specified by spi message
authorAnatolij Gustschin <agust@denx.de>
Wed, 1 Jun 2011 16:36:49 +0000 (18:36 +0200)
committerGrant Likely <grant.likely@secretlab.ca>
Fri, 3 Jun 2011 21:01:14 +0000 (15:01 -0600)
SPI protocol drivers can submit messages specifying needed bits_per_word
parameter for a message transfer. The bitbang driver currently ignores
bits_per_word given by a singe message and always uses master's
bits_per_word parameter. Only use master's bits_per_word when a
message didn't specify needed bits_per_word for ongoing transfer.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
drivers/spi/spi_bitbang.c

index 14a63f6010d1bfda52ea7b125c8571fab457615b..bb38c83ba210d0545f16ac3fe36729abdbb2e9e1 100644 (file)
@@ -68,7 +68,7 @@ static unsigned bitbang_txrx_8(
        unsigned                ns,
        struct spi_transfer     *t
 ) {
-       unsigned                bits = spi->bits_per_word;
+       unsigned                bits = t->bits_per_word ? : spi->bits_per_word;
        unsigned                count = t->len;
        const u8                *tx = t->tx_buf;
        u8                      *rx = t->rx_buf;
@@ -94,7 +94,7 @@ static unsigned bitbang_txrx_16(
        unsigned                ns,
        struct spi_transfer     *t
 ) {
-       unsigned                bits = spi->bits_per_word;
+       unsigned                bits = t->bits_per_word ? : spi->bits_per_word;
        unsigned                count = t->len;
        const u16               *tx = t->tx_buf;
        u16                     *rx = t->rx_buf;
@@ -120,7 +120,7 @@ static unsigned bitbang_txrx_32(
        unsigned                ns,
        struct spi_transfer     *t
 ) {
-       unsigned                bits = spi->bits_per_word;
+       unsigned                bits = t->bits_per_word ? : spi->bits_per_word;
        unsigned                count = t->len;
        const u32               *tx = t->tx_buf;
        u32                     *rx = t->rx_buf;