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

From: Jonathan Cameron
Date: Sun Dec 01 2019 - 06:42:49 EST


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.

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;