On Sun, 9 Aug 2020 18:47:55 +0100 Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > On Wed, 22 Jul 2020 16:50:58 +0100 > Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > > > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > > > By adding a few local variables and avoiding a void * for > > a parameter we can easily make all the endian types explicit and > > get rid of the warnings from sparse: > > > > CHECK drivers/iio/adc/ti-adc084s021.c > > drivers/iio/adc/ti-adc084s021.c:84:26: warning: incorrect type in assignment (different base types) > > drivers/iio/adc/ti-adc084s021.c:84:26: expected unsigned short [usertype] > > drivers/iio/adc/ti-adc084s021.c:84:26: got restricted __be16 > > drivers/iio/adc/ti-adc084s021.c:115:24: warning: cast to restricted __be16 > > drivers/iio/adc/ti-adc084s021.c:115:24: warning: cast to restricted __be16 > > drivers/iio/adc/ti-adc084s021.c:115:24: warning: cast to restricted __be16 > > drivers/iio/adc/ti-adc084s021.c:115:24: warning: cast to restricted __be16 > > > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > I'm a bit in 2 minds about this one. The exact warning will change as the > result of the previous patch, but the problem is not introduced by that. > Technically it's not a 'fix' so I'll hold this one for now. Applied this one to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it. Thanks, Jonathan > > Jonathan > > > --- > > drivers/iio/adc/ti-adc084s021.c | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/iio/adc/ti-adc084s021.c b/drivers/iio/adc/ti-adc084s021.c > > index dfba34834a57..fb14b92fa6e7 100644 > > --- a/drivers/iio/adc/ti-adc084s021.c > > +++ b/drivers/iio/adc/ti-adc084s021.c > > @@ -70,11 +70,10 @@ static const struct iio_chan_spec adc084s021_channels[] = { > > * @adc: The ADC SPI data. > > * @data: Buffer for converted data. > > */ > > -static int adc084s021_adc_conversion(struct adc084s021 *adc, void *data) > > +static int adc084s021_adc_conversion(struct adc084s021 *adc, __be16 *data) > > { > > int n_words = (adc->spi_trans.len >> 1) - 1; /* Discard first word */ > > int ret, i = 0; > > - u16 *p = data; > > > > /* Do the transfer */ > > ret = spi_sync(adc->spi, &adc->message); > > @@ -82,7 +81,7 @@ static int adc084s021_adc_conversion(struct adc084s021 *adc, void *data) > > return ret; > > > > for (; i < n_words; i++) > > - *(p + i) = adc->rx_buf[i + 1]; > > + *(data + i) = adc->rx_buf[i + 1]; > > > > return ret; > > } > > @@ -93,6 +92,7 @@ static int adc084s021_read_raw(struct iio_dev *indio_dev, > > { > > struct adc084s021 *adc = iio_priv(indio_dev); > > int ret; > > + __be16 be_val; > > > > switch (mask) { > > case IIO_CHAN_INFO_RAW: > > @@ -107,13 +107,13 @@ static int adc084s021_read_raw(struct iio_dev *indio_dev, > > } > > > > adc->tx_buf[0] = channel->channel << 3; > > - ret = adc084s021_adc_conversion(adc, val); > > + ret = adc084s021_adc_conversion(adc, &be_val); > > iio_device_release_direct_mode(indio_dev); > > regulator_disable(adc->reg); > > if (ret < 0) > > return ret; > > > > - *val = be16_to_cpu(*val); > > + *val = be16_to_cpu(be_val); > > *val = (*val >> channel->scan_type.shift) & 0xff; > > > > return IIO_VAL_INT; >