From cbae0186ca69ccff988bca3e3edea8088eb94c52 Mon Sep 17 00:00:00 2001 From: Benjamin Valentin Date: Wed, 15 Jul 2020 23:07:37 +0200 Subject: [PATCH] drivers/stmpe811: fix interrupt polarity & type The Interrupt on the stmpe811 is generated on the falling edge. By observing the rising edge, we will only get an event if the interrupt gets cleared. Also configure the interrupt to be edge triggered instead of level triggered. --- drivers/stmpe811/stmpe811.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/stmpe811/stmpe811.c b/drivers/stmpe811/stmpe811.c index a04a2b0810..780fd16ed5 100644 --- a/drivers/stmpe811/stmpe811.c +++ b/drivers/stmpe811/stmpe811.c @@ -162,7 +162,7 @@ int stmpe811_init(stmpe811_t *dev, const stmpe811_params_t * params, touch_event if ((dev->params.int_pin != GPIO_UNDEF) && cb) { DEBUG("[stmpe811] init: configuring touchscreen interrupt\n"); - gpio_init_int(dev->params.int_pin, GPIO_IN, GPIO_RISING, cb, arg); + gpio_init_int(dev->params.int_pin, GPIO_IN, GPIO_FALLING, cb, arg); /* Enable touchscreen interrupt */ ret += i2c_write_reg(STMPE811_DEV_I2C, STMPE811_DEV_ADDR, @@ -170,7 +170,7 @@ int stmpe811_init(stmpe811_t *dev, const stmpe811_params_t * params, touch_event /* Enable global interrupt */ ret += i2c_write_reg(STMPE811_DEV_I2C, STMPE811_DEV_ADDR, - STMPE811_INT_CTRL, STMPE811_INT_CTRL_GLOBAL_INT, 0); + STMPE811_INT_CTRL, STMPE811_INT_CTRL_GLOBAL_INT | STMPE811_INT_CTRL_INT_TYPE, 0); } if (ret < 0) {