# Kconfig - DHT Temperature and Himidity Sensor configuration options

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

menuconfig DHT
	bool
	prompt "DHT Temperature and Humidity Sensor"
	depends on SENSOR && GPIO
	default n
	help
	  Enable driver for the DHT temperature and humidity sensor family.

choice
	prompt "Chip type"
	depends on DHT
	default DHT_CHIP_DHT11
	help
	  Choose desired chip type from the DHT family.

config DHT_CHIP_DHT11
	bool
	prompt "DHT11"
	help
	  Choose this option to enable the DHT11 chip.

config DHT_CHIP_DHT22
	bool
	prompt "DHT22"
	help
	  Choose this option to enable the DHT22 chip.

endchoice

config DHT_NAME
	string
	prompt "Driver name"
	default "DHT11" if DHT_CHIP_DHT11
	default "DHT22" if DHT_CHIP_DHT22
	depends on DHT
	help
	  Device name with which the sensor is identified.

config DHT_GPIO_DEV_NAME
	string
	prompt "GPIO device"
	default "GPIO_0"
	depends on DHT
	help
	  The device name of the GPIO device to which the chip's data pin
	  is connected.

config DHT_GPIO_PIN_NUM
	int
	prompt "Interrupt GPIO pin number"
	default 0
	depends on DHT
	help
	  The number of the GPIO on which the chip's data pin is connected.
