From 47021a608def5ef50e54255baf0eca1201b051c1 Mon Sep 17 00:00:00 2001 From: Maxime Vincent Date: Fri, 18 Mar 2022 18:10:23 +0100 Subject: [PATCH] drivers/sensor: lis2dw12: add bw_filt support Add bandwidth filter support. (BW_FILT in CTRL6) Value is configurable through DT per instance. Signed-off-by: Maxime Vincent --- drivers/sensor/lis2dw12/lis2dw12.c | 5 +++++ drivers/sensor/lis2dw12/lis2dw12.h | 1 + dts/bindings/sensor/st,lis2dw12-common.yaml | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/drivers/sensor/lis2dw12/lis2dw12.c b/drivers/sensor/lis2dw12/lis2dw12.c index 289f720d9eb..126595aab0b 100644 --- a/drivers/sensor/lis2dw12/lis2dw12.c +++ b/drivers/sensor/lis2dw12/lis2dw12.c @@ -289,6 +289,9 @@ static int lis2dw12_init(const struct device *dev) return ret; } + LOG_DBG("bandwidth filter is %u", (int)cfg->bw_filt); + lis2dw12_filter_bandwidth_set(ctx, cfg->bw_filt); + #ifdef CONFIG_LIS2DW12_TRIGGER if (lis2dw12_init_interrupt(dev) < 0) { LOG_ERR("Failed to initialize interrupts"); @@ -363,6 +366,7 @@ static int lis2dw12_init(const struct device *dev) }, \ .pm = DT_INST_PROP(inst, power_mode), \ .range = DT_INST_PROP(inst, range), \ + .bw_filt = DT_INST_PROP(inst, bw_filt), \ LIS2DW12_CONFIG_TAP(inst) \ COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \ (LIS2DW12_CFG_IRQ(inst)), ()) \ @@ -387,6 +391,7 @@ static int lis2dw12_init(const struct device *dev) }, \ .pm = DT_INST_PROP(inst, power_mode), \ .range = DT_INST_PROP(inst, range), \ + .bw_filt = DT_INST_PROP(inst, bw_filt), \ LIS2DW12_CONFIG_TAP(inst) \ COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \ (LIS2DW12_CFG_IRQ(inst)), ()) \ diff --git a/drivers/sensor/lis2dw12/lis2dw12.h b/drivers/sensor/lis2dw12/lis2dw12.h index 5b2b0292f52..ff8f4516ec7 100644 --- a/drivers/sensor/lis2dw12/lis2dw12.h +++ b/drivers/sensor/lis2dw12/lis2dw12.h @@ -68,6 +68,7 @@ struct lis2dw12_device_config { } stmemsc_cfg; lis2dw12_mode_t pm; uint8_t range; + uint8_t bw_filt; #ifdef CONFIG_LIS2DW12_TRIGGER struct gpio_dt_spec gpio_int; uint8_t int_pin; diff --git a/dts/bindings/sensor/st,lis2dw12-common.yaml b/dts/bindings/sensor/st,lis2dw12-common.yaml index 930a1a5212a..2bba8006afb 100644 --- a/dts/bindings/sensor/st,lis2dw12-common.yaml +++ b/dts/bindings/sensor/st,lis2dw12-common.yaml @@ -48,6 +48,24 @@ properties: - 4 - 2 + bw-filt: + type: int + required: false + default: 0 + description: | + Digital filtering cutoff bandwidth. Default is power-up configuration. + + 3 # ODR/20 (HP/LP) + 2 # ODR/10 (HP/LP) + 1 # ODR/ 4 (HP/LP) + 0 # ODR/ 2 (up to ODR = 800 Hz, 400 Hz when ODR = 1600 Hz) + + enum: + - 3 + - 2 + - 1 + - 0 + power-mode: type: int required: false