# 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
