# Kconfig - ISL29035 light sensor configuration options

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

menuconfig ISL29035
	bool "ISL29035 light sensor"
	depends on I2C
	help
	  Enable driver for the ISL29035 light sensor.

config ISL29035_NAME
	string "Driver name"
	default "ISL29035"
	depends on ISL29035
	help
	  Device name with which the ISL29035 sensor is identified.

config ISL29035_I2C_MASTER_DEV_NAME
	string "I2C Master"
	depends on ISL29035
	default "I2C_0"
	help
	  The device name of the I2C master device to which the ISL29035
	  chip is connected.

config ISL29035_THREAD_PRIORITY
	int "Thread priority"
	depends on ISL29035
	default 10
	help
	  Priority of thread used to handle the timer and threshold triggers.

choice
	prompt "Full scale lux range"
	default ISL29035_LUX_RANGE_1K
	depends on ISL29035
	help
	  Maximum allowable lux value. Lower range values offer better
	  resolution.

config ISL29035_LUX_RANGE_1K
	bool "1000"

config ISL29035_LUX_RANGE_4K
	bool "4000"

config ISL29035_LUX_RANGE_16K
	bool "16000"

config ISL29035_LUX_RANGE_64K
	bool "64000"

endchoice

choice
	prompt "Integration time"
	default ISL29035_INTEGRATION_TIME_105K
	depends on ISL29035
	help
	  The sampling period of the internal ADC of the light sensor.
	  Lower integration time values mean lower ADC resolution.

config ISL29035_INTEGRATION_TIME_26
	bool "0.0256 ms"

config ISL29035_INTEGRATION_TIME_410
	bool "0.41 ms"

config ISL29035_INTEGRATION_TIME_6500
	bool "6.5 ms"

config ISL29035_INTEGRATION_TIME_105K
	bool "105 ms"

endchoice

choice
	prompt "Active sensing mode"
	depends on ISL29035
	default ISL29035_MODE_ALS
	help
	  Sensing mode in which the ISL29035 will function. The chip can be
	  configured either for either ambient light or infrared sensing.

config ISL29035_MODE_ALS
	bool "ambient light"
	help
	  Sensing mode for ambient light spectrum.

config ISL29035_MODE_IR
	bool "infrared"
	help
	  Sensing mode for infrared spectrum.

endchoice

choice
	prompt "Trigger mode"
	depends on ISL29035 && ISL29035_MODE_ALS && GPIO
	default ISL29035_TRIGGER_NONE
	help
	  Specify the type of triggering to be used by the driver.
	  Only available for ambient light sensing mode.

config ISL29035_TRIGGER_NONE
	bool "No trigger"

config ISL29035_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select ISL29035_TRIGGER

config ISL29035_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select ISL29035_TRIGGER

endchoice

config ISL29035_TRIGGER
	bool
	depends on ISL29035

config ISL29035_GPIO_DEV_NAME
	string "GPIO device"
	default "GPIO_0"
	depends on ISL29035 && ISL29035_TRIGGER
	help
	  The device name of the GPIO device to which the ISL29035 interrupt
	  pin is connected.

config ISL29035_GPIO_PIN_NUM
	int "GPIO pin number"
	default 0
	depends on ISL29035 && ISL29035_TRIGGER
	help
	  The number of the GPIO pin to which the ISL29035 interrupt pin is
	  connected.

config ISL29035_THREAD_PRIORITY
	int "Thread priority"
	depends on ISL29035 && ISL29035_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config ISL29035_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on ISL29035 && ISL29035_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

choice
	prompt "Interrupt persist cycles"
	depends on ISL29035 && ISL29035_TRIGGER
	default ISL29035_INT_PERSIST_1
	help
	  Number of consecutive integration cycles for which the data samples
	  need to remain outside the threshold window in order for the interrupt
	  to be triggered.

config ISL29035_INT_PERSIST_1
	bool "1"

config ISL29035_INT_PERSIST_4
	bool "4"

config ISL29035_INT_PERSIST_8
	bool "8"

config ISL29035_INT_PERSIST_16
	bool "16"

endchoice
