# Microchip mec15xx tachometer sensor configuration options

# Copyright (c) 2020 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

config TACH_XEC
	bool "XEC Tachometer sensor"
	depends on SOC_FAMILY_MEC
	help
	  Enable the Microchip XEC tachometer sensor.

if TACH_XEC

choice
	prompt "Number of tach edges"
	default TACH_XEC_5_TACH_EDGES
	help
	 This value represents the number of Tach edges that
	 will be used to determine the interval for which the number of
	 100KHz pulses will be counted.

config TACH_XEC_9_TACH_EDGES
	bool "Configure 9 tach edges or 4 tach periods"

config TACH_XEC_5_TACH_EDGES
	bool "Configure 5 tach edges or 2 tach periods"

config TACH_XEC_3_TACH_EDGES
	bool "Configure 3 tach edges or 1 tach period"

config TACH_XEC_2_TACH_EDGES
	bool "Configure 2 tach edges or 1/2 tach period"

endchoice

config TACH_XEC_EDGES
	int
	range 0 3
	default 0 if TACH_XEC_2_TACH_EDGES
	default 1 if TACH_XEC_3_TACH_EDGES
	default 2 if TACH_XEC_5_TACH_EDGES
	default 3 if TACH_XEC_9_TACH_EDGES

endif #TACH_XEC
