xref: /rk3399_ARM-atf/drivers/nxp/clk/s32cc/s32cc_early_clks.c (revision 7ad4e2312f58606ee74ac7c655a655bd85148582)
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