diff --git a/cpu/cc2538/dev/uart.c b/cpu/cc2538/dev/uart.c
index a83f559cb9173e567d9f8b7a5948648fcba610a6..8545cf4e24d9495d1afd8fa8ac1441b6416d664d 100644
--- a/cpu/cc2538/dev/uart.c
+++ b/cpu/cc2538/dev/uart.c
@@ -125,8 +125,9 @@ uart_init(void)
   ioc_set_sel(UART_TX_PORT, UART_TX_PIN, IOC_PXX_SEL_UART_TXD);
   ioc_set_over(UART_TX_PORT, UART_TX_PIN, IOC_OVERRIDE_OE);
 
-  /* Set PA[1:0] to peripheral mode */
-  REG(GPIO_A_BASE | GPIO_AFSEL) |= (0x00000002 | 0x00000001);
+  /* Set RX and TX pins to peripheral mode */
+  GPIO_PERIPHERAL_CONTROL(GPIO_PORT_TO_BASE(UART_TX_PORT), GPIO_PIN_MASK(UART_TX_PIN));
+  GPIO_PERIPHERAL_CONTROL(GPIO_PORT_TO_BASE(UART_RX_PORT), GPIO_PIN_MASK(UART_RX_PIN));
 
   /*
    * UART Interrupt Masks: