Re: [PATCH v2 5/6] iio: light: ROHM BU27034 Ambient Light Sensor

From: Matti Vaittinen
Date: Tue Mar 14 2023 - 05:39:32 EST


On 3/12/23 17:36, Jonathan Cameron wrote:
On Sun, 5 Mar 2023 14:22:51 +0200
Matti Vaittinen <mazziesaccount@xxxxxxxxx> wrote:

On 3/4/23 22:17, Jonathan Cameron wrote:
On Thu, 2 Mar 2023 12:58:59 +0200
Matti Vaittinen <mazziesaccount@xxxxxxxxx> wrote:

//snip

+static const struct iio_chan_spec bu27034_channels[] = {
+ {
+ .type = IIO_LIGHT,
+ .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED) |
+ BIT(IIO_CHAN_INFO_SCALE),

What is this scale for?

The scale is to inform users that we return data using milli lux.

Given the channel is computed from various different inputs, is there a
clear definition of how it is scaled? What does a write to it mean?

Nothing. writing anything else but milli lux scale fails with -EINVAL.

I guess I am doing something in an unusual way here :) Do you have a
suggestion for me?

Return data in lux? Or return it as INFO_RAW - thus making it clear
that the reading is not in expected units and a conversion must be
applied by userspace. SCALE is not applied to PROCESSED by userspace.


I just noticed a thing. I used the iio_generic_buffer to test the changes - and it got the channel values scaled to luxes even for the PROCESSED channel. So, it seems to me the iio_generic_buffer does apply the scale for PROCESSED channels too. I think that is slightly misleading. Oh, and this is not intended to be a complaint - just a report that there might be some room for an improvement :)

Yours,
-- Matti

--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~