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