mimxrt/machine_rtc: Improve the RTC init at boot.

By clearing the tamper bits and enabling access to the registers for all
code, just in case that this was set.  It keeps the clock running on
battery and the calibration setting.

Signed-off-by: robert-hh <robert@hammelrath.com>
This commit is contained in:
robert-hh 2023-09-18 22:10:10 +02:00 committed by Damien George
parent 6482eb142c
commit 4e5611c55a
2 changed files with 8 additions and 0 deletions

View File

@ -137,6 +137,7 @@ SRC_HAL_IMX_C += \
$(MCU_DIR)/drivers/fsl_pit.c \
$(MCU_DIR)/drivers/fsl_pwm.c \
$(MCU_DIR)/drivers/fsl_sai.c \
$(MCU_DIR)/drivers/fsl_snvs_hp.c \
$(MCU_DIR)/drivers/fsl_snvs_lp.c \
$(MCU_DIR)/drivers/fsl_wdog.c \
$(MCU_DIR)/system_$(MCU_SERIES)$(MCU_CORE).c \

View File

@ -30,6 +30,7 @@
#include "modmachine.h"
#include "ticks.h"
#include "fsl_snvs_lp.h"
#include "fsl_snvs_hp.h"
typedef struct _machine_rtc_obj_t {
mp_obj_base_t base;
@ -41,6 +42,12 @@ STATIC const machine_rtc_obj_t machine_rtc_obj = {{&machine_rtc_type}};
// Start the RTC Timer.
void machine_rtc_start(void) {
// Enable Non-Privileged Software Access
SNVS->HPCOMR |= SNVS_HPCOMR_NPSWA_EN_MASK;
// Do a basic init.
SNVS_LP_Init(SNVS);
// Disable all external Tamper
SNVS_LP_DisableAllExternalTamper(SNVS);
SNVS_LP_SRTC_StartTimer(SNVS);
// If the date is not set, set it to a more recent start date,