| Overview of IIO |
| |
| The Industrial I/O subsystem is intended to provide support for devices |
| that in some sense are analog to digital converters (ADCs). As many |
| actual devices combine some ADCs with digital to analog converters |
| (DACs) that functionality is also supported. |
| |
| The aim is to fill the gap between the somewhat similar hwmon and |
| input subsystems. Hwmon is very much directed at low sample rate |
| sensors used in applications such as fan speed control and temperature |
| measurement. Input is, as its name suggests focused on input |
| devices. In some cases there is considerable overlap between these and |
| IIO. |
| |
| A typical device falling into this category would be connected via SPI |
| or I2C. |
| |
| Functionality of IIO |
| |
| * Basic device registration and handling. This is very similar to |
| hwmon with simple polled access to device channels via sysfs. |
| |
| * Event chrdevs. These are similar to input in that they provide a |
| route to user space for hardware triggered events. Such events include |
| threshold detectors, free-fall detectors and more complex action |
| detection. The events themselves are currently very simple with |
| merely an event code and a timestamp. Any data associated with the |
| event must be accessed via polling. |
| |
| Note: A given device may have one or more event channel. These events are |
| turned on or off (if possible) via sysfs interfaces. |
| |
| * Hardware buffer support. Some recent sensors have included |
| fifo / ring buffers on the sensor chip. These greatly reduce the load |
| on the host CPU by buffering relatively large numbers of data samples |
| based on an internal sampling clock. Examples include VTI SCA3000 |
| series and Analog Device ADXL345 accelerometers. Each buffer supports |
| polling to establish when data is available. |
| |
| * Trigger and software buffer support. In many data analysis |
| applications it it useful to be able to capture data based on some |
| external signal (trigger). These triggers might be a data ready |
| signal, a gpio line connected to some external system or an on |
| processor periodic interrupt. A single trigger may initialize data |
| capture or reading from a number of sensors. These triggers are |
| used in IIO to fill software buffers acting in a very similar |
| fashion to the hardware buffers described above. |
| |
| Other documentation: |
| |
| device.txt - elements of a typical device driver. |
| |
| trigger.txt - elements of a typical trigger driver. |
| |
| ring.txt - additional elements required for buffer support. |
| |
| sysfs-bus-iio - abi documentation file. |