![]() |
|
|||
File indexing completed on 2025-05-11 08:22:50
0001 /* 0002 * Copyright 2017-2023 NXP 0003 * All rights reserved. 0004 * 0005 * SPDX-License-Identifier: BSD-3-Clause 0006 */ 0007 0008 /* 0009 * How to setup clock using clock driver functions: 0010 * 0011 * 1. Call CLOCK_InitXXXPLL() to configure corresponding PLL clock. 0012 * 0013 * 2. Call CLOCK_InitXXXpfd() to configure corresponding PLL pfd clock. 0014 * 0015 * 3. Call CLOCK_SetRootClock() to configure corresponding module clock source and divider. 0016 * 0017 */ 0018 0019 /* TEXT BELOW IS USED AS SETTING FOR TOOLS ************************************* 0020 !!GlobalInfo 0021 product: Clocks v11.0 0022 processor: MIMXRT1166xxxxx 0023 package_id: MIMXRT1166DVM6A 0024 mcu_data: ksdk2_0 0025 processor_version: 13.0.2 0026 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/ 0027 0028 #include "clock_config.h" 0029 #include "fsl_iomuxc.h" 0030 #include "fsl_dcdc.h" 0031 #include "fsl_pmu.h" 0032 #include "fsl_clock.h" 0033 0034 /******************************************************************************* 0035 * Definitions 0036 ******************************************************************************/ 0037 0038 /******************************************************************************* 0039 * Variables 0040 ******************************************************************************/ 0041 0042 /******************************************************************************* 0043 ************************ BOARD_InitBootClocks function ************************ 0044 ******************************************************************************/ 0045 void BOARD_InitBootClocks(void) 0046 { 0047 BOARD_BootClockRUN(); 0048 } 0049 0050 /******************************************************************************* 0051 ********************** Configuration BOARD_BootClockRUN *********************** 0052 ******************************************************************************/ 0053 /* TEXT BELOW IS USED AS SETTING FOR TOOLS ************************************* 0054 !!Configuration 0055 name: BOARD_BootClockRUN 0056 called_from_default_init: true 0057 outputs: 0058 - {id: ACMP_CLK_ROOT.outFreq, value: 24 MHz} 0059 - {id: ADC1_CLK_ROOT.outFreq, value: 24 MHz} 0060 - {id: ADC2_CLK_ROOT.outFreq, value: 24 MHz} 0061 - {id: ARM_PLL_CLK.outFreq, value: 600 MHz, locked: true, accuracy: '0.001'} 0062 - {id: ASRC_CLK_ROOT.outFreq, value: 24 MHz} 0063 - {id: AXI_CLK_ROOT.outFreq, value: 600 MHz} 0064 - {id: BUS_CLK_ROOT.outFreq, value: 198 MHz} 0065 - {id: BUS_LPSR_CLK_ROOT.outFreq, value: 120 MHz} 0066 - {id: CAN1_CLK_ROOT.outFreq, value: 24 MHz} 0067 - {id: CAN2_CLK_ROOT.outFreq, value: 24 MHz} 0068 - {id: CAN3_CLK_ROOT.outFreq, value: 24 MHz} 0069 - {id: CCM_CLKO1_CLK_ROOT.outFreq, value: 24 MHz} 0070 - {id: CCM_CLKO2_CLK_ROOT.outFreq, value: 24 MHz} 0071 - {id: CLK_1M.outFreq, value: 1 MHz} 0072 - {id: CSI2_CLK_ROOT.outFreq, value: 24 MHz} 0073 - {id: CSI2_ESC_CLK_ROOT.outFreq, value: 24 MHz} 0074 - {id: CSI2_UI_CLK_ROOT.outFreq, value: 24 MHz} 0075 - {id: CSI_CLK_ROOT.outFreq, value: 24 MHz} 0076 - {id: CSSYS_CLK_ROOT.outFreq, value: 24 MHz} 0077 - {id: CSTRACE_CLK_ROOT.outFreq, value: 132 MHz} 0078 - {id: ELCDIF_CLK_ROOT.outFreq, value: 24 MHz} 0079 - {id: EMV1_CLK_ROOT.outFreq, value: 24 MHz} 0080 - {id: EMV2_CLK_ROOT.outFreq, value: 24 MHz} 0081 - {id: ENET1_CLK_ROOT.outFreq, value: 50 MHz, locked: true, accuracy: '0.001'} 0082 - {id: ENET2_CLK_ROOT.outFreq, value: 24 MHz} 0083 - {id: ENET_1G_TX_CLK.outFreq, value: 24 MHz} 0084 - {id: ENET_25M_CLK_ROOT.outFreq, value: 25 MHz, locked: true, accuracy: '0.001'} 0085 - {id: ENET_REF_CLK.outFreq, value: 50 MHz, locked: true, accuracy: '0.001'} 0086 - {id: ENET_TIMER1_CLK_ROOT.outFreq, value: 24 MHz} 0087 - {id: ENET_TIMER2_CLK_ROOT.outFreq, value: 24 MHz} 0088 - {id: ENET_TX_CLK.outFreq, value: 25 MHz, locked: true, accuracy: '0.001'} 0089 - {id: FLEXIO1_CLK_ROOT.outFreq, value: 24 MHz} 0090 - {id: FLEXIO2_CLK_ROOT.outFreq, value: 24 MHz} 0091 - {id: FLEXSPI1_CLK_ROOT.outFreq, value: 24 MHz} 0092 - {id: FLEXSPI2_CLK_ROOT.outFreq, value: 24 MHz} 0093 - {id: GC355_CLK_ROOT.outFreq, value: 492.0000125 MHz} 0094 - {id: GPT1_CLK_ROOT.outFreq, value: 24 MHz} 0095 - {id: GPT1_ipg_clk_highfreq.outFreq, value: 24 MHz} 0096 - {id: GPT2_CLK_ROOT.outFreq, value: 24 MHz} 0097 - {id: GPT2_ipg_clk_highfreq.outFreq, value: 24 MHz} 0098 - {id: GPT3_CLK_ROOT.outFreq, value: 24 MHz} 0099 - {id: GPT3_ipg_clk_highfreq.outFreq, value: 24 MHz} 0100 - {id: GPT4_CLK_ROOT.outFreq, value: 24 MHz} 0101 - {id: GPT4_ipg_clk_highfreq.outFreq, value: 24 MHz} 0102 - {id: GPT5_CLK_ROOT.outFreq, value: 24 MHz} 0103 - {id: GPT5_ipg_clk_highfreq.outFreq, value: 24 MHz} 0104 - {id: GPT6_CLK_ROOT.outFreq, value: 24 MHz} 0105 - {id: GPT6_ipg_clk_highfreq.outFreq, value: 24 MHz} 0106 - {id: LCDIFV2_CLK_ROOT.outFreq, value: 24 MHz} 0107 - {id: LPI2C1_CLK_ROOT.outFreq, value: 24 MHz} 0108 - {id: LPI2C2_CLK_ROOT.outFreq, value: 24 MHz} 0109 - {id: LPI2C3_CLK_ROOT.outFreq, value: 24 MHz} 0110 - {id: LPI2C4_CLK_ROOT.outFreq, value: 24 MHz} 0111 - {id: LPI2C5_CLK_ROOT.outFreq, value: 24 MHz} 0112 - {id: LPI2C6_CLK_ROOT.outFreq, value: 24 MHz} 0113 - {id: LPSPI1_CLK_ROOT.outFreq, value: 50 MHz} 0114 - {id: LPSPI2_CLK_ROOT.outFreq, value: 50 MHz} 0115 - {id: LPSPI3_CLK_ROOT.outFreq, value: 50 MHz} 0116 - {id: LPSPI4_CLK_ROOT.outFreq, value: 50 MHz} 0117 - {id: LPSPI5_CLK_ROOT.outFreq, value: 50 MHz} 0118 - {id: LPSPI6_CLK_ROOT.outFreq, value: 50 MHz} 0119 - {id: LPUART10_CLK_ROOT.outFreq, value: 24 MHz} 0120 - {id: LPUART11_CLK_ROOT.outFreq, value: 24 MHz} 0121 - {id: LPUART12_CLK_ROOT.outFreq, value: 24 MHz} 0122 - {id: LPUART1_CLK_ROOT.outFreq, value: 24 MHz} 0123 - {id: LPUART2_CLK_ROOT.outFreq, value: 24 MHz} 0124 - {id: LPUART3_CLK_ROOT.outFreq, value: 24 MHz} 0125 - {id: LPUART4_CLK_ROOT.outFreq, value: 24 MHz} 0126 - {id: LPUART5_CLK_ROOT.outFreq, value: 24 MHz} 0127 - {id: LPUART6_CLK_ROOT.outFreq, value: 24 MHz} 0128 - {id: LPUART7_CLK_ROOT.outFreq, value: 24 MHz} 0129 - {id: LPUART8_CLK_ROOT.outFreq, value: 24 MHz} 0130 - {id: LPUART9_CLK_ROOT.outFreq, value: 24 MHz} 0131 - {id: M4_CLK_ROOT.outFreq, value: 240 MHz} 0132 - {id: M4_SYSTICK_CLK_ROOT.outFreq, value: 24 MHz} 0133 - {id: M7_CLK_ROOT.outFreq, value: 600 MHz} 0134 - {id: M7_SYSTICK_CLK_ROOT.outFreq, value: 24 MHz} 0135 - {id: MIC_CLK_ROOT.outFreq, value: 24 MHz} 0136 - {id: MIPI_DSI_TX_CLK_ESC_ROOT.outFreq, value: 24 MHz} 0137 - {id: MIPI_ESC_CLK_ROOT.outFreq, value: 24 MHz} 0138 - {id: MIPI_REF_CLK_ROOT.outFreq, value: 24 MHz} 0139 - {id: MQS_CLK_ROOT.outFreq, value: 24 MHz} 0140 - {id: MQS_MCLK.outFreq, value: 24 MHz} 0141 - {id: OSC_24M.outFreq, value: 24 MHz} 0142 - {id: OSC_32K.outFreq, value: 32.768 kHz} 0143 - {id: OSC_RC_16M.outFreq, value: 16 MHz} 0144 - {id: OSC_RC_400M.outFreq, value: 400 MHz} 0145 - {id: OSC_RC_48M.outFreq, value: 48 MHz} 0146 - {id: OSC_RC_48M_DIV2.outFreq, value: 24 MHz} 0147 - {id: PLL_VIDEO_CLK.outFreq, value: 984.000025 MHz, locked: true, accuracy: '0.001'} 0148 - {id: SAI1_CLK_ROOT.outFreq, value: 24 MHz} 0149 - {id: SAI1_MCLK1.outFreq, value: 24 MHz} 0150 - {id: SAI1_MCLK3.outFreq, value: 24 MHz} 0151 - {id: SAI2_CLK_ROOT.outFreq, value: 24 MHz} 0152 - {id: SAI2_MCLK1.outFreq, value: 24 MHz} 0153 - {id: SAI2_MCLK3.outFreq, value: 24 MHz} 0154 - {id: SAI3_CLK_ROOT.outFreq, value: 24 MHz} 0155 - {id: SAI3_MCLK1.outFreq, value: 24 MHz} 0156 - {id: SAI3_MCLK3.outFreq, value: 24 MHz} 0157 - {id: SAI4_CLK_ROOT.outFreq, value: 24 MHz} 0158 - {id: SAI4_MCLK1.outFreq, value: 24 MHz} 0159 - {id: SEMC_CLK_ROOT.outFreq, value: 2160/13 MHz} 0160 - {id: SPDIF_CLK_ROOT.outFreq, value: 24 MHz} 0161 - {id: SYS_PLL1_CLK.outFreq, value: 1 GHz, locked: true, accuracy: '0.001'} 0162 - {id: SYS_PLL1_DIV2_CLK.outFreq, value: 500 MHz, locked: true, accuracy: '0.001'} 0163 - {id: SYS_PLL1_DIV5_CLK.outFreq, value: 200 MHz, locked: true, accuracy: '0.001'} 0164 - {id: SYS_PLL2_CLK.outFreq, value: 528 MHz, locked: true, accuracy: '0.001'} 0165 - {id: SYS_PLL2_PFD0_CLK.outFreq, value: 352 MHz, locked: true, accuracy: '0.001'} 0166 - {id: SYS_PLL2_PFD1_CLK.outFreq, value: 594 MHz, locked: true, accuracy: '0.001'} 0167 - {id: SYS_PLL2_PFD2_CLK.outFreq, value: 396 MHz, locked: true, accuracy: '0.001'} 0168 - {id: SYS_PLL2_PFD3_CLK.outFreq, value: 396 MHz, locked: true, accuracy: '0.001'} 0169 - {id: SYS_PLL3_CLK.outFreq, value: 480 MHz, locked: true, accuracy: '0.001'} 0170 - {id: SYS_PLL3_DIV2_CLK.outFreq, value: 240 MHz, locked: true, accuracy: '0.001'} 0171 - {id: SYS_PLL3_PFD0_CLK.outFreq, value: 8640/13 MHz, locked: true, accuracy: '0.001'} 0172 - {id: SYS_PLL3_PFD1_CLK.outFreq, value: 8640/17 MHz, locked: true, accuracy: '0.001'} 0173 - {id: SYS_PLL3_PFD2_CLK.outFreq, value: 270 MHz, locked: true, accuracy: '0.001'} 0174 - {id: SYS_PLL3_PFD3_CLK.outFreq, value: 4320/11 MHz, locked: true, accuracy: '0.001'} 0175 - {id: USDHC1_CLK_ROOT.outFreq, value: 200 MHz} 0176 - {id: USDHC2_CLK_ROOT.outFreq, value: 24 MHz} 0177 settings: 0178 - {id: CoreBusClockRootsInitializationConfig, value: selectedCore} 0179 - {id: SemcConfigurationPatchConfig, value: disabled} 0180 - {id: ANADIG_OSC_OSC_24M_CTRL_LP_EN_CFG, value: Low} 0181 - {id: ANADIG_OSC_OSC_24M_CTRL_OSC_EN_CFG, value: Enabled} 0182 - {id: ANADIG_PLL.ARM_PLL_POST_DIV.scale, value: '4'} 0183 - {id: ANADIG_PLL.ARM_PLL_VDIV.scale, value: '100'} 0184 - {id: ANADIG_PLL.PLL_AUDIO_BYPASS.sel, value: ANADIG_OSC.OSC_24M} 0185 - {id: ANADIG_PLL.PLL_VIDEO.denom, value: '960000'} 0186 - {id: ANADIG_PLL.PLL_VIDEO.div, value: '41'} 0187 - {id: ANADIG_PLL.PLL_VIDEO.num, value: '1'} 0188 - {id: ANADIG_PLL.SYS_PLL2.denom, value: '268435455'} 0189 - {id: ANADIG_PLL.SYS_PLL2.div, value: '22'} 0190 - {id: ANADIG_PLL.SYS_PLL2.num, value: '0'} 0191 - {id: ANADIG_PLL.SYS_PLL2_PFD3_DIV.scale, value: '24'} 0192 - {id: ANADIG_PLL.SYS_PLL2_SS_DIV.scale, value: '268435455'} 0193 - {id: ANADIG_PLL.SYS_PLL3_PFD3_DIV.scale, value: '22', locked: true} 0194 - {id: ANADIG_PLL.SYS_PLL3_PFD3_MUL.scale, value: '18', locked: true} 0195 - {id: ANADIG_PLL_ARM_PLL_CTRL_POWERUP_CFG, value: Enabled} 0196 - {id: ANADIG_PLL_PLL_AUDIO_CTRL_GATE_CFG, value: Disabled} 0197 - {id: ANADIG_PLL_PLL_VIDEO_CTRL0_POWERUP_CFG, value: Enabled} 0198 - {id: ANADIG_PLL_SYS_PLL1_CTRL_SYS_PLL1_DIV2_CFG, value: Enabled} 0199 - {id: ANADIG_PLL_SYS_PLL1_CTRL_SYS_PLL1_DIV5_CFG, value: Enabled} 0200 - {id: ANADIG_PLL_SYS_PLL2_CTRL_POWERUP_CFG, value: Enabled} 0201 - {id: ANADIG_PLL_SYS_PLL3_CTRL_POWERUP_CFG, value: Enabled} 0202 - {id: ANADIG_PLL_SYS_PLL3_CTRL_SYS_PLL3_DIV2_CFG, value: Enabled} 0203 - {id: CCM.CLOCK_ROOT0.MUX.sel, value: ANADIG_PLL.ARM_PLL_CLK} 0204 - {id: CCM.CLOCK_ROOT1.DIV.scale, value: '2'} 0205 - {id: CCM.CLOCK_ROOT1.MUX.sel, value: ANADIG_PLL.SYS_PLL3_CLK} 0206 - {id: CCM.CLOCK_ROOT2.DIV.scale, value: '2'} 0207 - {id: CCM.CLOCK_ROOT2.MUX.sel, value: ANADIG_PLL.SYS_PLL2_PFD3_CLK} 0208 - {id: CCM.CLOCK_ROOT25.DIV.scale, value: '22'} 0209 - {id: CCM.CLOCK_ROOT25.MUX.sel, value: ANADIG_PLL.SYS_PLL2_CLK} 0210 - {id: CCM.CLOCK_ROOT26.DIV.scale, value: '22'} 0211 - {id: CCM.CLOCK_ROOT26.MUX.sel, value: ANADIG_PLL.SYS_PLL2_CLK} 0212 - {id: CCM.CLOCK_ROOT3.DIV.scale, value: '4'} 0213 - {id: CCM.CLOCK_ROOT3.MUX.sel, value: ANADIG_PLL.SYS_PLL3_CLK} 0214 - {id: CCM.CLOCK_ROOT4.DIV.scale, value: '4'} 0215 - {id: CCM.CLOCK_ROOT4.MUX.sel, value: ANADIG_PLL.SYS_PLL3_PFD0_CLK} 0216 - {id: CCM.CLOCK_ROOT43.DIV.scale, value: '4', locked: true} 0217 - {id: CCM.CLOCK_ROOT43.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0218 - {id: CCM.CLOCK_ROOT44.DIV.scale, value: '4', locked: true} 0219 - {id: CCM.CLOCK_ROOT44.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0220 - {id: CCM.CLOCK_ROOT45.DIV.scale, value: '4', locked: true} 0221 - {id: CCM.CLOCK_ROOT45.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0222 - {id: CCM.CLOCK_ROOT46.DIV.scale, value: '4', locked: true} 0223 - {id: CCM.CLOCK_ROOT46.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0224 - {id: CCM.CLOCK_ROOT47.DIV.scale, value: '4', locked: true} 0225 - {id: CCM.CLOCK_ROOT47.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0226 - {id: CCM.CLOCK_ROOT48.DIV.scale, value: '4', locked: true} 0227 - {id: CCM.CLOCK_ROOT48.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0228 - {id: CCM.CLOCK_ROOT51.DIV.scale, value: '4'} 0229 - {id: CCM.CLOCK_ROOT51.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0230 - {id: CCM.CLOCK_ROOT54.DIV.scale, value: '8'} 0231 - {id: CCM.CLOCK_ROOT54.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0232 - {id: CCM.CLOCK_ROOT55.MUX.sel, value: ANADIG_OSC.OSC_24M} 0233 - {id: CCM.CLOCK_ROOT58.MUX.sel, value: ANADIG_PLL.SYS_PLL1_DIV5_CLK} 0234 - {id: CCM.CLOCK_ROOT6.DIV.scale, value: '4'} 0235 - {id: CCM.CLOCK_ROOT6.MUX.sel, value: ANADIG_PLL.SYS_PLL2_CLK} 0236 - {id: CCM.CLOCK_ROOT68.DIV.scale, value: '2'} 0237 - {id: CCM.CLOCK_ROOT68.MUX.sel, value: ANADIG_PLL.PLL_VIDEO_CLK} 0238 - {id: IOMUXC_GPR.ENET_REF_CLK_SEL.sel, value: CCM.ENET1_CLK_ROOT} 0239 sources: 0240 - {id: IOMUXC_GPR.ENET_REF_CLK_EXT.outFreq, value: 50 MHz, enabled: true} 0241 - {id: IOMUXC_GPR.ENET_TX_CLK_EXT.outFreq, value: 25 MHz, enabled: true} 0242 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/ 0243 0244 /******************************************************************************* 0245 * Variables for BOARD_BootClockRUN configuration 0246 ******************************************************************************/ 0247 0248 #if __CORTEX_M == 7 0249 #define BYPASS_LDO_LPSR 1 0250 #endif 0251 0252 const clock_arm_pll_config_t armPllConfig_BOARD_BootClockRUN = 0253 { 0254 .postDivider = kCLOCK_PllPostDiv4, /* Post divider, 0 - DIV by 2, 1 - DIV by 4, 2 - DIV by 8, 3 - DIV by 1 */ 0255 .loopDivider = 200, /* PLL Loop divider, Fout = Fin * ( loopDivider / ( 2 * postDivider ) ) */ 0256 }; 0257 0258 const clock_sys_pll1_config_t sysPll1Config_BOARD_BootClockRUN = 0259 { 0260 .pllDiv2En = 1, /* Enable Sys Pll1 divide-by-2 clock or not */ 0261 .pllDiv5En = 1, /* Enable Sys Pll1 divide-by-5 clock or not */ 0262 .ss = NULL, /* Spread spectrum parameter */ 0263 .ssEnable = false, /* Enable spread spectrum or not */ 0264 }; 0265 0266 const clock_sys_pll2_config_t sysPll2Config_BOARD_BootClockRUN = 0267 { 0268 .mfd = 268435455, /* Denominator of spread spectrum */ 0269 .ss = NULL, /* Spread spectrum parameter */ 0270 .ssEnable = false, /* Enable spread spectrum or not */ 0271 }; 0272 0273 const clock_video_pll_config_t videoPllConfig_BOARD_BootClockRUN = 0274 { 0275 .loopDivider = 41, /* PLL Loop divider, valid range for DIV_SELECT divider value: 27 ~ 54. */ 0276 .postDivider = 0, /* Divider after PLL, should only be 1, 2, 4, 8, 16, 32 */ 0277 .numerator = 1, /* 30 bit numerator of fractional loop divider, Fout = Fin * ( loopDivider + numerator / denominator ) */ 0278 .denominator = 960000, /* 30 bit denominator of fractional loop divider, Fout = Fin * ( loopDivider + numerator / denominator ) */ 0279 .ss = NULL, /* Spread spectrum parameter */ 0280 .ssEnable = false, /* Enable spread spectrum or not */ 0281 }; 0282 0283 /******************************************************************************* 0284 * Code for BOARD_BootClockRUN configuration 0285 ******************************************************************************/ 0286 void BOARD_BootClockRUN(void) 0287 { 0288 clock_root_config_t rootCfg = {0}; 0289 0290 /* Set DCDC to DCM mode to improve the efficiency for light loading in run mode and transient performance with a big loading step. */ 0291 DCDC_BootIntoDCM(DCDC); 0292 0293 #if defined(BYPASS_LDO_LPSR) && BYPASS_LDO_LPSR 0294 PMU_StaticEnableLpsrAnaLdoBypassMode(ANADIG_LDO_SNVS, true); 0295 PMU_StaticEnableLpsrDigLdoBypassMode(ANADIG_LDO_SNVS, true); 0296 #endif 0297 0298 /* Config CLK_1M */ 0299 CLOCK_OSC_Set1MHzOutputBehavior(kCLOCK_1MHzOutEnableFreeRunning1Mhz); 0300 0301 /* Init OSC RC 16M */ 0302 ANADIG_OSC->OSC_16M_CTRL |= ANADIG_OSC_OSC_16M_CTRL_EN_IRC4M16M_MASK; 0303 0304 /* Init OSC RC 400M */ 0305 CLOCK_OSC_EnableOscRc400M(); 0306 CLOCK_OSC_GateOscRc400M(true); 0307 0308 /* Init OSC RC 48M */ 0309 CLOCK_OSC_EnableOsc48M(true); 0310 CLOCK_OSC_EnableOsc48MDiv2(true); 0311 0312 /* Config OSC 24M */ 0313 ANADIG_OSC->OSC_24M_CTRL |= ANADIG_OSC_OSC_24M_CTRL_OSC_EN(1) | ANADIG_OSC_OSC_24M_CTRL_BYPASS_EN(0) | ANADIG_OSC_OSC_24M_CTRL_BYPASS_CLK(0) | ANADIG_OSC_OSC_24M_CTRL_LP_EN(1) | ANADIG_OSC_OSC_24M_CTRL_OSC_24M_GATE(0); 0314 /* Wait for 24M OSC to be stable. */ 0315 while (ANADIG_OSC_OSC_24M_CTRL_OSC_24M_STABLE_MASK != 0316 (ANADIG_OSC->OSC_24M_CTRL & ANADIG_OSC_OSC_24M_CTRL_OSC_24M_STABLE_MASK)) 0317 { 0318 } 0319 0320 /* Swicth both core, M7 Systick and Bus_Lpsr to OscRC48MDiv2 first */ 0321 #if __CORTEX_M == 7 0322 rootCfg.mux = kCLOCK_M7_ClockRoot_MuxOscRc48MDiv2; 0323 rootCfg.div = 1; 0324 CLOCK_SetRootClock(kCLOCK_Root_M7, &rootCfg); 0325 0326 rootCfg.mux = kCLOCK_M7_SYSTICK_ClockRoot_MuxOscRc48MDiv2; 0327 rootCfg.div = 1; 0328 CLOCK_SetRootClock(kCLOCK_Root_M7_Systick, &rootCfg); 0329 #endif 0330 0331 #if __CORTEX_M == 4 0332 rootCfg.mux = kCLOCK_M4_ClockRoot_MuxOscRc48MDiv2; 0333 rootCfg.div = 1; 0334 CLOCK_SetRootClock(kCLOCK_Root_M4, &rootCfg); 0335 0336 rootCfg.mux = kCLOCK_BUS_LPSR_ClockRoot_MuxOscRc48MDiv2; 0337 rootCfg.div = 1; 0338 CLOCK_SetRootClock(kCLOCK_Root_Bus_Lpsr, &rootCfg); 0339 #endif 0340 0341 /* Init Arm Pll. */ 0342 CLOCK_InitArmPll(&armPllConfig_BOARD_BootClockRUN); 0343 0344 /* Init Sys Pll1. */ 0345 CLOCK_InitSysPll1(&sysPll1Config_BOARD_BootClockRUN); 0346 0347 /* Init Sys Pll2. */ 0348 CLOCK_InitSysPll2(&sysPll2Config_BOARD_BootClockRUN); 0349 0350 /* Init System Pll2 pfd0. */ 0351 CLOCK_InitPfd(kCLOCK_PllSys2, kCLOCK_Pfd0, 27); 0352 0353 /* Init System Pll2 pfd1. */ 0354 CLOCK_InitPfd(kCLOCK_PllSys2, kCLOCK_Pfd1, 16); 0355 0356 /* Init System Pll2 pfd2. */ 0357 CLOCK_InitPfd(kCLOCK_PllSys2, kCLOCK_Pfd2, 24); 0358 0359 /* Init System Pll2 pfd3. */ 0360 CLOCK_InitPfd(kCLOCK_PllSys2, kCLOCK_Pfd3, 24); 0361 0362 /* Init Sys Pll3. */ 0363 CLOCK_InitSysPll3(); 0364 0365 /* Init System Pll3 pfd0. */ 0366 CLOCK_InitPfd(kCLOCK_PllSys3, kCLOCK_Pfd0, 13); 0367 0368 /* Init System Pll3 pfd1. */ 0369 CLOCK_InitPfd(kCLOCK_PllSys3, kCLOCK_Pfd1, 17); 0370 0371 /* Init System Pll3 pfd2. */ 0372 CLOCK_InitPfd(kCLOCK_PllSys3, kCLOCK_Pfd2, 32); 0373 0374 /* Init System Pll3 pfd3. */ 0375 CLOCK_InitPfd(kCLOCK_PllSys3, kCLOCK_Pfd3, 22); 0376 0377 /* Bypass Audio Pll. */ 0378 CLOCK_SetPllBypass(kCLOCK_PllAudio, true); 0379 0380 /* DeInit Audio Pll. */ 0381 CLOCK_DeinitAudioPll(); 0382 0383 /* Init Video Pll. */ 0384 CLOCK_InitVideoPll(&videoPllConfig_BOARD_BootClockRUN); 0385 0386 /* Module clock root configurations. */ 0387 /* Configure M7 using ARM_PLL_CLK */ 0388 #if __CORTEX_M == 7 0389 rootCfg.mux = kCLOCK_M7_ClockRoot_MuxArmPllOut; 0390 rootCfg.div = 1; 0391 CLOCK_SetRootClock(kCLOCK_Root_M7, &rootCfg); 0392 #endif 0393 0394 /* Configure M4 using SYS_PLL3_CLK */ 0395 #if __CORTEX_M == 4 0396 rootCfg.mux = kCLOCK_M4_ClockRoot_MuxSysPll3Out; 0397 rootCfg.div = 2; 0398 CLOCK_SetRootClock(kCLOCK_Root_M4, &rootCfg); 0399 #endif 0400 0401 /* Configure BUS using SYS_PLL2_PFD3_CLK */ 0402 rootCfg.mux = kCLOCK_BUS_ClockRoot_MuxSysPll2Pfd3; 0403 rootCfg.div = 2; 0404 CLOCK_SetRootClock(kCLOCK_Root_Bus, &rootCfg); 0405 0406 /* Configure BUS_LPSR using SYS_PLL3_CLK */ 0407 rootCfg.mux = kCLOCK_BUS_LPSR_ClockRoot_MuxSysPll3Out; 0408 rootCfg.div = 4; 0409 CLOCK_SetRootClock(kCLOCK_Root_Bus_Lpsr, &rootCfg); 0410 0411 /* Configure SEMC using SYS_PLL3_PFD0_CLK */ 0412 #ifndef SKIP_SEMC_INIT 0413 rootCfg.mux = kCLOCK_SEMC_ClockRoot_MuxSysPll3Pfd0; 0414 rootCfg.div = 4; 0415 CLOCK_SetRootClock(kCLOCK_Root_Semc, &rootCfg); 0416 #endif 0417 0418 /* Configure CSSYS using OSC_RC_48M_DIV2 */ 0419 rootCfg.mux = kCLOCK_CSSYS_ClockRoot_MuxOscRc48MDiv2; 0420 rootCfg.div = 1; 0421 CLOCK_SetRootClock(kCLOCK_Root_Cssys, &rootCfg); 0422 0423 /* Configure CSTRACE using SYS_PLL2_CLK */ 0424 rootCfg.mux = kCLOCK_CSTRACE_ClockRoot_MuxSysPll2Out; 0425 rootCfg.div = 4; 0426 CLOCK_SetRootClock(kCLOCK_Root_Cstrace, &rootCfg); 0427 0428 /* Configure M4_SYSTICK using OSC_RC_48M_DIV2 */ 0429 #if __CORTEX_M == 4 0430 rootCfg.mux = kCLOCK_M4_SYSTICK_ClockRoot_MuxOscRc48MDiv2; 0431 rootCfg.div = 1; 0432 CLOCK_SetRootClock(kCLOCK_Root_M4_Systick, &rootCfg); 0433 #endif 0434 0435 /* Configure M7_SYSTICK using OSC_RC_48M_DIV2 */ 0436 #if __CORTEX_M == 7 0437 rootCfg.mux = kCLOCK_M7_SYSTICK_ClockRoot_MuxOscRc48MDiv2; 0438 rootCfg.div = 1; 0439 CLOCK_SetRootClock(kCLOCK_Root_M7_Systick, &rootCfg); 0440 #endif 0441 0442 /* Configure ADC1 using OSC_RC_48M_DIV2 */ 0443 rootCfg.mux = kCLOCK_ADC1_ClockRoot_MuxOscRc48MDiv2; 0444 rootCfg.div = 1; 0445 CLOCK_SetRootClock(kCLOCK_Root_Adc1, &rootCfg); 0446 0447 /* Configure ADC2 using OSC_RC_48M_DIV2 */ 0448 rootCfg.mux = kCLOCK_ADC2_ClockRoot_MuxOscRc48MDiv2; 0449 rootCfg.div = 1; 0450 CLOCK_SetRootClock(kCLOCK_Root_Adc2, &rootCfg); 0451 0452 /* Configure ACMP using OSC_RC_48M_DIV2 */ 0453 rootCfg.mux = kCLOCK_ACMP_ClockRoot_MuxOscRc48MDiv2; 0454 rootCfg.div = 1; 0455 CLOCK_SetRootClock(kCLOCK_Root_Acmp, &rootCfg); 0456 0457 /* Configure FLEXIO1 using OSC_RC_48M_DIV2 */ 0458 rootCfg.mux = kCLOCK_FLEXIO1_ClockRoot_MuxOscRc48MDiv2; 0459 rootCfg.div = 1; 0460 CLOCK_SetRootClock(kCLOCK_Root_Flexio1, &rootCfg); 0461 0462 /* Configure FLEXIO2 using OSC_RC_48M_DIV2 */ 0463 rootCfg.mux = kCLOCK_FLEXIO2_ClockRoot_MuxOscRc48MDiv2; 0464 rootCfg.div = 1; 0465 CLOCK_SetRootClock(kCLOCK_Root_Flexio2, &rootCfg); 0466 0467 /* Configure GPT1 using OSC_RC_48M_DIV2 */ 0468 rootCfg.mux = kCLOCK_GPT1_ClockRoot_MuxOscRc48MDiv2; 0469 rootCfg.div = 1; 0470 CLOCK_SetRootClock(kCLOCK_Root_Gpt1, &rootCfg); 0471 0472 /* Configure GPT2 using OSC_RC_48M_DIV2 */ 0473 rootCfg.mux = kCLOCK_GPT2_ClockRoot_MuxOscRc48MDiv2; 0474 rootCfg.div = 1; 0475 CLOCK_SetRootClock(kCLOCK_Root_Gpt2, &rootCfg); 0476 0477 /* Configure GPT3 using OSC_RC_48M_DIV2 */ 0478 rootCfg.mux = kCLOCK_GPT3_ClockRoot_MuxOscRc48MDiv2; 0479 rootCfg.div = 1; 0480 CLOCK_SetRootClock(kCLOCK_Root_Gpt3, &rootCfg); 0481 0482 /* Configure GPT4 using OSC_RC_48M_DIV2 */ 0483 rootCfg.mux = kCLOCK_GPT4_ClockRoot_MuxOscRc48MDiv2; 0484 rootCfg.div = 1; 0485 CLOCK_SetRootClock(kCLOCK_Root_Gpt4, &rootCfg); 0486 0487 /* Configure GPT5 using OSC_RC_48M_DIV2 */ 0488 rootCfg.mux = kCLOCK_GPT5_ClockRoot_MuxOscRc48MDiv2; 0489 rootCfg.div = 1; 0490 CLOCK_SetRootClock(kCLOCK_Root_Gpt5, &rootCfg); 0491 0492 /* Configure GPT6 using OSC_RC_48M_DIV2 */ 0493 rootCfg.mux = kCLOCK_GPT6_ClockRoot_MuxOscRc48MDiv2; 0494 rootCfg.div = 1; 0495 CLOCK_SetRootClock(kCLOCK_Root_Gpt6, &rootCfg); 0496 0497 /* Configure FLEXSPI1 using OSC_RC_48M_DIV2 */ 0498 #if !(defined(XIP_EXTERNAL_FLASH) && (XIP_EXTERNAL_FLASH == 1) || defined(FLEXSPI_IN_USE)) 0499 rootCfg.mux = kCLOCK_FLEXSPI1_ClockRoot_MuxOscRc48MDiv2; 0500 rootCfg.div = 1; 0501 CLOCK_SetRootClock(kCLOCK_Root_Flexspi1, &rootCfg); 0502 #endif 0503 0504 /* Configure FLEXSPI2 using OSC_RC_48M_DIV2 */ 0505 rootCfg.mux = kCLOCK_FLEXSPI2_ClockRoot_MuxOscRc48MDiv2; 0506 rootCfg.div = 1; 0507 CLOCK_SetRootClock(kCLOCK_Root_Flexspi2, &rootCfg); 0508 0509 /* Configure CAN1 using OSC_RC_48M_DIV2 */ 0510 rootCfg.mux = kCLOCK_CAN1_ClockRoot_MuxOscRc48MDiv2; 0511 rootCfg.div = 1; 0512 CLOCK_SetRootClock(kCLOCK_Root_Can1, &rootCfg); 0513 0514 /* Configure CAN2 using OSC_RC_48M_DIV2 */ 0515 rootCfg.mux = kCLOCK_CAN2_ClockRoot_MuxOscRc48MDiv2; 0516 rootCfg.div = 1; 0517 CLOCK_SetRootClock(kCLOCK_Root_Can2, &rootCfg); 0518 0519 /* Configure CAN3 using OSC_RC_48M_DIV2 */ 0520 rootCfg.mux = kCLOCK_CAN3_ClockRoot_MuxOscRc48MDiv2; 0521 rootCfg.div = 1; 0522 CLOCK_SetRootClock(kCLOCK_Root_Can3, &rootCfg); 0523 0524 /* Configure LPUART1 using SYS_PLL2_CLK */ 0525 rootCfg.mux = kCLOCK_LPUART1_ClockRoot_MuxSysPll2Out; 0526 rootCfg.div = 22; 0527 CLOCK_SetRootClock(kCLOCK_Root_Lpuart1, &rootCfg); 0528 0529 /* Configure LPUART2 using SYS_PLL2_CLK */ 0530 rootCfg.mux = kCLOCK_LPUART2_ClockRoot_MuxSysPll2Out; 0531 rootCfg.div = 22; 0532 CLOCK_SetRootClock(kCLOCK_Root_Lpuart2, &rootCfg); 0533 0534 /* Configure LPUART3 using OSC_RC_48M_DIV2 */ 0535 rootCfg.mux = kCLOCK_LPUART3_ClockRoot_MuxOscRc48MDiv2; 0536 rootCfg.div = 1; 0537 CLOCK_SetRootClock(kCLOCK_Root_Lpuart3, &rootCfg); 0538 0539 /* Configure LPUART4 using OSC_RC_48M_DIV2 */ 0540 rootCfg.mux = kCLOCK_LPUART4_ClockRoot_MuxOscRc48MDiv2; 0541 rootCfg.div = 1; 0542 CLOCK_SetRootClock(kCLOCK_Root_Lpuart4, &rootCfg); 0543 0544 /* Configure LPUART5 using OSC_RC_48M_DIV2 */ 0545 rootCfg.mux = kCLOCK_LPUART5_ClockRoot_MuxOscRc48MDiv2; 0546 rootCfg.div = 1; 0547 CLOCK_SetRootClock(kCLOCK_Root_Lpuart5, &rootCfg); 0548 0549 /* Configure LPUART6 using OSC_RC_48M_DIV2 */ 0550 rootCfg.mux = kCLOCK_LPUART6_ClockRoot_MuxOscRc48MDiv2; 0551 rootCfg.div = 1; 0552 CLOCK_SetRootClock(kCLOCK_Root_Lpuart6, &rootCfg); 0553 0554 /* Configure LPUART7 using OSC_RC_48M_DIV2 */ 0555 rootCfg.mux = kCLOCK_LPUART7_ClockRoot_MuxOscRc48MDiv2; 0556 rootCfg.div = 1; 0557 CLOCK_SetRootClock(kCLOCK_Root_Lpuart7, &rootCfg); 0558 0559 /* Configure LPUART8 using OSC_RC_48M_DIV2 */ 0560 rootCfg.mux = kCLOCK_LPUART8_ClockRoot_MuxOscRc48MDiv2; 0561 rootCfg.div = 1; 0562 CLOCK_SetRootClock(kCLOCK_Root_Lpuart8, &rootCfg); 0563 0564 /* Configure LPUART9 using OSC_RC_48M_DIV2 */ 0565 rootCfg.mux = kCLOCK_LPUART9_ClockRoot_MuxOscRc48MDiv2; 0566 rootCfg.div = 1; 0567 CLOCK_SetRootClock(kCLOCK_Root_Lpuart9, &rootCfg); 0568 0569 /* Configure LPUART10 using OSC_RC_48M_DIV2 */ 0570 rootCfg.mux = kCLOCK_LPUART10_ClockRoot_MuxOscRc48MDiv2; 0571 rootCfg.div = 1; 0572 CLOCK_SetRootClock(kCLOCK_Root_Lpuart10, &rootCfg); 0573 0574 /* Configure LPUART11 using OSC_RC_48M_DIV2 */ 0575 rootCfg.mux = kCLOCK_LPUART11_ClockRoot_MuxOscRc48MDiv2; 0576 rootCfg.div = 1; 0577 CLOCK_SetRootClock(kCLOCK_Root_Lpuart11, &rootCfg); 0578 0579 /* Configure LPUART12 using OSC_RC_48M_DIV2 */ 0580 rootCfg.mux = kCLOCK_LPUART12_ClockRoot_MuxOscRc48MDiv2; 0581 rootCfg.div = 1; 0582 CLOCK_SetRootClock(kCLOCK_Root_Lpuart12, &rootCfg); 0583 0584 /* Configure LPI2C1 using OSC_RC_48M_DIV2 */ 0585 rootCfg.mux = kCLOCK_LPI2C1_ClockRoot_MuxOscRc48MDiv2; 0586 rootCfg.div = 1; 0587 CLOCK_SetRootClock(kCLOCK_Root_Lpi2c1, &rootCfg); 0588 0589 /* Configure LPI2C2 using OSC_RC_48M_DIV2 */ 0590 rootCfg.mux = kCLOCK_LPI2C2_ClockRoot_MuxOscRc48MDiv2; 0591 rootCfg.div = 1; 0592 CLOCK_SetRootClock(kCLOCK_Root_Lpi2c2, &rootCfg); 0593 0594 /* Configure LPI2C3 using OSC_RC_48M_DIV2 */ 0595 rootCfg.mux = kCLOCK_LPI2C3_ClockRoot_MuxOscRc48MDiv2; 0596 rootCfg.div = 1; 0597 CLOCK_SetRootClock(kCLOCK_Root_Lpi2c3, &rootCfg); 0598 0599 /* Configure LPI2C4 using OSC_RC_48M_DIV2 */ 0600 rootCfg.mux = kCLOCK_LPI2C4_ClockRoot_MuxOscRc48MDiv2; 0601 rootCfg.div = 1; 0602 CLOCK_SetRootClock(kCLOCK_Root_Lpi2c4, &rootCfg); 0603 0604 /* Configure LPI2C5 using OSC_RC_48M_DIV2 */ 0605 rootCfg.mux = kCLOCK_LPI2C5_ClockRoot_MuxOscRc48MDiv2; 0606 rootCfg.div = 1; 0607 CLOCK_SetRootClock(kCLOCK_Root_Lpi2c5, &rootCfg); 0608 0609 /* Configure LPI2C6 using OSC_RC_48M_DIV2 */ 0610 rootCfg.mux = kCLOCK_LPI2C6_ClockRoot_MuxOscRc48MDiv2; 0611 rootCfg.div = 1; 0612 CLOCK_SetRootClock(kCLOCK_Root_Lpi2c6, &rootCfg); 0613 0614 /* Configure LPSPI1 using SYS_PLL1_DIV5_CLK */ 0615 rootCfg.mux = kCLOCK_LPSPI1_ClockRoot_MuxSysPll1Div5; 0616 rootCfg.div = 4; 0617 CLOCK_SetRootClock(kCLOCK_Root_Lpspi1, &rootCfg); 0618 0619 /* Configure LPSPI2 using SYS_PLL1_DIV5_CLK */ 0620 rootCfg.mux = kCLOCK_LPSPI2_ClockRoot_MuxSysPll1Div5; 0621 rootCfg.div = 4; 0622 CLOCK_SetRootClock(kCLOCK_Root_Lpspi2, &rootCfg); 0623 0624 /* Configure LPSPI3 using SYS_PLL1_DIV5_CLK */ 0625 rootCfg.mux = kCLOCK_LPSPI3_ClockRoot_MuxSysPll1Div5; 0626 rootCfg.div = 4; 0627 CLOCK_SetRootClock(kCLOCK_Root_Lpspi3, &rootCfg); 0628 0629 /* Configure LPSPI4 using SYS_PLL1_DIV5_CLK */ 0630 rootCfg.mux = kCLOCK_LPSPI4_ClockRoot_MuxSysPll1Div5; 0631 rootCfg.div = 4; 0632 CLOCK_SetRootClock(kCLOCK_Root_Lpspi4, &rootCfg); 0633 0634 /* Configure LPSPI5 using SYS_PLL1_DIV5_CLK */ 0635 rootCfg.mux = kCLOCK_LPSPI5_ClockRoot_MuxSysPll1Div5; 0636 rootCfg.div = 4; 0637 CLOCK_SetRootClock(kCLOCK_Root_Lpspi5, &rootCfg); 0638 0639 /* Configure LPSPI6 using SYS_PLL1_DIV5_CLK */ 0640 rootCfg.mux = kCLOCK_LPSPI6_ClockRoot_MuxSysPll1Div5; 0641 rootCfg.div = 4; 0642 CLOCK_SetRootClock(kCLOCK_Root_Lpspi6, &rootCfg); 0643 0644 /* Configure EMV1 using OSC_RC_48M_DIV2 */ 0645 rootCfg.mux = kCLOCK_EMV1_ClockRoot_MuxOscRc48MDiv2; 0646 rootCfg.div = 1; 0647 CLOCK_SetRootClock(kCLOCK_Root_Emv1, &rootCfg); 0648 0649 /* Configure EMV2 using OSC_RC_48M_DIV2 */ 0650 rootCfg.mux = kCLOCK_EMV2_ClockRoot_MuxOscRc48MDiv2; 0651 rootCfg.div = 1; 0652 CLOCK_SetRootClock(kCLOCK_Root_Emv2, &rootCfg); 0653 0654 /* Configure ENET1 using SYS_PLL1_DIV5_CLK */ 0655 rootCfg.mux = kCLOCK_ENET1_ClockRoot_MuxSysPll1Div5; 0656 rootCfg.div = 4; 0657 CLOCK_SetRootClock(kCLOCK_Root_Enet1, &rootCfg); 0658 0659 /* Configure ENET2 using OSC_RC_48M_DIV2 */ 0660 rootCfg.mux = kCLOCK_ENET2_ClockRoot_MuxOscRc48MDiv2; 0661 rootCfg.div = 1; 0662 CLOCK_SetRootClock(kCLOCK_Root_Enet2, &rootCfg); 0663 0664 /* Configure ENET_25M using SYS_PLL1_DIV5_CLK */ 0665 rootCfg.mux = kCLOCK_ENET_25M_ClockRoot_MuxSysPll1Div5; 0666 rootCfg.div = 8; 0667 CLOCK_SetRootClock(kCLOCK_Root_Enet_25m, &rootCfg); 0668 0669 /* Configure ENET_TIMER1 using OSC_24M */ 0670 rootCfg.mux = kCLOCK_ENET_TIMER1_ClockRoot_MuxOsc24MOut; 0671 rootCfg.div = 1; 0672 CLOCK_SetRootClock(kCLOCK_Root_Enet_Timer1, &rootCfg); 0673 0674 /* Configure ENET_TIMER2 using OSC_RC_48M_DIV2 */ 0675 rootCfg.mux = kCLOCK_ENET_TIMER2_ClockRoot_MuxOscRc48MDiv2; 0676 rootCfg.div = 1; 0677 CLOCK_SetRootClock(kCLOCK_Root_Enet_Timer2, &rootCfg); 0678 0679 /* Configure USDHC1 using SYS_PLL1_DIV5_CLK */ 0680 rootCfg.mux = kCLOCK_USDHC1_ClockRoot_MuxSysPll1Div5; 0681 rootCfg.div = 1; 0682 CLOCK_SetRootClock(kCLOCK_Root_Usdhc1, &rootCfg); 0683 0684 /* Configure USDHC2 using OSC_RC_48M_DIV2 */ 0685 rootCfg.mux = kCLOCK_USDHC2_ClockRoot_MuxOscRc48MDiv2; 0686 rootCfg.div = 1; 0687 CLOCK_SetRootClock(kCLOCK_Root_Usdhc2, &rootCfg); 0688 0689 /* Configure ASRC using OSC_RC_48M_DIV2 */ 0690 rootCfg.mux = kCLOCK_ASRC_ClockRoot_MuxOscRc48MDiv2; 0691 rootCfg.div = 1; 0692 CLOCK_SetRootClock(kCLOCK_Root_Asrc, &rootCfg); 0693 0694 /* Configure MQS using OSC_RC_48M_DIV2 */ 0695 rootCfg.mux = kCLOCK_MQS_ClockRoot_MuxOscRc48MDiv2; 0696 rootCfg.div = 1; 0697 CLOCK_SetRootClock(kCLOCK_Root_Mqs, &rootCfg); 0698 0699 /* Configure MIC using OSC_RC_48M_DIV2 */ 0700 rootCfg.mux = kCLOCK_MIC_ClockRoot_MuxOscRc48MDiv2; 0701 rootCfg.div = 1; 0702 CLOCK_SetRootClock(kCLOCK_Root_Mic, &rootCfg); 0703 0704 /* Configure SPDIF using OSC_RC_48M_DIV2 */ 0705 rootCfg.mux = kCLOCK_SPDIF_ClockRoot_MuxOscRc48MDiv2; 0706 rootCfg.div = 1; 0707 CLOCK_SetRootClock(kCLOCK_Root_Spdif, &rootCfg); 0708 0709 /* Configure SAI1 using OSC_RC_48M_DIV2 */ 0710 rootCfg.mux = kCLOCK_SAI1_ClockRoot_MuxOscRc48MDiv2; 0711 rootCfg.div = 1; 0712 CLOCK_SetRootClock(kCLOCK_Root_Sai1, &rootCfg); 0713 0714 /* Configure SAI2 using OSC_RC_48M_DIV2 */ 0715 rootCfg.mux = kCLOCK_SAI2_ClockRoot_MuxOscRc48MDiv2; 0716 rootCfg.div = 1; 0717 CLOCK_SetRootClock(kCLOCK_Root_Sai2, &rootCfg); 0718 0719 /* Configure SAI3 using OSC_RC_48M_DIV2 */ 0720 rootCfg.mux = kCLOCK_SAI3_ClockRoot_MuxOscRc48MDiv2; 0721 rootCfg.div = 1; 0722 CLOCK_SetRootClock(kCLOCK_Root_Sai3, &rootCfg); 0723 0724 /* Configure SAI4 using OSC_RC_48M_DIV2 */ 0725 rootCfg.mux = kCLOCK_SAI4_ClockRoot_MuxOscRc48MDiv2; 0726 rootCfg.div = 1; 0727 CLOCK_SetRootClock(kCLOCK_Root_Sai4, &rootCfg); 0728 0729 /* Configure GC355 using PLL_VIDEO_CLK */ 0730 rootCfg.mux = kCLOCK_GC355_ClockRoot_MuxVideoPllOut; 0731 rootCfg.div = 2; 0732 CLOCK_SetRootClock(kCLOCK_Root_Gc355, &rootCfg); 0733 0734 /* Configure LCDIF using OSC_RC_48M_DIV2 */ 0735 rootCfg.mux = kCLOCK_LCDIF_ClockRoot_MuxOscRc48MDiv2; 0736 rootCfg.div = 1; 0737 CLOCK_SetRootClock(kCLOCK_Root_Lcdif, &rootCfg); 0738 0739 /* Configure LCDIFV2 using OSC_RC_48M_DIV2 */ 0740 rootCfg.mux = kCLOCK_LCDIFV2_ClockRoot_MuxOscRc48MDiv2; 0741 rootCfg.div = 1; 0742 CLOCK_SetRootClock(kCLOCK_Root_Lcdifv2, &rootCfg); 0743 0744 /* Configure MIPI_REF using OSC_RC_48M_DIV2 */ 0745 rootCfg.mux = kCLOCK_MIPI_REF_ClockRoot_MuxOscRc48MDiv2; 0746 rootCfg.div = 1; 0747 CLOCK_SetRootClock(kCLOCK_Root_Mipi_Ref, &rootCfg); 0748 0749 /* Configure MIPI_ESC using OSC_RC_48M_DIV2 */ 0750 rootCfg.mux = kCLOCK_MIPI_ESC_ClockRoot_MuxOscRc48MDiv2; 0751 rootCfg.div = 1; 0752 CLOCK_SetRootClock(kCLOCK_Root_Mipi_Esc, &rootCfg); 0753 0754 /* Configure CSI2 using OSC_RC_48M_DIV2 */ 0755 rootCfg.mux = kCLOCK_CSI2_ClockRoot_MuxOscRc48MDiv2; 0756 rootCfg.div = 1; 0757 CLOCK_SetRootClock(kCLOCK_Root_Csi2, &rootCfg); 0758 0759 /* Configure CSI2_ESC using OSC_RC_48M_DIV2 */ 0760 rootCfg.mux = kCLOCK_CSI2_ESC_ClockRoot_MuxOscRc48MDiv2; 0761 rootCfg.div = 1; 0762 CLOCK_SetRootClock(kCLOCK_Root_Csi2_Esc, &rootCfg); 0763 0764 /* Configure CSI2_UI using OSC_RC_48M_DIV2 */ 0765 rootCfg.mux = kCLOCK_CSI2_UI_ClockRoot_MuxOscRc48MDiv2; 0766 rootCfg.div = 1; 0767 CLOCK_SetRootClock(kCLOCK_Root_Csi2_Ui, &rootCfg); 0768 0769 /* Configure CSI using OSC_RC_48M_DIV2 */ 0770 rootCfg.mux = kCLOCK_CSI_ClockRoot_MuxOscRc48MDiv2; 0771 rootCfg.div = 1; 0772 CLOCK_SetRootClock(kCLOCK_Root_Csi, &rootCfg); 0773 0774 /* Configure CKO1 using OSC_RC_48M_DIV2 */ 0775 rootCfg.mux = kCLOCK_CKO1_ClockRoot_MuxOscRc48MDiv2; 0776 rootCfg.div = 1; 0777 CLOCK_SetRootClock(kCLOCK_Root_Cko1, &rootCfg); 0778 0779 /* Configure CKO2 using OSC_RC_48M_DIV2 */ 0780 rootCfg.mux = kCLOCK_CKO2_ClockRoot_MuxOscRc48MDiv2; 0781 rootCfg.div = 1; 0782 CLOCK_SetRootClock(kCLOCK_Root_Cko2, &rootCfg); 0783 0784 /* Set SAI1 MCLK1 clock source. */ 0785 IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI1MClk1Sel, 0); 0786 /* Set SAI1 MCLK2 clock source. */ 0787 IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI1MClk2Sel, 3); 0788 /* Set SAI1 MCLK3 clock source. */ 0789 IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI1MClk3Sel, 0); 0790 /* Set SAI2 MCLK3 clock source. */ 0791 IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI2MClk3Sel, 0); 0792 /* Set SAI3 MCLK3 clock source. */ 0793 IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI3MClk3Sel, 0); 0794 0795 /* Set MQS configuration. */ 0796 IOMUXC_MQSConfig(IOMUXC_GPR,kIOMUXC_MqsPwmOverSampleRate32, 0); 0797 /* Set ENET Tx clock source. */ 0798 IOMUXC_GPR->GPR4 |= IOMUXC_GPR_GPR4_ENET_TX_CLK_SEL_MASK; 0799 /* Set ENET Ref clock source. */ 0800 IOMUXC_GPR->GPR4 |= IOMUXC_GPR_GPR4_ENET_REF_CLK_DIR_MASK; 0801 /* Set ENET_1G Tx clock source. */ 0802 IOMUXC_GPR->GPR5 = ((IOMUXC_GPR->GPR5 & ~IOMUXC_GPR_GPR5_ENET1G_TX_CLK_SEL_MASK) | IOMUXC_GPR_GPR5_ENET1G_RGMII_EN_MASK); 0803 /* Set ENET_1G Ref clock source. */ 0804 IOMUXC_GPR->GPR5 &= ~IOMUXC_GPR_GPR5_ENET1G_REF_CLK_DIR_MASK; 0805 /* Set GPT1 High frequency reference clock source. */ 0806 IOMUXC_GPR->GPR22 &= ~IOMUXC_GPR_GPR22_REF_1M_CLK_GPT1_MASK; 0807 /* Set GPT2 High frequency reference clock source. */ 0808 IOMUXC_GPR->GPR23 &= ~IOMUXC_GPR_GPR23_REF_1M_CLK_GPT2_MASK; 0809 /* Set GPT3 High frequency reference clock source. */ 0810 IOMUXC_GPR->GPR24 &= ~IOMUXC_GPR_GPR24_REF_1M_CLK_GPT3_MASK; 0811 /* Set GPT4 High frequency reference clock source. */ 0812 IOMUXC_GPR->GPR25 &= ~IOMUXC_GPR_GPR25_REF_1M_CLK_GPT4_MASK; 0813 /* Set GPT5 High frequency reference clock source. */ 0814 IOMUXC_GPR->GPR26 &= ~IOMUXC_GPR_GPR26_REF_1M_CLK_GPT5_MASK; 0815 /* Set GPT6 High frequency reference clock source. */ 0816 IOMUXC_GPR->GPR27 &= ~IOMUXC_GPR_GPR27_REF_1M_CLK_GPT6_MASK; 0817 0818 #if __CORTEX_M == 7 0819 SystemCoreClock = CLOCK_GetRootClockFreq(kCLOCK_Root_M7); 0820 #else 0821 SystemCoreClock = CLOCK_GetRootClockFreq(kCLOCK_Root_M4); 0822 #endif 0823 }
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |