mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-24 14:03:55 +01:00
Merge pull request #13783 from benpicco/cpu/samd5x/reinit-dfll
cpu/samd5x: work around errata when (re-)initializing DFLL
This commit is contained in:
commit
744896b062
@ -64,9 +64,14 @@ static void dfll_init(void)
|
||||
#endif
|
||||
;
|
||||
|
||||
OSCCTRL->DFLLCTRLB.reg = reg;
|
||||
OSCCTRL->DFLLCTRLA.reg = OSCCTRL_DFLLCTRLA_ENABLE;
|
||||
/* workaround for Errata 2.8.3 DFLLVAL.FINE Value When DFLL48M Re-enabled */
|
||||
OSCCTRL->DFLLMUL.reg = 0; /* Write new DFLLMULL configuration */
|
||||
OSCCTRL->DFLLCTRLB.reg = 0; /* Select Open loop configuration */
|
||||
OSCCTRL->DFLLCTRLA.bit.ENABLE = 1; /* Enable DFLL */
|
||||
OSCCTRL->DFLLVAL.reg = OSCCTRL->DFLLVAL.reg; /* Reload DFLLVAL register */
|
||||
OSCCTRL->DFLLCTRLB.reg = reg; /* Write final DFLL configuration */
|
||||
|
||||
OSCCTRL->DFLLCTRLA.reg = OSCCTRL_DFLLCTRLA_ENABLE;
|
||||
while (!OSCCTRL->STATUS.bit.DFLLRDY) {}
|
||||
}
|
||||
|
||||
@ -152,8 +157,12 @@ void cpu_pm_cb_enter(int deep)
|
||||
|
||||
void cpu_pm_cb_leave(int deep)
|
||||
{
|
||||
(void) deep;
|
||||
/* will be called after wake-up */
|
||||
|
||||
if (deep) {
|
||||
/* DFLL needs to be re-initialized to work around errata 2.8.3 */
|
||||
dfll_init();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user