123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- #include "fsl_smc.h"
- #include "clock_config.h"
- #ifdef USE_INT_CLOCK
- #define MCG_IRCLK_DISABLE 0U
- #define MCG_PLL_DISABLE 0U
- #define OSC_CAP0P 0U
- #define OSC_ER_CLK_DISABLE 0U
- #define SIM_CLKOUT_SEL_FLEXBUS_CLK 0U
- #define SIM_OSC32KSEL_RTC32KCLK_CLK 2U
- #define SIM_PLLFLLSEL_IRC48MCLK_CLK 3U
- #define SIM_PLLFLLSEL_MCGPLLCLK_CLK 1U
- #define SIM_TRACE_CLK_SEL_CORE_SYSTEM_CLK 1U
- extern uint32_t SystemCoreClock;
- static void CLOCK_CONFIG_FllStableDelay(void)
- {
- uint32_t i = 30000U;
- while (i--)
- {
- __NOP();
- }
- }
- void BOARD_InitBootClocks(void)
- {
- BOARD_BootClockRUN();
- }
- const mcg_config_t mcgConfig_BOARD_BootClockRUN =
- {
- .mcgMode = kMCG_ModeFBI,
- .irclkEnableMode = kMCG_IrclkEnable,
- .ircs = kMCG_IrcFast,
- .fcrdiv = 0x1U,
- .frdiv = 0x0U,
- .drs = kMCG_DrsLow,
- .dmx32 = kMCG_Dmx32Fine,
- .oscsel = kMCG_OscselOsc,
- .pll0Config =
- {
- .enableMode = MCG_PLL_DISABLE,
- .prdiv = 0xeU,
- .vdiv = 0xcU,
- },
- };
- const sim_clock_config_t simConfig_BOARD_BootClockRUN =
- {
- .pllFllSel = SIM_PLLFLLSEL_MCGPLLCLK_CLK,
- .er32kSrc = SIM_OSC32KSEL_RTC32KCLK_CLK,
- .clkdiv1 = 0x1240000U,
- };
- const osc_config_t oscConfig_BOARD_BootClockRUN =
- {
- .freq = 0U,
- .capLoad = (OSC_CAP0P),
- .workMode = kOSC_ModeExt,
- .oscerConfig =
- {
- .enableMode = kOSC_ErClkEnable,
- }
- };
- void BOARD_BootClockRUN(void)
- {
-
- CLOCK_SetSimSafeDivs();
-
- CLOCK_SetInternalRefClkConfig(mcgConfig_BOARD_BootClockRUN.irclkEnableMode,
- mcgConfig_BOARD_BootClockRUN.ircs,
- mcgConfig_BOARD_BootClockRUN.fcrdiv);
- #if FSL_CLOCK_DRIVER_VERSION >= MAKE_VERSION(2, 2, 0)
- CLOCK_SetFbiMode(mcgConfig_BOARD_BootClockRUN.dmx32,
- mcgConfig_BOARD_BootClockRUN.drs,
- CLOCK_CONFIG_FllStableDelay);
- #else
- CLOCK_SetFbiMode(mcgConfig_BOARD_BootClockRUN.drs,
- CLOCK_CONFIG_FllStableDelay);
- #endif
-
- CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN);
-
- SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
-
- CLOCK_SetClkOutClock(SIM_CLKOUT_SEL_FLEXBUS_CLK);
-
- CLOCK_SetTraceClock(SIM_TRACE_CLK_SEL_CORE_SYSTEM_CLK);
- }
- const mcg_config_t mcgConfig_BOARD_BootClockVLPR =
- {
- .mcgMode = kMCG_ModeBLPI,
- .irclkEnableMode = MCG_IRCLK_DISABLE,
- .ircs = kMCG_IrcFast,
- .fcrdiv = 0x0U,
- .frdiv = 0x0U,
- .drs = kMCG_DrsLow,
- .dmx32 = kMCG_Dmx32Default,
- .oscsel = kMCG_OscselOsc,
- .pll0Config =
- {
- .enableMode = MCG_PLL_DISABLE,
- .prdiv = 0x0U,
- .vdiv = 0x0U,
- },
- };
- const sim_clock_config_t simConfig_BOARD_BootClockVLPR =
- {
- .pllFllSel = SIM_PLLFLLSEL_IRC48MCLK_CLK,
- .er32kSrc = SIM_OSC32KSEL_RTC32KCLK_CLK,
- .clkdiv1 = 0x40000U,
- };
- const osc_config_t oscConfig_BOARD_BootClockVLPR =
- {
- .freq = 0U,
- .capLoad = (OSC_CAP0P),
- .workMode = kOSC_ModeExt,
- .oscerConfig =
- {
- .enableMode = OSC_ER_CLK_DISABLE,
- }
- };
- void BOARD_BootClockVLPR(void)
- {
-
- CLOCK_SetSimSafeDivs();
-
- CLOCK_BootToBlpiMode(mcgConfig_BOARD_BootClockVLPR.fcrdiv,
- mcgConfig_BOARD_BootClockVLPR.ircs,
- mcgConfig_BOARD_BootClockVLPR.irclkEnableMode);
-
- CLOCK_SetSimConfig(&simConfig_BOARD_BootClockVLPR);
-
- SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
- #if (defined(FSL_FEATURE_SMC_HAS_LPWUI) && FSL_FEATURE_SMC_HAS_LPWUI)
- SMC_SetPowerModeVlpr(SMC, false);
- #else
- SMC_SetPowerModeVlpr(SMC);
- #endif
- while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateVlpr)
- {
- }
-
- SystemCoreClock = BOARD_BOOTCLOCKVLPR_CORE_CLOCK;
- }
- #else
-
- #define MCG_IRCLK_DISABLE 0U
- #define MCG_PLL_DISABLE 0U
- #define OSC_CAP0P 0U
- #define OSC_ER_CLK_DISABLE 0U
- #define SIM_OSC32KSEL_OSC32KCLK_CLK 0U
- #define SIM_PLLFLLSEL_MCGFLLCLK_CLK 0U
- extern uint32_t SystemCoreClock;
- static void CLOCK_CONFIG_SetFllExtRefDiv(uint8_t frdiv)
- {
- MCG->C1 = ((MCG->C1 & ~MCG_C1_FRDIV_MASK) | MCG_C1_FRDIV(frdiv));
- }
- void BOARD_InitBootClocks(void)
- {
- BOARD_BootClockRUN();
- }
- const mcg_config_t mcgConfig_BOARD_BootClockRUN =
- {
- .mcgMode = kMCG_ModePBE,
- .irclkEnableMode = MCG_IRCLK_DISABLE,
- .ircs = kMCG_IrcSlow,
- .fcrdiv = 0x1U,
- .frdiv = 0x0U,
- .drs = kMCG_DrsLow,
- .dmx32 = kMCG_Dmx32Default,
- .oscsel = kMCG_OscselOsc,
- .pll0Config =
- {
- .enableMode = MCG_PLL_DISABLE,
- .prdiv = 0x1U,
- .vdiv = 0x0U,
- },
- };
- const sim_clock_config_t simConfig_BOARD_BootClockRUN =
- {
- .pllFllSel = SIM_PLLFLLSEL_MCGFLLCLK_CLK,
- .er32kSrc = SIM_OSC32KSEL_OSC32KCLK_CLK,
- .clkdiv1 = 0x110000U,
- };
- const osc_config_t oscConfig_BOARD_BootClockRUN =
- {
- .freq = 7370000U,
- .capLoad = (OSC_CAP0P),
- .workMode = kOSC_ModeExt,
- .oscerConfig =
- {
- .enableMode = OSC_ER_CLK_DISABLE,
- }
- };
- void BOARD_BootClockRUN(void)
- {
-
- CLOCK_SetSimSafeDivs();
-
- CLOCK_InitOsc0(&oscConfig_BOARD_BootClockRUN);
- CLOCK_SetXtal0Freq(oscConfig_BOARD_BootClockRUN.freq);
-
- CLOCK_CONFIG_SetFllExtRefDiv(mcgConfig_BOARD_BootClockRUN.frdiv);
-
- CLOCK_SetExternalRefClkConfig(mcgConfig_BOARD_BootClockRUN.oscsel);
- CLOCK_SetPbeMode(kMCG_PllClkSelPll0,
- &mcgConfig_BOARD_BootClockRUN.pll0Config);
-
- CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN);
-
- SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
- }
- #endif
|