# Kconfig.tmp007 - TMP007 infrared thermopile 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 TMP007
	bool
	prompt "TMP007 Infrared Thermopile Sensor"
	depends on SENSOR && I2C
	default n
	help
	  Enable driver for TMP007 infrared thermopile sensors.

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

config TMP007_INIT_PRIORITY
	int
	prompt "Init priority"
	depends on TMP007
	default 70
	help
	  Device driver initialization priority.

choice
	prompt "I2C address"
	depends on TMP007
	default TMP007_I2C_ADDR_0
	help
	  I2C address of the TMP007 sensor.

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

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

config TMP007_I2C_ADDR_2
	bool
	prompt "0x42"
	help
	  A0 connected SDA and A1 connected to GND.

config TMP007_I2C_ADDR_3
	bool
	prompt "0x43"
	help
	  A0 connected SCL and A1 connected to GND.

config TMP007_I2C_ADDR_4
	bool
	prompt "0x44"
	help
	  A0 connected GND and A1 connected to VDD.

config TMP007_I2C_ADDR_5
	bool
	prompt "0x45"
	help
	  A0 connected VDD and A1 connected to VDD.

config TMP007_I2C_ADDR_6
	bool
	prompt "0x46"
	help
	  A0 connected SDA and A1 connected to VDD.

config TMP007_I2C_ADDR_7
	bool
	prompt "0x47"
	help
	  A0 connected SCL and A1 connected to VDD.

endchoice

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

choice
	prompt "Trigger mode"
	depends on TMP007
	default TMP007_TRIGGER_NONE
	help
	  Specify the type of triggering to be used by the driver.

config TMP007_TRIGGER_NONE
	bool
	prompt "No trigger"

config TMP007_TRIGGER_GLOBAL_FIBER
	bool
	prompt "Use global fiber"
	depends on GPIO && SYSTEM_WORKQUEUE
	select TMP007_TRIGGER

config TMP007_TRIGGER_OWN_FIBER
	bool
	prompt "Use own fiber"
	depends on GPIO
	select TMP007_TRIGGER

endchoice

config TMP007_TRIGGER
	bool
	depends on TMP007

config TMP007_GPIO_DEV_NAME
	string
	prompt "GPIO device"
	default "GPIO_0"
	depends on TMP007 && TMP007_TRIGGER
	help
	  The device name of the GPIO device to which the TMP007 interrupt
	  (alert) pin is connected.

config TMP007_GPIO_PIN_NUM
	int
	prompt "Interrupt GPIO pin number"
	default 0
	depends on TMP007 && TMP007_TRIGGER
	help
	  The number of the GPIO pin on which the interrupt signal from the
	  TMP007 chip will be received.

config TMP007_FIBER_PRIORITY
	int
	prompt "Fiber priority"
	depends on TMP007 && TMP007_TRIGGER_OWN_FIBER
	default 10
	help
	  Priority of fiber used by the driver to handle interrupts.

config TMP007_FIBER_STACK_SIZE
	int
	prompt "Fiber stack size"
	depends on TMP007 && TMP007_TRIGGER_OWN_FIBER
	default 1024
	help
	  Stack size of fiber used by the driver to handle interrupts.
