# Copyright (c) 2025 Croxel Inc.
# Copyright (c) 2025 CogniPilot Foundation
# SPDX-License-Identifier: Apache-2.0

menuconfig ICM566XX
	bool "ICM566XX High-precision 6-Axis Motion Tracking Device"
	default y
	depends on DT_HAS_INVENSENSE_ICM56622_ENABLED || \
		DT_HAS_INVENSENSE_ICM56686_ENABLED
	select SPI if $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56622),spi) \
		|| $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56686),spi)
	select SPI_RTIO if $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56622),spi) \
		|| $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56686),spi)
	select I2C if $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56622),i2c) \
		|| $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56686),i2c)
	select I2C_RTIO if $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56622),i2c) \
		|| $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56686),i2c)
	select I3C if $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56622),i3c) \
		|| $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56686),i3c)
	select I3C_RTIO if $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56622),i3c) \
		|| $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56686),i3c)
	select USE_EMD_ICM56622 if DT_HAS_INVENSENSE_ICM56622_ENABLED
	select USE_EMD_ICM56686 if DT_HAS_INVENSENSE_ICM56686_ENABLED
	help
	  Enable driver for ICM566XX High-precision 6-axis motion
	  tracking device.

if ICM566XX

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

config ICM566XX_TRIGGER_NONE
	bool "No trigger"

config ICM566XX_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	select GPIO
	depends on $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM56622),int-gpios) || \
			$(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM56686),int-gpios)
	depends on !ICM566XX_STREAM
	select ICM566XX_TRIGGER

config ICM566XX_TRIGGER_OWN_THREAD
	bool "Use own thread"
	select GPIO
	depends on $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM56622),int-gpios) || \
			$(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM56686),int-gpios)
	depends on !ICM566XX_STREAM
	select ICM566XX_TRIGGER

endchoice

config TDK_APEX
	bool

config ICM566XX_TRIGGER
	bool

config ICM566XX_THREAD_PRIORITY
	int "Own thread priority"
	depends on ICM566XX_TRIGGER_OWN_THREAD
	default 10
	help
	  The priority of the thread used for handling triggers.

config ICM566XX_THREAD_STACK_SIZE
	int "Own thread stack size"
	depends on ICM566XX_TRIGGER_OWN_THREAD
	default 1024
	help
	  The thread stack size.

config ICM566XX_STREAM
	bool "Streaming mode"
	depends on $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM56622),int-gpios) || \
			$(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM56686),int-gpios) || \
			$(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56622),i3c) || \
			$(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM56686),i3c)
	help
	  Enable streaming of sensor data.

endif # ICM566XX
