Skip to content

Commit fb402d6

Browse files
shaftargerArsene Chen
authored and
Arsene Chen
committed
spi: dw: fix potential variable assignment error
spi::mode is defined by framework for several SPI capabilities, such as polarity, phase, bit-endian, wire number. Directly use this variable for setting controller's polarity and phase causes other bit in register being set. Since SPI framework has its definition, fetch required bit in spi::mode and set to register.
1 parent 0072a0c commit fb402d6

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/spi/spi-dw.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,8 @@ static int dw_spi_transfer_one(struct spi_controller *master,
317317
/* Default SPI mode is SCPOL = 0, SCPH = 0 */
318318
cr0 = (transfer->bits_per_word - 1)
319319
| (chip->type << SPI_FRF_OFFSET)
320-
| (spi->mode << SPI_MODE_OFFSET)
320+
| ((((spi->mode & SPI_CPOL)?1:0) << SPI_SCOL_OFFSET) |
321+
(((spi->mode & SPI_CPHA)?1:0) << SPI_SCPH_OFFSET))
321322
| (chip->tmode << SPI_TMOD_OFFSET);
322323

323324
/*

0 commit comments

Comments
 (0)