diff --git a/cpu/lpc11u34/periph/gpio.c b/cpu/lpc11u34/periph/gpio.c
index ccc2802b1fb579818855e39e1c49b2de22f14296..bbc2bfb287728bace1d5f5128d5b60d0e167e1f7 100644
--- a/cpu/lpc11u34/periph/gpio.c
+++ b/cpu/lpc11u34/periph/gpio.c
@@ -261,7 +261,7 @@ static const uint8_t gpio_pin_map[GPIO_NUMOF] = {
 #endif
 };
 
-int gpio_init(gpio_t dev, gpio_dir_t dir, gpio_pp_t pullup)
+int gpio_init(gpio_t dev, gpio_mode_t mode)
 {
     uint8_t port;
     uint8_t pin;
@@ -279,26 +279,32 @@ int gpio_init(gpio_t dev, gpio_dir_t dir, gpio_pp_t pullup)
 
     /* Disable resistors */
     *lpc_pin_registers[pin + (port * 24)] &= ~(3 << 3);
-    /* Set resistors */
-    if (pullup == GPIO_PULLUP) {
-        *lpc_pin_registers[pin + (port * 24)] |= (2 << 3);
-    }
-    else if (pullup == GPIO_PULLDOWN) {
-        *lpc_pin_registers[pin + (port * 24)] |= (1 << 3);
-    }
 
-    /* Set direction */
-    if (dir == GPIO_DIR_OUT) {
-        LPC_GPIO->DIR[port] |= (1 << pin);           /* set pin to output mode */
-    }
-    else {
-        LPC_GPIO->DIR[port] &= ~(1 << pin);           /* set pin to output mode */
+    /* Set mode */
+    switch (mode) {
+        case GPIO_IN:
+            LPC_GPIO->DIR[port] &= ~(1 << pin);
+            break;
+        case GPIO_IN_PD:
+            LPC_GPIO->DIR[port] &= ~(1 << pin);
+            *lpc_pin_registers[pin + (port * 24)] |= (1 << 3);
+            break;
+        case GPIO_IN_PU:
+            LPC_GPIO->DIR[port] &= ~(1 << pin);
+            *lpc_pin_registers[pin + (port * 24)] |= (2 << 3);
+            break;
+        case GPIO_OUT:
+            LPC_GPIO->DIR[port] |= (1 << pin);
+            break;
+        default:
+            return -1;
     }
 
     return 0; /* all OK */
 }
 
-int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb, void *arg)
+int gpio_init_int(gpio_t dev, gpio_mode_t mode, gpio_flank_t flank,
+                  gpio_cb_t cb, void *arg)
 {
     int res;
     uint8_t pin;
@@ -318,7 +324,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
     pin = gpio_pin_map[dev];
 
     /* configure pin as input */
-    res = gpio_init(dev, GPIO_DIR_IN, pullup);
+    res = gpio_init(dev, mode);
     if (res < 0) {
         return res;
     }