# TMP007 infrared thermopile sensor configuration options

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

menuconfig TMP007
	bool "TMP007 Infrared Thermopile Sensor"
	depends on I2C
	help
	  Enable driver for TMP007 infrared thermopile sensors.

if TMP007

config TMP007_NAME
	string "Driver name"
	default "TMP007"
	help
	  Device name with which the TMP007 sensor is identified.

config TMP007_I2C_ADDR
	hex "I2C address for TMP006 Sensor"
	default "0x40"
	help
	  I2C address of the TMP007 sensor.

	  0x40: A0 connected GND and A1 connected to GND.
	  0x41: A0 connected VDD and A1 connected to GND.
	  0x42: A0 connected SDA and A1 connected to GND.
	  0x43: A0 connected SCL and A1 connected to GND.
	  0x44: A0 connected GND and A1 connected to VDD.
	  0x45: A0 connected VDD and A1 connected to VDD.
	  0x46: A0 connected SDA and A1 connected to VDD.
	  0x47: A0 connected SCL and A1 connected to VDD.

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

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

config TMP007_TRIGGER_NONE
	bool "No trigger"

config TMP007_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select TMP007_TRIGGER

config TMP007_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select TMP007_TRIGGER

endchoice

config TMP007_TRIGGER
	bool

config TMP007_GPIO_DEV_NAME
	string "GPIO device"
	default "GPIO_0"
	depends on 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 "Interrupt GPIO pin number"
	default 0
	depends on TMP007_TRIGGER
	help
	  The number of the GPIO pin on which the interrupt signal from the
	  TMP007 chip will be received.

config TMP007_THREAD_PRIORITY
	int "Thread priority"
	depends on TMP007_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config TMP007_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on TMP007_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

endif # TMP007
