[PATCH v5 1/2] staging: iio: accel: adis16240: enforce SPI mode on probe function

Ardelean, Alexandru alexandru.Ardelean at analog.com
Wed Dec 4 07:25:29 UTC 2019


On Sun, 2019-12-01 at 11:42 +0000, Jonathan Cameron wrote:
> [External]
> 
> On Mon, 25 Nov 2019 07:55:39 +0000
> "Ardelean, Alexandru" <alexandru.Ardelean at analog.com> wrote:
> 
> > On Sat, 2019-11-23 at 20:35 -0300, Rodrigo Carvalho wrote:
> > > [External]
> > > 
> > > According to the datasheet, this driver supports only SPI mode 3,
> > > so we should enforce it and call spi_setup() on probe function.
> > > 
> > > Signed-off-by: Rodrigo Ribeiro Carvalho <rodrigorsdc at gmail.com>
> > > ---
> > > V5:
> > >   - Add this patch to the patchset
> > > 
> > >  drivers/staging/iio/accel/adis16240.c | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > > 
> > > diff --git a/drivers/staging/iio/accel/adis16240.c
> > > b/drivers/staging/iio/accel/adis16240.c
> > > index 82099db4bf0c..77b6b81767b9 100644
> > > --- a/drivers/staging/iio/accel/adis16240.c
> > > +++ b/drivers/staging/iio/accel/adis16240.c
> > > @@ -400,6 +400,13 @@ static int adis16240_probe(struct spi_device
> > > *spi)
> > >  	indio_dev->num_channels = ARRAY_SIZE(adis16240_channels);
> > >  	indio_dev->modes = INDIO_DIRECT_MODE;
> > >  
> > > +	spi->mode = SPI_MODE_3;  
> > 
> > A generic question from me here, since I am not sure.
> > 
> > Would this limit the configurations of this chip on the board?
> > In case there is some level-inverter [for various weird reasons] on the
> > board, this may not work, because the SPI controller would need CPOL to
> > be
> > 0.
> > 
> > Not sure if this question is valid, or whether we need to care about
> > such
> > configurations.
> 
> It's a good question as this sort of trick is used sometimes. Let's see
> what responses we get to the other branch of this thread before moving
> forwards
> with this.
> 

Coming back here.
Apologies to Rodrigo. I do realize that I delayed this a bit too much.

Let's have this series as-is here, and then we can see about a more generic
SPI Mode Converter driver that rounds-up all these weird boards.
Or, if we don't do any SPI mode converter drivers, then we can handle this
on a case-by-case basis/driver.


> Jonathan
> 
> 
> > Thanks
> > Alex
> > 
> > > +	ret = spi_setup(spi);
> > > +	if (ret) {
> > > +		dev_err(&spi->dev, "spi_setup failed!\n");
> > > +		return ret;
> > > +	}
> > > +
> > >  	ret = adis_init(st, indio_dev, spi, &adis16240_data);
> > >  	if (ret)
> > >  		return ret;  


More information about the devel mailing list