Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Lars-Peter Clausen and committed by
Jonathan Cameron
1ce87f21 2f4adaee

+50
+46
Documentation/ABI/testing/sysfs-bus-iio
··· 71 71 72 72 What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_raw 73 73 What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw 74 + What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_raw 75 + What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_raw 74 76 KernelVersion: 2.6.35 75 77 Contact: linux-iio@vger.kernel.org 76 78 Description: ··· 82 80 versions may be used. The number must always be specified and 83 81 unique to allow association with event codes. Units after 84 82 application of scale and offset are millivolts. 83 + 84 + Channels with 'i' and 'q' modifiers always exist in pairs and both 85 + channels refer to the same signal. The 'i' channel contains the in-phase 86 + component of the signal while the 'q' channel contains the quadrature 87 + component. 85 88 86 89 What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw 87 90 KernelVersion: 2.6.35 ··· 253 246 What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset 254 247 What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset 255 248 What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset 249 + What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_offset 250 + What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_offset 251 + What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_offset 252 + What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_offset 256 253 What: /sys/bus/iio/devices/iio:deviceX/in_currentY_offset 257 254 What: /sys/bus/iio/devices/iio:deviceX/in_current_offset 255 + What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_offset 256 + What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_offset 257 + What: /sys/bus/iio/devices/iio:deviceX/in_current_q_offset 258 + What: /sys/bus/iio/devices/iio:deviceX/in_current_i_offset 258 259 What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset 259 260 What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset 260 261 What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset ··· 288 273 to the _raw output. 289 274 290 275 What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_scale 276 + What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_scale 277 + What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_scale 291 278 What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_scale 292 279 What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale 280 + What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_scale 281 + What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_scale 293 282 What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale 294 283 What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale 295 284 What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale 296 285 What: /sys/bus/iio/devices/iio:deviceX/in_currentY_scale 297 286 What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_scale 298 287 What: /sys/bus/iio/devices/iio:deviceX/in_current_scale 288 + What: /sys/bus/iio/devices/iio:deviceX/in_currentY_i_scale 289 + What: /sys/bus/iio/devices/iio:deviceX/in_currentY_q_scale 290 + What: /sys/bus/iio/devices/iio:deviceX/in_current_i_scale 291 + What: /sys/bus/iio/devices/iio:deviceX/in_current_q_scale 299 292 What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale 300 293 What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale 301 294 What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale ··· 351 328 352 329 What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale 353 330 What /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale 331 + What /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_calibscale 332 + What /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_calibscale 333 + What /sys/bus/iio/devices/iio:deviceX/in_voltage_i_calibscale 334 + What /sys/bus/iio/devices/iio:deviceX/in_voltage_q_calibscale 354 335 What /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale 355 336 What /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale 356 337 What /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale ··· 1073 1046 What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en 1074 1047 What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en 1075 1048 What: /sys/.../iio:deviceX/scan_elements/in_voltageY-voltageZ_en 1049 + What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_en 1050 + What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_en 1051 + What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_en 1052 + What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_en 1076 1053 What: /sys/.../iio:deviceX/scan_elements/in_incli_x_en 1077 1054 What: /sys/.../iio:deviceX/scan_elements/in_incli_y_en 1078 1055 What: /sys/.../iio:deviceX/scan_elements/in_pressureY_en ··· 1095 1064 What: /sys/.../iio:deviceX/scan_elements/in_voltageY_type 1096 1065 What: /sys/.../iio:deviceX/scan_elements/in_voltage_type 1097 1066 What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_type 1067 + What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_type 1068 + What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_type 1069 + What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_type 1070 + What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_type 1098 1071 What: /sys/.../iio:deviceX/scan_elements/in_timestamp_type 1099 1072 What: /sys/.../iio:deviceX/scan_elements/in_pressureY_type 1100 1073 What: /sys/.../iio:deviceX/scan_elements/in_pressure_type ··· 1136 1101 1137 1102 What: /sys/.../iio:deviceX/scan_elements/in_voltageY_index 1138 1103 What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_index 1104 + What: /sys/.../iio:deviceX/scan_elements/in_voltageY_i_index 1105 + What: /sys/.../iio:deviceX/scan_elements/in_voltageY_q_index 1106 + What: /sys/.../iio:deviceX/scan_elements/in_voltage_i_index 1107 + What: /sys/.../iio:deviceX/scan_elements/in_voltage_q_index 1139 1108 What: /sys/.../iio:deviceX/scan_elements/in_accel_x_index 1140 1109 What: /sys/.../iio:deviceX/scan_elements/in_accel_y_index 1141 1110 What: /sys/.../iio:deviceX/scan_elements/in_accel_z_index ··· 1299 1260 or without compensation from tilt sensors. 1300 1261 1301 1262 What: /sys/bus/iio/devices/iio:deviceX/in_currentX_raw 1263 + What: /sys/bus/iio/devices/iio:deviceX/in_currentX_i_raw 1264 + What: /sys/bus/iio/devices/iio:deviceX/in_currentX_q_raw 1302 1265 KernelVersion: 3.18 1303 1266 Contact: linux-iio@vger.kernel.org 1304 1267 Description: ··· 1308 1267 after application of scale and offset. If no offset or scale is 1309 1268 present, output should be considered as processed with the 1310 1269 unit in milliamps. 1270 + 1271 + Channels with 'i' and 'q' modifiers always exist in pairs and both 1272 + channels refer to the same signal. The 'i' channel contains the in-phase 1273 + component of the signal while the 'q' channel contains the quadrature 1274 + component. 1311 1275 1312 1276 What: /sys/.../iio:deviceX/in_energy_en 1313 1277 What: /sys/.../iio:deviceX/in_distance_en
+2
drivers/iio/industrialio-core.c
··· 101 101 [IIO_MOD_WALKING] = "walking", 102 102 [IIO_MOD_STILL] = "still", 103 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 108 /* relies on pairs of these shared then separate */
+2
include/uapi/linux/iio/types.h
··· 70 70 IIO_MOD_WALKING, 71 71 IIO_MOD_STILL, 72 72 IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z, 73 + IIO_MOD_I, 74 + IIO_MOD_Q, 73 75 }; 74 76 75 77 enum iio_event_type {