There is a very basic discussion of IIO at https://wiki.analog.com/software/linux/docs/iio/iio
There a very brief introduction to IIO device drivers in Linux Device Driver Development, by John Madieu, 2nd edition (c)2022 Packt Publishing.
There is a very rough sketch of the IIO SPI-Engine framework at https://wiki.analog.com/resources/fpga/peripherals/spi_engine
There are various IIO device drivers available, for example https://wiki.analog.com/resources/tools-software/linux-drivers/iio-adc/ad738x or https://wiki.analog.com/resources/tools-software/linux-drivers/iio-adc/ad400x
Then of course is the Linux kernel "documentation," for what it is.
I have asked several questions in this forum that have gone unanswered, and the last one to get answered, I answered it myself.
I am finding it very frustrating to figure anything of any substance from these sources. Where else should I be looking to know how the IIO system actually operates, what is the sequence of operations for user space libiio calls that end up calling platform and device drivers?
Where is the overall API documentation available to different classes of IIO drivers? For example, the AD738x driver calls functions such as spi_write_then_read, spi_sync_transfer, iio_push_to_buffer_with_timestamp, iio_trigger_notify_done, and iio_triggered_buffer_setup. However, the AD400x driver calls functions such as spi_message_add_tail, spy_sync_locked, spi_message_init_with_transfers, iio_device_claim_direct_mode. That's about where I got annoyed. The drivers available have differing subsets of capabilities, evidently.
Where can I find a good overview of how all the components and APIs play together, so that I have a starting place for putting together a driver with full capabilities for the IIO system?
fix typos while awaiting a response.
[edited by: ddickerhoof at 8:52 PM (GMT -5) on 30 Jan 2023]