From e690fab6b199393cb6a6d2311c0c736fd6d5749d Mon Sep 17 00:00:00 2001 From: Armando Visconti Date: Fri, 6 Dec 2019 11:05:02 +0100 Subject: [PATCH] driver/sensor: lis2dw12: update to use new GPIO API Get rid of all the deprecated functions and definitions replacing them with the new ones. Signed-off-by: Armando Visconti --- drivers/sensor/lis2dw12/lis2dw12.c | 1 + drivers/sensor/lis2dw12/lis2dw12.h | 1 + drivers/sensor/lis2dw12/lis2dw12_trigger.c | 12 +++++++----- dts/bindings/sensor/st,lis2dw12-i2c.yaml | 5 +++++ dts/bindings/sensor/st,lis2dw12-spi.yaml | 5 +++++ 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/drivers/sensor/lis2dw12/lis2dw12.c b/drivers/sensor/lis2dw12/lis2dw12.c index c98d79736e8..05628fdcae6 100644 --- a/drivers/sensor/lis2dw12/lis2dw12.c +++ b/drivers/sensor/lis2dw12/lis2dw12.c @@ -376,6 +376,7 @@ const struct lis2dw12_device_config lis2dw12_cfg = { #ifdef CONFIG_LIS2DW12_TRIGGER .int_gpio_port = DT_INST_0_ST_LIS2DW12_IRQ_GPIOS_CONTROLLER, .int_gpio_pin = DT_INST_0_ST_LIS2DW12_IRQ_GPIOS_PIN, + .int_gpio_flags = DT_INST_0_ST_LIS2DW12_IRQ_GPIOS_FLAGS, #if defined(CONFIG_LIS2DW12_INT_PIN_1) .int_pin = 1, #elif defined(CONFIG_LIS2DW12_INT_PIN_2) diff --git a/drivers/sensor/lis2dw12/lis2dw12.h b/drivers/sensor/lis2dw12/lis2dw12.h index 0b197865e24..c3d2916bc40 100644 --- a/drivers/sensor/lis2dw12/lis2dw12.h +++ b/drivers/sensor/lis2dw12/lis2dw12.h @@ -92,6 +92,7 @@ struct lis2dw12_device_config { #ifdef CONFIG_LIS2DW12_TRIGGER const char *int_gpio_port; u8_t int_gpio_pin; + u8_t int_gpio_flags; u8_t int_pin; #ifdef CONFIG_LIS2DW12_PULSE u8_t pulse_trigger; diff --git a/drivers/sensor/lis2dw12/lis2dw12_trigger.c b/drivers/sensor/lis2dw12/lis2dw12_trigger.c index 885978d2f18..9b2ba96daa3 100644 --- a/drivers/sensor/lis2dw12/lis2dw12_trigger.c +++ b/drivers/sensor/lis2dw12/lis2dw12_trigger.c @@ -183,7 +183,8 @@ static void lis2dw12_handle_interrupt(void *arg) } #endif /* CONFIG_LIS2DW12_PULSE */ - gpio_pin_enable_callback(lis2dw12->gpio, cfg->int_gpio_pin); + gpio_pin_interrupt_configure(lis2dw12->gpio, cfg->int_gpio_pin, + GPIO_INT_EDGE_TO_ACTIVE); } static void lis2dw12_gpio_callback(struct device *dev, @@ -196,7 +197,8 @@ static void lis2dw12_gpio_callback(struct device *dev, return; } - gpio_pin_disable_callback(dev, lis2dw12->gpio_pin); + gpio_pin_interrupt_configure(dev, lis2dw12->gpio_pin, + GPIO_INT_DISABLE); #if defined(CONFIG_LIS2DW12_TRIGGER_OWN_THREAD) k_sem_give(&lis2dw12->gpio_sem); @@ -260,8 +262,7 @@ int lis2dw12_init_interrupt(struct device *dev) lis2dw12->gpio_pin = cfg->int_gpio_pin; ret = gpio_pin_configure(lis2dw12->gpio, cfg->int_gpio_pin, - GPIO_DIR_IN | GPIO_INT | GPIO_INT_EDGE | - GPIO_INT_ACTIVE_HIGH | GPIO_INT_DEBOUNCE); + GPIO_INPUT | cfg->int_gpio_flags); if (ret < 0) { LOG_DBG("Could not configure gpio"); return ret; @@ -281,5 +282,6 @@ int lis2dw12_init_interrupt(struct device *dev) return -EIO; } - return gpio_pin_enable_callback(lis2dw12->gpio, cfg->int_gpio_pin); + return gpio_pin_interrupt_configure(lis2dw12->gpio, cfg->int_gpio_pin, + GPIO_INT_EDGE_TO_ACTIVE); } diff --git a/dts/bindings/sensor/st,lis2dw12-i2c.yaml b/dts/bindings/sensor/st,lis2dw12-i2c.yaml index 9319145a4a8..573ee17d956 100644 --- a/dts/bindings/sensor/st,lis2dw12-i2c.yaml +++ b/dts/bindings/sensor/st,lis2dw12-i2c.yaml @@ -11,3 +11,8 @@ properties: irq-gpios: type: phandle-array required: false + description: DRDY pin + + This pin defaults to active high when produced by the sensor. + The property value should ensure the flags properly describe + the signal that is presented to the driver. diff --git a/dts/bindings/sensor/st,lis2dw12-spi.yaml b/dts/bindings/sensor/st,lis2dw12-spi.yaml index 7206c10ef25..b147f6f132d 100644 --- a/dts/bindings/sensor/st,lis2dw12-spi.yaml +++ b/dts/bindings/sensor/st,lis2dw12-spi.yaml @@ -12,3 +12,8 @@ properties: irq-gpios: type: phandle-array required: false + description: DRDY pin + + This pin defaults to active high when produced by the sensor. + The property value should ensure the flags properly describe + the signal that is presented to the driver.