# ADT7420 temperature sensor configuration options

# Copyright (c) 2018 Analog Devices Inc.
# SPDX-License-Identifier: Apache-2.0

menuconfig ADT7420
	bool "ADT7420 Temperature Sensor"
	depends on I2C && HAS_DTS_I2C && HAS_DTS_GPIO
	help
	  Enable the driver for Analog Devices ADT7420 High-Accuracy
	  16-bit Digital I2C Temperature Sensors.

if ADT7420

config ADT7420_TEMP_HYST
	int "Temperature hysteresis in °C"
	range 0 15
	default 5
	help
	  Specify the temperature hysteresis in °C for the THIGH, TLOW,
	  and TCRIT temperature limits.

config ADT7420_TEMP_CRIT
	int "Critical overtemperature in °C"
	range -40 150
	default 147
	help
	  The critical overtemperature pin asserts when the temperature
	  exceeds this value. The default value of 147 is the reset default
	  of the ADT7420.

choice
	prompt "Trigger mode"
	default ADT7420_TRIGGER_NONE
	help
	  Specify the type of triggering used by the driver.

config ADT7420_TRIGGER_NONE
	bool "No trigger"

config ADT7420_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select ADT7420_TRIGGER

config ADT7420_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select ADT7420_TRIGGER

endchoice

config ADT7420_TRIGGER
	bool

config ADT7420_THREAD_PRIORITY
	int "Thread priority"
	depends on ADT7420_TRIGGER_OWN_THREAD && ADT7420_TRIGGER
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config ADT7420_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on ADT7420_TRIGGER_OWN_THREAD && ADT7420_TRIGGER
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

endif # ADT7420
