drivers: sensor: adxl372: FIFO mode from DT

Adds support for setting FIFO mode and water-mark from DT.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
This commit is contained in:
Vladislav Pejic 2025-04-15 13:29:43 +02:00 committed by Maureen Helm
commit e72e1c1c44
5 changed files with 75 additions and 8 deletions

View file

@ -900,9 +900,11 @@ static int adxl372_init(const struct device *dev)
.inactivity_th.enable = 1, \ .inactivity_th.enable = 1, \
.inactivity_time = CONFIG_ADXL372_INACTIVITY_TIME, \ .inactivity_time = CONFIG_ADXL372_INACTIVITY_TIME, \
.filter_settle = ADXL372_FILTER_SETTLE_370, \ .filter_settle = ADXL372_FILTER_SETTLE_370, \
.fifo_config.fifo_mode = ADXL372_FIFO_STREAMED, \ .fifo_config.fifo_mode = \
.fifo_config.fifo_format = ADXL372_XYZ_PEAK_FIFO, \ DT_INST_PROP_OR(inst, fifo_mode, ADXL372_FIFO_BYPASSED), \
.fifo_config.fifo_samples = 128, \ .fifo_config.fifo_format = ADXL372_XYZ_FIFO, \
.fifo_config.fifo_samples = \
DT_INST_PROP_OR(inst, fifo_watermark, 0x80), \
.op_mode = ADXL372_FULL_BW_MEASUREMENT, \ .op_mode = ADXL372_FULL_BW_MEASUREMENT, \
#define ADXL372_CONFIG_SPI(inst) \ #define ADXL372_CONFIG_SPI(inst) \

View file

@ -13,6 +13,7 @@
#include <zephyr/drivers/gpio.h> #include <zephyr/drivers/gpio.h>
#include <zephyr/kernel.h> #include <zephyr/kernel.h>
#include <zephyr/sys/util.h> #include <zephyr/sys/util.h>
#include <zephyr/dt-bindings/sensor/adxl372.h>
#ifdef CONFIG_ADXL372_STREAM #ifdef CONFIG_ADXL372_STREAM
#include <zephyr/rtio/rtio.h> #include <zephyr/rtio/rtio.h>
@ -268,10 +269,10 @@ enum adxl372_fifo_format {
}; };
enum adxl372_fifo_mode { enum adxl372_fifo_mode {
ADXL372_FIFO_BYPASSED, ADXL372_FIFO_BYPASSED = ADXL372_FIFO_MODE_BYPASSED,
ADXL372_FIFO_STREAMED, ADXL372_FIFO_STREAMED = ADXL372_FIFO_MODE_STREAMED,
ADXL372_FIFO_TRIGGERED, ADXL372_FIFO_TRIGGERED = ADXL372_FIFO_MODE_TRIGGERED,
ADXL372_FIFO_OLD_SAVED ADXL372_FIFO_OLD_SAVED = ADXL372_FIFO_MODE_OLD_SAVED
}; };
struct adxl372_fifo_config { struct adxl372_fifo_config {

View file

@ -107,7 +107,8 @@ void adxl372_submit_stream(const struct device *dev, struct rtio_iodev_sqe *iode
data->fifo_config.fifo_samples); data->fifo_config.fifo_samples);
if (current_fifo_mode == ADXL372_FIFO_BYPASSED) { if (current_fifo_mode == ADXL372_FIFO_BYPASSED) {
current_fifo_mode = ADXL372_FIFO_STREAMED; LOG_ERR("ERROR: FIFO BYPASSED");
return;
} }
adxl372_configure_fifo(dev, current_fifo_mode, data->fifo_config.fifo_format, adxl372_configure_fifo(dev, current_fifo_mode, data->fifo_config.fifo_format,

View file

@ -3,6 +3,20 @@
include: sensor-device.yaml include: sensor-device.yaml
description: |
ADXL372 3-axis SPI accelerometer
When setting the accelerometer DTS properties and want to use
streaming funcionality, make sure to include adxl372.h and
use the macros defined there for fifo-mode properties.
Example:
#include <zephyr/dt-bindings/sensor/adxl372.h>
adxl372: adxl372@0 {
...
fifo-mode = <ADXL372_FIFO_MODE_STREAMED>;
};
properties: properties:
odr: odr:
type: int type: int
@ -63,3 +77,23 @@ properties:
The INT1 signal defaults to active high as produced by the The INT1 signal defaults to active high as produced by the
sensor. The property value should ensure the flags properly sensor. The property value should ensure the flags properly
describe the signal that is presented to the driver. describe the signal that is presented to the driver.
fifo-mode:
type: int
description: |
Accelerometer FIFO Mode.
0 # ADXL372_FIFO_MODE_BYPASSED
1 # ADXL372_FIFO_MODE_STREAMED
2 # ADXL372_FIFO_MODE_TRIGGERED
3 # ADXL372_FIFO_MODE_OLD_SAVED
enum:
- 0
- 1
- 2
- 3
fifo-watermark:
type: int
description: |
Specify the FIFO watermark level in frame count.
Valid range: 0 - 512

View file

@ -0,0 +1,29 @@
/*
* Copyright (c) 2025 Analog Devices Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_ADI_ADX372_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_ADI_ADX372_H_
/**
* @defgroup ADXL372 ADI DT Options
* @ingroup sensor_interface
* @{
*/
/**
* @defgroup ADXL372_FIFO_MODE FIFO mode options
* @{
*/
#define ADXL372_FIFO_MODE_BYPASSED 0x0
#define ADXL372_FIFO_MODE_STREAMED 0x1
#define ADXL372_FIFO_MODE_TRIGGERED 0x2
#define ADXL372_FIFO_MODE_OLD_SAVED 0x3
/** @} */
/** @} */
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ADI_ADX372_H_ */