#
# Industrial I/O subsystem configuration
#
menu "IIO staging drivers"
	depends on IIO

config IIO_ST_HWMON
	tristate "Hwmon driver that uses channels specified via iio maps"
	depends on HWMON
	help
	  This is a platform driver that in combination with a suitable
	  map allows IIO devices to provide  basic hwmon functionality
	  for those channels specified in the map.

if IIO_BUFFER

config IIO_SW_RING
       select IIO_TRIGGER
	tristate "Industrial I/O lock free software ring"
	help
	  Example software ring buffer implementation.  The design aim
	  of this particular realization was to minimize write locking
	  with the intention that some devices would be able to write
	  in interrupt context.

endif # IIO_BUFFER

source "drivers/staging/iio/accel/Kconfig"
source "drivers/staging/iio/adc/Kconfig"
source "drivers/staging/iio/addac/Kconfig"
source "drivers/staging/iio/cdc/Kconfig"
source "drivers/staging/iio/frequency/Kconfig"
source "drivers/staging/iio/gyro/Kconfig"
source "drivers/staging/iio/impedance-analyzer/Kconfig"
source "drivers/staging/iio/imu/Kconfig"
source "drivers/staging/iio/light/Kconfig"
source "drivers/staging/iio/magnetometer/Kconfig"
source "drivers/staging/iio/meter/Kconfig"
source "drivers/staging/iio/resolver/Kconfig"
source "drivers/staging/iio/trigger/Kconfig"

config IIO_DUMMY_EVGEN
       tristate

config IIO_SIMPLE_DUMMY
       tristate "An example driver with no hardware requirements"
       help
	 Driver intended mainly as documentation for how to write
	 a driver. May also be useful for testing userspace code
	 without hardware.

if IIO_SIMPLE_DUMMY

config IIO_SIMPLE_DUMMY_EVENTS
       boolean "Event generation support"
       select IIO_DUMMY_EVGEN
       help
         Add some dummy events to the simple dummy driver.

config IIO_SIMPLE_DUMMY_BUFFER
       boolean "Buffered capture support"
       depends on IIO_KFIFO_BUF
       help
         Add buffered data capture to the simple dummy driver.

endif # IIO_SIMPLE_DUMMY

endmenu
