summaryrefslogtreecommitdiff
path: root/examples/imx7_colibri_m4/low_power_demo/hardware_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/imx7_colibri_m4/low_power_demo/hardware_init.c')
-rw-r--r--examples/imx7_colibri_m4/low_power_demo/hardware_init.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/examples/imx7_colibri_m4/low_power_demo/hardware_init.c b/examples/imx7_colibri_m4/low_power_demo/hardware_init.c
index 3658b64..aa077b5 100644
--- a/examples/imx7_colibri_m4/low_power_demo/hardware_init.c
+++ b/examples/imx7_colibri_m4/low_power_demo/hardware_init.c
@@ -33,6 +33,8 @@
void hardware_init(void)
{
+ int i;
+
/* Board specific RDC settings */
BOARD_RdcInit();
/* Board specific clock settings */
@@ -40,6 +42,23 @@ void hardware_init(void)
/* initialize debug uart */
dbg_uart_init();
+ /*
+ * In order to wakeup M4 from LPM, some PLLCTRLs need to be set to "NeededRun"
+ */
+ CCM_BASE_PTR->PLL_CTRL[0].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[6].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[7].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[8].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[9].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[10].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[11].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[12].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[13].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[14].PLL_CTRL = ccmClockNeededRun;
+ CCM_BASE_PTR->PLL_CTRL[15].PLL_CTRL = ccmClockNeededRun;
+
+ /* Enable clock gate for wakeup mix*/
+ CCM_ControlGate(CCM, BOARD_SIM_WAKEUP_CCGR, ccmClockNeededAll);
/* In this demo, we need to share board GPIO without RDC SEMAPHORE */
RDC_SetPdapAccess(RDC, rdcPdapGpio1, 0xFF, false, false);
RDC_SetPdapAccess(RDC, rdcPdapGpio4, 0xFF, false, false);
@@ -58,6 +77,9 @@ void hardware_init(void)
CCM_ControlGate(CCM, BOARD_ECSPI_CCM_CCGR, ccmClockNeededAll);
/* Configure ecspi pin IOMUX */
configure_ecspi_pins(BOARD_ECSPI_BASEADDR);
+
+ /* Enable MU clock*/
+ CCM_ControlGate(CCM, BOARD_MU_CCM_CCGR, ccmClockNeededAll);
}
/*******************************************************************************