]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M0+_LPC51U68_LPCXpresso/drivers/fsl_power.h
Remove build files accidentally checked in.
[freertos] / FreeRTOS / Demo / CORTEX_M0+_LPC51U68_LPCXpresso / drivers / fsl_power.h
1 /*\r
2  * Copyright (c) 2016, Freescale Semiconductor, Inc.\r
3  * Copyright 2016, NXP\r
4  * All rights reserved.\r
5  *\r
6  *\r
7  * SPDX-License-Identifier: BSD-3-Clause\r
8  */\r
9 #ifndef _FSL_POWER_H_\r
10 #define _FSL_POWER_H_\r
11 \r
12 #include "fsl_common.h"\r
13 \r
14 /*! @addtogroup power */\r
15 /*! @{ */\r
16 \r
17 /*! @file */\r
18 \r
19 /*******************************************************************************\r
20  * Definitions\r
21  ******************************************************************************/\r
22 \r
23 /*! @name Driver version */\r
24 /*@{*/\r
25 /*! @brief power driver version 2.0.0. */\r
26 #define FSL_POWER_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))\r
27 /*@}*/\r
28 \r
29 #define MAKE_PD_BITS(reg, slot) ((reg << 8) | slot)\r
30 #define PDRCFG0 0x0U\r
31 #define PDRCFG1 0x1U\r
32 \r
33 typedef enum pd_bits\r
34 {\r
35     kPDRUNCFG_PD_FRO_EN = MAKE_PD_BITS(PDRCFG0, 4U),\r
36     kPDRUNCFG_PD_FLASH = MAKE_PD_BITS(PDRCFG0, 5U),\r
37     kPDRUNCFG_PD_TEMPS = MAKE_PD_BITS(PDRCFG0, 6U),\r
38     kPDRUNCFG_PD_BOD_RESET = MAKE_PD_BITS(PDRCFG0, 7U),\r
39     kPDRUNCFG_PD_BOD_INTR = MAKE_PD_BITS(PDRCFG0, 8U),\r
40     kPDRUNCFG_PD_ADC0 = MAKE_PD_BITS(PDRCFG0, 10U),\r
41     kPDRUNCFG_PD_VDDFLASH = MAKE_PD_BITS(PDRCFG0, 11U),\r
42     kPDRUNCFG_LP_VDDFLASH = MAKE_PD_BITS(PDRCFG0, 12U),\r
43     kPDRUNCFG_PD_RAM0 = MAKE_PD_BITS(PDRCFG0, 13U),\r
44     kPDRUNCFG_PD_RAM1 = MAKE_PD_BITS(PDRCFG0, 14U),\r
45     kPDRUNCFG_PD_RAM2 = MAKE_PD_BITS(PDRCFG0, 15U),\r
46     kPDRUNCFG_PD_RAMX = MAKE_PD_BITS(PDRCFG0, 16U),\r
47     kPDRUNCFG_PD_ROM = MAKE_PD_BITS(PDRCFG0, 17U),\r
48     kPDRUNCFG_PD_VDDHV_ENA = MAKE_PD_BITS(PDRCFG0, 18U),\r
49     kPDRUNCFG_PD_VD7_ENA = MAKE_PD_BITS(PDRCFG0, 19U),\r
50     kPDRUNCFG_PD_WDT_OSC = MAKE_PD_BITS(PDRCFG0, 20U),\r
51     kPDRUNCFG_PD_USB0_PHY = MAKE_PD_BITS(PDRCFG0, 21U),\r
52     kPDRUNCFG_PD_SYS_PLL0 = MAKE_PD_BITS(PDRCFG0, 22U),\r
53     kPDRUNCFG_PD_VREFP_SW = MAKE_PD_BITS(PDRCFG0, 23U),\r
54     kPDRUNCFG_PD_FLASH_BG = MAKE_PD_BITS(PDRCFG0, 25U),\r
55 \r
56     kPDRUNCFG_PD_ALT_FLASH_IBG = MAKE_PD_BITS(PDRCFG1, 28U),\r
57     kPDRUNCFG_SEL_ALT_FLASH_IBG = MAKE_PD_BITS(PDRCFG1, 29U),\r
58 \r
59     kPDRUNCFG_ForceUnsigned = (int)0x80000000U\r
60 } pd_bit_t;\r
61 \r
62 /* Power mode configuration API parameter */\r
63 typedef enum _power_mode_config\r
64 {\r
65     kPmu_Sleep = 0U,\r
66     kPmu_Deep_Sleep = 1U,\r
67     kPmu_Deep_PowerDown = 2U,\r
68 } power_mode_cfg_t;\r
69 \r
70 /*******************************************************************************\r
71  * API\r
72  ******************************************************************************/\r
73 \r
74 #ifdef __cplusplus\r
75 extern "C" {\r
76 #endif\r
77 \r
78 /*!\r
79 * @name Power Configuration\r
80 * @{\r
81 */\r
82 \r
83 /*!\r
84  * @brief API to enable PDRUNCFG bit in the Syscon. Note that enabling the bit powers down the peripheral\r
85  *\r
86  * @param en    peripheral for which to enable the PDRUNCFG bit\r
87  * @return none\r
88  */\r
89 static inline void POWER_EnablePD(pd_bit_t en)\r
90 {\r
91     /* PDRUNCFGSET */\r
92     SYSCON->PDRUNCFGSET[(en >> 8UL)] = (1UL << (en & 0xffU));\r
93 }\r
94 \r
95 /*!\r
96  * @brief API to disable PDRUNCFG bit in the Syscon. Note that disabling the bit powers up the peripheral\r
97  *\r
98  * @param en    peripheral for which to disable the PDRUNCFG bit\r
99  * @return none\r
100  */\r
101 static inline void POWER_DisablePD(pd_bit_t en)\r
102 {\r
103     /* PDRUNCFGCLR */\r
104     SYSCON->PDRUNCFGCLR[(en >> 8UL)] = (1UL << (en & 0xffU));\r
105 }\r
106 \r
107 /*!\r
108  * @brief API to enable deep sleep bit in the ARM Core.\r
109  *\r
110  * @return none\r
111  */\r
112 static inline void POWER_EnableDeepSleep(void)\r
113 {\r
114     SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;\r
115 }\r
116 \r
117 /*!\r
118  * @brief API to disable deep sleep bit in the ARM Core.\r
119  *\r
120  * @return none\r
121  */\r
122 static inline void POWER_DisableDeepSleep(void)\r
123 {\r
124     SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;\r
125 }\r
126 \r
127 /*!\r
128  * @brief API to power down flash controller.\r
129  *\r
130  * @return none\r
131  */\r
132 static inline void POWER_PowerDownFlash(void)\r
133 {\r
134 #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)\r
135     /* TURN OFF clock for Flash Controller (only needed for FLASH programming, will be turned on by ROM API) */\r
136     CLOCK_DisableClock(kCLOCK_Flash);\r
137 \r
138     /* TURN OFF clock for Flash Accelerator */\r
139     CLOCK_DisableClock(kCLOCK_Fmc);\r
140 #endif /* FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL */\r
141 }\r
142 \r
143 /*!\r
144  * @brief API to power up flash controller.\r
145  *\r
146  * @return none\r
147  */\r
148 static inline void POWER_PowerUpFlash(void)\r
149 {\r
150 #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)\r
151     /* TURN ON clock for flash Accelerator */\r
152     CLOCK_EnableClock(kCLOCK_Fmc);\r
153 \r
154     /* TURN ON clock for flash Controller */\r
155     CLOCK_EnableClock(kCLOCK_Flash);\r
156 #endif /* FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL */\r
157 }\r
158 \r
159 /*!\r
160  * @brief Power Library API to enter different power mode.\r
161  *\r
162  * @param exclude_from_pd  Bit mask of the PDRUNCFG bits that needs to be powered on during deep sleep\r
163  * @return none\r
164  */\r
165 void POWER_EnterPowerMode(power_mode_cfg_t mode, uint64_t exclude_from_pd);\r
166 \r
167 /*!\r
168  * @brief Power Library API to enter sleep mode.\r
169  *\r
170  * @return none\r
171  */\r
172 void POWER_EnterSleep(void);\r
173 \r
174 /*!\r
175  * @brief Power Library API to enter deep sleep mode.\r
176  *\r
177  * @param exclude_from_pd  Bit mask of the PDRUNCFG bits that needs to be powered on during deep sleep\r
178  * @return none\r
179  */\r
180 void POWER_EnterDeepSleep(uint64_t exclude_from_pd);\r
181 \r
182 /*!\r
183  * @brief Power Library API to enter deep power down mode.\r
184  *\r
185  * @param exclude_from_pd  Bit mask of the PDRUNCFG bits that needs to be powered on during deep power down mode,\r
186  *                         but this is has no effect as the voltages are cut off.\r
187  * @return none\r
188  */\r
189 void POWER_EnterDeepPowerDown(uint64_t exclude_from_pd);\r
190 \r
191 /*!\r
192  * @brief Power Library API to choose normal regulation and set the voltage for the desired operating frequency.\r
193  *\r
194  * @param freq  - The desired frequency at which the part would like to operate,\r
195  *                note that the voltage and flash wait states should be set before changing frequency\r
196  * @return none\r
197  */\r
198 void POWER_SetVoltageForFreq(uint32_t freq);\r
199 \r
200 /*!\r
201  * @brief Power Library API to choose low power regulation and set the voltage for the desired operating frequency.\r
202  *\r
203  * @param freq  - The desired frequency at which the part would like to operate,\r
204  *                note only 12MHz and 48Mhz are supported\r
205  * @return none\r
206  */\r
207 void POWER_SetLowPowerVoltageForFreq(uint32_t freq);\r
208 \r
209 /*!\r
210  * @brief Power Library API to return the library version.\r
211  *\r
212  * @return version number of the power library\r
213  */\r
214 uint32_t POWER_GetLibVersion(void);\r
215 \r
216 /* @} */\r
217 \r
218 #ifdef __cplusplus\r
219 }\r
220 #endif\r
221 \r
222 /*! @} */\r
223 \r
224 #endif /* _FSL_POWER_H_ */\r