[PATCH] spi: bcm2835: fix gpio cs level inversion
Nathan Chancellor
natechancellor at gmail.com
Fri Oct 30 05:06:21 EDT 2020
On Wed, Oct 14, 2020 at 11:02:30AM +0200, Martin Hundebøll wrote:
> The work on improving gpio chip-select in spi core, and the following
> fixes, has caused the bcm2835 spi driver to use wrong levels. Fix this
> by simply removing level handling in the bcm2835 driver, and let the
> core do its work.
>
> Fixes: 3e5ec1db8bfe ("spi: Fix SPI_CS_HIGH setting when using native and GPIO CS")
> Cc: <stable at vger.kernel.org>
> Signed-off-by: Martin Hundebøll <martin at geanix.com>
> ---
> drivers/spi/spi-bcm2835.c | 12 ------------
> 1 file changed, 12 deletions(-)
>
> diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
> index b87116e9b413..9b6ba94fe878 100644
> --- a/drivers/spi/spi-bcm2835.c
> +++ b/drivers/spi/spi-bcm2835.c
> @@ -1259,18 +1259,6 @@ static int bcm2835_spi_setup(struct spi_device *spi)
> if (!chip)
> return 0;
>
> - /*
> - * Retrieve the corresponding GPIO line used for CS.
> - * The inversion semantics will be handled by the GPIO core
> - * code, so we pass GPIOD_OUT_LOW for "unasserted" and
> - * the correct flag for inversion semantics. The SPI_CS_HIGH
> - * on spi->mode cannot be checked for polarity in this case
> - * as the flag use_gpio_descriptors enforces SPI_CS_HIGH.
> - */
> - if (of_property_read_bool(spi->dev.of_node, "spi-cs-high"))
> - lflags = GPIO_ACTIVE_HIGH;
> - else
> - lflags = GPIO_ACTIVE_LOW;
> spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select,
> DRV_NAME,
> lflags,
> --
> 2.28.0
>
>
Clang now warns:
drivers/spi/spi-bcm2835.c:1264:9: warning: variable 'lflags' is uninitialized when used here [-Wuninitialized]
lflags,
^~~~~~
drivers/spi/spi-bcm2835.c:1196:2: note: variable 'lflags' is declared here
enum gpio_lookup_flags lflags;
^
1 warning generated.
Cheers,
Nathan
More information about the linux-arm-kernel
mailing list