diff options
Diffstat (limited to 'kernel/drivers/staging/iio/Documentation/ring.txt')
-rw-r--r-- | kernel/drivers/staging/iio/Documentation/ring.txt | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/kernel/drivers/staging/iio/Documentation/ring.txt b/kernel/drivers/staging/iio/Documentation/ring.txt new file mode 100644 index 000000000..18718fcaf --- /dev/null +++ b/kernel/drivers/staging/iio/Documentation/ring.txt @@ -0,0 +1,47 @@ +Buffer support within IIO + +This document is intended as a general overview of the functionality +a buffer may supply and how it is specified within IIO. For more +specific information on a given buffer implementation, see the +comments in the source code. Note that some drivers allow buffer +implementation to be selected at compile time via Kconfig options. + +A given buffer implementation typically embeds 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 a struct iio_ring_setup_ops *setup_ops +which in turn contains the 4 function pointers +(preenable, postenable, predisable and postdisable). +These are used to perform device specific steps on either side +of the core changing its current mode to indicate that the 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 buffer functionality as possible. Note almost all of these +are optional. + +store_to + If possible, push data to the buffer. + +read_last + If possible, get the most recent scan 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_first_n + The primary buffer reading function. Note that it may well not return + as much data as requested. + +request_update + If parameters have changed that require reinitialization or configuration of + the buffer this will trigger it. + +set_bytes_per_datum + Set the number of bytes for a complete scan. (All samples + timestamp) + +set_length + Set the number of complete scans that may be held by the buffer. + |