aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2015-05-22 12:17:38 -0400
committerJonathan Cameron <jic23@kernel.org>2015-05-23 05:49:55 -0400
commit1ce87f21edf6a071a7cc6bc77d628d7c7650d0d8 (patch)
treee21dccd1d0abee6c525407f91f60e7141fcd1c6a
parent2f4adaeebfb6f30fd6cd7a1a1dffe31f8e93a4c9 (diff)
iio: Add I/Q modifiers
I/Q modifiers can be used to denote signals which are represented by a in-phase and a quadrature component. The ABI documentation describes the I and Q modifiers for current and voltage channels for now as those will be the most likely users. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio46
-rw-r--r--drivers/iio/industrialio-core.c2
-rw-r--r--include/uapi/linux/iio/types.h2
3 files changed, 50 insertions, 0 deletions
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
index f66262c64e2f..bbed111c31b4 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -71,6 +71,8 @@ Description:
71 71
72What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_raw 72What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_raw
73What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw 73What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw
74What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_raw
75What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_raw
74KernelVersion: 2.6.35 76KernelVersion: 2.6.35
75Contact: linux-iio@vger.kernel.org 77Contact: linux-iio@vger.kernel.org
76Description: 78Description:
@@ -81,6 +83,11 @@ Description:
81 unique to allow association with event codes. Units after 83 unique to allow association with event codes. Units after
82 application of scale and offset are millivolts. 84 application of scale and offset are millivolts.
83 85
86 Channels with 'i' and 'q' modifiers always exist in pairs and both
87 channels refer to the same signal. The 'i' channel contains the in-phase
88 component of the signal while the 'q' channel contains the quadrature
89 component.
90
84What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw 91What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw
85KernelVersion: 2.6.35 92KernelVersion: 2.6.35
86Contact: linux-iio@vger.kernel.org 93Contact: linux-iio@vger.kernel.org
@@ -246,8 +253,16 @@ What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset
246What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset 253What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset
247What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset 254What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset
248What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset 255What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset
256What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_offset
257What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_offset
258What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_offset
259What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_offset
249What: /sys/bus/iio/devices/iio:deviceX/in_currentY_offset 260What: /sys/bus/iio/devices/iio:deviceX/in_currentY_offset
250What: /sys/bus/iio/devices/iio:deviceX/in_current_offset 261What: /sys/bus/iio/devices/iio:deviceX/in_current_offset
262What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_offset
263What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_offset
264What: /sys/bus/iio/devices/iio:deviceX/in_current_q_offset
265What: /sys/bus/iio/devices/iio:deviceX/in_current_i_offset
251What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset 266What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset
252What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset 267What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset
253What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset 268What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset
@@ -273,14 +288,22 @@ Description:
273 to the _raw output. 288 to the _raw output.
274 289
275What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale 290What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale
291What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_scale
292What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_scale
276What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale 293What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale
277What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale 294What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale
295What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_scale
296What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_scale
278What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale 297What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale
279What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale 298What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale
280What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale 299What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale
281What: /sys/bus/iio/devices/iio:deviceX/in_currentY_scale 300What: /sys/bus/iio/devices/iio:deviceX/in_currentY_scale
282What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_scale 301What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_scale
283What: /sys/bus/iio/devices/iio:deviceX/in_current_scale 302What: /sys/bus/iio/devices/iio:deviceX/in_current_scale
303What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_scale
304What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_scale
305What: /sys/bus/iio/devices/iio:deviceX/in_current_i_scale
306What: /sys/bus/iio/devices/iio:deviceX/in_current_q_scale
284What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale 307What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale
285What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale 308What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale
286What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale 309What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale
@@ -328,6 +351,10 @@ Description:
328 351
329What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale 352What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale
330What /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale 353What /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale
354What /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_calibscale
355What /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_calibscale
356What /sys/bus/iio/devices/iio:deviceX/in_voltage_i_calibscale
357What /sys/bus/iio/devices/iio:deviceX/in_voltage_q_calibscale
331What /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale 358What /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale
332What /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale 359What /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale
333What /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale 360What /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale
@@ -1046,6 +1073,10 @@ What: /sys/.../iio:deviceX/scan_elements/in_timestamp_en
1046What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en 1073What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en
1047What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en 1074What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en
1048What: /sys/.../iio:deviceX/scan_elements/in_voltageY-voltageZ_en 1075What: /sys/.../iio:deviceX/scan_elements/in_voltageY-voltageZ_en
1076What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_en
1077What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_en
1078What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_en
1079What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_en
1049What: /sys/.../iio:deviceX/scan_elements/in_incli_x_en 1080What: /sys/.../iio:deviceX/scan_elements/in_incli_x_en
1050What: /sys/.../iio:deviceX/scan_elements/in_incli_y_en 1081What: /sys/.../iio:deviceX/scan_elements/in_incli_y_en
1051What: /sys/.../iio:deviceX/scan_elements/in_pressureY_en 1082What: /sys/.../iio:deviceX/scan_elements/in_pressureY_en
@@ -1064,6 +1095,10 @@ What: /sys/.../iio:deviceX/scan_elements/in_incli_type
1064What: /sys/.../iio:deviceX/scan_elements/in_voltageY_type 1095What: /sys/.../iio:deviceX/scan_elements/in_voltageY_type
1065What: /sys/.../iio:deviceX/scan_elements/in_voltage_type 1096What: /sys/.../iio:deviceX/scan_elements/in_voltage_type
1066What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_type 1097What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_type
1098What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_type
1099What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_type
1100What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_type
1101What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_type
1067What: /sys/.../iio:deviceX/scan_elements/in_timestamp_type 1102What: /sys/.../iio:deviceX/scan_elements/in_timestamp_type
1068What: /sys/.../iio:deviceX/scan_elements/in_pressureY_type 1103What: /sys/.../iio:deviceX/scan_elements/in_pressureY_type
1069What: /sys/.../iio:deviceX/scan_elements/in_pressure_type 1104What: /sys/.../iio:deviceX/scan_elements/in_pressure_type
@@ -1101,6 +1136,10 @@ Description:
1101 1136
1102What: /sys/.../iio:deviceX/scan_elements/in_voltageY_index 1137What: /sys/.../iio:deviceX/scan_elements/in_voltageY_index
1103What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_index 1138What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_index
1139What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_index
1140What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_index
1141What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_index
1142What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_index
1104What: /sys/.../iio:deviceX/scan_elements/in_accel_x_index 1143What: /sys/.../iio:deviceX/scan_elements/in_accel_x_index
1105What: /sys/.../iio:deviceX/scan_elements/in_accel_y_index 1144What: /sys/.../iio:deviceX/scan_elements/in_accel_y_index
1106What: /sys/.../iio:deviceX/scan_elements/in_accel_z_index 1145What: /sys/.../iio:deviceX/scan_elements/in_accel_z_index
@@ -1260,6 +1299,8 @@ Description:
1260 or without compensation from tilt sensors. 1299 or without compensation from tilt sensors.
1261 1300
1262What: /sys/bus/iio/devices/iio:deviceX/in_currentX_raw 1301What: /sys/bus/iio/devices/iio:deviceX/in_currentX_raw
1302What: /sys/bus/iio/devices/iio:deviceX/in_currentX_i_raw
1303What: /sys/bus/iio/devices/iio:deviceX/in_currentX_q_raw
1263KernelVersion: 3.18 1304KernelVersion: 3.18
1264Contact: linux-iio@vger.kernel.org 1305Contact: linux-iio@vger.kernel.org
1265Description: 1306Description:
@@ -1268,6 +1309,11 @@ Description:
1268 present, output should be considered as processed with the 1309 present, output should be considered as processed with the
1269 unit in milliamps. 1310 unit in milliamps.
1270 1311
1312 Channels with 'i' and 'q' modifiers always exist in pairs and both
1313 channels refer to the same signal. The 'i' channel contains the in-phase
1314 component of the signal while the 'q' channel contains the quadrature
1315 component.
1316
1271What: /sys/.../iio:deviceX/in_energy_en 1317What: /sys/.../iio:deviceX/in_energy_en
1272What: /sys/.../iio:deviceX/in_distance_en 1318What: /sys/.../iio:deviceX/in_distance_en
1273What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_en 1319What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_en
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 9688a88b6198..3524b0de8721 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -101,6 +101,8 @@ static const char * const iio_modifier_names[] = {
101 [IIO_MOD_WALKING] = "walking", 101 [IIO_MOD_WALKING] = "walking",
102 [IIO_MOD_STILL] = "still", 102 [IIO_MOD_STILL] = "still",
103 [IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z] = "sqrt(x^2+y^2+z^2)", 103 [IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z] = "sqrt(x^2+y^2+z^2)",
104 [IIO_MOD_I] = "i",
105 [IIO_MOD_Q] = "q",
104}; 106};
105 107
106/* relies on pairs of these shared then separate */ 108/* relies on pairs of these shared then separate */
diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
index 5c4601935005..2f8b11722204 100644
--- a/include/uapi/linux/iio/types.h
+++ b/include/uapi/linux/iio/types.h
@@ -70,6 +70,8 @@ enum iio_modifier {
70 IIO_MOD_WALKING, 70 IIO_MOD_WALKING,
71 IIO_MOD_STILL, 71 IIO_MOD_STILL,
72 IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z, 72 IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
73 IIO_MOD_I,
74 IIO_MOD_Q,
73}; 75};
74 76
75enum iio_event_type { 77enum iio_event_type {