diff --git a/drivers/spi/spi-aspeed-txrx.c b/drivers/spi/spi-aspeed-txrx.c index e0c8eef2a6a06b..9f95020c122a94 100644 --- a/drivers/spi/spi-aspeed-txrx.c +++ b/drivers/spi/spi-aspeed-txrx.c @@ -390,9 +390,9 @@ static int aspeed_spi_transfer(struct spi_controller *ctlr, if (tx_buf) { ctrl_val &= ~SPI_IO_MASK; - if (spi->mode & SPI_TX_DUAL) + if (spi->mode & SPI_TX_DUAL && xfer->tx_nbits == SPI_NBITS_DUAL) ctrl_val |= SPI_DUAL_IO_MODE; - else if (spi->mode & SPI_TX_QUAD) + else if (spi->mode & SPI_TX_QUAD && xfer->tx_nbits == SPI_NBITS_QUAD) ctrl_val |= SPI_QUAD_IO_MODE; writel(ctrl_val, ctrl_reg); @@ -408,9 +408,9 @@ static int aspeed_spi_transfer(struct spi_controller *ctlr, if (rx_buf && rx_buf != tx_buf) { ctrl_val &= ~SPI_IO_MASK; - if (spi->mode & SPI_RX_DUAL) + if (spi->mode & SPI_RX_DUAL && xfer->rx_nbits == SPI_NBITS_DUAL) ctrl_val |= SPI_DUAL_IO_MODE; - else if (spi->mode & SPI_RX_QUAD) + else if (spi->mode & SPI_RX_QUAD && xfer->rx_nbits == SPI_NBITS_QUAD) ctrl_val |= SPI_QUAD_IO_MODE; writel(ctrl_val, ctrl_reg);