[PATCH] iio: chemical: scd4x: fix reported channel endianness

Fiona Klute posted 1 patch 1 month, 3 weeks ago
drivers/iio/chemical/scd4x.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH] iio: chemical: scd4x: fix reported channel endianness
Posted by Fiona Klute 1 month, 3 weeks ago
The driver converts values read from the sensor from BE to CPU
endianness in scd4x_read_meas(). The result is then pushed into the
buffer in scd4x_trigger_handler(), so on LE architectures parsing the
buffer using the reported BE type gave wrong results.

scd4x_read_raw() which provides sysfs *_raw values is not affected, it
used the values returned by scd4x_read_meas() without further
conversion.

Fixes: 49d22b695cbb6 ("drivers: iio: chemical: Add support for Sensirion SCD4x CO2 sensor")
Signed-off-by: Fiona Klute <fiona.klute@gmx.de>
---
 drivers/iio/chemical/scd4x.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/chemical/scd4x.c b/drivers/iio/chemical/scd4x.c
index 8859f89fb2a94..0fd839176e264 100644
--- a/drivers/iio/chemical/scd4x.c
+++ b/drivers/iio/chemical/scd4x.c
@@ -584,7 +584,7 @@ static const struct iio_chan_spec scd4x_channels[] = {
 			.sign = 'u',
 			.realbits = 16,
 			.storagebits = 16,
-			.endianness = IIO_BE,
+			.endianness = IIO_CPU,
 		},
 	},
 	{
@@ -599,7 +599,7 @@ static const struct iio_chan_spec scd4x_channels[] = {
 			.sign = 'u',
 			.realbits = 16,
 			.storagebits = 16,
-			.endianness = IIO_BE,
+			.endianness = IIO_CPU,
 		},
 	},
 	{
@@ -612,7 +612,7 @@ static const struct iio_chan_spec scd4x_channels[] = {
 			.sign = 'u',
 			.realbits = 16,
 			.storagebits = 16,
-			.endianness = IIO_BE,
+			.endianness = IIO_CPU,
 		},
 	},
 };
-- 
2.51.0

Re: [PATCH] iio: chemical: scd4x: fix reported channel endianness
Posted by David Lechner 1 month, 3 weeks ago
On 12/13/25 10:32 AM, Fiona Klute wrote:
> The driver converts values read from the sensor from BE to CPU
> endianness in scd4x_read_meas(). The result is then pushed into the
> buffer in scd4x_trigger_handler(), so on LE architectures parsing the
> buffer using the reported BE type gave wrong results.
> 
> scd4x_read_raw() which provides sysfs *_raw values is not affected, it
> used the values returned by scd4x_read_meas() without further
> conversion.
> 
> Fixes: 49d22b695cbb6 ("drivers: iio: chemical: Add support for Sensirion SCD4x CO2 sensor")
> Signed-off-by: Fiona Klute <fiona.klute@gmx.de>
> ---
Reviewed-by: David Lechner <dlechner@baylibre.com>
Re: [PATCH] iio: chemical: scd4x: fix reported channel endianness
Posted by Jonathan Cameron 1 month, 1 week ago
On Mon, 15 Dec 2025 10:41:04 -0600
David Lechner <dlechner@baylibre.com> wrote:

> On 12/13/25 10:32 AM, Fiona Klute wrote:
> > The driver converts values read from the sensor from BE to CPU
> > endianness in scd4x_read_meas(). The result is then pushed into the
> > buffer in scd4x_trigger_handler(), so on LE architectures parsing the
> > buffer using the reported BE type gave wrong results.
> > 
> > scd4x_read_raw() which provides sysfs *_raw values is not affected, it
> > used the values returned by scd4x_read_meas() without further
> > conversion.
> > 
> > Fixes: 49d22b695cbb6 ("drivers: iio: chemical: Add support for Sensirion SCD4x CO2 sensor")
> > Signed-off-by: Fiona Klute <fiona.klute@gmx.de>
> > ---  
> Reviewed-by: David Lechner <dlechner@baylibre.com>
> 
> 

Oops. Seems I queued this up but never replied to say I had done so
(or updated patchwork). This is on the fixes-togreg branch of iio.git.

Thanks,

Jonathan