spi: coldfire-qspi: Fix bits per word setting when t->bits_per_word is not set
PATCH 1/1 spi: coldfire-qspi: Fix bits per word setting when t->bits_per_word is not set
This ensures to use spi_device's bits_per_word setting when t->bits_per_word is not set. This looks like a bug introduced by commit 24778be20f8 "spi: convert drivers to use bits_per_word_mask".
--- drivers/spi/spi-coldfire-qspi.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/spi/spi-coldfire-qspi.c +6 -2
@@ -315,12 +315,16 @@ static int mcfqspi_transfer_one(struct spi_master *master, {struct mcfqspi *mcfqspi =spi_master_get_devdata (master);u16 qmr =MCFQSPI_QMR_MSTR ; +u8 bpw; - qmr |= t->bits_per_word <<10 ; + bpw = t->bits_per_word ? : spi->bits_per_word; + + qmr |= bpw <<10 ;if (spi->mode &SPI_CPHA ) qmr |=MCFQSPI_QMR_CPHA ;if (spi->mode &SPI_CPOL ) qmr |=MCFQSPI_QMR_CPOL ; +if (t->speed_hz) qmr |=mcfqspi_qmr_baud (t->speed_hz);else
@@ -328,7 +332,7 @@ static int mcfqspi_transfer_one(struct spi_master *master,mcfqspi_wr_qmr (mcfqspi, qmr);mcfqspi_wr_qir (mcfqspi,MCFQSPI_QIR_SPIFE ); -if (t->bits_per_word ==8 ) +if (bpw ==8 )mcfqspi_transfer_msg8 (mcfqspi, t->len, t->tx_buf, t->rx_buf);else mcfqspi_transfer_msg16(mcfqspi, t->len / 2, t->tx_buf,
Signature · 8 lines
1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 3 lines · Axel Lin
This ensures to use spi_device's
bits_per_wordsetting whent->bits_per_wordis not set. This looks like a bug introduced by commit24778be20f8"spi: convert drivers to usebits_per_word_mask".
I thought the SPI core already contained this kind of logic, so that drivers could rely on t->bits_per_word always being set up? Yes, this:
Quoted 1 line
static int
__spi_validate(struct spi_device *spi, struct spi_message *message)
...
Quoted 10 lines
/**
* Set transfer bits_per_word and max speed as spi device default if
* it is not set for this transfer.
* Set transfer tx_nbits and rx_nbits as single transfer default
* (SPI_NBITS_SINGLE) if it is not set for this transfer.
*/
list_for_each_entry(xfer, &message->transfers, transfer_list) {
message->frame_length += xfer->len;
if (!xfer->bits_per_word)
xfer->bits_per_word = spi->bits_per_word;--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 7 lines · Stephen Warren
Quoted 3 lines · Axel Lin
This ensures to use spi_device's
bits_per_wordsetting whent->bits_per_wordis not set. This looks like a bug introduced by commit24778be20f8"spi: convert drivers to usebits_per_word_mask".I thought the SPI core already contained this kind of logic, so that drivers could rely on
t->bits_per_wordalways being set up? Yes, this:
Indeed - if there weren't such logic the better fix would be to add it.
2014-02-28 1:09 GMT+08:00 Stephen Warren <[email protected]>:
Quoted 7 lines · Axel Lin
Quoted 3 lines
This ensures to use spi_device's
bits_per_wordsetting whent->bits_per_wordis not set. This looks like a bug introduced by commit24778be20f8"spi: convert drivers to usebits_per_word_mask".I thought the SPI core already contained this kind of logic, so that drivers could rely on
t->bits_per_wordalways being set up? Yes, this:
Hi Stephen,
Yes, you are right and thanks for the review.
Regards,
Axel
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html