From c43a116f4182e8848b55a7cd2d7788cc5a4f6338 Mon Sep 17 00:00:00 2001 From: qianfan Zhao Date: Mon, 19 Nov 2018 13:57:24 +0800 Subject: [PATCH] soc: same70: don't switch main clock if already did Don't switch clock to external clock again if the bootloader already did. Signed-off-by: qianfan Zhao --- soc/arm/atmel_sam/same70/soc.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/soc/arm/atmel_sam/same70/soc.c b/soc/arm/atmel_sam/same70/soc.c index 89f4d89b96b..6ba5f81583e 100644 --- a/soc/arm/atmel_sam/same70/soc.c +++ b/soc/arm/atmel_sam/same70/soc.c @@ -71,7 +71,7 @@ static ALWAYS_INLINE void clock_init(void) * by a previous program i.e. bootloader */ - if (PMC->PMC_SR & PMC_SR_MOSCRCS) { + if (!(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL_Msk)) { /* Start the external crystal oscillator */ PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD /* We select maximum setup time. @@ -100,17 +100,17 @@ static ALWAYS_INLINE void clock_init(void) while (!(PMC->PMC_SR & PMC_SR_MOSCSELS)) { ; } + } - /* Turn off RC OSC, not used any longer, to save power */ - PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD - | CKGR_MOR_MOSCSEL - | CKGR_MOR_MOSCXTST(0xFFu) - | CKGR_MOR_MOSCXTEN; + /* Turn off RC OSC, not used any longer, to save power */ + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD + | CKGR_MOR_MOSCSEL + | CKGR_MOR_MOSCXTST(0xFFu) + | CKGR_MOR_MOSCXTEN; - /* Wait for RC OSC to be turned off */ - while (PMC->PMC_SR & PMC_SR_MOSCRCS) { - ; - } + /* Wait for RC OSC to be turned off */ + while (PMC->PMC_SR & PMC_SR_MOSCRCS) { + ; } #ifdef CONFIG_SOC_ATMEL_SAME70_WAIT_MODE