While implementing event scaling for the ADXL345 to match
the IIO ABI documentation, I noticed that IIO_EV_INFO_SCALE
was missing from the internal enum iio_event_info.
Add the constant and the "scale" sysfs string
to allow drivers to expose these attributes correctly.
Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com>
---
drivers/iio/industrialio-event.c | 1 +
include/linux/iio/types.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c
index 06295cfc2da8..5096baf233f0 100644
--- a/drivers/iio/industrialio-event.c
+++ b/drivers/iio/industrialio-event.c
@@ -256,6 +256,7 @@ static const char * const iio_ev_info_text[] = {
[IIO_EV_INFO_TAP2_MIN_DELAY] = "tap2_min_delay",
[IIO_EV_INFO_RUNNING_PERIOD] = "runningperiod",
[IIO_EV_INFO_RUNNING_COUNT] = "runningcount",
+ [IIO_EV_INFO_SCALE] = "scale",
};
static enum iio_event_direction iio_ev_attr_dir(struct iio_dev_attr *attr)
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
index 34eebad12d2c..4e3099defc1d 100644
--- a/include/linux/iio/types.h
+++ b/include/linux/iio/types.h
@@ -21,6 +21,7 @@ enum iio_event_info {
IIO_EV_INFO_TAP2_MIN_DELAY,
IIO_EV_INFO_RUNNING_PERIOD,
IIO_EV_INFO_RUNNING_COUNT,
+ IIO_EV_INFO_SCALE,
};
#define IIO_VAL_INT 1
--
2.47.3
On 2/1/26 12:33 PM, Taha Ed-Dafili wrote:
> While implementing event scaling for the ADXL345 to match
> the IIO ABI documentation, I noticed that IIO_EV_INFO_SCALE
> was missing from the internal enum iio_event_info.
>
> Add the constant and the "scale" sysfs string
> to allow drivers to expose these attributes correctly.
I think this could be worded better. The enum member isn't really "missing".
Are there actually any users of these attributes that have implemented
it manually? Or is this something just in the docs but not actually ever
used? I didn't look very hard, but I didn't find any drivers with these
attributes.
>
> Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com>
> ---
> drivers/iio/industrialio-event.c | 1 +
> include/linux/iio/types.h | 1 +
> 2 files changed, 2 insertions(+)
>
> diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c
> index 06295cfc2da8..5096baf233f0 100644
> --- a/drivers/iio/industrialio-event.c
> +++ b/drivers/iio/industrialio-event.c
> @@ -256,6 +256,7 @@ static const char * const iio_ev_info_text[] = {
> [IIO_EV_INFO_TAP2_MIN_DELAY] = "tap2_min_delay",
> [IIO_EV_INFO_RUNNING_PERIOD] = "runningperiod",
> [IIO_EV_INFO_RUNNING_COUNT] = "runningcount",
> + [IIO_EV_INFO_SCALE] = "scale",
> };
>
> static enum iio_event_direction iio_ev_attr_dir(struct iio_dev_attr *attr)
> diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
> index 34eebad12d2c..4e3099defc1d 100644
> --- a/include/linux/iio/types.h
> +++ b/include/linux/iio/types.h
> @@ -21,6 +21,7 @@ enum iio_event_info {
> IIO_EV_INFO_TAP2_MIN_DELAY,
> IIO_EV_INFO_RUNNING_PERIOD,
> IIO_EV_INFO_RUNNING_COUNT,
> + IIO_EV_INFO_SCALE,
> };
>
> #define IIO_VAL_INT 1
Hi David, Thanks for the feedback. You're right—"missing" was poor wording; I’ll rephrase to "implement support in the core" for v3 to reflect that this is an infrastructure addition. Regarding existing users, the current lack of IIO_EV_INFO_SCALE in the core forces developers into manual workarounds to stay ABI-compliant. For instance, in drivers/iio/accel/mma8452.c, the developer used IIO_CONST_ATTR_NAMED to create a manual in_accel_scale and linked it via .event_attrs. This approach is static and bypasses the standard event_spec infrastructure. My goal with adding IIO_EV_INFO_SCALE is to provide a standard path to report these scales dynamically through read_event_value(), ensuring ABI compliance without manual sysfs boilerplate. Does this core infrastructure approach seem like the right architectural path, or would you prefer I stick to a driver-level attribute for the ADXL345? Regardless of the path chosen, I will address your other comments in the next version: I'll fix the "in scale" typo and add the new scale entries to the adxl345 documentation table. Thanks, Taha
On 2/2/26 9:19 AM, Taha Ed-Dafili wrote: > Hi David, > > Thanks for the feedback. You're right—"missing" was poor wording; I’ll > rephrase to "implement support in the core" for v3 to reflect that this > is an infrastructure addition. > > Regarding existing users, the current lack of IIO_EV_INFO_SCALE in the core > forces developers into manual workarounds to stay ABI-compliant. For > instance, in drivers/iio/accel/mma8452.c, the developer used > IIO_CONST_ATTR_NAMED to create a manual in_accel_scale and linked it via > .event_attrs. This approach is static and bypasses the standard event_spec > infrastructure. OK, so it looks like there is just one existing user of any events/*_scale attribute then. That would explain why there isn't a IIO_EV_INFO_SCALE. It just isn't very common. > > My goal with adding IIO_EV_INFO_SCALE is to provide a standard path to > report these scales dynamically through read_event_value(), ensuring ABI > compliance without manual sysfs boilerplate. > > Does this core infrastructure approach seem like the right architectural > path, or would you prefer I stick to a driver-level attribute for the > ADXL345? Regardless of the path chosen, I will address your other comments > in the next version: I'll fix the "in scale" typo and add the new scale > entries to the adxl345 documentation table. If we think there will be more users of this and we want to make it more discoverable, then adding IIO_EV_INFO_SCALE seems useful. I would wait until Jonathan weighs in with his opinion before taking action though. > > Thanks, > Taha
© 2016 - 2026 Red Hat, Inc.