Skip to content

Commit 7189ade

Browse files
JordanYateskartben
authored andcommitted
drivers: voltage_divider: handle ADC PM
Some ADC's draw significant power while enabled, so make sure the driver can handle ADC's that have device runtime PM enabled. Signed-off-by: Jordan Yates <[email protected]>
1 parent 79a8073 commit 7189ade

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

drivers/sensor/voltage_divider/voltage.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <zephyr/drivers/gpio.h>
1212
#include <zephyr/drivers/sensor.h>
1313
#include <zephyr/pm/device.h>
14+
#include <zephyr/pm/device_runtime.h>
1415

1516
#include <zephyr/logging/log.h>
1617
LOG_MODULE_REGISTER(voltage, CONFIG_SENSOR_LOG_LEVEL);
@@ -125,13 +126,17 @@ static int pm_action(const struct device *dev, enum pm_device_action action)
125126
}
126127
data->earliest_sample = K_TIMEOUT_ABS_TICKS(
127128
k_uptime_ticks() + k_us_to_ticks_ceil32(config->sample_delay_us));
129+
/* Power up ADC */
130+
pm_device_runtime_get(config->voltage.port.dev);
128131
break;
129132
#ifdef CONFIG_PM_DEVICE
130133
case PM_DEVICE_ACTION_SUSPEND:
131134
ret = gpio_pin_set_dt(&config->gpio_power, 0);
132135
if (ret != 0) {
133136
LOG_ERR("failed to set GPIO for PM suspend");
134137
}
138+
/* Power down ADC */
139+
pm_device_runtime_put(config->voltage.port.dev);
135140
break;
136141
case PM_DEVICE_ACTION_TURN_OFF:
137142
break;

0 commit comments

Comments
 (0)