c57f1ba732
This needs considerably more work, all comments / suggestions welcomed. Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
63 lines
2.6 KiB
Plaintext
63 lines
2.6 KiB
Plaintext
Overview of IIO
|
|
|
|
The Industrial I/O subsytem is intended to provide support for devices
|
|
that in some sense are analog to digital convertors (ADCs). As many
|
|
actual devices combine some ADCs with digital to analog convertors
|
|
(DACs) the intention is to add that functionality at a future date
|
|
(hence the name).
|
|
|
|
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 it's 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. They 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 ring 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 ring buffer
|
|
typically has an event chrdev (similar to the more general ones above)
|
|
to pass on events such as buffer 50% full and an access chrdev via
|
|
which the raw data it self may be read back.
|
|
|
|
* Trigger and software ring 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 many initialize data
|
|
capture or reading from a number of sensors. These triggers are
|
|
used in iio to fill software ring buffers acting in a very similar
|
|
fashion to the hardware buffers described above.
|
|
|
|
Other documentation:
|
|
|
|
userspace.txt - overview of ring buffer reading from userspace
|
|
|
|
device.txt - elemennts of a typical device driver.
|
|
|
|
trigger.txt - elements of a typical trigger driver.
|
|
|
|
ring.txt - additional elements required for ring buffer support
|
|
|
|
|
|
|