#
# Industrial I/O standalone triggers
#
# When adding new entries keep the list in alphabetical order

menu "Triggers - standalone"

config IIO_HRTIMER_TRIGGER
	tristate "High resolution timer trigger"
	depends on IIO_SW_TRIGGER
	help
	  Provides a frequency based IIO trigger using high resolution
	  timers as interrupt source.

	  To compile this driver as a module, choose M here: the
	  module will be called iio-trig-hrtimer.

config IIO_INTERRUPT_TRIGGER
	tristate "Generic interrupt trigger"
	help
	  Provides support for using an interrupt of any type as an IIO
	  trigger.  This may be provided by a gpio driver for example.

	  To compile this driver as a module, choose M here: the
	  module will be called iio-trig-interrupt.

config IIO_STM32_LPTIMER_TRIGGER
	tristate "STM32 Low-Power Timer Trigger"
	depends on MFD_STM32_LPTIMER || COMPILE_TEST
	help
	  Select this option to enable STM32 Low-Power Timer Trigger.
	  This can be used as trigger source for STM32 internal ADC
	  and/or DAC.

	  To compile this driver as a module, choose M here: the
	  module will be called stm32-lptimer-trigger.

config IIO_STM32_TIMER_TRIGGER
	tristate "STM32 Timer Trigger"
	depends on (ARCH_STM32 && OF && MFD_STM32_TIMERS) || COMPILE_TEST
	help
	  Select this option to enable STM32 Timer Trigger

	  To compile this driver as a module, choose M here: the
	  module will be called stm32-timer-trigger.

config IIO_TIGHTLOOP_TRIGGER
	tristate "A kthread based hammering loop trigger"
	depends on IIO_SW_TRIGGER
	help
	  An experimental trigger, used to allow sensors to be sampled as fast
	  as possible under the limitations of whatever else is going on.
	  Uses a tight loop in a kthread.  Will only work with lower half only
	  trigger consumers.

	  To compile this driver as a module, choose M here: the
	  module will be called iio-trig-loop.

config IIO_SYSFS_TRIGGER
	tristate "SYSFS trigger"
	depends on SYSFS
	select IRQ_WORK
	help
	  Provides support for using SYSFS entries as IIO triggers.
	  If unsure, say N (but it's safe to say "Y").

	  To compile this driver as a module, choose M here: the
	  module will be called iio-trig-sysfs.

endmenu
