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

menuconfig HTS221
	bool "HTS221 temperature and humidity sensor"
	default y
	depends on DT_HAS_ST_HTS221_ENABLED
	select I2C if $(dt_compat_on_bus,$(DT_COMPAT_ST_HTS221),i2c)
	select SPI if $(dt_compat_on_bus,$(DT_COMPAT_ST_HTS221),spi)
	select HAS_STMEMSC
	select USE_STDC_HTS221
	help
	  Enable driver for HTS221 I2C/SPI-based temperature and humidity sensor.

if HTS221

choice HTS221_TRIGGER_MODE
	prompt "Trigger mode"
	default HTS221_TRIGGER_GLOBAL_THREAD
	help
	  Specify the type of triggering to be used by the driver.

config HTS221_TRIGGER_NONE
	bool "No trigger"

config HTS221_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select HTS221_TRIGGER

config HTS221_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select HTS221_TRIGGER

endchoice # HTS221_TRIGGER_MODE

config HTS221_TRIGGER
	bool

config HTS221_THREAD_PRIORITY
	int "Thread priority"
	depends on HTS221_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config HTS221_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on HTS221_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

config HTS221_ODR
	string "Output data rate"
	default "1"
	help
	  Sensor output data rate expressed in samples per second.
	  Data rates supported by the chip are 1, 7 and 12.5.

endif # HTS221
