# Copyright (c) 2020 Linumiz
#
# SPDX-License-Identifier: Apache-2.0

menuconfig BQ274XX
	bool "BQ274xx Fuel Gauge"
	default y
	depends on DT_HAS_TI_BQ274XX_ENABLED
	depends on I2C
	help
	  Enable I2C-based driver for BQ274xx Fuel Gauge.

if BQ274XX

choice BQ274XX_TRIGGER_MODE
	prompt "Trigger mode"
	default BQ274XX_TRIGGER_NONE
	help
	  Specify the type of triggering to be used by the driver.

config BQ274XX_TRIGGER_NONE
	bool "No trigger"

config BQ274XX_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	select BQ274XX_TRIGGER

config BQ274XX_TRIGGER_OWN_THREAD
	bool "Use own thread"
	select BQ274XX_TRIGGER

endchoice # BQ274XX_TRIGGER_MODE

config BQ274XX_TRIGGER
	bool

config BQ274XX_THREAD_PRIORITY
	int "Thread priority"
	depends on BQ274XX_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config BQ274XX_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on BQ274XX_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

endif # BQ274XX
