1 /*
2  * Copyright (c) 2021 NXP
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef _SOC_ARM_NXP_IMX_RT_POWER_RT10XX_H_
8 #define _SOC_ARM_NXP_IMX_RT_POWER_RT10XX_H_
9 
10 struct clock_callbacks {
11 	/*
12 	 * The clock_set_run function should switch all clocks to their
13 	 * default running configuration, and power up required PLLs
14 	 * The system will be transitioning out of sleep when calling this function.
15 	 */
16 	void (*clock_set_run)(void);
17 	 /*
18 	  * The clock_set_low_power function should switch all clocks to
19 	  * the lowest power mode possible, and disable all possible PLLs.
20 	  * Note that the function should, at minimum, switch the arm core to the
21 	  * 24 MHz oscillator.
22 	  * The system will transition to sleep after calling this function.
23 	  */
24 	void (*clock_set_low_power)(void);
25 	/*
26 	 * The clock_init function should perform any one time initialization that
27 	 * clocks used in low power mode require.
28 	 */
29 	void (*clock_lpm_init)(void);
30 };
31 
32 void imxrt_clock_pm_callbacks_register(struct clock_callbacks *callbacks);
33 
34 #endif /* _SOC_ARM_NXP_IMX_RT_POWER_RT10XX_H_ */
35