Commit 9c86f12a authored by Gregory CLEMENT's avatar Gregory CLEMENT Committed by Mark Brown

spi: atmel: Improve CS0 case support on AT91RM9200

Thanks to the recent change in this driver, it is now possible to
prevent using the CS0 with GPIO during setup. It then allows to remove
the special handling of this case in the cs_activate() and
cs_deactivate() functions.
Signed-off-by: default avatarGregory CLEMENT <gregory.clement@bootlin.com>
Link: https://lore.kernel.org/r/20191017141846.7523-8-gregory.clement@bootlin.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 57e31377
...@@ -371,7 +371,7 @@ static void cs_activate(struct atmel_spi *as, struct spi_device *spi) ...@@ -371,7 +371,7 @@ static void cs_activate(struct atmel_spi *as, struct spi_device *spi)
mr = spi_readl(as, MR); mr = spi_readl(as, MR);
mr = SPI_BFINS(PCS, ~(1 << chip_select), mr); mr = SPI_BFINS(PCS, ~(1 << chip_select), mr);
if (spi->cs_gpiod && spi->chip_select != 0) if (spi->cs_gpiod)
gpiod_set_value(spi->cs_gpiod, 1); gpiod_set_value(spi->cs_gpiod, 1);
spi_writel(as, MR, mr); spi_writel(as, MR, mr);
} }
...@@ -402,7 +402,7 @@ static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi) ...@@ -402,7 +402,7 @@ static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi)
if (!spi->cs_gpiod) if (!spi->cs_gpiod)
spi_writel(as, CR, SPI_BIT(LASTXFER)); spi_writel(as, CR, SPI_BIT(LASTXFER));
else if (atmel_spi_is_v2(as) || spi->chip_select != 0) else
gpiod_set_value(spi->cs_gpiod, 0); gpiod_set_value(spi->cs_gpiod, 0);
} }
...@@ -1193,7 +1193,16 @@ static void initialize_native_cs_for_gpio(struct atmel_spi *as) ...@@ -1193,7 +1193,16 @@ static void initialize_native_cs_for_gpio(struct atmel_spi *as)
if (!master->cs_gpiods) if (!master->cs_gpiods)
return; /* No CS GPIO */ return; /* No CS GPIO */
for (i = 0; i < 4; i++) /*
* On the first version of the controller (AT91RM9200), CS0
* can't be used associated with GPIO
*/
if (atmel_spi_is_v2(as))
i = 0;
else
i = 1;
for (; i < 4; i++)
if (master->cs_gpiods[i]) if (master->cs_gpiods[i])
as->native_cs_free |= BIT(i); as->native_cs_free |= BIT(i);
......
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