Commit b3fe2e51 authored by Paul Kocialkowski's avatar Paul Kocialkowski Committed by Mark Brown

spi: core: Only check bits_per_word validity when explicitly provided

On SPI device probe, the core will call spi_setup in spi_add_device
before the corresponding driver was probed. When this happens, the
bits_per_word member of the device is not yet set by the driver,
resulting in the default being set to 8 bits-per-word.

However some controllers do not support 8 bits-per-word at all, which
results in a failure when checking the bits-per-word validity.

In order to support these devices, skip the bits-per-word validity
check when it is not explicitly provided by drivers.
Signed-off-by: default avatarPaul Kocialkowski <paul.kocialkowski@bootlin.com>
Link: https://lore.kernel.org/r/20220412122207.130181-1-paul.kocialkowski@bootlin.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent c6cf1faf
...@@ -3513,13 +3513,18 @@ int spi_setup(struct spi_device *spi) ...@@ -3513,13 +3513,18 @@ int spi_setup(struct spi_device *spi)
return -EINVAL; return -EINVAL;
} }
if (!spi->bits_per_word) if (!spi->bits_per_word) {
spi->bits_per_word = 8; spi->bits_per_word = 8;
} else {
status = __spi_validate_bits_per_word(spi->controller, /*
spi->bits_per_word); * Some controllers may not support the default 8 bits-per-word
if (status) * so only perform the check when this is explicitly provided.
return status; */
status = __spi_validate_bits_per_word(spi->controller,
spi->bits_per_word);
if (status)
return status;
}
if (spi->controller->max_speed_hz && if (spi->controller->max_speed_hz &&
(!spi->max_speed_hz || (!spi->max_speed_hz ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment