# Kconfig - drivers configuration options for SeeedStudio Grove Devices

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


menuconfig GROVE
	bool
	prompt "Grove Device Drivers"
	default n
	help
	  Check this box to enable the Seeed Grove device drivers


config SYS_LOG_GROVE_LEVEL
	int
	prompt "Grove Log level"
	depends on SYS_LOG && GROVE
	default 0
	range 0 4
	help
	  Sets log level for Grove Device Drivers.
	  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 GROVE_LCD_RGB
	bool
	default n
	depends on GROVE
	prompt "Enable the Seeed Grove LCD RGB Backlight"
	help
	  Setting this value will enable driver support for the Groove-LCD RGB
	  Backlight.

config GROVE_LCD_RGB_I2C_MASTER_DEV_NAME
	string "I2C Master where Grove LCD is connected"
	depends on GROVE_LCD_RGB
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which the
	  Grove LCD is connected.

config GROVE_LIGHT_SENSOR
	bool
	prompt "Enable the Seeed Grove Light Sensor"
	depends on SENSOR && GROVE && ADC && NEWLIB_LIBC
	default n
	help
	  Setting this value will enable driver support for the Grove Light
	  Sensor.

config GROVE_LIGHT_SENSOR_NAME
	string
	prompt "Driver name"
	depends on GROVE_LIGHT_SENSOR
	default "GROVE_LIGHT_SENSOR"
	help
	  Specify the device name with which the sensor is identified.

config GROVE_LIGHT_SENSOR_ADC_DEV_NAME
	string
	prompt "ADC where Grove Light Sensor is connected"
	depends on GROVE_LIGHT_SENSOR
	default "ADC_0"
	help
	  Specify the device name of the ADC to which the Grove Light Sensor
	  is connected.

config GROVE_LIGHT_SENSOR_ADC_CHANNEL
	int
	prompt "ADC channel used by Grove Light Sensor"
	depends on GROVE_LIGHT_SENSOR
	default 10
	help
	  Specify the channel of the ADC to which the Grove Light Sensor is
	  connected.

config GROVE_TEMPERATURE_SENSOR
	bool
	prompt "Enable the Seeed Grove Temperature Sensor"
	depends on SENSOR && GROVE && ADC && NEWLIB_LIBC
	default n
	help
	  Setting this value will enable driver support for the Grove
	  Temperature Sensor.

config GROVE_TEMPERATURE_SENSOR_NAME
	string
	prompt "Driver name"
	depends on GROVE_TEMPERATURE_SENSOR
	default "GROVE_TEMPERATURE_SENSOR"
	help
	  Specify the device name with which the Grove Temperature Sensor
	  is identified.

choice
	prompt "Sensor version"
	depends on GROVE_TEMPERATURE_SENSOR
	default GROVE_TEMPERATURE_SENSOR_V1_0
	help
	  Choose the version of the Grove Temperature Sensor.

config GROVE_TEMPERATURE_SENSOR_V1_0
	bool
	prompt "v1.0"
	help
	  Version 1.0

config GROVE_TEMPERATURE_SENSOR_V1_X
	bool
	prompt "v1.1/v1.2"
	help
	  Version 1.1 or 1.2

endchoice

config GROVE_TEMPERATURE_SENSOR_ADC_DEV_NAME
	string
	prompt "ADC where Grove Temperature Sensor is connected"
	depends on GROVE_TEMPERATURE_SENSOR
	default "ADC_0"
	help
	  Specify the device name of the ADC to which the Grove Temperature
	  Sensor is connected.

config GROVE_TEMPERATURE_SENSOR_ADC_CHANNEL
	int
	prompt "ADC channel used by Grove Temperature Sensor"
	depends on GROVE_TEMPERATURE_SENSOR
	default 10
	help
	  Specify the channel of the ADC to which the Grove Temperature Sensor
	  is connected.
