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@xxxxxxxxxx> 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@xxxxxxxxx> > > > --- > > > 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;