By leaving this value unset, a default value of 8 was being set later on. If it happens that the SPI master driver doesn't support this value of 8, there will be an initial inconsistency between the SPI master and the device itself. This isn't a problem for most devices because kernel drivers associated to any device set the correct value themselves, but for device drivers that do not change this value (such as spidev that provides a userspace accesible device, which doesn't and can't know the value it has to use), an error is raised: xilinx_spi 44a10000.spi: can't setup spi1.0, status -22 spi_master spi1: spi_device register error /amba_pl/spi@44a10000/spidev@0 spi_master spi1: Failed to create SPI device for /amba_pl/spi@44a10000/spidev@0 When this happens, the expected /dev/spidevX.Y device isn't created, and thus the user can't use the SPI_IOC_WR_BITS_PER_WORD ioctl to set the desired value. This change sets the initial value of bits_per to the smallest word that the controller allows, so of_spi_parse_dt sets a value that is usable by the controller. Signed-off-by: Alvaro Gamez Machado <alvaro.gamez@xxxxxxxxxx> --- drivers/spi/spi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index f9502dbbb5c1..794e20e54237 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -1792,6 +1792,8 @@ static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi, } spi->max_speed_hz = value; + spi->bits_per_word = ffs(ctlr->bits_per_word_mask); + return 0; } -- 2.23.0