# 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.
