Re: [PATCH v3 2/2] iio: pressure: bmp280: Use char instead of s32 for data buffer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Op 30-09-2024 om 22:23 schreef Vasileios Amoiridis:
As it was reported and discussed here [1], storing the sensor data in an
endian aware s32 buffer is not optimal. Advertising the timestamp as an
addition of 2 s32 variables which is also implied is again not the best
practice. For that reason, change the s32 sensor_data buffer to a u8
buffer and align it properly.

[1]: https://lore.kernel.org/linux-iio/73d13cc0-afb9-4306-b498-5d821728c3ba@stanley.mountain/

Signed-off-by: Vasileios Amoiridis <vassilisamir@xxxxxxxxx>
---
  drivers/iio/pressure/bmp280-core.c | 72 ++++++++++++++++++------------
  drivers/iio/pressure/bmp280.h      |  4 +-
  2 files changed, 46 insertions(+), 30 deletions(-)
[...]
@@ -2199,7 +2210,7 @@ static irqreturn_t bmp580_trigger_handler(int irq, void *p)
  	struct iio_poll_func *pf = p;
  	struct iio_dev *indio_dev = pf->indio_dev;
  	struct bmp280_data *data = iio_priv(indio_dev);
-	int ret;
+	int ret, offset;
guard(mutex)(&data->lock); @@ -2211,13 +2222,15 @@ static irqreturn_t bmp580_trigger_handler(int irq, void *p)
  		goto out;
  	}
- /* Temperature calculations */
-	memcpy(&data->sensor_data[1], &data->buf[0], 3);
-
  	/* Pressure calculations */
-	memcpy(&data->sensor_data[0], &data->buf[3], 3);
+	memcpy(&data->sensor_data[offset], &data->buf[3], 3);
Variable offset is not initialized.
+
+	offset += sizeof(s32);
+
+	/* Temperature calculations */
+	memcpy(&data->sensor_data[offset], &data->buf[0], 3);
- iio_push_to_buffers_with_timestamp(indio_dev, &data->sensor_data,
+	iio_push_to_buffers_with_timestamp(indio_dev, data->sensor_data,
  					   iio_get_time_ns(indio_dev));
out:





[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux