You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2019/09/06 14:00:17 UTC

[mynewt-core] 04/06: hw/mcu/dialog: Switch to RCX from HAL

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

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

commit 93e86d837cd733f551683c9c970eaafdc1009c14
Author: Andrzej Kaczmarek <an...@codecoup.pl>
AuthorDate: Fri Sep 6 13:25:10 2019 +0200

    hw/mcu/dialog: Switch to RCX from HAL
    
    We should better switch to RCX from HAL clock setup routine. XTAL32K is
    handled separately from sysinit since it requires os_cputime to be
    running in order to wait for crystal to settle, we don't need this for
    RCX.
---
 hw/mcu/dialog/da1469x/src/da1469x_lpclk.c |  4 ----
 hw/mcu/dialog/da1469x/src/hal_system.c    | 20 +++++++++++++-------
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/hw/mcu/dialog/da1469x/src/da1469x_lpclk.c b/hw/mcu/dialog/da1469x/src/da1469x_lpclk.c
index 17dfad6..baa1f89 100644
--- a/hw/mcu/dialog/da1469x/src/da1469x_lpclk.c
+++ b/hw/mcu/dialog/da1469x/src/da1469x_lpclk.c
@@ -66,8 +66,4 @@ da1469x_lpclk_init(void)
     os_cputime_timer_relative(&lpclk_settle_tmr,
                               MYNEWT_VAL(MCU_CLOCK_XTAL32K_SETTLE_TIME_MS) * 1000);
 #endif
-#if MYNEWT_VAL_CHOICE(MCU_LPCLK_SOURCE, RCX)
-    da1469x_clock_lp_rcx_enable();
-    da1469x_clock_lp_rcx_switch();
-#endif
 }
diff --git a/hw/mcu/dialog/da1469x/src/hal_system.c b/hw/mcu/dialog/da1469x/src/hal_system.c
index 718993d..537e40c 100644
--- a/hw/mcu/dialog/da1469x/src/hal_system.c
+++ b/hw/mcu/dialog/da1469x/src/hal_system.c
@@ -87,13 +87,6 @@ hal_system_clock_start(void)
     /* Reset clock dividers to 0 */
     CRG_TOP->CLK_AMBA_REG &= ~(CRG_TOP_CLK_AMBA_REG_HCLK_DIV_Msk | CRG_TOP_CLK_AMBA_REG_PCLK_DIV_Msk);
 
-    /*
-     * We cannot switch lp_clk to XTAL32K here since it needs some time to
-     * settle, so we just disable RCX (we don't need it) and then we'll handle
-     * switch to XTAL32K from sysinit since we need os_cputime for this.
-     */
-    da1469x_clock_lp_rcx_disable();
-
     /* Make sure PD_TIM is up since this is where XTAL32M state machine runs */
     da1469x_pd_acquire(MCU_PD_DOMAIN_TIM);
 
@@ -102,6 +95,19 @@ hal_system_clock_start(void)
     da1469x_clock_sys_xtal32m_enable();
     da1469x_clock_sys_xtal32m_switch_safe();
     da1469x_clock_sys_rc32m_disable();
+
+#if MYNEWT_VAL_CHOICE(MCU_LPCLK_SOURCE, RCX)
+    /* Switch to RCX */
+    da1469x_clock_lp_rcx_enable();
+    da1469x_clock_lp_rcx_switch();
+#else
+    /*
+     * We cannot switch lp_clk to XTAL32K here since it needs some time to
+     * settle, so we just disable RCX (we don't need it) and then we'll handle
+     * switch to XTAL32K from sysinit since we need os_cputime for this.
+     */
+    da1469x_clock_lp_rcx_disable();
+#endif
 }
 
 enum hal_reset_reason