# SPDX-License-Identifier: GPL-2.0-only
#
# Counter devices
#

menuconfig COUNTER
	tristate "Counter support"
	help
	  This enables counter device support through the Generic Counter
	  interface. You only need to enable this, if you also want to enable
	  one or more of the counter device drivers below.

if COUNTER

config 104_QUAD_8
	tristate "ACCES 104-QUAD-8 driver"
	depends on (PC104 && X86) || COMPILE_TEST
	select ISA_BUS_API
	help
	  Say yes here to build support for the ACCES 104-QUAD-8 quadrature
	  encoder counter/interface device family (104-QUAD-8, 104-QUAD-4).

	  A counter's respective error flag may be cleared by performing a write
	  operation on the respective count value attribute. Although the
	  104-QUAD-8 counters have a 25-bit range, only the lower 24 bits may be
	  set, either directly or via the counter's preset attribute.

	  The base port addresses for the devices may be configured via the base
	  array module parameter. The interrupt line numbers for the devices may
	  be configured via the irq array module parameter.

config FTM_QUADDEC
	tristate "Flex Timer Module Quadrature decoder driver"
	depends on SOC_LS1021A || COMPILE_TEST
	depends on HAS_IOMEM && OF
	help
	  Select this option to enable the Flex Timer Quadrature decoder
	  driver.

	  To compile this driver as a module, choose M here: the
	  module will be called ftm-quaddec.

config INTEL_QEP
	tristate "Intel Quadrature Encoder Peripheral driver"
	depends on X86
	depends on PCI
	help
	  Select this option to enable the Intel Quadrature Encoder Peripheral
	  driver.

	  To compile this driver as a module, choose M here: the module
	  will be called intel-qep.

config INTERRUPT_CNT
	tristate "Interrupt counter driver"
	depends on GPIOLIB
	help
	  Select this option to enable interrupt counter driver. Any interrupt
	  source can be used by this driver as the event source.

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

config MICROCHIP_TCB_CAPTURE
	tristate "Microchip Timer Counter Capture driver"
	depends on SOC_AT91SAM9 || SOC_SAM_V7 || COMPILE_TEST
	depends on HAS_IOMEM && OF
	select REGMAP_MMIO
	help
	  Select this option to enable the Microchip Timer Counter Block
	  capture driver.

	  To compile this driver as a module, choose M here: the
	  module will be called microchip-tcb-capture.

config RZ_MTU3_CNT
	tristate "Renesas RZ/G2L MTU3a counter driver"
	depends on RZ_MTU3 || COMPILE_TEST
	help
	  Enable support for MTU3a counter driver found on Renesas RZ/G2L alike
	  SoCs. This IP supports both 16-bit and 32-bit phase counting mode
	  support.

	  To compile this driver as a module, choose M here: the
	  module will be called rz-mtu3-cnt.

config STM32_LPTIMER_CNT
	tristate "STM32 LP Timer encoder counter driver"
	depends on MFD_STM32_LPTIMER || COMPILE_TEST
	help
	  Select this option to enable STM32 Low-Power Timer quadrature encoder
	  and counter driver.

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

config STM32_TIMER_CNT
	tristate "STM32 Timer encoder counter driver"
	depends on MFD_STM32_TIMERS || COMPILE_TEST
	help
	  Select this option to enable STM32 Timer quadrature encoder
	  and counter driver.

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

config TI_ECAP_CAPTURE
	tristate "TI eCAP capture driver"
	depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
	depends on HAS_IOMEM
	select REGMAP_MMIO
	help
	  Select this option to enable the Texas Instruments Enhanced Capture
	  (eCAP) driver in input mode.

	  It can be used to timestamp events (falling/rising edges) detected
	  on ECAP input signal.

	  To compile this driver as a module, choose M here: the module
	  will be called ti-ecap-capture.

config TI_EQEP
	tristate "TI eQEP counter driver"
	depends on (SOC_AM33XX || COMPILE_TEST)
	select REGMAP_MMIO
	help
	  Select this option to enable the Texas Instruments Enhanced Quadrature
	  Encoder Pulse (eQEP) counter driver.

	  To compile this driver as a module, choose M here: the module will be
	  called ti-eqep.

endif # COUNTER
