Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / staging / iio / Documentation / overview.txt
1 Overview of IIO
2
3 The Industrial I/O subsystem is intended to provide support for devices
4 that in some sense are analog to digital converters (ADCs). As many
5 actual devices combine some ADCs with digital to analog converters
6 (DACs) that functionality is also supported.
7
8 The aim is to fill the gap between the somewhat similar hwmon and
9 input subsystems.  Hwmon is very much directed at low sample rate
10 sensors used in applications such as fan speed control and temperature
11 measurement.  Input is, as its name suggests focused on input
12 devices. In some cases there is considerable overlap between these and
13 IIO.
14
15 A typical device falling into this category would be connected via SPI
16 or I2C.
17
18 Functionality of IIO
19
20 * Basic device registration and handling. This is very similar to
21 hwmon with simple polled access to device channels via sysfs.
22
23 * Event chrdevs.  These are similar to input in that they provide a
24 route to user space for hardware triggered events. Such events include
25 threshold detectors, free-fall detectors and more complex action
26 detection.  The events themselves are currently very simple with
27 merely an event code and a timestamp.  Any data associated with the
28 event must be accessed via polling.
29
30 Note: A given device may have one or more event channel.  These events are
31 turned on or off (if possible) via sysfs interfaces.
32
33 * Hardware buffer support.  Some recent sensors have included
34 fifo / ring buffers on the sensor chip.  These greatly reduce the load
35 on the host CPU by buffering relatively large numbers of data samples
36 based on an internal sampling clock. Examples include VTI SCA3000
37 series and Analog Device ADXL345 accelerometers.  Each buffer supports
38 polling to establish when data is available.
39
40 * Trigger and software buffer support. In many data analysis
41 applications it it useful to be able to capture data based on some
42 external signal (trigger).  These triggers might be a data ready
43 signal, a gpio line connected to some external system or an on
44 processor periodic interrupt.  A single trigger may initialize data
45 capture or reading from a number of sensors.  These triggers are
46 used in IIO to fill software buffers acting in a very similar
47 fashion to the hardware buffers described above.
48
49 Other documentation:
50
51 device.txt - elements of a typical device driver.
52
53 trigger.txt - elements of a typical trigger driver.
54
55 ring.txt - additional elements required for buffer support.
56
57 sysfs-bus-iio - abi documentation file.