From d6ef4d2d51810a9d2843d27e19b0cab67412b3d5 Mon Sep 17 00:00:00 2001
From: Dan Evans <dan.evans@nelsonirrigation.com>
Date: Wed, 18 Oct 2017 10:34:23 -0700
Subject: [PATCH] =?UTF-8?q?cpu/sam0=5Fcommon/periph/uart=20-=20don?=
 =?UTF-8?q?=E2=80=99t=20setup=20receive=20if=20no=20pin=20is=20selected?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 cpu/sam0_common/periph/uart.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/cpu/sam0_common/periph/uart.c b/cpu/sam0_common/periph/uart.c
index 8199789828..86da678d5c 100644
--- a/cpu/sam0_common/periph/uart.c
+++ b/cpu/sam0_common/periph/uart.c
@@ -61,8 +61,10 @@ int uart_init(uart_t uart, uint32_t baudrate, uart_rx_cb_t rx_cb, void *arg)
     dev(uart)->CTRLA.reg &= ~(SERCOM_USART_CTRLA_ENABLE);
 
     /* configure pins */
-    gpio_init(uart_config[uart].rx_pin, GPIO_IN);
-    gpio_init_mux(uart_config[uart].rx_pin, uart_config[uart].mux);
+    if (uart_config[uart].rx_pin != GPIO_UNDEF) {
+        gpio_init(uart_config[uart].rx_pin, GPIO_IN);
+        gpio_init_mux(uart_config[uart].rx_pin, uart_config[uart].mux);
+    }
     gpio_init(uart_config[uart].tx_pin, GPIO_OUT);
     gpio_set(uart_config[uart].tx_pin);
     gpio_init_mux(uart_config[uart].tx_pin, uart_config[uart].mux);
@@ -97,7 +99,7 @@ int uart_init(uart_t uart, uint32_t baudrate, uart_rx_cb_t rx_cb, void *arg)
     /* enable transmitter, and configure 8N1 mode */
     dev(uart)->CTRLB.reg = (SERCOM_USART_CTRLB_TXEN);
     /* enable receiver and RX interrupt if configured */
-    if (rx_cb) {
+    if ((rx_cb) && (uart_config[uart].rx_pin != GPIO_UNDEF)) {
         uart_ctx[uart].rx_cb = rx_cb;
         uart_ctx[uart].arg = arg;
         NVIC_EnableIRQ(SERCOM0_IRQn + sercom_id(dev(uart)));
-- 
GitLab