Commit c62e4b5a authored by Luis Ubieda's avatar Luis Ubieda Committed by Anas Nashif
Browse files

bmp581: Add dts-properties to set default configuration

The existing driver requires setting multiple attributes in order to
work basic fetch/get reads. Simplify this by allowing the user to set
dts node properties based on the use-case.

As a result, basic settings results in the driver being up and running
from the start, one can just get sensor readings out of the box.

These still can be overriden at run-time if need be.

Signed-off-by: default avatarLuis Ubieda <luisf@croxel.com>
parent d989188f
Loading
Loading
Loading
Loading
+58 −9
Changes for drivers/sensor/bosch/bmp581/bmp581.c: 58 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -254,15 +254,42 @@ static int get_osr_odr_press_config(struct bmp581_osr_odr_press_config *osr_odr_
	rslt = i2c_burst_read_dt(&conf->i2c, BMP5_REG_OSR_CONFIG, reg_data, 2);

	if (rslt == BMP5_OK) {
		osr_odr_press_cfg->osr_t = BMP5_GET_BITS_POS_0(reg_data[0], BMP5_TEMP_OS);
		osr_odr_press_cfg->osr_p = BMP5_GET_BITSLICE(reg_data[0], BMP5_PRESS_OS);
		osr_odr_press_cfg->osr_t = BMP5_GET_BITS_POS_0(reg_data[0], BMP5_TEMP_OSR);
		osr_odr_press_cfg->osr_p = BMP5_GET_BITSLICE(reg_data[0], BMP5_PRESS_OSR);
		osr_odr_press_cfg->press_en = BMP5_GET_BITSLICE(reg_data[0], BMP5_PRESS_EN);
		osr_odr_press_cfg->odr = BMP5_GET_BITSLICE(reg_data[1], BMP5_ODR);
	}

	return rslt;
}

static int set_osr_odr_press_config(const struct bmp581_osr_odr_press_config *osr_odr_press_cfg,
				    const struct device *dev)
{
	const struct bmp581_config *cfg = (const struct bmp581_config *)dev->config;
	uint8_t reg_data[2] = {0};

	reg_data[0] = BMP5_SET_BITSLICE(reg_data[0], BMP5_TEMP_OSR, osr_odr_press_cfg->osr_t);
	reg_data[0] = BMP5_SET_BITSLICE(reg_data[0], BMP5_PRESS_OSR, osr_odr_press_cfg->osr_p);
	reg_data[0] = BMP5_SET_BITSLICE(reg_data[0], BMP5_PRESS_EN, osr_odr_press_cfg->press_en);

	reg_data[1] = BMP5_SET_BITSLICE(reg_data[1], BMP5_POWERMODE, osr_odr_press_cfg->power_mode);
	reg_data[1] = BMP5_SET_BITSLICE(reg_data[1], BMP5_ODR, osr_odr_press_cfg->odr);

	return i2c_burst_write_dt(&cfg->i2c, BMP5_REG_OSR_CONFIG, reg_data, sizeof(reg_data));
}

static int set_iir_filters_config(const struct bmp581_osr_odr_press_config *osr_odr_press_cfg,
				  const struct device *dev)
{
	const struct bmp581_config *cfg = (const struct bmp581_config *)dev->config;
	uint8_t reg_data = 0;

	reg_data = BMP5_SET_BITSLICE(reg_data, BMP5_SET_IIR_TEMP, osr_odr_press_cfg->iir_t);
	reg_data = BMP5_SET_BITSLICE(reg_data, BMP5_SET_IIR_PRESS, osr_odr_press_cfg->iir_p);

	return i2c_burst_write_dt(&cfg->i2c, BMP5_REG_DSP_IIR, &reg_data, 1);
}

static int set_osr_config(const struct sensor_value *osr, enum sensor_channel chan,
			  const struct device *dev)
{
@@ -282,16 +309,16 @@ static int set_osr_config(const struct sensor_value *osr, enum sensor_channel ch
	if (ret == BMP5_OK) {
		switch (chan) {
		case SENSOR_CHAN_ALL:
			osr_val = BMP5_SET_BITS_POS_0(osr_val, BMP5_TEMP_OS, oversampling);
			osr_val = BMP5_SET_BITSLICE(osr_val, BMP5_PRESS_OS, oversampling);
			osr_val = BMP5_SET_BITS_POS_0(osr_val, BMP5_TEMP_OSR, oversampling);
			osr_val = BMP5_SET_BITSLICE(osr_val, BMP5_PRESS_OSR, oversampling);
			osr_val = BMP5_SET_BITSLICE(osr_val, BMP5_PRESS_EN, press_en);
			break;
		case SENSOR_CHAN_PRESS:
			osr_val = BMP5_SET_BITSLICE(osr_val, BMP5_PRESS_OS, oversampling);
			osr_val = BMP5_SET_BITSLICE(osr_val, BMP5_PRESS_OSR, oversampling);
			osr_val = BMP5_SET_BITSLICE(osr_val, BMP5_PRESS_EN, press_en);
			break;
		case SENSOR_CHAN_AMBIENT_TEMP:
			osr_val = BMP5_SET_BITS_POS_0(osr_val, BMP5_TEMP_OS, oversampling);
			osr_val = BMP5_SET_BITS_POS_0(osr_val, BMP5_TEMP_OSR, oversampling);
			break;
		default:
			ret = -ENOTSUP;
@@ -519,7 +546,6 @@ static int bmp581_init(const struct device *dev)

	/* Reset the chip id. */
	drv->chip_id = 0;
	memset(&drv->osr_odr_press_config, 0, sizeof(drv->osr_odr_press_config));
	memset(&drv->last_sample, 0, sizeof(drv->last_sample));

	soft_reset(dev);
@@ -544,6 +570,19 @@ static int bmp581_init(const struct device *dev)
			BMP5_CHIP_ID_PRIM, BMP5_CHIP_ID_SEC);
		return -EINVAL;
	}

	ret = set_iir_filters_config(&drv->osr_odr_press_config, dev);
	if (ret != 0) {
		LOG_ERR("Failed to set initial IIR settings: %d", ret);
		return ret;
	}

	ret = set_osr_odr_press_config(&drv->osr_odr_press_config, dev);
	if (ret != 0) {
		LOG_ERR("Failed to set initial ODR OSR settings: %d", ret);
		return ret;
	}

	return ret;
}

@@ -559,7 +598,17 @@ static DEVICE_API(sensor, bmp581_driver_api) = {
	}

#define BMP581_INIT(i)                                                                             \
	static struct bmp581_data bmp581_data_##i;                                                 \
	static struct bmp581_data bmp581_data_##i = {                                              \
		.osr_odr_press_config = {                                                          \
			.press_en = 1,                                                             \
			.odr = DT_INST_PROP(i, odr),                                               \
			.osr_t = DT_INST_PROP(i, temp_osr),                                        \
			.osr_p = DT_INST_PROP(i, press_osr),                                       \
			.iir_t = DT_INST_PROP(i, temp_iir),                                        \
			.iir_p = DT_INST_PROP(i, press_iir),                                       \
			.power_mode = DT_INST_PROP(i, power_mode),                                 \
		},                                                                                 \
	};                                                                                         \
	BMP581_CONFIG(i);                                                                          \
                                                                                                   \
	SENSOR_DEVICE_DT_INST_DEFINE(i, bmp581_init, NULL, &bmp581_data_##i, &bmp581_config_##i,   \
+26 −19
Changes for drivers/sensor/bosch/bmp581/bmp581.h: 26 added lines, 19 removed lines.
Original line number Diff line number Diff line
@@ -175,10 +175,11 @@
#define BMP5_ODR_POS 2

/* OSR configurations */
#define BMP5_TEMP_OS_MSK 0x07
#define BMP5_TEMP_OSR_MSK 0x07
#define BMP5_TEMP_OSR_POS 0

#define BMP5_PRESS_OS_MSK 0x38
#define BMP5_PRESS_OS_POS 3
#define BMP5_PRESS_OSR_MSK 0x38
#define BMP5_PRESS_OSR_POS 3

/* Pressure enable */
#define BMP5_PRESS_EN_MSK 0x40
@@ -186,6 +187,7 @@

/* IIR configurations */
#define BMP5_SET_IIR_TEMP_MSK 0x07
#define BMP5_SET_IIR_TEMP_POS 0

#define BMP5_SET_IIR_PRESS_MSK 0x38
#define BMP5_SET_IIR_PRESS_POS 3
@@ -219,6 +221,7 @@

/* Powermode */
#define BMP5_POWERMODE_MSK 0x03
#define BMP5_POWERMODE_POS 0

#define BMP5_DEEP_DISABLE_MSK 0x80
#define BMP5_DEEP_DISABLE_POS 7
@@ -266,27 +269,27 @@
struct bmp581_osr_odr_press_config {
	/*! Temperature oversampling
	 * Assignable macros :
	 * - BMP5_OVERSAMPLING_1X
	 * - BMP5_OVERSAMPLING_2X
	 * - BMP5_OVERSAMPLING_4X
	 * - BMP5_OVERSAMPLING_8X
	 * - BMP5_OVERSAMPLING_16X
	 * - BMP5_OVERSAMPLING_32X
	 * - BMP5_OVERSAMPLING_64X
	 * - BMP5_OVERSAMPLING_128X
	 * - BMP581_DT_OVERSAMPLING_1X
	 * - BMP581_DT_OVERSAMPLING_2X
	 * - BMP581_DT_OVERSAMPLING_4X
	 * - BMP581_DT_OVERSAMPLING_8X
	 * - BMP581_DT_OVERSAMPLING_16X
	 * - BMP581_DT_OVERSAMPLING_32X
	 * - BMP581_DT_OVERSAMPLING_64X
	 * - BMP581_DT_OVERSAMPLING_128X
	 */
	uint8_t osr_t;

	/*! Pressure oversampling
	 * Assignable macros :
	 * - BMP5_OVERSAMPLING_1X
	 * - BMP5_OVERSAMPLING_2X
	 * - BMP5_OVERSAMPLING_4X
	 * - BMP5_OVERSAMPLING_8X
	 * - BMP5_OVERSAMPLING_16X
	 * - BMP5_OVERSAMPLING_32X
	 * - BMP5_OVERSAMPLING_64X
	 * - BMP5_OVERSAMPLING_128X
	 * - BMP581_DT_OVERSAMPLING_1X
	 * - BMP581_DT_OVERSAMPLING_2X
	 * - BMP581_DT_OVERSAMPLING_4X
	 * - BMP581_DT_OVERSAMPLING_8X
	 * - BMP581_DT_OVERSAMPLING_16X
	 * - BMP581_DT_OVERSAMPLING_32X
	 * - BMP581_DT_OVERSAMPLING_64X
	 * - BMP581_DT_OVERSAMPLING_128X
	 */
	uint8_t osr_p;

@@ -298,6 +301,10 @@ struct bmp581_osr_odr_press_config {

	/*! Output Data Rate */
	uint8_t odr;

	uint8_t iir_t;
	uint8_t iir_p;
	uint8_t power_mode;
};

struct bmp581_sample {
+133 −0
Changes for dts/bindings/sensor/bosch,bmp581.yaml: 133 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,22 @@ description: |
    The BMP581 is a Barometric pressure sensor. See more info at:
    https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp581/

    When setting the sensor DTS properties, make sure to include
    bmp581.h and use the macros defined there.

    Example:
    #include <zephyr/dt-bindings/sensor/bmp581.h>

    bmp581@46 {
        ...
        odr = <BMP581_DT_ODR_50_HZ>;
        press-osr = <BMP581_DT_OVERSAMPLING_8X>;
        temp-osr = <BMP581_DT_OVERSAMPLING_4X>;
        press-iir = <BMP581_DT_IIR_FILTER_COEFF_7>;
        temp-iir = <BMP581_DT_IIR_FILTER_COEFF_3>;
        power-mode = <BMP581_DT_MODE_NORMAL>;
    };

compatible: "bosch,bmp581"

include: [sensor-device.yaml, i2c-device.yaml]
@@ -13,3 +29,120 @@ properties:

      The interrupt pin of BMP581 is open-drain, active low. If connected directly to the MCU,
      the pin should be configured as pull-up, active low.

  odr:
    type: int
    default: 0x1C  # BMP581_DT_ODR_1_HZ
    description: |
      Output data rate. Please note this is only valid on BMP581_DT_MODE_NORMAL.
      Default is power-on reset.
    enum:
      - 0x00 # BMP581_DT_ODR_240_HZ
      - 0x01 # BMP581_DT_ODR_218_5_HZ
      - 0x02 # BMP581_DT_ODR_199_1_HZ
      - 0x03 # BMP581_DT_ODR_179_2_HZ
      - 0x04 # BMP581_DT_ODR_160_HZ
      - 0x05 # BMP581_DT_ODR_149_3_HZ
      - 0x06 # BMP581_DT_ODR_140_HZ
      - 0x07 # BMP581_DT_ODR_129_8_HZ
      - 0x08 # BMP581_DT_ODR_120_HZ
      - 0x09 # BMP581_DT_ODR_110_1_HZ
      - 0x0A # BMP581_DT_ODR_100_2_HZ
      - 0x0B # BMP581_DT_ODR_89_6_HZ
      - 0x0C # BMP581_DT_ODR_80_HZ
      - 0x0D # BMP581_DT_ODR_70_HZ
      - 0x0E # BMP581_DT_ODR_60_HZ
      - 0x0F # BMP581_DT_ODR_50_HZ
      - 0x10 # BMP581_DT_ODR_45_HZ
      - 0x11 # BMP581_DT_ODR_40_HZ
      - 0x12 # BMP581_DT_ODR_35_HZ
      - 0x13 # BMP581_DT_ODR_30_HZ
      - 0x14 # BMP581_DT_ODR_25_HZ
      - 0x15 # BMP581_DT_ODR_20_HZ
      - 0x16 # BMP581_DT_ODR_15_HZ
      - 0x17 # BMP581_DT_ODR_10_HZ
      - 0x18 # BMP581_DT_ODR_5_HZ
      - 0x19 # BMP581_DT_ODR_4_HZ
      - 0x1A # BMP581_DT_ODR_3_HZ
      - 0x1B # BMP581_DT_ODR_2_HZ
      - 0x1C # BMP581_DT_ODR_1_HZ
      - 0x1D # BMP581_DT_ODR_0_5_HZ
      - 0x1E # BMP581_DT_ODR_0_250_HZ
      - 0x1F # BMP581_DT_ODR_0_125_HZ

  press-osr:
    type: int
    default: 0x00  # BMP581_DT_OVERSAMPLING_1X
    description: |
      Pressure oversampling rate.
      Default is power-on reset.
    enum:
      - 0x00 # BMP581_DT_OVERSAMPLING_1X
      - 0x01 # BMP581_DT_OVERSAMPLING_2X
      - 0x02 # BMP581_DT_OVERSAMPLING_4X
      - 0x03 # BMP581_DT_OVERSAMPLING_8X
      - 0x04 # BMP581_DT_OVERSAMPLING_16X
      - 0x05 # BMP581_DT_OVERSAMPLING_32X
      - 0x06 # BMP581_DT_OVERSAMPLING_64X
      - 0x07 # BMP581_DT_OVERSAMPLING_128X

  temp-osr:
    type: int
    default: 0x00  # BMP581_DT_OVERSAMPLING_1X
    description: |
      Temperature oversampling rate.
      Default is power-on reset.
    enum:
      - 0x00 # BMP581_DT_OVERSAMPLING_1X
      - 0x01 # BMP581_DT_OVERSAMPLING_2X
      - 0x02 # BMP581_DT_OVERSAMPLING_4X
      - 0x03 # BMP581_DT_OVERSAMPLING_8X
      - 0x04 # BMP581_DT_OVERSAMPLING_16X
      - 0x05 # BMP581_DT_OVERSAMPLING_32X
      - 0x06 # BMP581_DT_OVERSAMPLING_64X
      - 0x07 # BMP581_DT_OVERSAMPLING_128X

  power-mode:
    type: int
    default: 1  # BMP581_DT_MODE_NORMAL
    description: |
      Power mode.
      Default favors ease of use by simply setting ODR and OSR. Otherwise user
      needs to look into driver details, as the other modes require some quirks
      (e.g: Forced mode does not just work).
    enum:
      - 1 # BMP581_DT_MODE_NORMAL
      - 2 # BMP581_DT_MODE_FORCED
      - 3 # BMP581_DT_MODE_CONTINUOUS

  press-iir:
    type: int
    default: 0x00  # BMP581_DT_IIR_FILTER_BYPASS
    description: |
      Pressure IIR filter coefficient.
      Default is power-on reset (bypass).
    enum:
      - 0x00 # BMP581_DT_IIR_FILTER_BYPASS
      - 0x01 # BMP581_DT_IIR_FILTER_COEFF_1
      - 0x02 # BMP581_DT_IIR_FILTER_COEFF_3
      - 0x03 # BMP581_DT_IIR_FILTER_COEFF_7
      - 0x04 # BMP581_DT_IIR_FILTER_COEFF_15
      - 0x05 # BMP581_DT_IIR_FILTER_COEFF_31
      - 0x06 # BMP581_DT_IIR_FILTER_COEFF_63
      - 0x07 # BMP581_DT_IIR_FILTER_COEFF_127

  temp-iir:
    type: int
    default: 0x00  # BMP581_DT_IIR_FILTER_BYPASS
    description: |
      Temperature IIR filter coefficient.
      Default is power-on reset (bypass).
    enum:
      - 0x00 # BMP581_DT_IIR_FILTER_BYPASS
      - 0x01 # BMP581_DT_IIR_FILTER_COEFF_1
      - 0x02 # BMP581_DT_IIR_FILTER_COEFF_3
      - 0x03 # BMP581_DT_IIR_FILTER_COEFF_7
      - 0x04 # BMP581_DT_IIR_FILTER_COEFF_15
      - 0x05 # BMP581_DT_IIR_FILTER_COEFF_31
      - 0x06 # BMP581_DT_IIR_FILTER_COEFF_63
      - 0x07 # BMP581_DT_IIR_FILTER_COEFF_127
+1 −56
Changes for include/zephyr/drivers/sensor/bmp581_user.h: 1 added line, 56 removed lines.
Original line number Diff line number Diff line
@@ -13,62 +13,7 @@
#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_BMP581_USER_H_

#include <zephyr/drivers/sensor.h>

#define BMP5_SEA_LEVEL_PRESSURE_PA 101325

/* ODR settings */
#define BMP5_ODR_240_HZ	  0x00
#define BMP5_ODR_218_5_HZ 0x01
#define BMP5_ODR_199_1_HZ 0x02
#define BMP5_ODR_179_2_HZ 0x03
#define BMP5_ODR_160_HZ	  0x04
#define BMP5_ODR_149_3_HZ 0x05
#define BMP5_ODR_140_HZ	  0x06
#define BMP5_ODR_129_8_HZ 0x07
#define BMP5_ODR_120_HZ	  0x08
#define BMP5_ODR_110_1_HZ 0x09
#define BMP5_ODR_100_2_HZ 0x0A
#define BMP5_ODR_89_6_HZ  0x0B
#define BMP5_ODR_80_HZ	  0x0C
#define BMP5_ODR_70_HZ	  0x0D
#define BMP5_ODR_60_HZ	  0x0E
#define BMP5_ODR_50_HZ	  0x0F
#define BMP5_ODR_45_HZ	  0x10
#define BMP5_ODR_40_HZ	  0x11
#define BMP5_ODR_35_HZ	  0x12
#define BMP5_ODR_30_HZ	  0x13
#define BMP5_ODR_25_HZ	  0x14
#define BMP5_ODR_20_HZ	  0x15
#define BMP5_ODR_15_HZ	  0x16
#define BMP5_ODR_10_HZ	  0x17
#define BMP5_ODR_05_HZ	  0x18
#define BMP5_ODR_04_HZ	  0x19
#define BMP5_ODR_03_HZ	  0x1A
#define BMP5_ODR_02_HZ	  0x1B
#define BMP5_ODR_01_HZ	  0x1C
#define BMP5_ODR_0_5_HZ	  0x1D
#define BMP5_ODR_0_250_HZ 0x1E
#define BMP5_ODR_0_125_HZ 0x1F

/* Oversampling for temperature and pressure */
#define BMP5_OVERSAMPLING_1X   0x00
#define BMP5_OVERSAMPLING_2X   0x01
#define BMP5_OVERSAMPLING_4X   0x02
#define BMP5_OVERSAMPLING_8X   0x03
#define BMP5_OVERSAMPLING_16X  0x04
#define BMP5_OVERSAMPLING_32X  0x05
#define BMP5_OVERSAMPLING_64X  0x06
#define BMP5_OVERSAMPLING_128X 0x07

/* IIR filter for temperature and pressure */
#define BMP5_IIR_FILTER_BYPASS	  0x00
#define BMP5_IIR_FILTER_COEFF_1	  0x01
#define BMP5_IIR_FILTER_COEFF_3	  0x02
#define BMP5_IIR_FILTER_COEFF_7	  0x03
#define BMP5_IIR_FILTER_COEFF_15  0x04
#define BMP5_IIR_FILTER_COEFF_31  0x05
#define BMP5_IIR_FILTER_COEFF_63  0x06
#define BMP5_IIR_FILTER_COEFF_127 0x07
#include <zephyr/dt-bindings/sensor/bmp581.h>

/* Custom ATTR values */

+94 −0
Changes for include/zephyr/dt-bindings/sensor/bmp581.h: 94 added lines, 0 removed lines.
Original line number Diff line number Diff line
/*
 * Copyright (c) 2025 Croxel Inc.
 * Copyright (c) 2025 CogniPilot Foundation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_BOSCH_BMP581_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_BOSCH_BMP581_H_

/**
 * @defgroup bmp581 Bosch BMP581 DT Options
 * @ingroup sensor_interface
 * @{
 */

/**
 * @defgroup BMP581_POWER_MODES Sensor power modes
 * @{
 */
#define BMP581_DT_MODE_NORMAL		1
#define BMP581_DT_MODE_FORCED		2
#define BMP581_DT_MODE_CONTINUOUS	3
/** @} */

/**
 * @defgroup BMP581_OUTPUT_DATA_RATE Output data rate options
 * @{
 */
#define BMP581_DT_ODR_240_HZ		0x00
#define BMP581_DT_ODR_218_5_HZ		0x01
#define BMP581_DT_ODR_199_1_HZ		0x02
#define BMP581_DT_ODR_179_2_HZ		0x03
#define BMP581_DT_ODR_160_HZ		0x04
#define BMP581_DT_ODR_149_3_HZ		0x05
#define BMP581_DT_ODR_140_HZ		0x06
#define BMP581_DT_ODR_129_8_HZ		0x07
#define BMP581_DT_ODR_120_HZ		0x08
#define BMP581_DT_ODR_110_1_HZ		0x09
#define BMP581_DT_ODR_100_2_HZ		0x0A
#define BMP581_DT_ODR_89_6_HZ		0x0B
#define BMP581_DT_ODR_80_HZ		0x0C
#define BMP581_DT_ODR_70_HZ		0x0D
#define BMP581_DT_ODR_60_HZ		0x0E
#define BMP581_DT_ODR_50_HZ		0x0F
#define BMP581_DT_ODR_45_HZ		0x10
#define BMP581_DT_ODR_40_HZ		0x11
#define BMP581_DT_ODR_35_HZ		0x12
#define BMP581_DT_ODR_30_HZ		0x13
#define BMP581_DT_ODR_25_HZ		0x14
#define BMP581_DT_ODR_20_HZ		0x15
#define BMP581_DT_ODR_15_HZ		0x16
#define BMP581_DT_ODR_10_HZ		0x17
#define BMP581_DT_ODR_5_HZ		0x18
#define BMP581_DT_ODR_4_HZ		0x19
#define BMP581_DT_ODR_3_HZ		0x1A
#define BMP581_DT_ODR_2_HZ		0x1B
#define BMP581_DT_ODR_1_HZ		0x1C
#define BMP581_DT_ODR_0_5_HZ		0x1D
#define BMP581_DT_ODR_0_250_HZ		0x1E
#define BMP581_DT_ODR_0_125_HZ		0x1F
/** @} */

/**
 * @defgroup BMP581_OVERSAMPLING Oversampling options. Valid for temperature and pressure.
 * @{
 */
#define BMP581_DT_OVERSAMPLING_1X	0x00
#define BMP581_DT_OVERSAMPLING_2X	0x01
#define BMP581_DT_OVERSAMPLING_4X	0x02
#define BMP581_DT_OVERSAMPLING_8X	0x03
#define BMP581_DT_OVERSAMPLING_16X	0x04
#define BMP581_DT_OVERSAMPLING_32X	0x05
#define BMP581_DT_OVERSAMPLING_64X	0x06
#define BMP581_DT_OVERSAMPLING_128X	0x07
/** @} */

/**
 * @defgroup BMP581_IIR_FILTER IIR Filter options. Valid for temperature and pressure.
 * @{
 */
#define BMP581_DT_IIR_FILTER_BYPASS	0x00
#define BMP581_DT_IIR_FILTER_COEFF_1	0x01
#define BMP581_DT_IIR_FILTER_COEFF_3	0x02
#define BMP581_DT_IIR_FILTER_COEFF_7	0x03
#define BMP581_DT_IIR_FILTER_COEFF_15	0x04
#define BMP581_DT_IIR_FILTER_COEFF_31	0x05
#define BMP581_DT_IIR_FILTER_COEFF_63	0x06
#define BMP581_DT_IIR_FILTER_COEFF_127	0x07
/** @} */

/** @} */

#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_BOSCH_BMP581_H_*/