/drivers/staging/iio/Documentation/ring.txt
https://bitbucket.org/wisechild/galaxy-nexus · Plain Text · 57 lines · 45 code · 12 blank · 0 comment · 0 complexity · 7a30d90d8728e20319869554520f82e9 MD5 · raw file
- 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 it's 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.
- mark_in_use, unmark_in_use
- Basically indicate that not changes should be made to the 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 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.
- 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 buffer this will trigger it.
- get_bytes_per_datum, set_bytes_per_datum
- Get/set the number of bytes for a complete scan. (All samples + timestamp)
- get_length / set_length
- Get/set the number of complete scans that may be held by the buffer.
- is_enabled
- Query if ring buffer is in use
- enable
- Start the ring buffer.