]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iio: adc: ad7949: use spi_is_bpw_supported()
authorDavid Lechner <dlechner@baylibre.com>
Wed, 11 Jun 2025 15:04:58 +0000 (10:04 -0500)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 29 Jun 2025 16:15:39 +0000 (17:15 +0100)
Use spi_is_bpw_supported() instead of directly accessing spi->controller
->bits_per_word_mask. bits_per_word_mask may be 0, which implies that
8-bits-per-word is supported. spi_is_bpw_supported() takes this into
account while spi_ctrl_mask == SPI_BPW_MASK(8) does not.

Fixes: 0b2a740b424e ("iio: adc: ad7949: enable use with non 14/16-bit controllers")
Closes: https://lore.kernel.org/linux-spi/c8b8a963-6cef-4c9b-bfef-dab2b7bd0b0f@sirena.org.uk/
Signed-off-by: David Lechner <dlechner@baylibre.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Link: https://patch.msgid.link/20250611-iio-adc-ad7949-use-spi_is_bpw_supported-v1-1-c4e15bfd326e@baylibre.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ad7949.c

index edd0c3a35ab73cca5ff87632e4d588eb5d712b47..202561cad4012b67e23ad6d3623c913cfef35e68 100644 (file)
@@ -308,7 +308,6 @@ static void ad7949_disable_reg(void *reg)
 
 static int ad7949_spi_probe(struct spi_device *spi)
 {
-       u32 spi_ctrl_mask = spi->controller->bits_per_word_mask;
        struct device *dev = &spi->dev;
        const struct ad7949_adc_spec *spec;
        struct ad7949_adc_chip *ad7949_adc;
@@ -337,11 +336,11 @@ static int ad7949_spi_probe(struct spi_device *spi)
        ad7949_adc->resolution = spec->resolution;
 
        /* Set SPI bits per word */
-       if (spi_ctrl_mask & SPI_BPW_MASK(ad7949_adc->resolution)) {
+       if (spi_is_bpw_supported(spi, ad7949_adc->resolution)) {
                spi->bits_per_word = ad7949_adc->resolution;
-       } else if (spi_ctrl_mask == SPI_BPW_MASK(16)) {
+       } else if (spi_is_bpw_supported(spi, 16)) {
                spi->bits_per_word = 16;
-       } else if (spi_ctrl_mask == SPI_BPW_MASK(8)) {
+       } else if (spi_is_bpw_supported(spi, 8)) {
                spi->bits_per_word = 8;
        } else {
                dev_err(dev, "unable to find common BPW with spi controller\n");