[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