[PATCH v6 6/7] iio: ABI: Add custom data type
From: Francesco Lavra
Date: Wed Feb 25 2026 - 05:10:36 EST
This type is used when the data received from or sent to a device cannot be
identified with a standard type and must be processed by custom userspace.
Any driver using the custom type must provide a driver-specific document
that explains what the data represents and how it is to be interpreted by
userspace.
Signed-off-by: Francesco Lavra <flavra@xxxxxxxxxxxx>
---
Documentation/ABI/testing/sysfs-bus-iio | 19 +++++++++++++++++++
drivers/iio/industrialio-core.c | 1 +
include/uapi/linux/iio/types.h | 1 +
3 files changed, 21 insertions(+)
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
index 61961bca4dce..2e45e54f54eb 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -450,6 +450,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_magn_offset
What: /sys/bus/iio/devices/iio:deviceX/in_rot_offset
What: /sys/bus/iio/devices/iio:deviceX/in_angl_offset
What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_offset
+What: /sys/bus/iio/devices/iio:deviceX/in_custom_offset
+What: /sys/bus/iio/devices/iio:deviceX/in_customY_offset
KernelVersion: 2.6.35
Contact: linux-iio@xxxxxxxxxxxxxxx
Description:
@@ -507,6 +509,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_intensity_red_scale
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_green_scale
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_blue_scale
What: /sys/bus/iio/devices/iio:deviceX/in_concentration_co2_scale
+What: /sys/bus/iio/devices/iio:deviceX/in_custom_scale
+What: /sys/bus/iio/devices/iio:deviceX/in_customY_scale
KernelVersion: 2.6.35
Contact: linux-iio@xxxxxxxxxxxxxxx
Description:
@@ -1486,6 +1490,8 @@ What: /sys/.../iio:deviceX/bufferY/in_pressureY_en
What: /sys/.../iio:deviceX/bufferY/in_pressure_en
What: /sys/.../iio:deviceX/bufferY/in_rot_quaternion_en
What: /sys/.../iio:deviceX/bufferY/in_proximity_en
+What: /sys/.../iio:deviceX/bufferY/in_custom_en
+What: /sys/.../iio:deviceX/bufferY/in_customZ_en
KernelVersion: 5.11
Contact: linux-iio@xxxxxxxxxxxxxxx
Description:
@@ -1505,6 +1511,8 @@ What: /sys/.../iio:deviceX/bufferY/in_pressureY_type
What: /sys/.../iio:deviceX/bufferY/in_pressure_type
What: /sys/.../iio:deviceX/bufferY/in_rot_quaternion_type
What: /sys/.../iio:deviceX/bufferY/in_proximity_type
+What: /sys/.../iio:deviceX/bufferY/in_custom_type
+What: /sys/.../iio:deviceX/bufferY/in_customZ_type
KernelVersion: 5.11
Contact: linux-iio@xxxxxxxxxxxxxxx
Description:
@@ -1566,6 +1574,8 @@ What: /sys/.../iio:deviceX/bufferY/in_pressureY_index
What: /sys/.../iio:deviceX/bufferY/in_pressure_index
What: /sys/.../iio:deviceX/bufferY/in_rot_quaternion_index
What: /sys/.../iio:deviceX/bufferY/in_proximity_index
+What: /sys/.../iio:deviceX/bufferY/in_custom_index
+What: /sys/.../iio:deviceX/bufferY/in_customZ_index
KernelVersion: 5.11
Contact: linux-iio@xxxxxxxxxxxxxxx
Description:
@@ -2393,6 +2403,15 @@ Description:
The x and y light color coordinate on the CIE 1931 chromaticity
diagram.
+What: /sys/bus/iio/devices/iio:deviceX/in_custom_raw
+What: /sys/bus/iio/devices/iio:deviceX/in_customY_raw
+KernelVersion: 7.1
+Contact: linux-iio@xxxxxxxxxxxxxxx
+Description:
+ Custom input value, whose type is driver-specific and is described
+ in a separate document. It can have a modifier Y, in which case it
+ is a measuremement from channel Y.
+
What: /sys/bus/iio/devices/iio:deviceX/events/in_altvoltageY_mag_either_label
What: /sys/bus/iio/devices/iio:deviceX/events/in_altvoltageY_mag_rising_label
What: /sys/bus/iio/devices/iio:deviceX/events/in_altvoltageY_thresh_falling_label
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 22eefd048ba9..dd179e3b0fb7 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -98,6 +98,7 @@ static const char * const iio_chan_type_name_spec[] = {
[IIO_CHROMATICITY] = "chromaticity",
[IIO_ATTENTION] = "attention",
[IIO_ALTCURRENT] = "altcurrent",
+ [IIO_CUSTOM] = "custom"
};
static const char * const iio_modifier_names[] = {
diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
index 6d269b844271..47fefcdd693c 100644
--- a/include/uapi/linux/iio/types.h
+++ b/include/uapi/linux/iio/types.h
@@ -53,6 +53,7 @@ enum iio_chan_type {
IIO_CHROMATICITY,
IIO_ATTENTION,
IIO_ALTCURRENT,
+ IIO_CUSTOM
};
enum iio_modifier {
--
2.39.5