summaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/Documentation/ring.txt
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/iio/Documentation/ring.txt')
-rw-r--r--drivers/staging/iio/Documentation/ring.txt61
1 files changed, 61 insertions, 0 deletions
diff --git a/drivers/staging/iio/Documentation/ring.txt b/drivers/staging/iio/Documentation/ring.txt
new file mode 100644
index 000000000000..d2ca6834c169
--- /dev/null
+++ b/drivers/staging/iio/Documentation/ring.txt
@@ -0,0 +1,61 @@
+Ring buffer support within IIO
+
+This document is intended as a general overview of the functionality
+a ring buffer may supply and how it is specified within IIO. For more
+specific information on a given ring buffer implementation, see the
+comments in the source code. Note that the intention is to allow
+some drivers to specify ring buffers choice at probe or runtime, but
+for now the selection is hard coded within a given driver.
+
+A given ring buffer implementation typically embedded a struct
+iio_ring_buffer and it is a pointer to this that is provided to the
+IIO core. Access to the embedding structure is typically done via
+container_of functions.
+
+struct iio_ring_buffer contains 4 function pointers
+(preenable, postenable, predisable, postdisable).
+These are used to perform implementation specific steps on either side
+of the core changing it's current mode to indicate that the ring buffer
+is enabled or disabled (along with enabling triggering etc as appropriate).
+
+Also in struct iio_ring_buffer is a struct iio_ring_access_funcs.
+The function pointers within here are used to allow the core to handle
+as much ring buffer functionality as possible. Note almost all of these
+are optional.
+
+mark_in_use, unmark_in_use
+ Basically indicate that not changes should be made to the ring
+ buffer state that will effect the form of the data being captures
+ (e.g. scan elements or length)
+
+store_to
+ If possible, push data to ring buffer.
+
+read_last
+ If possible get the most recent entry from the buffer (without removal).
+ This provides polling like functionality whilst the ring buffering is in
+ use without a separate read from the device.
+
+rip_lots
+ The primary ring buffer reading function. Note that it may well not return
+ as much data as requested. The deadoffset is used to indicate that some
+ initial data in the data array is not guaranteed to be valid.
+
+mark_param_changed
+ Used to indicate that something has changed. Used in conjunction with
+request_update
+ If parameters have changed that require reinitialization or configuration of
+ the ring buffer this will trigger it.
+
+get_bpd, set_bpd
+ Get/set the number of bytes for a given reading (single element, not sample set)
+ The value of bps (bytes per set) is created from a combination of this and the
+ enabled scan elements.
+
+get_length / set_length
+ Get/set the number of sample sets that may be held by the buffer.
+
+is_enabled
+ Query if ring buffer is in use
+enable
+ Start the ring buffer.