1 /*
2  * Copyright (c) 2024 TDK Invensense
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_ICM42670_H_
8 #define ZEPHYR_INCLUDE_DRIVERS_SENSOR_ICM42670_H_
9 
10 #include <zephyr/drivers/sensor.h>
11 
12 /**
13  * @file
14  * @brief Extended public API for ICM42670 6-axis MEMS sensor
15  *
16  * Some capabilities and operational requirements for this sensor
17  * cannot be expressed within the sensor driver abstraction.
18  */
19 
20 /** ICM42670 power mode */
21 #define ICM42670_LOW_NOISE_MODE (0)
22 #define ICM42670_LOW_POWER_MODE (1)
23 
24 /**
25  * @brief Extended sensor attributes for ICM42670 6-axis MEMS sensor
26  *
27  * This exposes attributes for the ICM42670 which can be used for
28  * setting the signal path filtering parameters.
29  *
30  * The signal path starts with ADCs for the gyroscope and accelerometer.
31  * Low-Noise Mode and Low-Power Mode options are available for the
32  * accelerometer. Only Low-Noise Mode is available for gyroscope.
33  * In Low-Noise Mode, the ADC output is sent through an Anti-Alias Filter
34  * (AAF). The AAF is a filter with fixed coefficients (not user configurable),
35  * also the AAF cannot be bypassed. The AAF is followed by a 1st Order Low Pass
36  * Filter (LPF) with user selectable filter bandwidth options.
37  * In Low-Power Mode, the accelerometer ADC output is sent through an Average
38  * filter, with user configurable average filter setting.
39  * The output of 1st Order LPF in Low-Noise Mode, or Average filter in Low-Power
40  * Mode is subject to ODR selection, with user selectable ODR.
41  */
42 enum sensor_attribute_icm42670 {
43 	/** BW filtering */
44 
45 	/** Low-pass filter configuration */
46 	SENSOR_ATTR_BW_FILTER_LPF = SENSOR_ATTR_PRIV_START,
47 	/** Averaging configuration */
48 	SENSOR_ATTR_AVERAGING,
49 };
50 #endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_ICM42670_H_ */
51