# Kconfig.tmp112 - TMP112 temperature sensor configuration options

#
# Copyright (c) 2016 Firmwave
#
# 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 TMP112
	bool
	prompt "TMP112 Temperature Sensor"
	depends on SENSOR && I2C
	default n
	help
	Enable driver for TMP112 infrared thermopile sensors.

config TMP112_SYS_LOG_LEVEL
	int "TMP112 Log level"
	depends on SYS_LOG && TMP112
	default 0
	range 0 4
	help
	Sets log level for TMP112 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 TMP112_NAME
	string
	prompt "Driver name"
	default "TMP112"
	depends on TMP112
	help
	Device name with which the TMP112 sensor is identified.

config TMP112_INIT_PRIORITY
	int
	prompt "Init priority"
	depends on TMP112
	default 70
	help
	Device driver initialization priority.

choice
	prompt "I2C address"
	depends on TMP112
	default TMP112_I2C_ADDR_0
	help
	I2C address of the TMP112 sensor.

config TMP112_I2C_ADDR_0
	bool
	prompt "0x48"
	help
	A0 connected GND and A1 connected to GND.

config TMP112_I2C_ADDR_1
	bool
	prompt "0x49"
	help
	A0 connected VDD and A1 connected to GND.

config TMP112_I2C_ADDR_2
	bool
	prompt "0x4A"
	help
	A0 connected SDA and A1 connected to GND.

config TMP112_I2C_ADDR_3
	bool
	prompt "0x4B"
	help
	A0 connected SCL and A1 connected to GND.

endchoice

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