# ICM42688-P Six-Axis Motion Tracking device configuration options
#
# Copyright (c) 2022 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0

menuconfig ICM42688
	bool "ICM42688 Six-Axis Motion Tracking Device"
	default y
	depends on DT_HAS_INVENSENSE_ICM42688_ENABLED
	select SPI
	help
	  Enable driver for ICM42688 SPI-based six-axis motion tracking device.

if ICM42688

config EMUL_ICM42688
	bool "Emulator for the ICM42688"
	default y
	depends on EMUL
	help
	  Enable the hardware emulator for the ICM42688. Doing so allows exercising
	  sensor APIs for this IMU in native_sim and qemu.

config ICM42688_DECODER
	bool "ICM42688 decoder logic"
	default y
	select SENSOR_ASYNC_API
	help
	  Compile the ICM42688 decoder API which allows decoding raw data returned
	  from the sensor.

choice
	prompt "Trigger mode"
	default ICM42688_TRIGGER_NONE if ICM42688_STREAM
	default ICM42688_TRIGGER_GLOBAL_THREAD
	help
	  Specify the type of triggering to be used by the driver

config ICM42688_TRIGGER_NONE
	bool "No trigger"

config ICM42688_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	select ICM42688_TRIGGER

config ICM42688_TRIGGER_OWN_THREAD
	bool "Use own thread"
	select ICM42688_TRIGGER

endchoice

config ICM42688_STREAM
	bool "Use hardware FIFO to stream data"
	select ICM42688_TRIGGER
	default y
	depends on SPI_RTIO
	depends on SENSOR_ASYNC_API
	help
	  Use this config option to enable streaming sensor data via RTIO subsystem.

config ICM42688_TRIGGER
	bool

config ICM42688_THREAD_PRIORITY
	int "Own thread priority"
	depends on ICM42688_TRIGGER_OWN_THREAD
	default 10
	help
	  The priority of the thread used for handling interrupts.

config ICM42688_THREAD_STACK_SIZE
	int "Own thread stack size"
	depends on ICM42688_TRIGGER_OWN_THREAD
	default 1024
	help
	  The thread stack size.

endif # ICM42688
