VSF Documented
pm.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __HAL_DRIVER_NUVOTON_M480_PM_H__
19#define __HAL_DRIVER_NUVOTON_M480_PM_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/vsf_hal_cfg.h"
24#include "../../__device.h"
25
26/*============================ MACROS ========================================*/
27
28#define VSF_PM_CFG_REIMPLEMENT_TYPE_PLL_CFG ENABLED
29#define VSF_PM_CFG_REIMPLEMENT_TYPE_PLL_SEL ENABLED
30
31#define VSF_PM_CFG_REIMPLEMENT_TYPE_POWER_NUMBER ENABLED
32#define VSF_PM_CFG_REIMPLEMENT_TYPE_POWER_NUMBER_MASK ENABLED
33#define VSF_PM_CFG_REIMPLEMENT_TYPE_SLEEP_MODE ENABLED
34#define VSF_PM_CFG_REIMPLEMENT_TYPE_PCLK_NUMBER ENABLED
35#define VSF_PM_CFG_REIMPLEMENT_TYPE_PCLK_CFG ENABLED
36#define VSF_PM_CFG_REIMPLEMENT_TYPE_SCLK_NUMBER ENABLED
37#define VSF_PM_CFG_REIMPLEMENT_TYPE_SCLK_NUMBER_MASK ENABLED
38#define VSF_PM_CFG_REIMPLEMENT_TYPE_SCLK_SEL ENABLED
39#define VSF_PM_CFG_REIMPLEMENT_TYPE_MCLK_CFG ENABLED
40#define VSF_PM_CFG_REIMPLEMENT_TYPE_MCLK_NO ENABLED
41
42/*============================ MACROFIED FUNCTIONS ===========================*/
43
44#define __def_idx(__name, __no) VSF_MCONNECT2(__name, _IDX) = (__no)
45#define __def_msk(__name) VSF_MCONNECT2(__name, _MSK) = VSF_BIT(VSF_MCONNECT2(__name, _IDX) & 0x1F)
46
47// bit0 - bit13: clksrc bitfield
48// bit14- bit27: clkdiv bitfield
49// bit28- bit31: clkdiv_remap
50#define __def_pclk(__name, __bf_clksel, __bf_clkdiv, __clksel_map_idx) \
51 VSF_MCONNECT2(__name, _IDX) = ((__bf_clksel) << 0) \
52 | ((__bf_clkdiv) << 14) \
53 | ((__clksel_map_idx) << 28)
54
55#define __def_sclk_idx(__name, __bus_idx, __bit_idx) \
56 VSF_MCONNECT2(__name, _IDX) = ((__bit_idx) << 0) | ((__bus_idx) << 5)
57
58#define __def_clk_src(__name, __value) \
59 __name = (__value)
60/*============================ TYPES =========================================*/
61
64 __def_idx(POWER_HXT, 0),
65 __def_idx(POWER_LXT, 1),
66 __def_idx(POWER_HIRC, 2),
67 __def_idx(POWER_LIRC, 3),
69
72 __def_msk(POWER_HXT),
73 __def_msk(POWER_LXT),
74 __def_msk(POWER_HIRC),
75 __def_msk(POWER_LIRC),
77
86
92
93typedef enum pm_periph_clksrc_t {
100
107
113
114typedef enum pm_periph_clksel_t {
116 SDH_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_PLL << 4) | (CLKSRC_HCLK << 8) | (CLKSRC_HIRC << 12),
118 STCLK_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_LXT << 4) | (CLKSRC_HXTD2 << 8) | (CLKSRC_HCLKD2 << 12) | (CLKSRC_HIRCD2 << 28),
120 HCLK_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_LXT << 4) | (CLKSRC_PLL << 8) | (CLKSRC_LIRC << 12) | (CLKSRC_HIRC << 28),
124 CLKO_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_LXT << 4) | (CLKSRC_HCLK << 8) | (CLKSRC_HIRC << 12),
126 UART_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_PLL << 4) | (CLKSRC_LXT << 8) | (CLKSRC_HIRC << 12),
128 TMR3_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_LXT << 4) | (CLKSRC_PCLK1 << 8) | (CLKSRC_TM3_PIN << 12) | (CLKSRC_LIRC << 20) | (CLKSRC_HIRC << 28),
130 TMR2_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_LXT << 4) | (CLKSRC_PCLK1 << 8) | (CLKSRC_TM2_PIN << 12) | (CLKSRC_LIRC << 20) | (CLKSRC_HIRC << 28),
132 TMR1_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_LXT << 4) | (CLKSRC_PCLK0 << 8) | (CLKSRC_TM1_PIN << 12) | (CLKSRC_LIRC << 20) | (CLKSRC_HIRC << 28),
134 TMR0_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_LXT << 4) | (CLKSRC_PCLK0 << 8) | (CLKSRC_TM0_PIN << 12) | (CLKSRC_LIRC << 20) | (CLKSRC_HIRC << 28),
138 SPI13_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_PLL << 4) | (CLKSRC_PCLK0 << 8) | (CLKSRC_HIRC << 12),
140 SPI02_CLKSEL_MAP = (CLKSRC_HXT << 0) | (CLKSRC_PLL << 4) | (CLKSRC_PCLK1 << 8) | (CLKSRC_HIRC << 12),
147
168
170typedef enum vsf_pm_pclk_no_t{
171 // NAME BF_CLKSEL, BF_CLKDIV, CLKSEL_MAP_IDX
172 M480_BIT_FIELD( HCLK_CLKSEL, 0, 3, true),
173 M480_BIT_FIELD( SYSTICK_CLKSEL, 3, 3, true),
174
175 M480_BIT_FIELD( WWDT_CLKSEL, 62, 2, false),
176 __def_pclk( PCLK_WWDT, WWDT_CLKSEL, 0, WWDT_CLKSEL_MAP_IDX),
177 M480_BIT_FIELD( USB_CLKDIV, 4, 4, false),
178 __def_pclk( PCLK_USB, 0, USB_CLKDIV, 0),
179 // AHB
180 M480_BIT_FIELD( EMAC_CLKDIV, 48, 8, false),
181 __def_pclk( PCLK_EMAC, 0, EMAC_CLKDIV, 0),
182 M480_BIT_FIELD( SDH0_CLKSEL, 20, 2, true),
183 M480_BIT_FIELD( SDH0_CLKDIV, 24, 8, false),
184 __def_pclk( PCLK_SDH0, SDH0_CLKSEL, SDH0_CLKDIV, SDH0_CLKSEL_MAP_IDX),
185 M480_BIT_FIELD( SDH1_CLKSEL, 22, 2, true),
186 M480_BIT_FIELD( SDH1_CLKDIV, 56, 8, false),
187 __def_pclk( PCLK_SDH1, SDH1_CLKSEL, 0, SDH1_CLKSEL_MAP_IDX),
188
189 // APB0
190 M480_BIT_FIELD( WDT_CLKSEL, 32, 2, true),
191 __def_pclk( PCLK_WDT, WDT_CLKSEL, 0, WDT_CLKSEL_MAP_IDX),
192 M480_BIT_FIELD( RTC_CLKSEL, 104,1, false),
193 __def_pclk( PCLK_RTC, RTC_CLKSEL, 0, RTC_CLKSEL_MAP_IDX),
194 M480_BIT_FIELD( TMR0_CLKSEL, 40, 3, false),
195 __def_pclk( PCLK_TMR0, TMR0_CLKSEL, 0, TMR0_CLKSEL_MAP_IDX),
196 M480_BIT_FIELD( TMR1_CLKSEL, 44, 3, false),
197 __def_pclk( PCLK_TMR1, TMR1_CLKSEL, 0, TMR1_CLKSEL_MAP_IDX),
198 M480_BIT_FIELD( TMR2_CLKSEL, 48, 3, false),
199 __def_pclk( PCLK_TMR2, TMR2_CLKSEL, 0, TMR2_CLKSEL_MAP_IDX),
200 M480_BIT_FIELD( TMR3_CLKSEL, 52, 3, false),
201 __def_pclk( PCLK_TMR3, TMR3_CLKSEL, 0, TMR3_CLKSEL_MAP_IDX),
202 M480_BIT_FIELD( CLKO_CLKSEL, 60, 2, false),
203 __def_pclk( PCLK_CLKO, CLKO_CLKSEL, 0, CLKO_CLKSEL_MAP_IDX),
204 M480_BIT_FIELD( QSPI0_CLKSEL, 66, 2, false),
205 __def_pclk( PCLK_QSPI0, QSPI0_CLKSEL, 0, QSPI0_CLKSEL_MAP_IDX),
206 M480_BIT_FIELD( SPI0_CLKSEL, 68, 2, false),
207 __def_pclk( PCLK_SPI0, SPI0_CLKSEL, 0, SPI0_CLKSEL_MAP_IDX),
208 M480_BIT_FIELD( SPI1_CLKSEL, 70, 2, false),
209 __def_pclk( PCLK_SPI1, SPI1_CLKSEL, 0, SPI1_CLKSEL_MAP_IDX),
210 M480_BIT_FIELD( SPI2_CLKSEL, 74, 2, false),
211 __def_pclk( PCLK_SPI2, SPI2_CLKSEL, 0, SPI2_CLKSEL_MAP_IDX),
212 M480_BIT_FIELD( UART0_CLKSEL, 56, 2, false),
213 M480_BIT_FIELD( UART0_CLKDIV, 8, 4, false),
214 __def_pclk( PCLK_UART0, UART0_CLKSEL, UART0_CLKDIV, UART0_CLKSEL_MAP_IDX),
215 M480_BIT_FIELD( UART1_CLKSEL, 58, 2, false),
216 M480_BIT_FIELD( UART1_CLKDIV, 12, 4, false),
217 __def_pclk( PCLK_UART1, UART1_CLKSEL, UART1_CLKDIV, UART1_CLKSEL_MAP_IDX),
218 M480_BIT_FIELD( UART2_CLKSEL, 120,2, false),
219 M480_BIT_FIELD( UART2_CLKDIV, 64, 4, false),
220 __def_pclk( PCLK_UART2, UART2_CLKSEL, UART2_CLKDIV, UART2_CLKSEL_MAP_IDX),
221 M480_BIT_FIELD( UART3_CLKSEL, 122,2, false),
222 M480_BIT_FIELD( UART3_CLKDIV, 68, 4, false),
223 __def_pclk( PCLK_UART3, UART3_CLKSEL, UART3_CLKDIV, UART3_CLKSEL_MAP_IDX),
224 M480_BIT_FIELD( UART4_CLKSEL, 124,2, false),
225 M480_BIT_FIELD( UART4_CLKDIV, 72, 4, false),
226 __def_pclk( PCLK_UART4, UART4_CLKSEL, UART4_CLKDIV, UART4_CLKSEL_MAP_IDX),
227 M480_BIT_FIELD( UART5_CLKSEL, 126,2, false),
228 M480_BIT_FIELD( UART5_CLKDIV, 76, 4, false),
229 __def_pclk( PCLK_UART5, UART5_CLKSEL, UART5_CLKDIV, UART5_CLKSEL_MAP_IDX),
230 M480_BIT_FIELD( EADC_CLKDIV, 16, 8, false),
231 __def_pclk( PCLK_EADC, 0, EADC_CLKDIV, 0),
232 M480_BIT_FIELD( I2S0_CLKSEL, 112,2, false),
233 __def_pclk( PCLK_I2S0, I2S0_CLKSEL, 0, I2S0_CLKSEL_MAP_IDX),
234
235 // APB1
236 M480_BIT_FIELD( SC0_CLKSEL, 96, 2, false),
237 __def_pclk( PCLK_SC0, SC0_CLKSEL, 0, SC0_CLKSEL_MAP_IDX),
238 M480_BIT_FIELD( SC1_CLKSEL, 98, 2, false),
239 __def_pclk( PCLK_SC1, SC1_CLKSEL, 0, SC1_CLKSEL_MAP_IDX),
240 M480_BIT_FIELD( SC2_CLKSEL, 100,2, false),
241 __def_pclk( PCLK_SC2, SC2_CLKSEL, 0, SC2_CLKSEL_MAP_IDX),
242 M480_BIT_FIELD( SPI3_CLKSEL, 76, 2, false),
243 __def_pclk( PCLK_SPI3, SPI3_CLKSEL, 0, SPI3_CLKSEL_MAP_IDX),
244 M480_BIT_FIELD( EPWM0_CLKSEL, 64, 1, false),
245 __def_pclk( PCLK_EPWM0, EPWM0_CLKSEL, 0, EPWM0_CLKSEL_MAP_IDX),
246 M480_BIT_FIELD( EPWM1_CLKSEL, 65, 1, false),
247 __def_pclk( PCLK_EPWM1, EPWM1_CLKSEL, 0, EPWM1_CLKSEL_MAP_IDX),
248 M480_BIT_FIELD( BPWM0_CLKSEL, 72, 1, false),
249 __def_pclk( PCLK_BPWM0, BPWM0_CLKSEL, 0, BPWM0_CLKSEL_MAP_IDX),
250 M480_BIT_FIELD( BPWM1_CLKSEL, 73, 1, false),
251 __def_pclk( PCLK_BPWM1, BPWM1_CLKSEL, 0, BPWM1_CLKSEL_MAP_IDX),
253
254typedef enum vsf_pm_mclk_no_t {
258typedef enum vsf_pm_sclk_no_t {
259 // NAME BUS_IDX, BIT_IDX
260 // AHB
261 __def_sclk_idx( SCLK_DMA, 0, 1 ),
262 __def_sclk_idx( SCLK_ISP, 0, 2 ),
263 __def_sclk_idx( SCLK_EBI, 0, 3 ),
264 __def_sclk_idx( SCLK_EMAC, 0, 5 ),
265 __def_sclk_idx( SCLK_SDH0, 0, 6 ),
266 __def_sclk_idx( SCLK_CRC, 0, 7 ),
267 __def_sclk_idx( SCLK_HSUSB, 0, 10 ),
268 __def_sclk_idx( SCLK_CRYPTO, 0, 12 ),
269 __def_sclk_idx( SCLK_SPIM, 0, 14 ),
270 __def_sclk_idx( SCLK_FLASH, 0, 15 ),
271 __def_sclk_idx( SCLK_USBH, 0, 16 ),
272 __def_sclk_idx( SCLK_SDH1, 0, 17 ),
273
274 // APB0
275 __def_sclk_idx( SCLK_WDT, 1, 0 ),
276 __def_sclk_idx( SCLK_RTC, 1, 1 ),
277 __def_sclk_idx( SCLK_TMR0, 1, 2 ),
278 __def_sclk_idx( SCLK_TMR1, 1, 3 ),
279 __def_sclk_idx( SCLK_TMR2, 1, 4 ),
280 __def_sclk_idx( SCLK_TMR3, 1, 5 ),
281 __def_sclk_idx( SCLK_CLKO, 1, 6 ),
282 __def_sclk_idx( SCLK_ACMP, 1, 7 ),
283 __def_sclk_idx( SCLK_I2C0, 1, 8 ),
284 __def_sclk_idx( SCLK_I2C1, 1, 9 ),
285 __def_sclk_idx( SCLK_I2C2, 1, 10 ),
286 __def_sclk_idx( SCLK_QSPI0, 1, 12 ),
287 __def_sclk_idx( SCLK_SPI0, 1, 13 ),
288 __def_sclk_idx( SCLK_SPI1, 1, 14 ),
289 __def_sclk_idx( SCLK_SPI2, 1, 15 ),
290 __def_sclk_idx( SCLK_UART0, 1, 16 ),
291 __def_sclk_idx( SCLK_UART1, 1, 17 ),
292 __def_sclk_idx( SCLK_UART2, 1, 18 ),
293 __def_sclk_idx( SCLK_UART3, 1, 19 ),
294 __def_sclk_idx( SCLK_UART4, 1, 20 ),
295 __def_sclk_idx( SCLK_UART5, 1, 21 ),
296 __def_sclk_idx( SCLK_CAN0, 1, 24 ),
297 __def_sclk_idx( SCLK_CAN1, 1, 25 ),
298 __def_sclk_idx( SCLK_OTG, 1, 26 ),
299 __def_sclk_idx( SCLK_USBD, 1, 27 ),
300 __def_sclk_idx( SCLK_EADC, 1, 28 ),
301 __def_sclk_idx( SCLK_I2S0, 1, 29 ),
302 __def_sclk_idx( SCLK_HSOTG, 1, 30 ),
303
304 // APB1
305 __def_sclk_idx( SCLK_SC0, 2, 0 ),
306 __def_sclk_idx( SCLK_SC1, 2, 1 ),
307 __def_sclk_idx( SCLK_SC2, 2, 2 ),
308 __def_sclk_idx( SCLK_SPI3, 2, 6 ),
309 __def_sclk_idx( SCLK_USCI0, 2, 8 ),
310 __def_sclk_idx( SCLK_USCI1, 2, 9 ),
311 __def_sclk_idx( SCLK_DAC, 2, 12 ),
312 __def_sclk_idx( SCLK_EPWM0, 2, 16 ),
313 __def_sclk_idx( SCLK_EPWM1, 2, 17 ),
314 __def_sclk_idx( SCLK_BPWM0, 2, 18 ),
315 __def_sclk_idx( SCLK_BPWM1, 2, 19 ),
316 __def_sclk_idx( SCLK_QEI0, 2, 22 ),
317 __def_sclk_idx( SCLK_QEI1, 2, 23 ),
318 __def_sclk_idx( SCLK_CAP0, 2, 26 ),
319 __def_sclk_idx( SCLK_CAP1, 2, 27 ),
320 __def_sclk_idx( SCLK_OP, 2, 30 ),
322
323typedef enum vsf_pm_sclk_msk_t {
324 // AHB
325 __def_msk(SCLK_DMA),
326 __def_msk(SCLK_ISP),
327 __def_msk(SCLK_EBI),
328 __def_msk(SCLK_EMAC),
329 __def_msk(SCLK_SDH0),
330 __def_msk(SCLK_CRC),
331 __def_msk(SCLK_HSUSB),
332 __def_msk(SCLK_CRYPTO),
333 __def_msk(SCLK_SPIM),
334 __def_msk(SCLK_FLASH),
335 __def_msk(SCLK_USBH),
336 __def_msk(SCLK_SDH1),
337
338 // APB0
339 __def_msk(SCLK_WDT),
340 __def_msk(SCLK_RTC),
341 __def_msk(SCLK_TMR0),
342 __def_msk(SCLK_TMR1),
343 __def_msk(SCLK_TMR2),
344 __def_msk(SCLK_TMR3),
345 __def_msk(SCLK_CLKO),
346 __def_msk(SCLK_ACMP),
347 __def_msk(SCLK_I2C0),
348 __def_msk(SCLK_I2C1),
349 __def_msk(SCLK_I2C2),
350 __def_msk(SCLK_QSPI0),
351 __def_msk(SCLK_SPI0),
352 __def_msk(SCLK_SPI1),
353 __def_msk(SCLK_SPI2),
354 __def_msk(SCLK_UART0),
355 __def_msk(SCLK_UART1),
356 __def_msk(SCLK_UART2),
357 __def_msk(SCLK_UART3),
358 __def_msk(SCLK_UART4),
359 __def_msk(SCLK_UART5),
360 __def_msk(SCLK_CAN0),
361 __def_msk(SCLK_CAN1),
362 __def_msk(SCLK_OTG),
363 __def_msk(SCLK_USBD),
364 __def_msk(SCLK_EADC),
365 __def_msk(SCLK_I2S0),
366 __def_msk(SCLK_HSOTG),
367
368 // APB1
369 __def_msk(SCLK_SC0),
370 __def_msk(SCLK_SC1),
371 __def_msk(SCLK_SC2),
372 __def_msk(SCLK_SPI3),
373 __def_msk(SCLK_USCI0),
374 __def_msk(SCLK_USCI1),
375 __def_msk(SCLK_DAC),
376 __def_msk(SCLK_EPWM0),
377 __def_msk(SCLK_EPWM1),
378 __def_msk(SCLK_BPWM0),
379 __def_msk(SCLK_BPWM1),
380 __def_msk(SCLK_QEI0),
381 __def_msk(SCLK_QEI1),
382 __def_msk(SCLK_CAP0),
383 __def_msk(SCLK_CAP1),
384 __def_msk(SCLK_OP),
386
388 // CLK->CLKSEL0
389 __def_clk_src( HCLK_CLKSRC_HXT, 0),
390 __def_clk_src( HCLK_CLKSRC_LXT, 1),
391 __def_clk_src( HCLK_CLKSRC_PLL, 2),
392 __def_clk_src( HCLK_CLKSRC_LIRC, 3),
393 __def_clk_src( HCLK_CLKSRC_HIRC, 7),
394
395 __def_clk_src( SYSTICK_CLKSRC_HXT, 0),
396 __def_clk_src( SYSTICK_CLKSRC_LXT, 1),
397 __def_clk_src( SYSTICK_CLKSRC_HXTD2, 2),
398 __def_clk_src( SYSTICK_CLKSRC_HCLKD2, 3),
399 __def_clk_src( SYSTICK_CLKSRC_HIRCD2, 7),
400
401 __def_clk_src( SDH0_CLKSRC_HXT, 0),
402 __def_clk_src( SDH0_CLKSRC_PLL, 1),
403 __def_clk_src( SDH0_CLKSRC_HCLK, 2),
404 __def_clk_src( SDH0_CLKSRC_HIRC, 3),
405
406 __def_clk_src( SDH1_CLKSRC_HXT, 0),
407 __def_clk_src( SDH1_CLKSRC_PLL, 1),
408 __def_clk_src( SDH1_CLKSRC_HCLK, 2),
409 __def_clk_src( SDH1_CLKSRC_HIRC, 3),
410
411 // CLK->CLKSEL1
412 __def_clk_src( WDT_CLKSRC_LXT, 1),
413 __def_clk_src( WDT_CLKSRC_HCLKD2K, 2),
414 __def_clk_src( WDT_CLKSRC_LIRC, 3),
415
416 __def_clk_src( TMR0_CLKSRC_HXT, 0),
417 __def_clk_src( TMR0_CLKSRC_LXT, 1),
418 __def_clk_src( TMR0_CLKSRC_PCLK0, 2),
419 __def_clk_src( TMR0_CLKSRC_TM0EXT, 3),
420 __def_clk_src( TMR0_CLKSRC_LIRC, 5),
421 __def_clk_src( TMR0_CLKSRC_HIRC, 7),
422
423 __def_clk_src( TMR1_CLKSRC_HXT, 0),
424 __def_clk_src( TMR1_CLKSRC_LXT, 1),
425 __def_clk_src( TMR1_CLKSRC_PCLK0, 2),
426 __def_clk_src( TMR1_CLKSRC_TM1EXT, 3),
427 __def_clk_src( TMR1_CLKSRC_LIRC, 5),
428 __def_clk_src( TMR1_CLKSRC_HIRC, 7),
429
430 __def_clk_src( TMR2_CLKSRC_HXT, 0),
431 __def_clk_src( TMR2_CLKSRC_LXT, 1),
432 __def_clk_src( TMR2_CLKSRC_PCLK1, 2),
433 __def_clk_src( TMR2_CLKSRC_TM2EXT, 3),
434 __def_clk_src( TMR2_CLKSRC_LIRC, 5),
435 __def_clk_src( TMR2_CLKSRC_HIRC, 7),
436
437 __def_clk_src( TMR3_CLKSRC_HXT, 0),
438 __def_clk_src( TMR3_CLKSRC_LXT, 1),
439 __def_clk_src( TMR3_CLKSRC_PCLK1, 2),
440 __def_clk_src( TMR3_CLKSRC_TM3EXT, 3),
441 __def_clk_src( TMR3_CLKSRC_LIRC, 5),
442 __def_clk_src( TMR3_CLKSRC_HIRC, 7),
443
444 __def_clk_src( UART0_CLKSRC_HXT, 0),
445 __def_clk_src( UART0_CLKSRC_PLL, 1),
446 __def_clk_src( UART0_CLKSRC_LXT, 2),
447 __def_clk_src( UART0_CLKSRC_HIRC, 3),
448
449 __def_clk_src( UART1_CLKSRC_HXT, 0),
450 __def_clk_src( UART1_CLKSRC_PLL, 1),
451 __def_clk_src( UART1_CLKSRC_LXT, 2),
452 __def_clk_src( UART1_CLKSRC_HIRC, 3),
453
454 __def_clk_src( CLKO_CLKSRC_HXT, 0),
455 __def_clk_src( CLKO_CLKSRC_LXT, 1),
456 __def_clk_src( CLKO_CLKSRC_HCLK, 2),
457 __def_clk_src( CLKO_CLKSRC_HIRC, 3),
458
459 __def_clk_src( WWDT_CLKSRC_HCLKD2K, 2),
460 __def_clk_src( WWDT_CLKSRC_LIRC, 3),
461
462 // CLK->CLKSEL2
463 __def_clk_src( EPWM0_CLKSRC_PLL, 0),
464 __def_clk_src( EPWM0_CLKSRC_PCLK0, 1),
465
466 __def_clk_src( EPWM1_CLKSRC_PLL, 0),
467 __def_clk_src( EPWM1_CLKSRC_PCLK0, 1),
468
469 __def_clk_src( QSPI0_CLKSRC_HXT, 0),
470 __def_clk_src( QSPI0_CLKSRC_PLL, 1),
471 __def_clk_src( QSPI0_CLKSRC_PCLK0, 2),
472 __def_clk_src( QSPI0_CLKSRC_HIRC, 3),
473
474 __def_clk_src( SPI0_CLKSRC_HXT, 0),
475 __def_clk_src( SPI0_CLKSRC_PLL, 1),
476 __def_clk_src( SPI0_CLKSRC_PCLK1, 2),
477 __def_clk_src( SPI0_CLKSRC_HIRC, 3),
478
479 __def_clk_src( SPI1_CLKSRC_HXT, 0),
480 __def_clk_src( SPI1_CLKSRC_PLL, 1),
481 __def_clk_src( SPI1_CLKSRC_PCLK0, 2),
482 __def_clk_src( SPI1_CLKSRC_HIRC, 3),
483
484 __def_clk_src( BPWM0_CLKSRC_PLL, 0),
485 __def_clk_src( BPWM0_CLKSRC_PCLK0, 1),
486
487 __def_clk_src( BPWM1_CLKSRC_PLL, 0),
488 __def_clk_src( BPWM1_CLKSRC_PCLK0, 1),
489
490 __def_clk_src( SPI2_CLKSRC_HXT, 0),
491 __def_clk_src( SPI2_CLKSRC_PLL, 1),
492 __def_clk_src( SPI2_CLKSRC_PCLK1, 2),
493 __def_clk_src( SPI2_CLKSRC_HIRC, 3),
494
495 __def_clk_src( SPI3_CLKSRC_HXT, 0),
496 __def_clk_src( SPI3_CLKSRC_PLL, 1),
497 __def_clk_src( SPI3_CLKSRC_PCLK1, 2),
498 __def_clk_src( SPI3_CLKSRC_HIRC, 3),
499
500 // CLK->CLKSEL3
501 __def_clk_src( SC0_CLKSRC_HXT, 0),
502 __def_clk_src( SC0_CLKSRC_PLL, 1),
503 __def_clk_src( SC0_CLKSRC_PCLK0, 2),
504 __def_clk_src( SC0_CLKSRC_HIRC, 3),
505
506 __def_clk_src( SC1_CLKSRC_HXT, 0),
507 __def_clk_src( SC1_CLKSRC_PLL, 1),
508 __def_clk_src( SC1_CLKSRC_PCLK1, 2),
509 __def_clk_src( SC1_CLKSRC_HIRC, 3),
510
511 __def_clk_src( SC2_CLKSRC_HXT, 0),
512 __def_clk_src( SC2_CLKSRC_PLL, 1),
513 __def_clk_src( SC2_CLKSRC_PCLK0, 2),
514 __def_clk_src( SC2_CLKSRC_HIRC, 3),
515
516 __def_clk_src( RTC_CLKSRC_LXT, 0),
517 __def_clk_src( RTC_CLKSRC_LIRC, 1),
518
519 __def_clk_src( I2S0_CLKSRC_HXT, 0),
520 __def_clk_src( I2S0_CLKSRC_PLL, 1),
521 __def_clk_src( I2S0_CLKSRC_PCLK0, 2),
522 __def_clk_src( I2S0_CLKSRC_HIRC, 3),
523
524 __def_clk_src( UART2_CLKSRC_HXT, 0),
525 __def_clk_src( UART2_CLKSRC_PLL, 1),
526 __def_clk_src( UART2_CLKSRC_LXT, 2),
527 __def_clk_src( UART2_CLKSRC_HIRC, 3),
528
529 __def_clk_src( UART3_CLKSRC_HXT, 0),
530 __def_clk_src( UART3_CLKSRC_PLL, 1),
531 __def_clk_src( UART3_CLKSRC_LXT, 2),
532 __def_clk_src( UART3_CLKSRC_HIRC, 3),
533
534 __def_clk_src( UART4_CLKSRC_HXT, 0),
535 __def_clk_src( UART4_CLKSRC_PLL, 1),
536 __def_clk_src( UART4_CLKSRC_LXT, 2),
537 __def_clk_src( UART4_CLKSRC_HIRC, 3),
538
539 __def_clk_src( UART5_CLKSRC_HXT, 0),
540 __def_clk_src( UART5_CLKSRC_PLL, 1),
541 __def_clk_src( UART5_CLKSRC_LXT, 2),
542 __def_clk_src( UART5_CLKSRC_HIRC, 3),
544
545typedef enum vsf_pm_pll_sel_t {
548
549typedef struct io_wakeup_cfg_t {
552
554//
555//def_interface( i_pm_wakeup_t )
556// struct {
557// vsf_err_t (*Enable)(io_wakeup_cfg_t *pcfg, uint_fast8_t size);
558// //vsf_err_t (*Disable)(vsf_io_port_no_t port, uint_fast32_t msk);
559// } UseIO;
560//end_def_interface( i_pm_wakeup_t )
561
562typedef struct vsf_pm_pclk_cfg_t {
566
568typedef struct vsf_pm_mclk_cfg_t {
570 uint32_t freq;
575
577typedef struct vsf_pm_pll_cfg_t {
579 uint32_t freq;
583
584/*============================ GLOBAL VARIABLES ==============================*/
585/*============================ INCLUDES ======================================*/
586
587#define VSF_PM_CFG_DEC_PREFIX vsf_hw
588#define VSF_PM_CFG_DEC_UPCASE_PREFIX VSF_HW
590
591/*============================ PROTOTYPES ====================================*/
592
593#endif
594/* EOF */
#define __def_idx(__name, __no)
Definition pm.h:44
#define __def_clk_src(__name, __value)
Definition pm.h:58
pm_periph_clksrc_t
Definition pm.h:93
@ CLKSRC_HCLKD2
Definition pm.h:103
@ CLKSRC_LXT
Definition pm.h:96
@ CLKSRC_TM2_PIN
Definition pm.h:110
@ CLKSRC_HIRCD2
Definition pm.h:98
@ CLKSRC_HXT
Definition pm.h:94
@ CLKSRC_HCLK
Definition pm.h:102
@ CLKSRC_PCLK1
Definition pm.h:106
@ CLKSRC_PCLK0
Definition pm.h:105
@ CLKSRC_HCLKD2K
Definition pm.h:104
@ CLKSRC_LIRC
Definition pm.h:99
@ CLKSRC_PLL
Definition pm.h:101
@ CLKSRC_HIRC
Definition pm.h:97
@ CLKSRC_TM0_PIN
Definition pm.h:108
@ CLKSRC_TM3_PIN
Definition pm.h:111
@ CLKSRC_TM1_PIN
Definition pm.h:109
@ CLKSRC_HXTD2
Definition pm.h:95
#define __def_sclk_idx(__name, __bus_idx, __bit_idx)
Definition pm.h:55
vsf_pm_mclk_no_t
Definition pm.h:254
@ VSF_MCLK_CORE_IDX
Definition pm.h:255
vsf_pm_sclk_msk_t
Definition pm.h:323
vsf_pm_pll_sel_t
Definition pm.h:545
@ VSF_PLL0_IDX
Definition pm.h:546
vsf_pm_power_cfg_msk_t
power set mask
Definition pm.h:71
vsf_pm_power_cfg_no_t
power set index
Definition pm.h:63
struct vsf_pm_mclk_cfg_t vsf_pm_mclk_cfg_t
main clock config struct
vsf_pm_pclk_no_t
peripheral clock index
Definition pm.h:170
@ M480_BIT_FIELD
Definition pm.h:172
struct io_wakeup_cfg_t io_wakeup_cfg_t
pm_periph_clksel_t
Definition pm.h:114
@ RTC_CLKSEL_MAP
Definition pm.h:146
@ SPI0_CLKSEL_MAP_IDX
Definition pm.h:156
@ SPI3_CLKSEL_MAP_IDX
Definition pm.h:159
@ TMR0_CLKSEL_MAP_IDX
Definition pm.h:133
@ WDT_CLKSEL_MAP
Definition pm.h:136
@ SDH0_CLKSEL_MAP_IDX
Definition pm.h:148
@ EPWM0_CLKSEL_MAP_IDX
Definition pm.h:162
@ SDH1_CLKSEL_MAP_IDX
Definition pm.h:149
@ UART4_CLKSEL_MAP_IDX
Definition pm.h:154
@ STCLK_CLKSEL_MAP_IDX
Definition pm.h:117
@ SPI13_CLKSEL_MAP
Definition pm.h:138
@ BPWM1_CLKSEL_MAP_IDX
Definition pm.h:141
@ EPWM1_CLKSEL_MAP_IDX
Definition pm.h:161
@ HCLK_CLKSEL_MAP
Definition pm.h:120
@ SDH_CLKSEL_MAP
Definition pm.h:116
@ BPWM0_CLKSEL_MAP_IDX
Definition pm.h:143
@ TMR0_CLKSEL_MAP
Definition pm.h:134
@ UART_CLKSEL_MAP_IDX
Definition pm.h:125
@ TMR3_CLKSEL_MAP_IDX
Definition pm.h:127
@ WDT_CLKSEL_MAP_IDX
Definition pm.h:135
@ TMR2_CLKSEL_MAP_IDX
Definition pm.h:129
@ TMR1_CLKSEL_MAP_IDX
Definition pm.h:131
@ HCLK_CLKSEL_MAP_IDX
Definition pm.h:119
@ I2S0_CLKSEL_MAP_IDX
Definition pm.h:163
@ CLKO_CLKSEL_MAP
Definition pm.h:124
@ SPI02_CLKSEL_MAP
Definition pm.h:140
@ SPI2_CLKSEL_MAP_IDX
Definition pm.h:158
@ RTC_CLKSEL_MAP_IDX
Definition pm.h:145
@ UART3_CLKSEL_MAP_IDX
Definition pm.h:153
@ UART_CLKSEL_MAP
Definition pm.h:126
@ TMR2_CLKSEL_MAP
Definition pm.h:130
@ TMR1_CLKSEL_MAP
Definition pm.h:132
@ SPI1_CLKSEL_MAP_IDX
Definition pm.h:157
@ SC1_CLKSEL_MAP_IDX
Definition pm.h:165
@ QSPI0_CLKSEL_MAP_IDX
Definition pm.h:160
@ SPI02_CLKSEL_MAP_IDX
Definition pm.h:139
@ UART5_CLKSEL_MAP_IDX
Definition pm.h:155
@ SPI13_CLKSEL_MAP_IDX
Definition pm.h:137
@ CLKO_CLKSEL_MAP_IDX
Definition pm.h:123
@ BPWM1_CLKSEL_MAP
Definition pm.h:142
@ SDH_CLKSEL_MAP_IDX
Definition pm.h:115
@ SC0_CLKSEL_MAP_IDX
Definition pm.h:164
@ TMR3_CLKSEL_MAP
Definition pm.h:128
@ BPWM0_CLKSEL_MAP
Definition pm.h:144
@ UART0_CLKSEL_MAP_IDX
Definition pm.h:150
@ WWDT_CLKSEL_MAP_IDX
Definition pm.h:121
@ UART2_CLKSEL_MAP_IDX
Definition pm.h:152
@ SC2_CLKSEL_MAP_IDX
Definition pm.h:166
@ WWDT_CLKSEL_MAP
Definition pm.h:122
@ STCLK_CLKSEL_MAP
Definition pm.h:118
@ UART1_CLKSEL_MAP_IDX
Definition pm.h:151
#define __def_pclk(__name, __bf_clksel, __bf_clkdiv, __clksel_map_idx)
Definition pm.h:50
#define __def_msk(__name)
Definition pm.h:45
vsf_pm_sclk_no_t
Peripheral AHB Clock Macros.
Definition pm.h:258
vsf_pm_sleep_mode_t
the lowpower mode
Definition pm.h:79
@ VSF_PM_SPD1
Definition pm.h:84
@ VSF_PM_POWER_OFF
Definition pm.h:90
@ VSF_PM_DEEP_SLEEP
Definition pm.h:89
@ VSF_PM_SPD0
Definition pm.h:83
@ VSF_PM_DPD
Definition pm.h:85
@ VSF_PM_LLPD
Definition pm.h:81
@ VSF_PM_WAIT
Definition pm.h:87
@ VSF_PM_FWPD
Definition pm.h:82
@ VSF_PM_NPD
Definition pm.h:80
@ VSF_PM_SLEEP
Definition pm.h:88
vsf_pm_clk_src_sel_t
Definition pm.h:387
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition pm.h:549
uint32_t dummy
Definition pm.h:550
main clock config struct
Definition vsf_template_pm.h:347
uint16_t apb_div[2]
system APB clock divider
Definition pm.h:573
uint16_t core_div[1]
system core clock divider
Definition pm.h:571
uint32_t freq
system oscillator frequency
Definition vsf_template_pm.h:349
vsf_pm_clk_src_sel_t clk_src
main clock source
Definition vsf_template_pm.h:348
uint16_t ahb_div[1]
system AHB clock divider
Definition pm.h:572
Definition vsf_template_pm.h:314
uint16_t div
Definition vsf_template_pm.h:316
vsf_pm_clk_src_sel_t clk_src
Definition vsf_template_pm.h:315
pll config struct
Definition vsf_template_pm.h:381
uint8_t Psel
pll Feedback divider value
Definition pm.h:581
vsf_pm_clk_src_sel_t pll_clk_src
pll clock source
Definition vsf_template_pm.h:382
uint8_t Msel
PLL Feedback divider value.
Definition pm.h:580
uint32_t freq
system oscillator frequency
Definition vsf_template_pm.h:383
vsf_pm_mclk_no_t
Definition vsf_template_pm.h:354
vsf_pm_sclk_msk_t
Definition vsf_template_pm.h:251
vsf_pm_pll_sel_t
Definition vsf_template_pm.h:374
vsf_pm_power_cfg_msk_t
Definition vsf_template_pm.h:210
vsf_pm_power_cfg_no_t
Definition vsf_template_pm.h:204
vsf_pm_pclk_no_t
Definition vsf_template_pm.h:304
vsf_pm_sclk_no_t
Definition vsf_template_pm.h:242
vsf_pm_sleep_mode_t
Definition vsf_template_pm.h:222
vsf_pm_clk_src_sel_t
Definition vsf_template_pm.h:266