openbmc.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* Looking for clarification on sysfs IIO devices, do _raw devices require both _offset and _scale?
@ 2021-09-08 22:10 Bruce Mitchell
  2021-09-09  7:12 ` Lars-Peter Clausen
  0 siblings, 1 reply; 3+ messages in thread
From: Bruce Mitchell @ 2021-09-08 22:10 UTC (permalink / raw)
  To: linux-iio; +Cc: openbmc, Ed Tanous, Ed Tanous

In reference to:
https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-iio

I have Temperature, Pressure, and Humidity IIO sensors.
IIO _raw devices look like this on sysfs:
   this happens to be a SI7020 type device with 2 sensors
     /sys/bus/iio/devices/iio:device0/in_humidityrelative_offset
     /sys/bus/iio/devices/iio:device0/in_humidityrelative_raw
     /sys/bus/iio/devices/iio:device0/in_humidityrelative_scale
     /sys/bus/iio/devices/iio:device0/in_temp_offset
     /sys/bus/iio/devices/iio:device0/in_temp_raw
     /sys/bus/iio/devices/iio:device0/in_temp_scale

Other IIO _input devices look like this on sysfs:
   this happens to be a DPS310 device with 2 sensors
      /sys/bus/iio/devices/iio:device1/in_temp_input
      /sys/bus/iio/devices/iio:device1/in_pressure_input

As I read it if the IIO device was an _input type on sysfs,
just read it (and possibly scale it for units).

But if the IIO device was a _raw type on sysfs my understanding
is that it must be accompanied by a _offset and a _scale for
at least temperature, pressure, humidity, voltage, and current
sensors.
Is that correct?

Further for any IIO device that is a _raw type on sysfs is it
required to be accompanied by a _offset and a _scale as well?


Thank you!

-- 
Bruce

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Looking for clarification on sysfs IIO devices, do _raw devices require both _offset and _scale?
  2021-09-08 22:10 Looking for clarification on sysfs IIO devices, do _raw devices require both _offset and _scale? Bruce Mitchell
@ 2021-09-09  7:12 ` Lars-Peter Clausen
  2021-09-09 13:49   ` Bruce Mitchell
  0 siblings, 1 reply; 3+ messages in thread
From: Lars-Peter Clausen @ 2021-09-09  7:12 UTC (permalink / raw)
  To: Bruce Mitchell, linux-iio; +Cc: openbmc, Ed Tanous, Ed Tanous

On 9/9/21 12:10 AM, Bruce Mitchell wrote:
> In reference to:
> https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-iio
>
> I have Temperature, Pressure, and Humidity IIO sensors.
> IIO _raw devices look like this on sysfs:
>   this happens to be a SI7020 type device with 2 sensors
>     /sys/bus/iio/devices/iio:device0/in_humidityrelative_offset
>     /sys/bus/iio/devices/iio:device0/in_humidityrelative_raw
>     /sys/bus/iio/devices/iio:device0/in_humidityrelative_scale
>     /sys/bus/iio/devices/iio:device0/in_temp_offset
>     /sys/bus/iio/devices/iio:device0/in_temp_raw
>     /sys/bus/iio/devices/iio:device0/in_temp_scale
>
> Other IIO _input devices look like this on sysfs:
>   this happens to be a DPS310 device with 2 sensors
>      /sys/bus/iio/devices/iio:device1/in_temp_input
>      /sys/bus/iio/devices/iio:device1/in_pressure_input
>
> As I read it if the IIO device was an _input type on sysfs,
> just read it (and possibly scale it for units).
>
> But if the IIO device was a _raw type on sysfs my understanding
> is that it must be accompanied by a _offset and a _scale for
> at least temperature, pressure, humidity, voltage, and current
> sensors.
> Is that correct?
>
> Further for any IIO device that is a _raw type on sysfs is it
> required to be accompanied by a _offset and a _scale as well?

Hi,

That sounds about right.

The _input name is historically and comes from hwmon framework. It means 
that the data has been processed by the kernel driver and converted to 
the right SI units for the channel type. This is usually used for sensor 
that have a non-linear transfer function. `raw` on the other hand means 
the data is just as it is reported by the hardware. The reason for this 
is that conversion to SI units is often not lossless, since we have 
finite precision. So it is up to the application to decide whether it 
wants to work on the raw data or how it wants to round the converted data.

`input` attributes never have scale and offset since they are already in 
the right unit. For raw scale and offset are optional. If scale does not 
exist assume it is 1, if offset does not exist assume it is 0. You'll 
rarely see a device with raw attributes without scale, but there are 
quite a few without offset.

- Lars



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Looking for clarification on sysfs IIO devices, do _raw devices require both _offset and _scale?
  2021-09-09  7:12 ` Lars-Peter Clausen
@ 2021-09-09 13:49   ` Bruce Mitchell
  0 siblings, 0 replies; 3+ messages in thread
From: Bruce Mitchell @ 2021-09-09 13:49 UTC (permalink / raw)
  To: Lars-Peter Clausen, linux-iio; +Cc: openbmc, Ed Tanous, Ed Tanous

On 9/9/2021 00:12, Lars-Peter Clausen wrote:
> On 9/9/21 12:10 AM, Bruce Mitchell wrote:
>> In reference to:
>> https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-iio
>>
>> I have Temperature, Pressure, and Humidity IIO sensors.
>> IIO _raw devices look like this on sysfs:
>>   this happens to be a SI7020 type device with 2 sensors
>>     /sys/bus/iio/devices/iio:device0/in_humidityrelative_offset
>>     /sys/bus/iio/devices/iio:device0/in_humidityrelative_raw
>>     /sys/bus/iio/devices/iio:device0/in_humidityrelative_scale
>>     /sys/bus/iio/devices/iio:device0/in_temp_offset
>>     /sys/bus/iio/devices/iio:device0/in_temp_raw
>>     /sys/bus/iio/devices/iio:device0/in_temp_scale
>>
>> Other IIO _input devices look like this on sysfs:
>>   this happens to be a DPS310 device with 2 sensors
>>      /sys/bus/iio/devices/iio:device1/in_temp_input
>>      /sys/bus/iio/devices/iio:device1/in_pressure_input
>>
>> As I read it if the IIO device was an _input type on sysfs,
>> just read it (and possibly scale it for units).
>>
>> But if the IIO device was a _raw type on sysfs my understanding
>> is that it must be accompanied by a _offset and a _scale for
>> at least temperature, pressure, humidity, voltage, and current
>> sensors.
>> Is that correct?
>>
>> Further for any IIO device that is a _raw type on sysfs is it
>> required to be accompanied by a _offset and a _scale as well?
> 
> Hi,
> 
> That sounds about right.
> 
> The _input name is historically and comes from hwmon framework. It means 
> that the data has been processed by the kernel driver and converted to 
> the right SI units for the channel type. This is usually used for sensor 
> that have a non-linear transfer function. `raw` on the other hand means 
> the data is just as it is reported by the hardware. The reason for this 
> is that conversion to SI units is often not lossless, since we have 
> finite precision. So it is up to the application to decide whether it 
> wants to work on the raw data or how it wants to round the converted data.
> 
> `input` attributes never have scale and offset since they are already in 
> the right unit. For raw scale and offset are optional. If scale does not 
> exist assume it is 1, if offset does not exist assume it is 0. You'll 
> rarely see a device with raw attributes without scale, but there are 
> quite a few without offset.
> 
> - Lars
> 
> 

Thank you Lars!

-- 
Bruce


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-09-13  0:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-08 22:10 Looking for clarification on sysfs IIO devices, do _raw devices require both _offset and _scale? Bruce Mitchell
2021-09-09  7:12 ` Lars-Peter Clausen
2021-09-09 13:49   ` Bruce Mitchell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).