1 /* 2 * Copyright 2024 NXP 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 #include <drivers/clk.h> 7 #include <s32cc-clk-drv.h> 8 #include <s32cc-clk-ids.h> 9 #include <s32cc-clk-utils.h> 10 11 #define S32CC_FXOSC_FREQ (40U * MHZ) 12 #define S32CC_ARM_PLL_VCO_FREQ (2U * GHZ) 13 14 int s32cc_init_early_clks(void) 15 { 16 int ret; 17 18 s32cc_clk_register_drv(); 19 20 ret = clk_set_parent(S32CC_CLK_ARM_PLL_MUX, S32CC_CLK_FXOSC); 21 if (ret != 0) { 22 return ret; 23 } 24 25 ret = clk_set_parent(S32CC_CLK_MC_CGM1_MUX0, S32CC_CLK_ARM_PLL_PHI0); 26 if (ret != 0) { 27 return ret; 28 } 29 30 ret = clk_set_rate(S32CC_CLK_FXOSC, S32CC_FXOSC_FREQ, NULL); 31 if (ret != 0) { 32 return ret; 33 } 34 35 ret = clk_set_rate(S32CC_CLK_ARM_PLL_VCO, S32CC_ARM_PLL_VCO_FREQ, NULL); 36 if (ret != 0) { 37 return ret; 38 } 39 40 ret = clk_enable(S32CC_CLK_FXOSC); 41 if (ret != 0) { 42 return ret; 43 } 44 45 return ret; 46 } 47