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

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.

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