From 12d01f97fe586c44f0ee121d376b29949462229e Mon Sep 17 00:00:00 2001
From: Hauke Petersen <hauke.petersen@fu-berlin.de>
Date: Tue, 21 Nov 2017 17:17:29 +0100
Subject: [PATCH] boards: adds support for Nordic Thingy:52

---
 boards/thingy52/Makefile              |  3 +
 boards/thingy52/Makefile.dep          |  3 +
 boards/thingy52/Makefile.features     | 13 +++++
 boards/thingy52/Makefile.include      | 12 ++++
 boards/thingy52/board.c               | 28 +++++++++
 boards/thingy52/include/board.h       | 48 +++++++++++++++
 boards/thingy52/include/periph_conf.h | 84 +++++++++++++++++++++++++++
 7 files changed, 191 insertions(+)
 create mode 100644 boards/thingy52/Makefile
 create mode 100644 boards/thingy52/Makefile.dep
 create mode 100644 boards/thingy52/Makefile.features
 create mode 100644 boards/thingy52/Makefile.include
 create mode 100644 boards/thingy52/board.c
 create mode 100644 boards/thingy52/include/board.h
 create mode 100644 boards/thingy52/include/periph_conf.h

diff --git a/boards/thingy52/Makefile b/boards/thingy52/Makefile
new file mode 100644
index 0000000000..f8fcbb53a0
--- /dev/null
+++ b/boards/thingy52/Makefile
@@ -0,0 +1,3 @@
+MODULE = board
+
+include $(RIOTBASE)/Makefile.base
diff --git a/boards/thingy52/Makefile.dep b/boards/thingy52/Makefile.dep
new file mode 100644
index 0000000000..1a8393de41
--- /dev/null
+++ b/boards/thingy52/Makefile.dep
@@ -0,0 +1,3 @@
+ifneq (,$(filter gnrc_netdev_default,$(USEMODULE)))
+  USEMODULE += nrfmin
+endif
diff --git a/boards/thingy52/Makefile.features b/boards/thingy52/Makefile.features
new file mode 100644
index 0000000000..1830ca6784
--- /dev/null
+++ b/boards/thingy52/Makefile.features
@@ -0,0 +1,13 @@
+# Put defined MCU peripherals here (in alphabetical order)
+FEATURES_PROVIDED += periph_gpio
+FEATURES_PROVIDED += periph_rtt
+FEATURES_PROVIDED += periph_timer
+FEATURES_PROVIDED += periph_uart
+
+# Various other features (if any)
+FEATURES_PROVIDED += radio_nrfmin
+
+# The board MPU family (used for grouping by the CI system)
+FEATURES_MCU_GROUP = cortex_m4_3
+
+-include $(RIOTCPU)/nrf52/Makefile.features
diff --git a/boards/thingy52/Makefile.include b/boards/thingy52/Makefile.include
new file mode 100644
index 0000000000..f555e72548
--- /dev/null
+++ b/boards/thingy52/Makefile.include
@@ -0,0 +1,12 @@
+# CPU configuration for the Thingy:52
+export CPU = nrf52
+CPU_MODEL = nrf52832xxaa
+
+# set default port depending on operating system
+PORT_LINUX ?= /dev/ttyUSB0
+PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*)))
+include $(RIOTMAKE)/tools/serial.inc.mk
+
+# setup JLink for flashing
+export JLINK_DEVICE := nrf52
+include $(RIOTMAKE)/tools/jlink.inc.mk
diff --git a/boards/thingy52/board.c b/boards/thingy52/board.c
new file mode 100644
index 0000000000..c48a65ffc6
--- /dev/null
+++ b/boards/thingy52/board.c
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2017 Freie Universität Berlin
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @ingroup     boards_thingy52
+ * @{
+ *
+ * @file
+ * @brief       Board initialization for the Thingy:52
+ *
+ * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
+ *
+ * @}
+ */
+
+#include "cpu.h"
+#include "board.h"
+
+void board_init(void)
+{
+    /* initialize the CPU */
+    cpu_init();
+}
diff --git a/boards/thingy52/include/board.h b/boards/thingy52/include/board.h
new file mode 100644
index 0000000000..c76f7d6ffd
--- /dev/null
+++ b/boards/thingy52/include/board.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2017 Feie Universität Berlin
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @defgroup    boards_thingy52 Nordic Thingy:52
+ * @ingroup     boards
+ * @brief       Board specific configuration for the Nordic Thingy:52 board
+ * @{
+ *
+ * @file
+ * @brief       Board specific configuration for the Nordic Thingy:52 board
+ *
+ * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
+ */
+
+#ifndef BOARD_H
+#define BOARD_H
+
+#include "cpu.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @name    Button pin configuration
+ * @{
+ */
+#define BTN0_PIN            GPIO_PIN(0, 11)
+#define BTN0_MODE           GPIO_IN_PU
+/** @} */
+
+/**
+ * @brief   Initialize board specific hardware
+ */
+void board_init(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BOARD_H */
+/** @} */
diff --git a/boards/thingy52/include/periph_conf.h b/boards/thingy52/include/periph_conf.h
new file mode 100644
index 0000000000..ecae3942d8
--- /dev/null
+++ b/boards/thingy52/include/periph_conf.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2017 Freie Universität Berlin
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @ingroup     boards_thingy52
+ * @{
+ *
+ * @file
+ * @brief       Peripheral configuration for the Thingy:52
+ *
+ * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
+ *
+ */
+
+#ifndef PERIPH_CONF_H
+#define PERIPH_CONF_H
+
+#include "periph_cpu.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @name    Clock configuration
+ *
+ * @note    The radio will not work with the internal RC oscillator!
+ *
+ * @{
+ */
+#define CLOCK_HFCLK         (32U)           /* set to  0: internal RC oscillator
+                                             *        32: 32MHz crystal */
+#define CLOCK_LFCLK         (1)             /* set to  0: internal RC oscillator
+                                             *         1: 32.768 kHz crystal
+                                             *         2: derived from HFCLK */
+/** @} */
+
+/**
+ * @name    Timer configuration
+ * @{
+ */
+static const timer_conf_t timer_config[] = {
+    {
+        .dev      = NRF_TIMER1,
+        .channels = 3,
+        .bitmode  = TIMER_BITMODE_BITMODE_32Bit,
+        .irqn     = TIMER1_IRQn
+    }
+};
+
+#define TIMER_0_ISR         isr_timer1
+
+#define TIMER_NUMOF         (sizeof(timer_config) / sizeof(timer_config[0]))
+/** @} */
+
+/**
+ * @name    Real time counter configuration
+ * @{
+ */
+#define RTT_NUMOF           (1U)
+#define RTT_DEV             (1)             /* NRF_RTC1 */
+#define RTT_MAX_VALUE       (0x00ffffff)
+#define RTT_FREQUENCY       (1024)
+/** @} */
+
+/**
+ * @name    UART configuration
+ * @{
+ */
+#define UART_NUMOF          (1U)
+#define UART_PIN_RX         GPIO_PIN(0, 2)
+#define UART_PIN_TX         GPIO_PIN(0, 3)
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* PERIPH_CONF_H */
-- 
GitLab