# 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"
	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
	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
	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
	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.
