drivers: sensor: stts751: Update driver to use gpio_dt_spec
Simplify driver by using gpio_dt_spec for bus access.
Signed-off-by: Benjamin Björnsson <benjamin.bjornsson@gmail.com>
diff --git a/drivers/sensor/stts751/stts751.c b/drivers/sensor/stts751/stts751.c
index a0282ea..65fb15b 100644
--- a/drivers/sensor/stts751/stts751.c
+++ b/drivers/sensor/stts751/stts751.c
@@ -202,9 +202,7 @@
static const struct stts751_config stts751_config = {
COND_CODE_1(DT_INST_ON_BUS(0, i2c), (.i2c = I2C_DT_SPEC_INST_GET(0),), ())
#ifdef CONFIG_STTS751_TRIGGER
- .event_port = DT_INST_GPIO_LABEL(0, drdy_gpios),
- .event_pin = DT_INST_GPIO_PIN(0, drdy_gpios),
- .int_flags = DT_INST_GPIO_FLAGS(0, drdy_gpios),
+ .int_gpio = GPIO_DT_SPEC_INST_GET(0, drdy_gpios),
#endif
#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c)
.bus_init = stts751_i2c_init,
diff --git a/drivers/sensor/stts751/stts751.h b/drivers/sensor/stts751/stts751.h
index e6a3084..e311b09 100644
--- a/drivers/sensor/stts751/stts751.h
+++ b/drivers/sensor/stts751/stts751.h
@@ -25,9 +25,7 @@
#endif
int (*bus_init)(const struct device *dev);
#ifdef CONFIG_STTS751_TRIGGER
- const char *event_port;
- uint8_t event_pin;
- uint8_t int_flags;
+ struct gpio_dt_spec int_gpio;
#endif
};
@@ -42,8 +40,6 @@
#endif
#ifdef CONFIG_STTS751_TRIGGER
- const struct device *gpio;
- uint32_t pin;
struct gpio_callback gpio_cb;
struct sensor_trigger data_ready_trigger;
diff --git a/drivers/sensor/stts751/stts751_trigger.c b/drivers/sensor/stts751/stts751_trigger.c
index 0adbaaa..0bf0f73 100644
--- a/drivers/sensor/stts751/stts751_trigger.c
+++ b/drivers/sensor/stts751/stts751_trigger.c
@@ -71,8 +71,7 @@
stts751->thsld_handler(dev, &thsld_trigger);
}
- gpio_pin_interrupt_configure(stts751->gpio, cfg->event_pin,
- GPIO_INT_EDGE_TO_ACTIVE);
+ gpio_pin_interrupt_configure_dt(&cfg->int_gpio, GPIO_INT_EDGE_TO_ACTIVE);
}
static void stts751_gpio_callback(const struct device *dev,
@@ -84,7 +83,7 @@
ARG_UNUSED(pins);
- gpio_pin_interrupt_configure(dev, cfg->event_pin, GPIO_INT_DISABLE);
+ gpio_pin_interrupt_configure_dt(&cfg->int_gpio, GPIO_INT_DISABLE);
#if defined(CONFIG_STTS751_TRIGGER_OWN_THREAD)
k_sem_give(&stts751->gpio_sem);
@@ -119,11 +118,9 @@
const struct stts751_config *cfg = dev->config;
int ret;
- /* setup data ready gpio interrupt */
- stts751->gpio = device_get_binding(cfg->event_port);
- if (stts751->gpio == NULL) {
- LOG_DBG("Cannot get pointer to %s device", cfg->event_port);
- return -EINVAL;
+ if (!device_is_ready(cfg->int_gpio.port)) {
+ LOG_ERR("GPIO device not ready");
+ return -ENODEV;
}
#if defined(CONFIG_STTS751_TRIGGER_OWN_THREAD)
@@ -138,17 +135,15 @@
stts751->work.handler = stts751_work_cb;
#endif /* CONFIG_STTS751_TRIGGER_OWN_THREAD */
- ret = gpio_pin_configure(stts751->gpio, cfg->event_pin,
- GPIO_INPUT | cfg->int_flags);
+ ret = gpio_pin_configure_dt(&cfg->int_gpio, GPIO_INPUT);
if (ret < 0) {
LOG_DBG("Could not configure gpio");
return ret;
}
- gpio_init_callback(&stts751->gpio_cb, stts751_gpio_callback,
- BIT(cfg->event_pin));
+ gpio_init_callback(&stts751->gpio_cb, stts751_gpio_callback, BIT(cfg->int_gpio.pin));
- if (gpio_add_callback(stts751->gpio, &stts751->gpio_cb) < 0) {
+ if (gpio_add_callback(cfg->int_gpio.port, &stts751->gpio_cb) < 0) {
LOG_DBG("Could not set gpio callback");
return -EIO;
}
@@ -163,6 +158,5 @@
stts751_low_temperature_threshold_set(stts751->ctx,
stts751_from_celsius_to_lsb(temp_lo));
- return gpio_pin_interrupt_configure(stts751->gpio, cfg->event_pin,
- GPIO_INT_EDGE_TO_ACTIVE);
+ return gpio_pin_interrupt_configure_dt(&cfg->int_gpio, GPIO_INT_EDGE_TO_ACTIVE);
}