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
