drivers/sensor: lis2dw12: Set tap triggers only if detection is on
Set single/double tap triggers only if tap detection is enabled.
Signed-off-by: Armando Visconti <armando.visconti@st.com>
diff --git a/drivers/sensor/lis2dw12/lis2dw12_trigger.c b/drivers/sensor/lis2dw12/lis2dw12_trigger.c
index 1bd74a2..9b2824e 100644
--- a/drivers/sensor/lis2dw12/lis2dw12_trigger.c
+++ b/drivers/sensor/lis2dw12/lis2dw12_trigger.c
@@ -102,13 +102,24 @@
break;
#ifdef CONFIG_LIS2DW12_TAP
case SENSOR_TRIG_TAP:
- lis2dw12->tap_handler = handler;
- return lis2dw12_enable_int(dev, SENSOR_TRIG_TAP, state);
- break;
case SENSOR_TRIG_DOUBLE_TAP:
+ /* check if tap detection is enabled */
+ if ((cfg->tap_threshold[0] == 0) &&
+ (cfg->tap_threshold[1] == 0) &&
+ (cfg->tap_threshold[2] == 0)) {
+ LOG_ERR("Unsupported sensor trigger");
+ return -ENOTSUP;
+ }
+
+ /* Set single TAP trigger */
+ if (trig->type == SENSOR_TRIG_TAP) {
+ lis2dw12->tap_handler = handler;
+ return lis2dw12_enable_int(dev, SENSOR_TRIG_TAP, state);
+ }
+
+ /* Set double TAP trigger */
lis2dw12->double_tap_handler = handler;
return lis2dw12_enable_int(dev, SENSOR_TRIG_DOUBLE_TAP, state);
- break;
#endif /* CONFIG_LIS2DW12_TAP */
default:
LOG_ERR("Unsupported sensor trigger");