drivers: sensor: dht: 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/dht/dht.c b/drivers/sensor/dht/dht.c
index 97a559b..1d935ca 100644
--- a/drivers/sensor/dht/dht.c
+++ b/drivers/sensor/dht/dht.c
@@ -31,7 +31,6 @@
 static int8_t dht_measure_signal_duration(const struct device *dev,
 	       	                   bool active)
 {
-	struct dht_data *drv_data = dev->data;
 	const struct dht_config *cfg = dev->config;
 	uint32_t elapsed_cycles;
 	uint32_t max_wait_cycles = (uint32_t)(
@@ -43,7 +42,7 @@
 	int rc;
 
 	do {
-		rc = gpio_pin_get(drv_data->gpio, cfg->pin);
+		rc = gpio_pin_get_dt(&cfg->dio_gpio);
 		elapsed_cycles = k_cycle_get_32() - start_cycles;
 
 		if ((rc < 0)
@@ -71,15 +70,14 @@
 	__ASSERT_NO_MSG(chan == SENSOR_CHAN_ALL);
 
 	/* assert to send start signal */
-	gpio_pin_set(drv_data->gpio, cfg->pin, true);
+	gpio_pin_set_dt(&cfg->dio_gpio, true);
 
 	k_busy_wait(DHT_START_SIGNAL_DURATION);
 
-	gpio_pin_set(drv_data->gpio, cfg->pin, false);
+	gpio_pin_set_dt(&cfg->dio_gpio, false);
 
 	/* switch to DIR_IN to read sensor signals */
-	gpio_pin_configure(drv_data->gpio, cfg->pin,
-			   GPIO_INPUT | cfg->flags);
+	gpio_pin_configure_dt(&cfg->dio_gpio, GPIO_INPUT);
 
 	/* wait for sensor active response */
 	if (dht_measure_signal_duration(dev, false) == -1) {
@@ -159,8 +157,7 @@
 
 cleanup:
 	/* Switch to output inactive until next fetch. */
-	gpio_pin_configure(drv_data->gpio, cfg->pin,
-			   GPIO_OUTPUT_INACTIVE | cfg->flags);
+	gpio_pin_configure_dt(&cfg->dio_gpio, GPIO_OUTPUT_INACTIVE);
 
 	return ret;
 }
@@ -225,26 +222,21 @@
 static int dht_init(const struct device *dev)
 {
 	int rc = 0;
-	struct dht_data *drv_data = dev->data;
 	const struct dht_config *cfg = dev->config;
 
-	drv_data->gpio = device_get_binding(cfg->ctrl);
-	if (drv_data->gpio == NULL) {
-		LOG_ERR("Failed to get GPIO device %s.", cfg->ctrl);
-		return -EINVAL;
+	if (!device_is_ready(cfg->dio_gpio.port)) {
+		LOG_ERR("GPIO device not ready");
+		return -ENODEV;
 	}
 
-	rc = gpio_pin_configure(drv_data->gpio, cfg->pin,
-				GPIO_OUTPUT_INACTIVE | cfg->flags);
+	rc = gpio_pin_configure_dt(&cfg->dio_gpio, GPIO_OUTPUT_INACTIVE);
 
 	return rc;
 }
 
 static struct dht_data dht_data;
 static const struct dht_config dht_config = {
-	.ctrl = DT_INST_GPIO_LABEL(0, dio_gpios),
-	.flags = DT_INST_GPIO_FLAGS(0, dio_gpios),
-	.pin = DT_INST_GPIO_PIN(0, dio_gpios),
+	.dio_gpio = GPIO_DT_SPEC_INST_GET(0, dio_gpios),
 };
 
 DEVICE_DT_INST_DEFINE(0, &dht_init, NULL,
diff --git a/drivers/sensor/dht/dht.h b/drivers/sensor/dht/dht.h
index 640831b..8aea426 100644
--- a/drivers/sensor/dht/dht.h
+++ b/drivers/sensor/dht/dht.h
@@ -14,14 +14,11 @@
 #define DHT_DATA_BITS_NUM			40
 
 struct dht_data {
-	const struct device *gpio;
 	uint8_t sample[4];
 };
 
 struct dht_config {
-	const char *ctrl;
-	gpio_dt_flags_t flags;
-	gpio_pin_t pin;
+	struct gpio_dt_spec dio_gpio;
 };
 
 #endif