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: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Link: https://lore.kernel.org/r/20220412122207.130181-1-paul.kocialkowski@bootlin.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
c6cf1fafb6
commit
b3fe2e5167
@ -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 ||
|
||||||
|
Loading…
Reference in New Issue
Block a user