# Kconfig - SX9500 SAR proximity sensor configuration options

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

menuconfig SX9500
	bool "SX9500 I2C SAR Proximity Chip"
	depends on I2C
	help
	  Enable driver for SX9500 I2C-based SAR proximity sensor.

if SX9500

config SX9500_DEV_NAME
	string "SX9500 device name"
	default "SX9500"

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

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

config SX9500_PROX_CHANNEL
	int "Proximity channel to use"
	default 3
	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"
	default SX9500_TRIGGER_GLOBAL_THREAD

config SX9500_TRIGGER_NONE
	bool "No trigger"

config SX9500_TRIGGER_GLOBAL_THREAD
	depends on GPIO
	select SX9500_TRIGGER
	bool "Use global thread"

config SX9500_TRIGGER_OWN_THREAD
	depends on GPIO
	select SX9500_TRIGGER
	bool "Use own thread"

endchoice

config SX9500_TRIGGER
	bool

config SX9500_GPIO_CONTROLLER
	string "GPIO controller for SX9500 interrupt"
	depends on 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_TRIGGER
	default 3

config SX9500_THREAD_STACK_SIZE
	int "Sensor delayed work thread stack size"
	depends on SX9500_TRIGGER_OWN_THREAD
	default 1024

config SX9500_THREAD_PRIORITY
	int "Thread priority"
	depends on SX9500_TRIGGER_OWN_THREAD
	default 10

endif # SX9500
