diff --git a/epicardium/modules/gpio.c b/epicardium/modules/gpio.c
index a923812f5f49d90604bdce150a29d01821dc9ff6..4af356ee843b1268dec103a301b7bf9a766a3115 100644
--- a/epicardium/modules/gpio.c
+++ b/epicardium/modules/gpio.c
@@ -48,7 +48,16 @@ int epic_gpio_set_pin_mode(uint8_t pin, uint8_t mode)
 
 	gpio_cfg_t *cfg = &gpio_configs[pin];
 
-	if (mode & EPIC_GPIO_MODE_IN) {
+	if (mode & EPIC_GPIO_MODE_ADC) {
+		if (s_adc_channels[pin] == -1) {
+			LOG_WARN("gpio", "ADC not available on pin %d", pin);
+			return -EINVAL;
+		}
+		cfg->func = GPIO_FUNC_ALT1;
+		if (mode & EPIC_GPIO_MODE_OUT) {
+			return -EINVAL;
+		}
+	} else if (mode & EPIC_GPIO_MODE_IN) {
 		cfg->func = GPIO_FUNC_IN;
 		if (mode & EPIC_GPIO_MODE_OUT) {
 			return -EINVAL;
@@ -58,15 +67,6 @@ int epic_gpio_set_pin_mode(uint8_t pin, uint8_t mode)
 		if (mode & EPIC_GPIO_MODE_IN) {
 			return -EINVAL;
 		}
-	} else if (mode & EPIC_GPIO_MODE_ADC) {
-		if (s_adc_channels[pin] == -1) {
-			LOG_WARN("gpio", "ADC not available on pin %d", pin);
-			return -EINVAL;
-		}
-		cfg->func = GPIO_FUNC_ALT1;
-		if (mode & EPIC_GPIO_MODE_OUT) {
-			return -EINVAL;
-		}
 	} else {
 		return -EINVAL;
 	}