# Kconfig.hdc1008 - HDC1008 temperature and humidity sensor configuration options

#
# Copyright (c) 2016 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

menuconfig HDC1008
	bool
	prompt "HDC1008 Temperature and Humidity Sensor"
	depends on SENSOR && I2C && GPIO
	default n
	help
	  Enable driver for HDC1008 temperature and humidity sensors.

config HDC1008_SYS_LOG_LEVEL
	int "HDC1008 Log level"
	depends on SYS_LOG && HDC1008
	default 0
	range 0 4
	help
	Sets log level for HDC1008 driver.
	Levels are:

	- 0 OFF: do not write

	- 1 ERROR: only write SYS_LOG_ERR

	- 2 WARNING: write SYS_LOG_WRN in addition to previous level

	- 3 INFO: write SYS_LOG_INF in addition to previous levels

	- 4 DEBUG: write SYS_LOG_DBG in addition to previous levels

config HDC1008_NAME
	string
	prompt "Driver name"
	default "HDC1008"
	depends on HDC1008
	help
	  Device name with which the HDC1008 sensor is identified.

config HDC1008_INIT_PRIORITY
	int
	prompt "Init priority"
	depends on HDC1008
	default 70
	help
	  Device driver initialization priority.

choice
	prompt "I2C address"
	depends on HDC1008
	default HDC1008_I2C_ADDR_0
	help
	  I2C address of the HDC1008 sensor.

config HDC1008_I2C_ADDR_0
	bool
	prompt "0x40"
	help
	  A0 connected GND and A1 connected to GND.

config HDC1008_I2C_ADDR_1
	bool
	prompt "0x41"
	help
	  A0 connected VDD and A1 connected to GND.

config HDC1008_I2C_ADDR_2
	bool
	prompt "0x42"
	help
	  A0 connected GND and A1 connected to VDD.

config HDC1008_I2C_ADDR_3
	bool
	prompt "0x43"
	help
	  A0 connected VDD and A1 connected to VDD.

endchoice

config HDC1008_I2C_MASTER_DEV_NAME
	string
	prompt "I2C master where HDC1008 is connected"
	depends on HDC1008
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which the
	  HDC1008 chip is connected.

config HDC1008_GPIO_DEV_NAME
	string
	prompt "GPIO device"
	default "GPIO_0"
	depends on HDC1008
	help
	  The device name of the GPIO device to which the HDC1008 data-ready
	  pin is connected.

config HDC1008_GPIO_PIN_NUM
	int
	prompt "Interrupt GPIO pin number"
	default 0
	depends on HDC1008
	help
	  The number of the GPIO on which the data-ready signal from the HDC1008
	  chip will be received.
