summaryrefslogtreecommitdiff
path: root/examples/imx7_colibri_m4/low_power_demo/hardware_init.c
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2017-03-02 17:29:43 -0800
committerStefan Agner <stefan.agner@toradex.com>2017-03-02 17:29:43 -0800
commitc8ea6f4a7541f848b4ca6720c9f5a8d3d1fc8958 (patch)
treecd9671e1bbe6882b13b5996046af649d8ace7cd0 /examples/imx7_colibri_m4/low_power_demo/hardware_init.c
parent8133945bc624bfde2dc5f26fa7d6b55e82524a62 (diff)
initial low power mode implementation
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);
}
/*******************************************************************************