1 /*
2  * Copyright  2018,2019 NXP
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 /*
8  * How to set up clock using clock driver functions:
9  *
10  * 1. Setup clock sources.
11  *
12  * 2. Set up all dividers.
13  *
14  * 3. Set up all selectors to provide selected clocks.
15  */
16 
17 /* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
18 !!GlobalInfo
19 product: Clocks v7.0
20 processor: LPC812
21 package_id: LPC812M101JDH20
22 mcu_data: ksdk2_0
23 processor_version: 0.7.1
24  * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
25 
26 #include "fsl_power.h"
27 #include "fsl_clock.h"
28 #include "clock_config.h"
29 
30 /*******************************************************************************
31  * Definitions
32  ******************************************************************************/
33 
34 /*******************************************************************************
35  * Variables
36  ******************************************************************************/
37 /* System clock frequency. */
38 extern uint32_t SystemCoreClock;
39 
40 /*******************************************************************************
41  ************************ BOARD_InitBootClocks function ************************
42  ******************************************************************************/
BOARD_InitBootClocks(void)43 void BOARD_InitBootClocks(void)
44 {
45     BOARD_BootClockIRC12M();
46 }
47 
48 /*******************************************************************************
49  ******************** Configuration BOARD_BootClockIRC12M **********************
50  ******************************************************************************/
51 /* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
52 !!Configuration
53 name: BOARD_BootClockIRC12M
54 called_from_default_init: true
55 outputs:
56 - {id: I2C0_clock.outFreq, value: 12 MHz}
57 - {id: LowPower_clock.outFreq, value: 10 kHz}
58 - {id: SPI0_clock.outFreq, value: 12 MHz}
59 - {id: SPI1_clock.outFreq, value: 12 MHz}
60 - {id: SYSPLL_clock.outFreq, value: 12 MHz}
61 - {id: System_clock.outFreq, value: 12 MHz}
62 - {id: divto750k_clock.outFreq, value: 750 kHz}
63  * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
64 
65 /*******************************************************************************
66  * Variables for BOARD_BootClockIRC12M configuration
67  ******************************************************************************/
68 /*******************************************************************************
69  * Code for BOARD_BootClockIRC12M configuration
70  ******************************************************************************/
BOARD_BootClockIRC12M(void)71 void BOARD_BootClockIRC12M(void)
72 {
73     /*!< Set up the clock sources */
74     /*!< Set up IRC */
75     POWER_DisablePD(kPDRUNCFG_PD_IRC_OUT); /*!< Ensure IRC_OUT is on  */
76     POWER_DisablePD(kPDRUNCFG_PD_IRC);     /*!< Ensure IRC is on  */
77     POWER_DisablePD(kPDRUNCFG_PD_SYSOSC);  /*!< Ensure Main osc is on */
78     CLOCK_Select(kSYSPLL_From_Irc);        /*!< set IRC to pll select */
79     clock_sys_pll_t config;
80     config.src        = kCLOCK_SysPllSrcIrc;   /*!< set pll src  */
81     config.targetFreq = 12000000U;             /*!< set pll target freq */
82     CLOCK_InitSystemPll(&config);              /*!< set parameters */
83     CLOCK_SetMainClkSrc(kCLOCK_MainClkSrcIrc); /*!< select IRC for main clock */
84     CLOCK_Select(kCLKOUT_From_Irc);            /*!< select IRC for CLKOUT */
85     CLOCK_UpdateClkOUTsrc();                   /*!< update CLKOUT src */
86     CLOCK_SetCoreSysClkDiv(1U);
87     /*!< Set SystemCoreClock variable. */
88     SystemCoreClock = BOARD_BOOTCLOCKIRC12M_CORE_CLOCK;
89 }
90 
91 /*******************************************************************************
92  ******************** Configuration BOARD_BootClockPll12M **********************
93  ******************************************************************************/
94 /* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
95 !!Configuration
96 name: BOARD_BootClockPll12M
97 outputs:
98 - {id: I2C0_clock.outFreq, value: 12 MHz}
99 - {id: LowPower_clock.outFreq, value: 10 kHz}
100 - {id: SPI0_clock.outFreq, value: 12 MHz}
101 - {id: SPI1_clock.outFreq, value: 12 MHz}
102 - {id: SYSPLL_clock.outFreq, value: 12 MHz}
103 - {id: System_clock.outFreq, value: 12 MHz}
104 - {id: divto750k_clock.outFreq, value: 750 kHz}
105 settings:
106 - {id: SYSCON.MAINCLKSEL.sel, value: SYSCON.PLL}
107  * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
108 
109 /*******************************************************************************
110  * Variables for BOARD_BootClockPll12M configuration
111  ******************************************************************************/
112 /*******************************************************************************
113  * Code for BOARD_BootClockPll12M configuration
114  ******************************************************************************/
BOARD_BootClockPll12M(void)115 void BOARD_BootClockPll12M(void)
116 {
117     /*!< Set up the clock sources */
118     /*!< Set up IRC */
119     POWER_DisablePD(kPDRUNCFG_PD_IRC_OUT); /*!< Ensure IRC_OUT is on  */
120     POWER_DisablePD(kPDRUNCFG_PD_IRC);     /*!< Ensure IRC is on  */
121     POWER_DisablePD(kPDRUNCFG_PD_SYSOSC);  /*!< Ensure Main osc is on */
122     CLOCK_Select(kSYSPLL_From_Irc);        /*!< set IRC to pll select */
123     clock_sys_pll_t config;
124     config.src        = kCLOCK_SysPllSrcIrc;      /*!< set pll src  */
125     config.targetFreq = 12000000U;                /*!< set pll target freq */
126     CLOCK_InitSystemPll(&config);                 /*!< set parameters */
127     CLOCK_SetMainClkSrc(kCLOCK_MainClkSrcSysPll); /*!< select pll clock for main clock */
128     CLOCK_Select(kCLKOUT_From_Irc);               /*!< select IRC for CLKOUT */
129     CLOCK_UpdateClkOUTsrc();                      /*!< update CLKOUT src */
130     CLOCK_SetCoreSysClkDiv(1U);
131     /*!< Set SystemCoreClock variable. */
132     SystemCoreClock = BOARD_BOOTCLOCKPLL12M_CORE_CLOCK;
133 }
134 
135 /*******************************************************************************
136  ******************** Configuration BOARD_BootClockPll24M **********************
137  ******************************************************************************/
138 /* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
139 !!Configuration
140 name: BOARD_BootClockPll24M
141 outputs:
142 - {id: I2C0_clock.outFreq, value: 12 MHz}
143 - {id: LowPower_clock.outFreq, value: 10 kHz}
144 - {id: SPI0_clock.outFreq, value: 12 MHz}
145 - {id: SPI1_clock.outFreq, value: 12 MHz}
146 - {id: SYSPLL_clock.outFreq, value: 12 MHz}
147 - {id: System_clock.outFreq, value: 12 MHz}
148 - {id: divto750k_clock.outFreq, value: 750 kHz}
149 settings:
150 - {id: SYSCON.MAINCLKSEL.sel, value: SYSCON.PLL}
151  * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
152 
153 /*******************************************************************************
154  * Variables for BOARD_BootClockPll24M configuration
155  ******************************************************************************/
156 /*******************************************************************************
157  * Code for BOARD_BootClockPll24M configuration
158  ******************************************************************************/
BOARD_BootClockPll24M(void)159 void BOARD_BootClockPll24M(void)
160 {
161     /*!< Set up the clock sources */
162     /*!< Set up IRC */
163     POWER_DisablePD(kPDRUNCFG_PD_IRC_OUT); /*!< Ensure IRC_OUT is on  */
164     POWER_DisablePD(kPDRUNCFG_PD_IRC);     /*!< Ensure IRC is on  */
165     POWER_DisablePD(kPDRUNCFG_PD_SYSOSC);  /*!< Ensure Main osc is on */
166     CLOCK_Select(kSYSPLL_From_Irc);        /*!< set IRC to pll select */
167     clock_sys_pll_t config;
168     config.src        = kCLOCK_SysPllSrcIrc;      /*!< set pll src  */
169     config.targetFreq = 12000000U;                /*!< set pll target freq */
170     CLOCK_InitSystemPll(&config);                 /*!< set parameters */
171     CLOCK_SetMainClkSrc(kCLOCK_MainClkSrcSysPll); /*!< select pll clock for main clock */
172     CLOCK_Select(kCLKOUT_From_Irc);               /*!< select IRC for CLKOUT */
173     CLOCK_UpdateClkOUTsrc();                      /*!< update CLKOUT src */
174     CLOCK_SetCoreSysClkDiv(1U);
175     /*!< Set SystemCoreClock variable. */
176     SystemCoreClock = BOARD_BOOTCLOCKPLL24M_CORE_CLOCK;
177 }
178