Message ID | 20241202-ti-ads1119_s16_chan-v1-1-fafe3136dc90@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | iio: adc: ti-ads1119: fix sample size in scan struct for triggered buffer | expand |
On Mon, Dec 02, 2024 at 08:18:44PM +0100, Javier Carrasco wrote: > This device returns signed, 16-bit samples as stated in its datasheet > (see 8.5.2 Data Format). That is in line with the scan_type definition > for the IIO_VOLTAGE channel, but 'unsigned int' is being used to read > and push the data to userspace. > > Given that the size of that type depends on the architecture (at least > 2 bytes to store values up to 65535, but its actual size is often 4 > bytes), use the 's16' type to provide the same structure in all cases. > > Fixes: a9306887eba4 ("iio: adc: ti-ads1119: Add driver") > Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com> Cc: stable@vger.kernel.org Thanks, Francesco
On Mon, 2 Dec 2024 20:46:22 +0100 Francesco Dolcini <francesco@dolcini.it> wrote: > On Mon, Dec 02, 2024 at 08:18:44PM +0100, Javier Carrasco wrote: > > This device returns signed, 16-bit samples as stated in its datasheet > > (see 8.5.2 Data Format). That is in line with the scan_type definition > > for the IIO_VOLTAGE channel, but 'unsigned int' is being used to read > > and push the data to userspace. > > > > Given that the size of that type depends on the architecture (at least > > 2 bytes to store values up to 65535, but its actual size is often 4 > > bytes), use the 's16' type to provide the same structure in all cases. > > > > Fixes: a9306887eba4 ("iio: adc: ti-ads1119: Add driver") > > Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> > > Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com> > Cc: stable@vger.kernel.org > > Thanks, > Francesco > Applied to the fixes-togreg branch of iio.git and marked for stable. Thanks, Jonathan
diff --git a/drivers/iio/adc/ti-ads1119.c b/drivers/iio/adc/ti-ads1119.c index 533610ac214e..6637cb6a6dda 100644 --- a/drivers/iio/adc/ti-ads1119.c +++ b/drivers/iio/adc/ti-ads1119.c @@ -500,7 +500,7 @@ static irqreturn_t ads1119_trigger_handler(int irq, void *private) struct iio_dev *indio_dev = pf->indio_dev; struct ads1119_state *st = iio_priv(indio_dev); struct { - unsigned int sample; + s16 sample; s64 timestamp __aligned(8); } scan; unsigned int index;
This device returns signed, 16-bit samples as stated in its datasheet (see 8.5.2 Data Format). That is in line with the scan_type definition for the IIO_VOLTAGE channel, but 'unsigned int' is being used to read and push the data to userspace. Given that the size of that type depends on the architecture (at least 2 bytes to store values up to 65535, but its actual size is often 4 bytes), use the 's16' type to provide the same structure in all cases. Fixes: a9306887eba4 ("iio: adc: ti-ads1119: Add driver") Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> --- drivers/iio/adc/ti-ads1119.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- base-commit: a0d6ec6575fce400e976af1dd9223823251775e9 change-id: 20241202-ti-ads1119_s16_chan-2ae1d6f5e1b3 Best regards,