# 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.

config I8254
	tristate
	select COUNTER
	select REGMAP
	help
	  Enables support for the i8254 interface library functions. The i8254
	  interface library provides functions to facilitate communication with
	  interfaces compatible with the venerable Intel 8254 Programmable
	  Interval Timer (PIT). The Intel 825x family of chips was first
	  released in the early 1980s but compatible interfaces are nowadays
	  typically found embedded in larger VLSI processing chips and FPGA
	  components.

	  If built as a module its name will be i8254.

if COUNTER

config 104_QUAD_8
	tristate "ACCES 104-QUAD-8 driver"
	depends on (PC104 && X86) || COMPILE_TEST
	depends on HAS_IOPORT_MAP
	select ISA_BUS_API
	select REGMAP_MMIO
	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. The 104-QUAD-8
	  counters 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
