You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by je...@apache.org on 2021/02/01 10:44:42 UTC

[mynewt-core] 02/02: hw/mcu/da1469x: Add UART driver to MCU peripherals

This is an automated email from the ASF dual-hosted git repository.

jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git

commit b65788b8422817d72bdbf06319bcf04a7f621cdf
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Mon Dec 14 12:42:42 2020 +0100

    hw/mcu/da1469x: Add UART driver to MCU peripherals
    
    uart_hal driver was used for devices created in da1469x_periph_create().
    Now da1469x_uart driver will be used by default.
    
    When UART_HAL syscfg value is set to 1 original uart_hal driver
    will be used instead.
---
 hw/mcu/dialog/da1469x/pkg.yml              |  5 +++-
 hw/mcu/dialog/da1469x/src/da1469x_periph.c | 42 +++++++++++++++++++++++-------
 hw/mcu/dialog/da1469x/syscfg.yml           |  4 +++
 3 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/hw/mcu/dialog/da1469x/pkg.yml b/hw/mcu/dialog/da1469x/pkg.yml
index 1338720..ef753b1 100644
--- a/hw/mcu/dialog/da1469x/pkg.yml
+++ b/hw/mcu/dialog/da1469x/pkg.yml
@@ -39,9 +39,12 @@ pkg.deps.TRNG:
 pkg.deps.CRYPTO:
     - "@apache-mynewt-core/hw/drivers/crypto/crypto_da1469x"
 
-pkg.deps.'UART_0 || UART_1 || UART_2':
+pkg.deps.'(UART_0 || UART_1 || UART_2) && HAL_UART':
     - "@apache-mynewt-core/hw/drivers/uart/uart_hal"
 
+pkg.deps.'(UART_0 || UART_1 || UART_2) && !HAL_UART':
+    - "@apache-mynewt-core/hw/drivers/uart/uart_da1469x"
+
 pkg.deps.'(I2C_0 || I2C_1) && BUS_DRIVER_PRESENT':
     - "@apache-mynewt-core/hw/bus/drivers/i2c_hal"
 
diff --git a/hw/mcu/dialog/da1469x/src/da1469x_periph.c b/hw/mcu/dialog/da1469x/src/da1469x_periph.c
index 0e2945b..c75483f 100644
--- a/hw/mcu/dialog/da1469x/src/da1469x_periph.c
+++ b/hw/mcu/dialog/da1469x/src/da1469x_periph.c
@@ -27,7 +27,11 @@
 
 #if MYNEWT_VAL(UART_0) || MYNEWT_VAL(UART_1) || MYNEWT_VAL(UART_2)
 #include "uart/uart.h"
+#if MYNEWT_VAL(HAL_UART)
 #include "uart_hal/uart_hal.h"
+#else
+#include "uart_da1469x/uart_da1469x.h"
+#endif
 #endif
 #if MYNEWT_VAL(BUS_DRIVER_PRESENT)
 #include "bus/bus.h"
@@ -89,7 +93,11 @@ static struct crypto_dev os_bsp_crypto;
 #endif
 
 #if MYNEWT_VAL(UART_0)
+#if MYNEWT_VAL(UART_HAL)
 static struct uart_dev os_bsp_uart0;
+#else
+static struct da1469x_uart_dev os_bsp_uart0;
+#endif
 static const struct da1469x_uart_cfg os_bsp_uart0_cfg = {
     .pin_tx = MYNEWT_VAL(UART_0_PIN_TX),
     .pin_rx = MYNEWT_VAL(UART_0_PIN_RX),
@@ -99,7 +107,11 @@ static const struct da1469x_uart_cfg os_bsp_uart0_cfg = {
 };
 #endif
 #if MYNEWT_VAL(UART_1)
+#if MYNEWT_VAL(UART_HAL)
 static struct uart_dev os_bsp_uart1;
+#else
+static struct da1469x_uart_dev os_bsp_uart1;
+#endif
 static const struct da1469x_uart_cfg os_bsp_uart1_cfg = {
     .pin_tx = MYNEWT_VAL(UART_1_PIN_TX),
     .pin_rx = MYNEWT_VAL(UART_1_PIN_RX),
@@ -109,7 +121,11 @@ static const struct da1469x_uart_cfg os_bsp_uart1_cfg = {
 };
 #endif
 #if MYNEWT_VAL(UART_2)
+#if MYNEWT_VAL(UART_HAL)
 static struct uart_dev os_bsp_uart2;
+#else
+static struct da1469x_uart_dev os_bsp_uart2;
+#endif
 static const struct da1469x_uart_cfg os_bsp_uart2_cfg = {
     .pin_tx = MYNEWT_VAL(UART_2_PIN_TX),
     .pin_rx = MYNEWT_VAL(UART_2_PIN_RX),
@@ -334,6 +350,20 @@ da1469x_periph_create_adc(void)
 #endif
 }
 
+static int
+da1469x_uart_create(struct da1469x_uart_dev *dev, const char *name, uint8_t priority,
+                    const struct da1469x_uart_cfg *cfg)
+{
+#if MYNEWT_VAL(HAL_UART)
+    return os_dev_create(&dev->ud_dev, "uart0",
+                         OS_DEV_INIT_PRIMARY, priority, uart_hal_init,
+                         (void *)&os_bsp_uart0_cfg);
+#else
+    (void)priority;
+    return da1469x_uart_dev_create(dev, name, priority, cfg);
+#endif
+}
+
 static void
 da1469x_periph_create_uart(void)
 {
@@ -342,21 +372,15 @@ da1469x_periph_create_uart(void)
     (void)rc;
 
 #if MYNEWT_VAL(UART_0)
-    rc = os_dev_create(&os_bsp_uart0.ud_dev, "uart0",
-                       OS_DEV_INIT_PRIMARY, 0, uart_hal_init,
-                       (void *)&os_bsp_uart0_cfg);
+    rc = da1469x_uart_create(&os_bsp_uart0, "uart0", 0, &os_bsp_uart0_cfg);
     assert(rc == 0);
 #endif
 #if MYNEWT_VAL(UART_1)
-    rc = os_dev_create(&os_bsp_uart1.ud_dev, "uart1",
-                       OS_DEV_INIT_PRIMARY, 1, uart_hal_init,
-                       (void *)&os_bsp_uart1_cfg);
+    rc = da1469x_uart_create(&os_bsp_uart1, "uart1", 1, &os_bsp_uart1_cfg);
     assert(rc == 0);
 #endif
 #if MYNEWT_VAL(UART_2)
-    rc = os_dev_create(&os_bsp_uart1.ud_dev, "uart2",
-                       OS_DEV_INIT_PRIMARY, 2, uart_hal_init,
-                       (void *)&os_bsp_uart2_cfg);
+    rc = da1469x_uart_create(&os_bsp_uart2, "uart2", 2, &os_bsp_uart2_cfg);
     assert(rc == 0);
 #endif
 }
diff --git a/hw/mcu/dialog/da1469x/syscfg.yml b/hw/mcu/dialog/da1469x/syscfg.yml
index 6bfb1a7..aff0113 100644
--- a/hw/mcu/dialog/da1469x/syscfg.yml
+++ b/hw/mcu/dialog/da1469x/syscfg.yml
@@ -336,6 +336,10 @@ syscfg.defs:
         description: 'SS pin for SPI_1_SLAVE'
         value: ''
 
+    HAL_UART:
+        description: 'Use hal_uart driver instead of da1469x_uart.'
+        value: 0
+
     UART_0:
         description: Enable DA1469x UART 0 (UART peripheral)
         value: 1