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

menuconfig HTS221
	bool "HTS221 temperature and humidity sensor"
	depends on I2C
	help
	  Enable driver for HTS221 I2C-based temperature and humidity sensor.

if !HAS_DTS_I2C_DEVICE

config HTS221_NAME
	string "Driver name"
	default "HTS221"
	depends on HTS221
	help
	  Device name with which the HTS221 sensor is identified.

config HTS221_I2C_MASTER_DEV_NAME
	string "I2C master where HTS221 is connected"
	depends on HTS221
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which HTS221 is
	  connected.

endif

choice HTS221_TRIGGER_MODE
	prompt "Trigger mode"
	depends on HTS221
	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
	depends on HTS221

config HTS221_GPIO_DEV_NAME
	string "GPIO device"
	default "GPIO_0"
	depends on HTS221 && HTS221_TRIGGER
	help
	  The device name of the GPIO device to which the HTS221 interrupt pin
	  is connected.

config HTS221_GPIO_PIN_NUM
	int "Interrupt GPIO pin number"
	default 0
	depends on HTS221 && HTS221_TRIGGER
	help
	  The number of the GPIO on which the interrupt signal from the HTS221
	  chip will be received.

config HTS221_THREAD_PRIORITY
	int "Thread priority"
	depends on HTS221 && 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 && 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"
	depends on HTS221
	default "1"
	help
	  Sensor output data rate expressed in samples per second.
	  Data rates supported by the chip are 1, 7 and 12.5.
