aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports/SAMA/SAMA5D2x/hal_lld.c
diff options
context:
space:
mode:
Diffstat (limited to 'os/hal/ports/SAMA/SAMA5D2x/hal_lld.c')
-rw-r--r--os/hal/ports/SAMA/SAMA5D2x/hal_lld.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/os/hal/ports/SAMA/SAMA5D2x/hal_lld.c b/os/hal/ports/SAMA/SAMA5D2x/hal_lld.c
index b0162087e..fb3399316 100644
--- a/os/hal/ports/SAMA/SAMA5D2x/hal_lld.c
+++ b/os/hal/ports/SAMA/SAMA5D2x/hal_lld.c
@@ -138,6 +138,12 @@ void sama_clock_init(void) {
while (!(PMC->CKGR_MCFR & CKGR_MCFR_MAINFRDY))
;
mainf = CKGR_MCFR_MAINF(PMC->CKGR_MCFR);
+ /*
+ * TODO: check mainf
+ * select alternate clock source if mainf is out of range.
+ * This function should start trying to use crystal osc sources and
+ * should switch to alternate sources if mainf is invalid.
+ */
(void)mainf;
/* Switching Main Clock source. */
@@ -178,8 +184,8 @@ void sama_clock_init(void) {
while (!(PMC->PMC_SR & PMC_SR_MCKRDY))
; /* Waits until MCK is stable. */
- mckr &= ~(PMC_MCKR_PRES_Msk | PMC_MCKR_MDIV_Msk);
- mckr |= (SAMA_MCK_PRES | SAMA_MCK_MDIV);
+ mckr &= ~(PMC_MCKR_PRES_Msk | PMC_MCKR_MDIV_Msk | PMC_MCKR_H32MXDIV);
+ mckr |= (SAMA_MCK_PRES | SAMA_MCK_MDIV | SAMA_H64MX_H32MX_DIV);
#if SAMA_PLLADIV2_EN
mckr |= PMC_MCKR_PLLADIV2;
#else