# Kconfig - FXAS21002 3-axis gyroscope
#
# Copyright (c) 2017, NXP
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig FXAS21002
	bool "FXAS21002 gyroscope driver"
	depends on I2C
	default n
	help
	  Enable driver for the FXAS21002 gyroscope

if FXAS21002

if !HAS_DTS_I2C_DEVICE

config FXAS21002_NAME
	string "Device name"
	default "FXAS21002"

config FXAS21002_I2C_NAME
	string "I2C device name"
	default I2C_0_NAME

config FXAS21002_I2C_ADDRESS
	hex "I2C address"
	range 0x20 0x21
	default 0x20
	help
	  The I2C slave address can be configured by the SA0 input pin. This
	  option should usually be set by the board defconfig.

endif # !HAS_DTS_I2C_DEVICE

config FXAS21002_WHOAMI
	hex "WHOAMI value"
	range 0x00 0xff
	default 0xd7
	help
	  The datasheet defines the value of the WHOAMI register, but some
	  pre-production devices can have a different value. It is unlikely you
	  should need to change this configuration option from the default.

config FXAS21002_RANGE
	int "Full scale range"
	range 0 3
	default 0
	help
	  Selects the full scale range
	  0: +/-2000 dps (62.5 mdps/LSB)
	  1: +/-1000 dps (31.25 mdps/LSB)
	  2: +/-500 dps (15.625 mdps/LSB)
	  3: +/-250 dps (7.8125 mdps/LSB)

config FXAS21002_DR
	int "Output data rate"
	range 0 7
	default 3
	help
	  Selects the output data rate
	  0: 800 Hz
	  1: 400 Hz
	  2: 200 Hz
	  3: 100 Hz
	  4: 50 Hz
	  5: 25 Hz
	  6: 12.5 Hz
	  7: 12.5 Hz

choice
	prompt "Trigger mode"
	default FXAS21002_TRIGGER_NONE

config FXAS21002_TRIGGER_NONE
	bool "No trigger"

config FXAS21002_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	select FXAS21002_TRIGGER

config FXAS21002_TRIGGER_OWN_THREAD
	bool "Use own thread"
	select FXAS21002_TRIGGER

endchoice

config FXAS21002_TRIGGER
	bool
	default n

if FXAS21002_TRIGGER

if !HAS_DTS_GPIO_DEVICE

config FXAS21002_GPIO_NAME
	string "GPIO device name"

config FXAS21002_GPIO_PIN
	int "GPIO pin"

endif

config FXAS21002_DRDY_INT1
	bool "Data ready interrupt to INT1 pin"
	default n
	help
	  Say Y to route data ready interrupt to INT1 pin. Say N to route to
	  INT2 pin.

config FXAS21002_THREAD_PRIORITY
	int "Own thread priority"
	depends on FXAS21002_TRIGGER_OWN_THREAD
	default 10

config FXAS21002_THREAD_STACK_SIZE
	int "Own thread stack size"
	depends on FXAS21002_TRIGGER_OWN_THREAD
	default 1024

endif # FXAS21002_TRIGGER

endif # FXAS21002
