# Kconfig.mcp9808 - MCP9808 temperature 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 MCP9808
	bool "MCP9808 temperature sensor"
	depends on SENSOR && I2C
	default n
	help
	 Enable driver for MCP9808 temperature sensor.

config MCP9808_SYS_LOG_LEVEL
	int "MCP9808 Log level"
	depends on SYS_LOG && MCP9808
	default 0
	range 0 4
	help
	  Sets log level for MCP9808 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 MCP9808_DEV_NAME
	string "MCP9808 device name"
	depends on MCP9808
	default "MCP9808"

config MCP9808_INIT_PRIORITY
	int
	depends on MCP9808
	default 70
	prompt "Init priority"
	help
	 Device driver initialization priority.

config MCP9808_I2C_ADDR
	hex "MCP9808 I2C slave address"
	depends on MCP9808
	default 0x18
	help
	 Specify the I2C slave address for the MCP9808.

config MCP9808_I2C_DEV_NAME
	string "I2C master where MCP9808 is connected"
	depends on MCP9808
	default "I2C_0"
	help
	 Specify the device name of the I2C master device to which MCP9808 is
	 connected.

choice
	prompt "MCP9808 trigger mode"
	depends on MCP9808
	default MCP9808_TRIGGER_NONE

config MCP9808_TRIGGER_NONE
	bool "No trigger"

config MCP9808_TRIGGER_GLOBAL_FIBER
	depends on GPIO  && SYSTEM_WORKQUEUE
	select MCP9808_TRIGGER
	bool "Use global fiber"

config MCP9808_TRIGGER_OWN_FIBER
	depends on GPIO
	select MCP9808_TRIGGER
	bool "Use own fiber"

endchoice

config MCP9808_TRIGGER
	bool
	depends on MCP9808

config MCP9808_GPIO_CONTROLLER
	string "GPIO controller for MCP9808 interrupt"
	depends on MCP9808 && MCP9808_TRIGGER
	default "GPIO_0"
	help
	  The GPIO controller the MCP9808 interrupt is connected to.

config MCP9808_GPIO_PIN
	int "GPIO pin for MCP9808 interrupt"
	depends on MCP9808 && MCP9808_TRIGGER
	default 3
	help
	  The GPIO pin the MCP9808 interrupt is connected to.

config MCP9808_FIBER_STACK_SIZE
	int "Sensor delayed work fiber stack size"
	depends on MCP9808 && MCP9808_TRIGGER_OWN_FIBER
	default 1024

config MCP9808_FIBER_PRIORITY
	int "MCP9808 fiber priority"
	depends on MCP9808 && MCP9808_TRIGGER_OWN_FIBER
	default 10
