blob: 495efed7f2e5b350e3e60dc4e63d70cc4a7d3501 [file] [log] [blame]
# FXOS8700 6-axis accelerometer/magnetometer
# Copyright (c) 2016 Freescale Semiconductor, Inc.
# SPDX-License-Identifier: Apache-2.0
menuconfig FXOS8700
bool "FXOS8700 accelerometer/magnetometer driver"
depends on I2C && HAS_DTS_I2C && HAS_DTS_GPIO
help
Enable driver for the FXOS8700 accelerometer/magnetometer.
The driver also supports MMA8451Q, MMA8652FC and MMA8653FC
accelerometers. If the driver is used with one of these
accelerometers then the Accelerometer-only mode should be selected."
if FXOS8700
choice
prompt "Mode"
default FXOS8700_MODE_ACCEL
config FXOS8700_MODE_ACCEL
bool "Accelerometer-only mode"
config FXOS8700_MODE_MAGN
bool "Magnetometer-only mode"
config FXOS8700_MODE_HYBRID
bool "Hybrid (accel+mag) mode"
endchoice
config FXOS8700_TEMP
bool "Enable temperature"
depends on FXOS8700_MODE_MAGN || FXOS8700_MODE_HYBRID
help
Enable the temperature sensor. Note that the temperature sensor is
uncalibrated and its output for a given temperature may vary from one
device to the next.
choice
prompt "Range"
default FXOS8700_RANGE_8G
config FXOS8700_RANGE_8G
bool "8g (0.976 mg/LSB)"
config FXOS8700_RANGE_4G
bool "4g (0.488 mg/LSB)"
config FXOS8700_RANGE_2G
bool "2g (0.244 mg/LSB)"
endchoice
choice
prompt "Power mode"
default FXOS8700_PM_NORMAL
config FXOS8700_PM_NORMAL
bool "Normal power mode"
config FXOS8700_PM_LOW_NOISE_LOW_POWER
bool "Low noise low power mode"
config FXOS8700_PM_HIGH_RESOLUTION
bool "High resolution power mode"
config FXOS8700_PM_LOW_POWER
bool "Low power mode"
endchoice
choice
prompt "Trigger mode"
default FXOS8700_TRIGGER_NONE
config FXOS8700_TRIGGER_NONE
bool "No trigger"
config FXOS8700_TRIGGER_GLOBAL_THREAD
bool "Use global thread"
select FXOS8700_TRIGGER
config FXOS8700_TRIGGER_OWN_THREAD
bool "Use own thread"
select FXOS8700_TRIGGER
endchoice
config FXOS8700_TRIGGER
bool
config FXOS8700_DRDY_INT1
bool "Data ready interrupt to INT1 pin"
depends on FXOS8700_TRIGGER
help
Say Y to route data ready interrupt to INT1 pin. Say N to route to
INT2 pin.
if FXOS8700_TRIGGER
config FXOS8700_THREAD_PRIORITY
int "Own thread priority"
depends on FXOS8700_TRIGGER_OWN_THREAD
default 10
config FXOS8700_THREAD_STACK_SIZE
int "Own thread stack size"
depends on FXOS8700_TRIGGER_OWN_THREAD
default 1024
menuconfig FXOS8700_PULSE
bool "Pulse detection"
help
Enable pulse detection
if FXOS8700_PULSE
config FXOS8700_PULSE_INT1
bool "Pulse interrupt to INT1 pin"
help
Say Y to route pulse interrupt to INT1 pin. Say N to route to INT2 pin.
config FXOS8700_PULSE_CFG
hex "Pulse configuration register"
range 0 0xff
default 0x3f
config FXOS8700_PULSE_THSX
hex "Pulse X-axis threshold"
range 0 0x7f
default 0x20
help
Threshold to start the pulse-event detection procedure on the X-axis.
Threshold values for each axis are unsigned 7-bit numbers with a
fixed resolution of 0.063 g/LSB, corresponding to an 8g acceleration
full-scale range.
config FXOS8700_PULSE_THSY
hex "Pulse Y-axis threshold"
range 0 0x7f
default 0x20
help
Threshold to start the pulse-event detection procedure on the Y-axis.
Threshold values for each axis are unsigned 7-bit numbers with a
fixed resolution of 0.063 g/LSB, corresponding to an 8g acceleration
full-scale range.
config FXOS8700_PULSE_THSZ
hex "Pulse Z-axis threshold"
range 0 0x7f
default 0x40
help
Threshold to start the pulse-event detection procedure on the Z-axis.
Threshold values for each axis are unsigned 7-bit numbers with a
fixed resolution of 0.063 g/LSB, corresponding to an 8g acceleration
full-scale range.
config FXOS8700_PULSE_TMLT
hex "Pulse time limit"
range 0 0x7f
default 0x18
help
The maximum time interval that can elapse between the start of the
acceleration on the selected channel exceeding the specified
threshold and the end when the channel acceleration goes back below
the specified threshold. The resolution depends upon the sample rate
(ODR) and the high-pass filter configuration
(HP_FILTER_CUTOFF[pls_hpf_en]). For ODR=800 Hz and pls_hpf_en=0, the
resolution is 0.625 ms/LSB.
config FXOS8700_PULSE_LTCY
hex "Pulse latency"
range 0 0xff
default 0x28
help
The time interval that starts after the first pulse detection where
the pulse-detection function ignores the start of a new pulse. The
resolution depends upon the sample rate (ODR) and the high-pass filter
configuration (HP_FILTER_CUTOFF[pls_hpf_en]). For ODR=800 Hz and
pls_hpf_en=0, the resolution is 1.25 ms/LSB.
config FXOS8700_PULSE_WIND
hex "Pulse window"
range 0 0xff
default 0x3c
help
The maximum interval of time that can elapse after the end of the
latency interval in which the start of the second pulse event must be
detected provided the device has been configured for double pulse
detection. The detected second pulse width must be shorter than the
time limit constraint specified by the PULSE_TMLT register, but the
end of the double pulse need not finish within the time specified by
the PULSE_WIND register. The resolution depends upon the sample rate
(ODR) and the high-pass filter configuration
(HP_FILTER_CUTOFF[pls_hpf_en]). For ODR=800 Hz and pls_hpf_en=0, the
resolution is 1.25 ms/LSB.
endif # FXOS8700_PULSE
menuconfig FXOS8700_MOTION
bool "Motion detection"
help
Enable motion detection
if FXOS8700_MOTION
config FXOS8700_MOTION_INT1
bool "Motion interrupt to INT1 pin"
help
Say Y to route motion interrupt to INT1 pin. Say N to route to INT2 pin.
endif # FXOS8700_MOTION
endif # FXOS8700_TRIGGER
endif # FXOS8700