diff --git a/boards/frdm-k64f/include/periph_conf.h b/boards/frdm-k64f/include/periph_conf.h
index e919602e0b0b346a8b8180eaf7ac82c1c7fa91a9..cd74dd5c79dda17a14373efe85c96cff229e2594 100644
--- a/boards/frdm-k64f/include/periph_conf.h
+++ b/boards/frdm-k64f/include/periph_conf.h
@@ -89,6 +89,7 @@ static const uart_conf_t uart_config[] = {
         .pcr_rx = PORT_PCR_MUX(3),
         .pcr_tx = PORT_PCR_MUX(3),
         .irqn   = UART0_RX_TX_IRQn,
+        .mode   = UART_MODE_8N1
     },
 };
 
diff --git a/boards/mulle/include/periph_conf.h b/boards/mulle/include/periph_conf.h
index 0b9125d2717dd59283f82bbfb1466440912d201e..5719bdc14b52e5140aac3915c7d7b5660de545b0 100644
--- a/boards/mulle/include/periph_conf.h
+++ b/boards/mulle/include/periph_conf.h
@@ -106,6 +106,7 @@ static const uart_conf_t uart_config[] = {
         .pcr_rx = PORT_PCR_MUX(3),
         .pcr_tx = PORT_PCR_MUX(3),
         .irqn   = UART0_RX_TX_IRQn,
+        .mode   = UART_MODE_8N1
     },
     {
         .dev    = UART1,
@@ -116,6 +117,7 @@ static const uart_conf_t uart_config[] = {
         .pcr_rx = PORT_PCR_MUX(3),
         .pcr_tx = PORT_PCR_MUX(3),
         .irqn   = UART1_RX_TX_IRQn,
+        .mode   = UART_MODE_8N1
     },
 };
 
diff --git a/boards/pba-d-01-kw2x/include/periph_conf.h b/boards/pba-d-01-kw2x/include/periph_conf.h
index 6e1c3174340db877c44ba35f15b1b6548a601bc4..fb52ee9cb9413bdcdbf03be09c340df7fb563e12 100644
--- a/boards/pba-d-01-kw2x/include/periph_conf.h
+++ b/boards/pba-d-01-kw2x/include/periph_conf.h
@@ -91,6 +91,7 @@ static const uart_conf_t uart_config[] = {
         .pcr_rx = PORT_PCR_MUX(3),
         .pcr_tx = PORT_PCR_MUX(3),
         .irqn   = UART2_RX_TX_IRQn,
+        .mode   = UART_MODE_8N1
     },
     {
         .dev    = UART0,
@@ -101,6 +102,7 @@ static const uart_conf_t uart_config[] = {
         .pcr_rx = PORT_PCR_MUX(3),
         .pcr_tx = PORT_PCR_MUX(3),
         .irqn   = UART0_RX_TX_IRQn,
+        .mode   = UART_MODE_8N1
     }
 };
 
diff --git a/cpu/kinetis_common/include/periph_cpu.h b/cpu/kinetis_common/include/periph_cpu.h
index 69e0228f9af766a9dee249e54141a05c059ca4b9..d4ca43c4b949756b317968d1b073f25078f4c17d 100644
--- a/cpu/kinetis_common/include/periph_cpu.h
+++ b/cpu/kinetis_common/include/periph_cpu.h
@@ -198,6 +198,18 @@ typedef enum {
 /** @} */
 #endif /* ndef DOXYGEN */
 
+/**
+ * @name    CPU specific UART modes values
+ * @{
+ */
+/** @brief 8 data bits, no parity, 1 stop bit */
+#define UART_MODE_8N1       (0)
+/** @brief 8 data bits, even parity, 1 stop bit */
+#define UART_MODE_8E1       (UART_C1_PE_MASK)
+/** @brief 8 data bits, odd parity, 1 stop bit */
+#define UART_MODE_8O1       (UART_C1_PE_MASK | UART_C1_PT_MASK)
+/** @} */
+
 #ifndef DOXYGEN
 /**
  * @brief   Override default ADC resolution values
@@ -302,14 +314,15 @@ enum {
  * @brief UART module configuration options
  */
 typedef struct {
-    UART_Type *dev;            /**< Pointer to module hardware registers */
-    volatile uint32_t *clken;  /**< Clock enable bitband register address */
-    uint32_t freq;             /**< Module clock frequency, usually CLOCK_CORECLOCK or CLOCK_BUSCLOCK */
-    gpio_t pin_rx;             /**< RX pin, GPIO_UNDEF disables RX */
-    gpio_t pin_tx;             /**< TX pin */
-    uint32_t pcr_rx;           /**< Pin configuration register bits for RX */
-    uint32_t pcr_tx;           /**< Pin configuration register bits for TX */
-    IRQn_Type irqn;            /**< IRQ number for this module */
+    UART_Type *dev;             /**< Pointer to module hardware registers */
+    volatile uint32_t *clken;   /**< Clock enable bitband register address */
+    uint32_t freq;              /**< Module clock frequency, usually CLOCK_CORECLOCK or CLOCK_BUSCLOCK */
+    gpio_t pin_rx;              /**< RX pin, GPIO_UNDEF disables RX */
+    gpio_t pin_tx;              /**< TX pin */
+    uint32_t pcr_rx;            /**< Pin configuration register bits for RX */
+    uint32_t pcr_tx;            /**< Pin configuration register bits for TX */
+    IRQn_Type irqn;             /**< IRQ number for this module */
+    uint8_t mode;               /**< UART mode: data bits, parity, stop bits */
 } uart_conf_t;
 
 /**
diff --git a/cpu/kinetis_common/periph/uart.c b/cpu/kinetis_common/periph/uart.c
index ed970df822aa8652456339d491b2644ffec7cd36..b25525aac7035240a338ac035963797c534edf0d 100644
--- a/cpu/kinetis_common/periph/uart.c
+++ b/cpu/kinetis_common/periph/uart.c
@@ -98,7 +98,7 @@ static int init_base(uart_t uart, uint32_t baudrate)
     /* disable transmitter and receiver */
     dev->C2 &= ~(UART_C2_TE_MASK | UART_C2_RE_MASK);
     /* set defaults, 8-bit mode, no parity */
-    dev->C1 = 0;
+    dev->C1 = uart_config[uart].mode;
 
     /* calculate baudrate */
     ubd = (uint16_t)(clk / (baudrate * 16));