On Thu, Apr 16, 2020 at 4:08 AM Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> wrote: > > There is no need to keep tx_buf around, it is only used for the conversion. > As Lars said. And some SPI controllers may want to DMA even one byte, so, NAK. > Signed-off-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> > --- > drivers/iio/adc/ti-ads8344.c | 18 ++++++------------ > 1 file changed, 6 insertions(+), 12 deletions(-) > > diff --git a/drivers/iio/adc/ti-ads8344.c b/drivers/iio/adc/ti-ads8344.c > index 6da50ea35217..9b2d3a8ea6bd 100644 > --- a/drivers/iio/adc/ti-ads8344.c > +++ b/drivers/iio/adc/ti-ads8344.c > @@ -22,13 +22,7 @@ > struct ads8344 { > struct spi_device *spi; > struct regulator *reg; > - /* > - * Lock protecting access to adc->tx_buff and rx_buff, > - * especially from concurrent read on sysfs file. > - */ > - struct mutex lock; > - > - u8 tx_buf ____cacheline_aligned; > + struct mutex lock; /* protect from concurrent conversions */ > }; > > #define ADS8344_VOLTAGE_CHANNEL(chan, si) \ > @@ -77,13 +71,13 @@ static int ads8344_adc_conversion(struct ads8344 *adc, int channel, > int ret; > u8 buf[3]; > > - adc->tx_buf = ADS8344_START; > + buf[0] = ADS8344_START; > if (!differential) > - adc->tx_buf |= ADS8344_SINGLE_END; > - adc->tx_buf |= ADS8344_CHANNEL(channel); > - adc->tx_buf |= ADS8344_CLOCK_INTERNAL; > + buf[0] |= ADS8344_SINGLE_END; > + buf[0] |= ADS8344_CHANNEL(channel); > + buf[0] |= ADS8344_CLOCK_INTERNAL; > > - ret = spi_write(spi, &adc->tx_buf, 1); > + ret = spi_write(spi, buf, 1); > if (ret) > return ret; > > -- > 2.25.2 > -- With Best Regards, Andy Shevchenko