Messages in this thread | | | Subject | Re: [PATCH 2/3] iio: adc: ti-ads8344: remove tx_buf from driver data | From | Lars-Peter Clausen <> | Date | Thu, 16 Apr 2020 08:26:36 +0200 |
| |
On 4/15/20 11:22 PM, Alexandre Belloni wrote: > There is no need to keep tx_buf around, it is only used for the conversion. > > Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > --- > 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];
spi_write() might use the buffer in a DMA transfer, so it can't be on the stack and needs to be in its own cacheline.
> > - 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; >
| |