# LMP90xxx ADC configuration options

# Copyright (c) 2019 Vestas Wind Systems A/S
# SPDX-License-Identifier: Apache-2.0

config ADC_LMP90XXX
	bool "LMP90xxx driver"
	default y
	depends on DT_HAS_TI_LMP90077_ENABLED || DT_HAS_TI_LMP90078_ENABLED || \
		   DT_HAS_TI_LMP90079_ENABLED || DT_HAS_TI_LMP90080_ENABLED || \
		   DT_HAS_TI_LMP90097_ENABLED || DT_HAS_TI_LMP90098_ENABLED || \
		   DT_HAS_TI_LMP90099_ENABLED || DT_HAS_TI_LMP90100_ENABLED
	depends on SPI
	select ADC_CONFIGURABLE_INPUTS
	help
	  Enable LMP90xxx ADC driver.

	  The LMP90xxx is a multi-channel, low power sensor analog
	  frontend (AFE).

if ADC_LMP90XXX

config ADC_LMP90XXX_ACQUISITION_THREAD_STACK_SIZE
	int "Stack size for the ADC data acquisition thread"
	default 400
	help
	  Size of the stack used for the internal data acquisition
	  thread.

config ADC_LMP90XXX_ACQUISITION_THREAD_PRIO
	int "Priority for the ADC data acquisition thread"
	default 0
	help
	  Priority level for the internal ADC data acquisition thread.

config ADC_LMP90XXX_CRC
	bool "Use Cyclic Redundancy Check (CRC)"
	default y
	help
	  Use Cyclic Redundancy Check (CRC) to verify the integrity of
	  the data read from the LMP90xxx.

config ADC_LMP90XXX_GPIO
	bool "GPIO support"
	depends on GPIO
	select GPIO_LMP90XXX
	help
	  Enable GPIO child device support in the LMP90xxx ADC driver.

	  The GPIO functionality is handled by the LMP90xxx GPIO
	  driver.

endif # ADC_LMP90XXX
