@@ -131,21 +131,18 @@ static int frdm_mcxn947_init(void)
131131
132132 CLOCK_SetupExtClocking (BOARD_XTAL0_CLK_HZ );
133133
134- #if DT_NODE_HAS_STATUS_OKAY (DT_NODELABEL (flexcan0 ))
135- /* Set up PLL1 for 80 MHz FlexCAN clock */
136- const pll_setup_t pll1Setup = {
137- .pllctrl = SCG_SPLLCTRL_SOURCE (1U ) | SCG_SPLLCTRL_SELI (27U ) |
138- SCG_SPLLCTRL_SELP (13U ),
139- .pllndiv = SCG_SPLLNDIV_NDIV (3U ),
140- .pllpdiv = SCG_SPLLPDIV_PDIV (1U ),
141- .pllmdiv = SCG_SPLLMDIV_MDIV (10U ),
142- .pllRate = 80000000U
143- };
134+ #if DT_NODE_HAS_STATUS_OKAY (DT_NODELABEL (sai0 )) || DT_NODE_HAS_STATUS_OKAY (DT_NODELABEL (sai1 ))
135+ /* < Set up PLL1 */
136+ const pll_setup_t pll1_Setup = {
137+ .pllctrl = SCG_SPLLCTRL_SOURCE (1U ) | SCG_SPLLCTRL_SELI (3U ) |
138+ SCG_SPLLCTRL_SELP (1U ),
139+ .pllndiv = SCG_SPLLNDIV_NDIV (25U ),
140+ .pllpdiv = SCG_SPLLPDIV_PDIV (10U ),
141+ .pllmdiv = SCG_SPLLMDIV_MDIV (256U ),
142+ .pllRate = 24576000U };
144143
145144 /* Configure PLL1 to the desired values */
146- CLOCK_SetPLL1Freq (& pll1Setup );
147- /* PLL1 Monitor is disabled */
148- CLOCK_SetPll1MonitorMode (kSCG_Pll1MonitorDisable );
145+ CLOCK_SetPLL1Freq (& pll1_Setup );
149146 /* Set PLL1 CLK0 divider to value 1 */
150147 CLOCK_SetClkDiv (kCLOCK_DivPLL1Clk0 , 1U );
151148#endif
@@ -250,7 +247,7 @@ static int frdm_mcxn947_init(void)
250247
251248#if DT_NODE_HAS_STATUS_OKAY (DT_NODELABEL (flexcan0 ))
252249 CLOCK_SetClkDiv (kCLOCK_DivFlexcan0Clk , 1U );
253- CLOCK_AttachClk (kPLL1_CLK0_to_FLEXCAN0 );
250+ CLOCK_AttachClk (kFRO_HF_to_FLEXCAN0 );
254251#endif
255252
256253#if DT_NODE_HAS_STATUS_OKAY (DT_NODELABEL (usdhc0 ))
@@ -383,6 +380,18 @@ static int frdm_mcxn947_init(void)
383380 CLOCK_AttachClk (kFRO_HF_to_SCT );
384381#endif
385382
383+ #if DT_NODE_HAS_STATUS_OKAY (DT_NODELABEL (sai0 ))
384+ CLOCK_SetClkDiv (kCLOCK_DivSai0Clk , 1u );
385+ CLOCK_AttachClk (kPLL1_CLK0_to_SAI0 );
386+ CLOCK_EnableClock (kCLOCK_Sai0 );
387+ #endif
388+
389+ #if DT_NODE_HAS_STATUS_OKAY (DT_NODELABEL (sai1 ))
390+ CLOCK_SetClkDiv (kCLOCK_DivSai1Clk , 1u );
391+ CLOCK_AttachClk (kPLL1_CLK0_to_SAI1 );
392+ CLOCK_EnableClock (kCLOCK_Sai1 );
393+ #endif
394+
386395 /* Set SystemCoreClock variable. */
387396 SystemCoreClock = CLOCK_INIT_CORE_CLOCK ;
388397
0 commit comments