# Kconfig.sx9500 - SX9500 SAR proximity 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 SX9500
	bool "SX9500 I2C SAR Proximity Chip"
	depends on SENSOR && I2C
	default n
	help
	  Enable driver for SX9500 I2C-based SAR proximity sensor.

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

config SX9500_INIT_PRIORITY
	int
	depends on SX9500
	default 70
	prompt "Init priority"
	help
	  Device driver initialization priority.

config SX9500_I2C_ADDR
	hex "SX9500 I2C slave address"
	depends on SX9500
	default 0x2B
	help
	  Specify the I2C slave address for the SX9500.

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

config SX9500_PROX_CHANNEL
	int
	default 3
	depends on SX9500
	prompt "Proximity channel to use"
	help
	  The SX9500 offers 4 separate proximity channels.  Choose which one
	  you are using.  Valid numbers are 0 to 3.

choice
	prompt "SX9500 trigger mode"
	depends on SX9500
	default SX9500_TRIGGER_GLOBAL_FIBER

config SX9500_TRIGGER_NONE
	bool "No trigger"

config SX9500_TRIGGER_GLOBAL_FIBER
	depends on GPIO && SYSTEM_WORKQUEUE
	select SX9500_TRIGGER
	bool "Use global fiber"

config SX9500_TRIGGER_OWN_FIBER
	depends on GPIO
	select SX9500_TRIGGER
	bool "Use own fiber"

endchoice

config SX9500_TRIGGER
	bool
	depends on SX9500

config SX9500_GPIO_CONTROLLER
	string "GPIO controller for SX9500 interrupt"
	depends on SX9500 && SX9500_TRIGGER
	default GPIO_0
	help
	  Specify the device name of the GPIO controller the SX9500 interrupt
	  is connected to.

config SX9500_GPIO_PIN
	int "GPIO pin for SX9500 interrupt"
	depends on SX9500 && SX9500_TRIGGER
	default 3

config SX9500_FIBER_STACK_SIZE
	int "Sensor delayed work fiber stack size"
	depends on SX9500 && SX9500_TRIGGER_OWN_FIBER
	default 1024

config SX9500_FIBER_PRIORITY
	int "Fiber priority"
	depends on SX9500 && SX9500_TRIGGER_OWN_FIBER
	default 10
