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: Gregory CLEMENT <gregory.clement@bootlin.com> Link: https://lore.kernel.org/r/20191017141846.7523-8-gregory.clement@bootlin.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
57e3137710
Коммит
9c86f12a36
|
@ -371,7 +371,7 @@ static void cs_activate(struct atmel_spi *as, struct spi_device *spi)
|
|||
|
||||
mr = spi_readl(as, 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);
|
||||
spi_writel(as, MR, mr);
|
||||
}
|
||||
|
@ -402,7 +402,7 @@ static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi)
|
|||
|
||||
if (!spi->cs_gpiod)
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -1193,7 +1193,16 @@ static void initialize_native_cs_for_gpio(struct atmel_spi *as)
|
|||
if (!master->cs_gpiods)
|
||||
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])
|
||||
as->native_cs_free |= BIT(i);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче