Re: [PATCH v3 5/6] spi: at91-usart: add driver for at91-usart as spi

From: Radu Pirea
Date: Thu May 24 2018 - 11:10:34 EST




On 05/17/2018 07:54 AM, Mark Brown wrote:
On Tue, May 15, 2018 at 12:22:24PM +0300, Radu Pirea wrote:
On Mon, 2018-05-14 at 20:38 +0300, Andy Shevchenko wrote:

So, what is not going as expected in "SPI core takes care of CSs"
case?
Did you use oscilloscope for that?

Yes, I used and CSs was not asserted. Anyway, I will will try again.

If the core chip select handling is not working properly for some reason
then the core chip select handling should be fixed rather than just open
coding in your driver - probably it's also broken for other users.


Hi Mark,

I found the fix for cs-gpios. If I change spi_add_device function like this(see below) everything is ok.

int spi_add_device(struct spi_device *spi)

...

if (ctlr->cs_gpios){
spi->cs_gpio = ctlr->cs_gpios[spi->chip_select];
if(gpio_is_valid(spi->cs_gpio))
gpio_direction_output(spi->cs_gpio, !(spi->mode & SPI_CS_HIGH));

}

...

return status;
}

In the subsystem gpio direction of pins is never set and gpio_set_value() don't set the direction.
In my opinion gpio_direction_output() set direction should be called in spi_add_device. What do you think? Is ok?