aboutsummaryrefslogtreecommitdiff
path: root/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B11A/project_template/clock_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B11A/project_template/clock_config.c')
-rw-r--r--lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B11A/project_template/clock_config.c210
1 files changed, 210 insertions, 0 deletions
diff --git a/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B11A/project_template/clock_config.c b/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B11A/project_template/clock_config.c
new file mode 100644
index 000000000..844a3534c
--- /dev/null
+++ b/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B11A/project_template/clock_config.c
@@ -0,0 +1,210 @@
1/*
2 * Copyright 2019 NXP
3 * All rights reserved.
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8/***********************************************************************************************************************
9 * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
10 * will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
11 **********************************************************************************************************************/
12/*
13 * How to setup clock using clock driver functions:
14 *
15 * 1. CLOCK_SetSimSafeDivs, to make sure core clock, bus clock, flexbus clock
16 * and flash clock are in allowed range during clock mode switch.
17 *
18 * 2. Call CLOCK_Osc0Init to setup OSC clock, if it is used in target mode.
19 *
20 * 3. Call CLOCK_SetMcgliteConfig to set MCG_Lite configuration.
21 *
22 * 4. Call CLOCK_SetSimConfig to set the clock configuration in SIM.
23 */
24
25/* clang-format off */
26/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
27!!GlobalInfo
28product: Clocks v6.0
29processor: K32L2B11xxxxA
30package_id: K32L2B11VLH0A
31mcu_data: ksdk2_0
32processor_version: 0.0.0
33 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
34/* clang-format on */
35
36#include "fsl_smc.h"
37#include "clock_config.h"
38
39/*******************************************************************************
40 * Definitions
41 ******************************************************************************/
42#define OSC_CAP0P 0U /*!< Oscillator 0pF capacitor load */
43#define OSC_ER_CLK_DISABLE 0U /*!< Disable external reference clock */
44#define SIM_OSC32KSEL_OSC32KCLK_CLK 0U /*!< OSC32KSEL select: OSC32KCLK clock */
45
46/*******************************************************************************
47 * Variables
48 ******************************************************************************/
49/* System clock frequency. */
50extern uint32_t SystemCoreClock;
51
52/*******************************************************************************
53 ************************ BOARD_InitBootClocks function ************************
54 ******************************************************************************/
55void BOARD_InitBootClocks(void)
56{
57 BOARD_BootClockRUN();
58}
59
60/*******************************************************************************
61 ********************** Configuration BOARD_BootClockRUN ***********************
62 ******************************************************************************/
63/* clang-format off */
64/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
65!!Configuration
66name: BOARD_BootClockRUN
67called_from_default_init: true
68outputs:
69- {id: Bus_clock.outFreq, value: 24 MHz}
70- {id: Core_clock.outFreq, value: 48 MHz}
71- {id: Flash_clock.outFreq, value: 24 MHz}
72- {id: LPO_clock.outFreq, value: 1 kHz}
73- {id: MCGIRCLK.outFreq, value: 8 MHz}
74- {id: MCGPCLK.outFreq, value: 48 MHz}
75- {id: System_clock.outFreq, value: 48 MHz}
76settings:
77- {id: MCGMode, value: HIRC}
78- {id: MCG.CLKS.sel, value: MCG.HIRC}
79- {id: MCG_C2_OSC_MODE_CFG, value: ModeOscLowPower}
80- {id: MCG_C2_RANGE0_CFG, value: Very_high}
81- {id: MCG_MC_HIRCEN_CFG, value: Enabled}
82- {id: OSC0_CR_ERCLKEN_CFG, value: Enabled}
83- {id: OSC_CR_ERCLKEN_CFG, value: Enabled}
84- {id: SIM.CLKOUTSEL.sel, value: MCG.MCGPCLK}
85- {id: SIM.COPCLKSEL.sel, value: OSC.OSCERCLK}
86- {id: SIM.FLEXIOSRCSEL.sel, value: MCG.MCGPCLK}
87- {id: SIM.LPUART0SRCSEL.sel, value: MCG.MCGPCLK}
88- {id: SIM.LPUART1SRCSEL.sel, value: MCG.MCGPCLK}
89- {id: SIM.RTCCLKOUTSEL.sel, value: OSC.OSCERCLK}
90- {id: SIM.TPMSRCSEL.sel, value: MCG.MCGPCLK}
91- {id: SIM.USBSRCSEL.sel, value: MCG.MCGPCLK}
92sources:
93- {id: MCG.HIRC.outFreq, value: 48 MHz}
94- {id: OSC.OSC.outFreq, value: 32 MHz}
95 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
96/* clang-format on */
97
98/*******************************************************************************
99 * Variables for BOARD_BootClockRUN configuration
100 ******************************************************************************/
101const mcglite_config_t mcgliteConfig_BOARD_BootClockRUN = {
102 .outSrc = kMCGLITE_ClkSrcHirc, /* MCGOUTCLK source is HIRC */
103 .irclkEnableMode = kMCGLITE_IrclkEnable, /* MCGIRCLK enabled, MCGIRCLK disabled in STOP mode */
104 .ircs = kMCGLITE_Lirc8M, /* Slow internal reference (LIRC) 8 MHz clock selected */
105 .fcrdiv = kMCGLITE_LircDivBy1, /* Low-frequency Internal Reference Clock Divider: divided by 1 */
106 .lircDiv2 = kMCGLITE_LircDivBy1, /* Second Low-frequency Internal Reference Clock Divider: divided by 1 */
107 .hircEnableInNotHircMode = true, /* HIRC source is enabled */
108};
109const sim_clock_config_t simConfig_BOARD_BootClockRUN = {
110 .er32kSrc = SIM_OSC32KSEL_OSC32KCLK_CLK, /* OSC32KSEL select: OSC32KCLK clock */
111 .clkdiv1 = 0x10000U, /* SIM_CLKDIV1 - OUTDIV1: /1, OUTDIV4: /2 */
112};
113const osc_config_t oscConfig_BOARD_BootClockRUN = {
114 .freq = 0U, /* Oscillator frequency: 0Hz */
115 .capLoad = (OSC_CAP0P), /* Oscillator capacity load: 0pF */
116 .workMode = kOSC_ModeOscLowPower, /* Oscillator low power */
117 .oscerConfig = {
118 .enableMode =
119 kOSC_ErClkEnable, /* Enable external reference clock, disable external reference clock in STOP mode */
120 }};
121
122/*******************************************************************************
123 * Code for BOARD_BootClockRUN configuration
124 ******************************************************************************/
125void BOARD_BootClockRUN(void)
126{
127 /* Set the system clock dividers in SIM to safe value. */
128 CLOCK_SetSimSafeDivs();
129 /* Set MCG to HIRC mode. */
130 CLOCK_SetMcgliteConfig(&mcgliteConfig_BOARD_BootClockRUN);
131 /* Set the clock configuration in SIM module. */
132 CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN);
133 /* Set SystemCoreClock variable. */
134 SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
135}
136
137/*******************************************************************************
138 ********************* Configuration BOARD_BootClockVLPR ***********************
139 ******************************************************************************/
140/* clang-format off */
141/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
142!!Configuration
143name: BOARD_BootClockVLPR
144outputs:
145- {id: Bus_clock.outFreq, value: 1 MHz}
146- {id: Core_clock.outFreq, value: 2 MHz}
147- {id: Flash_clock.outFreq, value: 1 MHz}
148- {id: LPO_clock.outFreq, value: 1 kHz}
149- {id: MCGIRCLK.outFreq, value: 2 MHz}
150- {id: System_clock.outFreq, value: 2 MHz}
151settings:
152- {id: MCGMode, value: LIRC2M}
153- {id: powerMode, value: VLPR}
154- {id: MCG_C2_OSC_MODE_CFG, value: ModeOscLowPower}
155- {id: RTCCLKOUTConfig, value: 'yes'}
156- {id: SIM.OUTDIV4.scale, value: '2', locked: true}
157- {id: SIM.RTCCLKOUTSEL.sel, value: OSC.OSCERCLK}
158sources:
159- {id: MCG.LIRC.outFreq, value: 2 MHz}
160- {id: OSC.OSC.outFreq, value: 32.768 kHz}
161 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
162/* clang-format on */
163
164/*******************************************************************************
165 * Variables for BOARD_BootClockVLPR configuration
166 ******************************************************************************/
167const mcglite_config_t mcgliteConfig_BOARD_BootClockVLPR = {
168 .outSrc = kMCGLITE_ClkSrcLirc, /* MCGOUTCLK source is LIRC */
169 .irclkEnableMode = kMCGLITE_IrclkEnable, /* MCGIRCLK enabled, MCGIRCLK disabled in STOP mode */
170 .ircs = kMCGLITE_Lirc2M, /* Slow internal reference (LIRC) 2 MHz clock selected */
171 .fcrdiv = kMCGLITE_LircDivBy1, /* Low-frequency Internal Reference Clock Divider: divided by 1 */
172 .lircDiv2 = kMCGLITE_LircDivBy1, /* Second Low-frequency Internal Reference Clock Divider: divided by 1 */
173 .hircEnableInNotHircMode = false, /* HIRC source is not enabled */
174};
175const sim_clock_config_t simConfig_BOARD_BootClockVLPR = {
176 .er32kSrc = SIM_OSC32KSEL_OSC32KCLK_CLK, /* OSC32KSEL select: OSC32KCLK clock */
177 .clkdiv1 = 0x10000U, /* SIM_CLKDIV1 - OUTDIV1: /1, OUTDIV4: /2 */
178};
179const osc_config_t oscConfig_BOARD_BootClockVLPR = {
180 .freq = 0U, /* Oscillator frequency: 0Hz */
181 .capLoad = (OSC_CAP0P), /* Oscillator capacity load: 0pF */
182 .workMode = kOSC_ModeOscLowPower, /* Oscillator low power */
183 .oscerConfig = {
184 .enableMode = OSC_ER_CLK_DISABLE, /* Disable external reference clock */
185 }};
186
187/*******************************************************************************
188 * Code for BOARD_BootClockVLPR configuration
189 ******************************************************************************/
190void BOARD_BootClockVLPR(void)
191{
192 /* Set the system clock dividers in SIM to safe value. */
193 CLOCK_SetSimSafeDivs();
194 /* Set MCG to LIRC2M mode. */
195 CLOCK_SetMcgliteConfig(&mcgliteConfig_BOARD_BootClockVLPR);
196 /* Set the clock configuration in SIM module. */
197 CLOCK_SetSimConfig(&simConfig_BOARD_BootClockVLPR);
198 /* Set VLPR power mode. */
199 SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
200#if (defined(FSL_FEATURE_SMC_HAS_LPWUI) && FSL_FEATURE_SMC_HAS_LPWUI)
201 SMC_SetPowerModeVlpr(SMC, false);
202#else
203 SMC_SetPowerModeVlpr(SMC);
204#endif
205 while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateVlpr)
206 {
207 }
208 /* Set SystemCoreClock variable. */
209 SystemCoreClock = BOARD_BOOTCLOCKVLPR_CORE_CLOCK;
210}