spi: spi-ath79: Set the initial state of CS0
The internal chip select CS0 wasn't initialized properly to work with CS HIGH chips. Signed-off-by: Alban Bedel <albeu@free.fr> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
3e19acdc5b
commit
83f0f398a0
|
@ -115,6 +115,7 @@ static void ath79_spi_disable(struct ath79_spi *sp)
|
||||||
|
|
||||||
static int ath79_spi_setup_cs(struct spi_device *spi)
|
static int ath79_spi_setup_cs(struct spi_device *spi)
|
||||||
{
|
{
|
||||||
|
struct ath79_spi *sp = ath79_spidev_to_sp(spi);
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (spi->chip_select && !gpio_is_valid(spi->cs_gpio))
|
if (spi->chip_select && !gpio_is_valid(spi->cs_gpio))
|
||||||
|
@ -132,6 +133,13 @@ static int ath79_spi_setup_cs(struct spi_device *spi)
|
||||||
|
|
||||||
status = gpio_request_one(spi->cs_gpio, flags,
|
status = gpio_request_one(spi->cs_gpio, flags,
|
||||||
dev_name(&spi->dev));
|
dev_name(&spi->dev));
|
||||||
|
} else {
|
||||||
|
if (spi->mode & SPI_CS_HIGH)
|
||||||
|
sp->ioc_base &= ~AR71XX_SPI_IOC_CS0;
|
||||||
|
else
|
||||||
|
sp->ioc_base |= AR71XX_SPI_IOC_CS0;
|
||||||
|
|
||||||
|
ath79_spi_wr(sp, AR71XX_SPI_REG_IOC, sp->ioc_base);
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|
Loading…
Reference in New Issue