#
# Industrial I/O subsystem configuration
#

menuconfig IIO
	tristate "Industrial I/O support"
	select ANON_INODES
	help
	  The industrial I/O subsystem provides a unified framework for
	  drivers for many different types of embedded sensors using a
	  number of different physical interfaces (i2c, spi, etc).

if IIO

config IIO_BUFFER
	bool "Enable buffer support within IIO"
	help
	  Provide core support for various buffer based data
	  acquisition methods.

if IIO_BUFFER

config IIO_BUFFER_CB
	bool "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_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
	select IIO_TRIGGER
	select IIO_KFIFO_BUF
	help
	  Provides helper functions for setting up triggered buffers.

endif # IIO_BUFFER

config IIO_TRIGGER
	bool "Enable triggered sampling support"
	help
	  Provides IIO core support for triggers.  Currently these
	  are used to initialize capture of samples to push into
	  buffers.  The triggers are effectively a 'capture
	  data now' interrupt.

config IIO_CONSUMERS_PER_TRIGGER
       int "Maximum number of consumers per trigger"
       depends on IIO_TRIGGER
       default "2"
       help
	This value controls the maximum number of consumers that a
	given trigger may handle. Default is 2.

config IIO_MONOTOINIC_TIMESTAMPS
        bool "Enable monotonic timestamps for iio events, as opposed to realtime"
        default N

source "drivers/iio/accel/Kconfig"
source "drivers/iio/adc/Kconfig"
source "drivers/iio/amplifiers/Kconfig"
source "drivers/iio/common/Kconfig"
source "drivers/iio/dac/Kconfig"
source "drivers/iio/frequency/Kconfig"
source "drivers/iio/gyro/Kconfig"
source "drivers/iio/humidity/Kconfig"
source "drivers/iio/imu/Kconfig"
source "drivers/iio/light/Kconfig"
source "drivers/iio/magnetometer/Kconfig"
source "drivers/iio/orientation/Kconfig"
if IIO_TRIGGER
   source "drivers/iio/trigger/Kconfig"
endif #IIO_TRIGGER
source "drivers/iio/pressure/Kconfig"
source "drivers/iio/proximity/Kconfig"
source "drivers/iio/temperature/Kconfig"

endif # IIO
