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! ~~