# SPDX-License-Identifier: GPL-2.0-only
#
# Industrial I/O generic buffer implementations
#
# When adding new entries keep the list in alphabetical order

config IIO_BUFFER_CB
	tristate "IIO callback buffer used for push in-kernel interfaces"
	help
	  Should be selected by any drivers that do in-kernel push
	  usage.  That is, those where the data is pushed to the consumer.

config IIO_BUFFER_DMA
	tristate "Industrial I/O DMA buffer infrastructure"
	help
	  Provides the generic IIO DMA buffer infrastructure that can be used by
	  drivers for devices with DMA support to implement the IIO buffer.

	  Should be selected by drivers that want to use the generic DMA buffer
	  infrastructure.

config IIO_BUFFER_DMAENGINE
	tristate "Industrial I/O DMA buffer integration with DMAEngine"
	select IIO_BUFFER_DMA
	help
	  Provides a bonding of the generic IIO DMA buffer infrastructure with the
	  DMAEngine framework. This can be used by converter drivers with a DMA port
	  connected to an external DMA controller which is supported by the
	  DMAEngine framework.

	  Should be selected by drivers that want to use this functionality.

config IIO_BUFFER_HW_CONSUMER
	tristate "Industrial I/O HW buffering"
	help
	  Provides a way to bonding when an IIO device has a direct connection
	  to another device in hardware. In this case buffers for data transfers
	  are handled by hardware.

	  Should be selected by drivers that want to use the generic Hw consumer
	  interface.

config IIO_KFIFO_BUF
	tristate "Industrial I/O buffering based on kfifo"
	help
	  A simple fifo based on kfifo.  Note that this currently provides
	  no buffer events so it is up to userspace to work out how
	  often to read from the buffer.

config IIO_TRIGGERED_BUFFER
	tristate "Industrial I/O triggered buffer support"
	select IIO_TRIGGER
	select IIO_KFIFO_BUF
	help
	  Provides helper functions for setting up triggered buffers.