HPM SDK
HPMicro Software Development Kit
hpm_pcfg_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_PCFG_DRV_H
9 #define HPM_PCFG_DRV_H
10 
11 #include "hpm_common.h"
12 #include "hpm_pcfg_regs.h"
13 
21 #define PCFG_CLOCK_GATE_MODE_ALWAYS_ON (0x3UL)
22 #define PCFG_CLOCK_GATE_MODE_ALWAYS_OFF (0x2UL)
23 
24 #define PCFG_PERIPH_KEEP_CLOCK_ON(p) (PCFG_CLOCK_GATE_MODE_ALWAYS_ON << (p))
25 #define PCFG_PERIPH_KEEP_CLOCK_OFF(p) (PCFG_CLOCK_GATE_MODE_ALWAYS_OFF << (p))
26 
27 /* @brief PCFG irc24m reference */
28 typedef enum {
32 
33 /* @brief PCFG dcdc current limit */
34 typedef enum {
38 
39 typedef enum {
43 
44 /* @brief PCFG dcdc current hys */
45 typedef enum {
49 
50 /* @brief PCFG dcdc mode */
51 typedef enum {
57 
58 /* @brief PCFG pmc domain peripherals */
59 typedef enum {
68 
69 /* @brief PCFG wakeup source */
70 typedef enum {
71  pcfg_wakeup_src_soc = (1 << 0),
72  pcfg_wakeup_src_vad = (1 << 5),
77  pcfg_wakeup_src_pgpio = (1 << 10),
79  pcfg_wakeup_src_bgpio = (1 << 17),
80  pcfg_wakeup_src_rtc = (1 << 19),
82 
83 /* @brief PCFG status */
84 enum {
86 };
87 
88 /* @brief PCFG irc24m config */
89 typedef struct {
90  uint32_t freq_in_hz;
91  pcfg_irc24m_reference_t reference;
92  bool return_to_default_on_xtal_loss;
93  bool free_run;
95 
96 
97 #define PCFG_CLOCK_GATE_CONTROL_MASK(module, mode) \
98  ((uint32_t) (mode) << ((module) << 1))
99 
100 #ifdef __cplusplus
101 extern "C" {
102 #endif
103 
110 {
112 }
113 
120 {
122 }
123 
130 {
132 }
133 
140 {
142 }
143 
151 static inline bool pcfg_bandgap_is_trimmed(PCFG_Type *ptr)
152 {
154 }
155 
161 static inline void pcfg_bandgap_reload_trim(PCFG_Type *ptr)
162 {
164 }
165 
171 static inline void pcfg_ldo2p5_turn_off(PCFG_Type *ptr)
172 {
174 }
175 
181 static inline void pcfg_ldo2p5_turn_on(PCFG_Type *ptr)
182 {
184 }
185 
193 static inline bool pcfg_ldo2p5_is_stable(PCFG_Type *ptr)
194 {
195  return PCFG_LDO2P5_READY_GET(ptr->LDO2P5);
196 }
197 
198 /*
199  * @brief check if DCDC is stable or not
200  * @param[in] ptr base address
201  * @retval true if DCDC is stable
202  */
203 static inline bool pcfg_dcdc_is_stable(PCFG_Type *ptr)
204 {
205  return PCFG_DCDC_MODE_READY_GET(ptr->DCDC_MODE);
206 }
207 
208 /*
209  * @brief set DCDC work mode
210  * @param[in] ptr base address
211  */
212 static inline void pcfg_dcdc_set_mode(PCFG_Type *ptr, uint8_t mode)
213 {
215 }
216 
224 static inline void pcfg_dcdc_set_lp_current_limit(PCFG_Type *ptr, pcfg_dcdc_lp_current_limit_t limit, bool over_limit)
225 {
226  (void) over_limit;
229 }
230 
237 {
239 }
240 
247 {
249 }
250 
258 static inline bool pcfg_dcdc_is_power_loss(PCFG_Type *ptr)
259 {
261 }
262 
269 {
271 }
272 
279 {
281 }
282 
289 static inline bool pcfg_dcdc_is_over_voltage(PCFG_Type *ptr)
290 {
292 }
293 
300 {
302 }
303 
310 {
312 }
313 
321 {
323 }
324 
331 static inline bool pcfg_dcdc_is_over_current(PCFG_Type *ptr)
332 {
334 }
335 
342 {
344 }
345 
352 {
354 }
355 
364 {
366 }
367 
376 {
378 }
379 
387 static inline uint32_t pcfg_dcdc_get_start_time_in_cycle(PCFG_Type *ptr)
388 {
390 }
391 
399 static inline uint32_t pcfg_dcdc_get_resume_time_in_cycle(PCFG_Type *ptr)
400 {
402 }
403 
410 static inline void pcfg_dcdc_set_start_time_in_cycle(PCFG_Type *ptr, uint32_t cycles)
411 {
413 }
414 
421 static inline void pcfg_dcdc_set_resume_time_in_cycle(PCFG_Type *ptr, uint32_t cycles)
422 {
424 }
425 
433 {
435 }
436 
442 static inline void pcfg_disable_power_trap(PCFG_Type *ptr)
443 {
445 }
446 
452 static inline void pcfg_enable_power_trap(PCFG_Type *ptr)
453 {
455 }
456 
464 static inline bool pcfg_is_power_trap_triggered(PCFG_Type *ptr)
465 {
467 }
468 
475 {
477 }
478 
484 static inline void pcfg_disable_dcdc_retention(PCFG_Type *ptr)
485 {
487 }
488 
494 static inline void pcfg_enable_dcdc_retention(PCFG_Type *ptr)
495 {
497 }
498 
505 static inline void pcfg_clear_wakeup_cause(PCFG_Type *ptr, uint32_t mask)
506 {
507  ptr->WAKE_CAUSE = mask;
508 }
509 
517 static inline uint32_t pcfg_get_wakeup_cause(PCFG_Type *ptr)
518 {
519  return ptr->WAKE_CAUSE;
520 }
521 
528 static inline void pcfg_enable_wakeup_source(PCFG_Type *ptr, uint32_t mask)
529 {
530  ptr->WAKE_MASK &= ~mask;
531 }
532 
539 static inline void pcfg_disable_wakeup_source(PCFG_Type *ptr, uint32_t mask)
540 {
541  ptr->WAKE_MASK |= mask;
542 }
543 
550 static inline void pcfg_set_periph_clock_mode(PCFG_Type *ptr, uint32_t mode)
551 {
552  ptr->SCG_CTRL = mode;
553 }
554 
562 static inline void pcfg_update_periph_clock_mode(PCFG_Type *ptr, pcfg_pmc_periph_t periph, bool on)
563 {
564  if (on) {
565  ptr->SCG_CTRL = (ptr->SCG_CTRL & ~(0x03 << periph)) | PCFG_PERIPH_KEEP_CLOCK_ON(periph);
566  } else {
567  ptr->SCG_CTRL = (ptr->SCG_CTRL & ~(0x03 << periph)) | PCFG_PERIPH_KEEP_CLOCK_OFF(periph);
568  }
569 }
570 
571 /*
572  * @brief check if DDR DCDC is stable or not
573  * @param[in] ptr base address
574  * @retval true if DDR DCDC is stable
575  */
576 static inline bool pcfg_ddr_dcdc_is_stable(PCFG_Type *ptr)
577 {
579 }
580 
581 /*
582  * @brief set DDR DCDC work mode
583  * @param[in] ptr base address
584  */
585 static inline void pcfg_ddr_dcdc_set_mode(PCFG_Type *ptr, uint8_t mode)
586 {
588 }
589 
590 
591 /*
592  * @brief set on-chip DDR DCDC enable and voltage
593  * @param[in] ptr base address
594  * @param[in] voltage unit mv
595  */
596 static inline void pcfg_ddr_dcdc_set_voltage_output(PCFG_Type *ptr, uint8_t voltage)
597 {
600 }
601 
609 {
612 }
613 
620 {
622 }
623 
630 {
632 }
633 
641 static inline bool pcfg_ddr_dcdc_is_power_loss(PCFG_Type *ptr)
642 {
644 }
645 
652 {
654 }
655 
662 {
664 }
665 
672 static inline bool pcfg_ddr_dcdc_is_over_voltage(PCFG_Type *ptr)
673 {
675 }
676 
683 {
685 }
686 
693 {
695 }
696 
704 {
706 }
707 
714 static inline bool pcfg_ddr_dcdc_is_over_current(PCFG_Type *ptr)
715 {
717 }
718 
725 {
727 }
728 
735 {
737 }
738 
747 {
749 }
750 
759 {
761 }
762 
771 {
773 }
774 
783 {
785 }
786 
793 static inline void pcfg_ddr_dcdc_set_start_time_in_cycle(PCFG_Type *ptr, uint32_t cycles)
794 {
796 }
797 
804 static inline void pcfg_ddr_dcdc_set_resume_time_in_cycle(PCFG_Type *ptr, uint32_t cycles)
805 {
807 }
808 
816 {
818 }
819 
826 {
828 }
829 
836 {
838 }
839 
847 static inline bool pcfg_irc24m_is_trimmed(PCFG_Type *ptr)
848 {
849  return ptr->RC24M & PCFG_RC24M_RC_TRIMMED_MASK;
850 }
851 
857 static inline void pcfg_irc24m_reload_trim(PCFG_Type *ptr)
858 {
860 }
861 
869 
870 /*
871  * @brief set DCDC voltage at standby mode
872  * @param[in] ptr base address
873  * @param[in] mv target voltage
874  * @retval status_success if successfully configured
875  */
877 
878 /*
879  * @brief set output voltage of LDO 2.5V in mV
880  * @param[in] ptr base address
881  * @param[in] mv target voltage
882  * @retval status_success if successfully configured
883  */
884 hpm_stat_t pcfg_ldo2p5_set_voltage(PCFG_Type *ptr, uint16_t mv);
885 
886 /*
887  * @brief set DCDC voltage
888  * @param[in] ptr base address
889  * @param[in] mv target voltage
890  * @retval status_success if successfully configured
891  */
892 hpm_stat_t pcfg_dcdc_set_voltage(PCFG_Type *ptr, uint16_t mv);
893 
894 /*
895  * @brief set output voltage of LDO 1V in mV
896  * @param[in] ptr base address
897  * @param[in] mv target voltage
898  * @retval status_success if successfully configured
899  */
900 hpm_stat_t pcfg_ldo1p1_set_voltage(PCFG_Type *ptr, uint16_t mv);
901 
902 /*
903  * @brief get current DCDC current level in mA
904  *
905  * @param[in] ptr base address
906  * @retval Current level at mA
907  */
909 
910 
911 #ifdef __cplusplus
912 }
913 #endif
918 #endif /* HPM_PCFG_DRV_H */
#define PCFG_DCDC_RESUME_TIME_RESUME_TIME_GET(x)
Definition: hpm_pcfg_regs.h:592
#define PCFG_LDO2P5_READY_GET(x)
Definition: hpm_pcfg_regs.h:108
#define PCFG_POWER_TRAP_TRIGGERED_MASK
Definition: hpm_pcfg_regs.h:602
#define PCFG_DCDC_CURRENT_VALID_MASK
Definition: hpm_pcfg_regs.h:303
#define PCFG_DCDC_MISC_OL_HYST_MASK
Definition: hpm_pcfg_regs.h:520
#define PCFG_POWER_TRAP_RETENTION_MASK
Definition: hpm_pcfg_regs.h:614
#define PCFG_DCDC_CURRENT_ESTI_EN_MASK
Definition: hpm_pcfg_regs.h:291
#define PCFG_DCDC_MODE_MODE_SET(x)
Definition: hpm_pcfg_regs.h:160
#define PCFG_LDO2P5_ENABLE_MASK
Definition: hpm_pcfg_regs.h:117
#define PCFG_DCDC_PROT_SHORT_CURRENT_MASK
Definition: hpm_pcfg_regs.h:269
#define PCFG_DCDC_MODE_READY_GET(x)
Definition: hpm_pcfg_regs.h:146
#define PCFG_DCDC_START_TIME_START_TIME_GET(x)
Definition: hpm_pcfg_regs.h:581
#define PCFG_DCDC_CURRENT_LEVEL_GET(x)
Definition: hpm_pcfg_regs.h:314
#define PCFG_DCDC_START_TIME_START_TIME_SET(x)
Definition: hpm_pcfg_regs.h:580
#define PCFG_DCDC_PROT_SHORT_CURRENT_SET(x)
Definition: hpm_pcfg_regs.h:271
#define PCFG_DCDC_PROT_SHORT_FLAG_GET(x)
Definition: hpm_pcfg_regs.h:283
#define PCFG_DCDC_MISC_OL_HYST_SET(x)
Definition: hpm_pcfg_regs.h:522
#define PCFG_POWER_TRAP_TRAP_MASK
Definition: hpm_pcfg_regs.h:626
#define PCFG_BANDGAP_VBG_TRIMMED_MASK
Definition: hpm_pcfg_regs.h:48
#define PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_MASK
Definition: hpm_pcfg_regs.h:234
#define PCFG_DCDC_RESUME_TIME_RESUME_TIME_SET(x)
Definition: hpm_pcfg_regs.h:591
#define PCFG_DCDC_MODE_MODE_MASK
Definition: hpm_pcfg_regs.h:158
#define PCFG_DCDC_PROT_ILIMIT_LP_MASK
Definition: hpm_pcfg_regs.h:200
#define PCFG_DCDC_PROT_OVERVOLT_FLAG_GET(x)
Definition: hpm_pcfg_regs.h:248
#define PCFG_DCDC_PROT_POWER_LOSS_FLAG_GET(x)
Definition: hpm_pcfg_regs.h:225
#define PCFG_RC24M_RC_TRIMMED_MASK
Definition: hpm_pcfg_regs.h:696
#define PCFG_DCDC_PROT_DISABLE_SHORT_MASK
Definition: hpm_pcfg_regs.h:257
#define PCFG_DCDC_PROT_ILIMIT_LP_SET(x)
Definition: hpm_pcfg_regs.h:202
#define PCFG_DCDC_PROT_DISABLE_POWER_LOSS_MASK
Definition: hpm_pcfg_regs.h:248
#define PCFG_BANDGAP_LOWPOWER_MODE_MASK
Definition: hpm_pcfg_regs.h:61
#define PCFG_BANDGAP_POWER_SAVE_MASK
Definition: hpm_pcfg_regs.h:73
static void pcfg_ldo2p5_turn_on(PCFG_Type *ptr)
turn on LDO 2.5V
Definition: hpm_pcfg_drv.h:181
static bool pcfg_bandgap_is_trimmed(PCFG_Type *ptr)
check if bandgap is trimmed or not
Definition: hpm_pcfg_drv.h:151
static void pcfg_enable_power_trap(PCFG_Type *ptr)
enable power trap
Definition: hpm_pcfg_drv.h:452
static void pcfg_update_periph_clock_mode(PCFG_Type *ptr, pcfg_pmc_periph_t periph, bool on)
update clock gate mode in vpmc domain
Definition: hpm_pcfg_drv.h:562
static bool pcfg_dcdc_is_measure_current_valid(PCFG_Type *ptr)
check if measured current is valid
Definition: hpm_pcfg_drv.h:363
static void pcfg_bandgap_disable_lowpower_mode(PCFG_Type *ptr)
bandgap disable power save mode
Definition: hpm_pcfg_drv.h:129
static void pcfg_dcdc_set_current_hys_range(PCFG_Type *ptr, pcfg_dcdc_current_hys_t range)
set dcdc current hysteres range
Definition: hpm_pcfg_drv.h:432
static void pcfg_clear_power_trap_trigger_flag(PCFG_Type *ptr)
clear power trap trigger flag
Definition: hpm_pcfg_drv.h:474
static void pcfg_bandgap_reload_trim(PCFG_Type *ptr)
bandgap reload trim value
Definition: hpm_pcfg_drv.h:161
static uint32_t pcfg_dcdc_get_start_time_in_cycle(PCFG_Type *ptr)
get DCDC start time in number of 24MHz clock cycles
Definition: hpm_pcfg_drv.h:387
static void pcfg_bandgap_enable_power_save_mode(PCFG_Type *ptr)
bandgap enable power save mode
Definition: hpm_pcfg_drv.h:119
static void pcfg_dcdc_disable_over_voltage_prot(PCFG_Type *ptr)
disable over voltage protection
Definition: hpm_pcfg_drv.h:268
static void pcfg_disable_dcdc_retention(PCFG_Type *ptr)
disable dcdc retention
Definition: hpm_pcfg_drv.h:484
static bool pcfg_is_power_trap_triggered(PCFG_Type *ptr)
check if power trap is triggered
Definition: hpm_pcfg_drv.h:464
static bool pcfg_dcdc_is_stable(PCFG_Type *ptr)
Definition: hpm_pcfg_drv.h:203
static void pcfg_dcdc_enable_power_loss_prot(PCFG_Type *ptr)
enable power loss protection
Definition: hpm_pcfg_drv.h:246
static void pcfg_bandgap_disable_power_save_mode(PCFG_Type *ptr)
bandgap disable power save mode
Definition: hpm_pcfg_drv.h:109
static void pcfg_set_periph_clock_mode(PCFG_Type *ptr, uint32_t mode)
set clock gate mode in vpmc domain
Definition: hpm_pcfg_drv.h:550
static void pcfg_dcdc_set_mode(PCFG_Type *ptr, uint8_t mode)
Definition: hpm_pcfg_drv.h:212
static void pcfg_disable_wakeup_source(PCFG_Type *ptr, uint32_t mask)
disable wakeup source
Definition: hpm_pcfg_drv.h:539
static bool pcfg_dcdc_is_power_loss(PCFG_Type *ptr)
check if power loss flag is set
Definition: hpm_pcfg_drv.h:258
static void pcfg_bandgap_enable_lowpower_mode(PCFG_Type *ptr)
bandgap enable low power mode
Definition: hpm_pcfg_drv.h:139
static bool pcfg_irc24m_is_trimmed(PCFG_Type *ptr)
check if irc24m is trimmed
Definition: hpm_pcfg_drv.h:847
static void pcfg_dcdc_set_resume_time_in_cycle(PCFG_Type *ptr, uint32_t cycles)
set DCDC resuem time in 24MHz clock cycles
Definition: hpm_pcfg_drv.h:421
static bool pcfg_ldo2p5_is_stable(PCFG_Type *ptr)
check if LDO 2.5V is stable
Definition: hpm_pcfg_drv.h:193
static void pcfg_irc24m_reload_trim(PCFG_Type *ptr)
reload irc24m trim value
Definition: hpm_pcfg_drv.h:857
static void pcfg_dcdc_set_start_time_in_cycle(PCFG_Type *ptr, uint32_t cycles)
set DCDC start time in 24MHz clock cycles
Definition: hpm_pcfg_drv.h:410
static void pcfg_dcdc_enable_measure_current(PCFG_Type *ptr)
enable current measurement
Definition: hpm_pcfg_drv.h:351
static void pcfg_dcdc_disable_power_loss_prot(PCFG_Type *ptr)
disable power loss protection
Definition: hpm_pcfg_drv.h:236
static void pcfg_clear_wakeup_cause(PCFG_Type *ptr, uint32_t mask)
clear wakeup cause flag
Definition: hpm_pcfg_drv.h:505
static void pcfg_enable_wakeup_source(PCFG_Type *ptr, uint32_t mask)
enable wakeup source
Definition: hpm_pcfg_drv.h:528
static void pcfg_dcdc_disable_measure_current(PCFG_Type *ptr)
disable current measurement
Definition: hpm_pcfg_drv.h:341
static void pcfg_disable_power_trap(PCFG_Type *ptr)
disable power trap
Definition: hpm_pcfg_drv.h:442
static void pcfg_dcdc_set_lp_current_limit(PCFG_Type *ptr, pcfg_dcdc_lp_current_limit_t limit, bool over_limit)
set low power current limit
Definition: hpm_pcfg_drv.h:224
static bool pcfg_dcdc_is_over_voltage(PCFG_Type *ptr)
checkover over voltage flag
Definition: hpm_pcfg_drv.h:289
static uint32_t pcfg_get_wakeup_cause(PCFG_Type *ptr)
get wakeup cause
Definition: hpm_pcfg_drv.h:517
static void pcfg_enable_dcdc_retention(PCFG_Type *ptr)
enable dcdc retention to retain soc sram data
Definition: hpm_pcfg_drv.h:494
static void pcfg_ldo2p5_turn_off(PCFG_Type *ptr)
turn off LDO2P5
Definition: hpm_pcfg_drv.h:171
static uint32_t pcfg_dcdc_get_resume_time_in_cycle(PCFG_Type *ptr)
get DCDC resume time in number of 24MHz clock cycles
Definition: hpm_pcfg_drv.h:399
#define PCFG_DCDCM_MODE_VOLT_MASK
Definition: hpm_pcfg_regs.h:913
#define PCFG_DCDCM_RESUME_TIME_RESUME_TIME_GET(x)
Definition: hpm_pcfg_regs.h:1345
#define PCFG_DCDCM_PROT_DISABLE_POWER_LOSS_MASK
Definition: hpm_pcfg_regs.h:964
#define PCFG_DCDCM_PROT_SHORT_FLAG_GET(x)
Definition: hpm_pcfg_regs.h:1036
#define PCFG_DCDCM_PROT_ILIMIT_LP_MASK
Definition: hpm_pcfg_regs.h:941
#define PCFG_DCDCM_START_TIME_START_TIME_SET(x)
Definition: hpm_pcfg_regs.h:1333
#define PCFG_DCDCM_MISC_OL_HYST_SET(x)
Definition: hpm_pcfg_regs.h:1275
#define PCFG_DCDCM_PROT_OVERVOLT_FLAG_GET(x)
Definition: hpm_pcfg_regs.h:1001
#define PCFG_DCDCM_PROT_SHORT_CURRENT_SET(x)
Definition: hpm_pcfg_regs.h:1024
#define PCFG_DCDCM_MODE_MODE_MASK
Definition: hpm_pcfg_regs.h:899
#define PCFG_DCDCM_MODE_READY_GET(x)
Definition: hpm_pcfg_regs.h:887
#define PCFG_DCDCM_PROT_DISABLE_OVERVOLTAGE_MASK
Definition: hpm_pcfg_regs.h:987
#define PCFG_DCDCM_PROT_ILIMIT_LP_SET(x)
Definition: hpm_pcfg_regs.h:943
#define PCFG_DCDCM_RESUME_TIME_RESUME_TIME_SET(x)
Definition: hpm_pcfg_regs.h:1344
#define PCFG_DCDCM_CURRENT_LEVEL_GET(x)
Definition: hpm_pcfg_regs.h:1067
#define PCFG_DCDCM_PROT_SHORT_CURRENT_MASK
Definition: hpm_pcfg_regs.h:1022
#define PCFG_DCDCM_MISC_OL_HYST_MASK
Definition: hpm_pcfg_regs.h:1273
#define PCFG_DCDCM_MODE_VOLT_SET(x)
Definition: hpm_pcfg_regs.h:915
#define PCFG_DCDCM_MODE_MODE_SET(x)
Definition: hpm_pcfg_regs.h:901
#define PCFG_DCDCM_PROT_DISABLE_SHORT_MASK
Definition: hpm_pcfg_regs.h:1010
#define PCFG_DCDCM_PROT_POWER_LOSS_FLAG_GET(x)
Definition: hpm_pcfg_regs.h:978
#define PCFG_DCDCM_POWER_CONFIG_RETENTION_MASK
Definition: hpm_pcfg_regs.h:1355
#define PCFG_DCDCM_CURRENT_VALID_MASK
Definition: hpm_pcfg_regs.h:1056
#define PCFG_DCDCM_CURRENT_ESTI_EN_MASK
Definition: hpm_pcfg_regs.h:1044
#define PCFG_DCDCM_START_TIME_START_TIME_GET(x)
Definition: hpm_pcfg_regs.h:1334
uint32_t hpm_stat_t
Definition: hpm_common.h:126
#define MAKE_STATUS(group, code)
Definition: hpm_common.h:135
@ status_group_pcfg
Definition: hpm_common.h:159
static bool pcfg_dcdc_is_over_current(PCFG_Type *ptr)
checkover over current flag
Definition: hpm_pcfg_drv.h:331
static void pcfg_ddr_dcdc_set_start_time_in_cycle(PCFG_Type *ptr, uint32_t cycles)
set ddr dcdc start time in 24MHz clock cycles
Definition: hpm_pcfg_drv.h:793
static void pcfg_ddr_dcdc_disable_power_loss_prot(PCFG_Type *ptr)
disable ddr power loss protection
Definition: hpm_pcfg_drv.h:619
void pcfg_irc24m_config_track(PCFG_Type *ptr, pcfg_irc24m_config_t *config)
config irc24m track
Definition: hpm_pcfg_drv.c:74
hpm_stat_t pcfg_ldo1p1_set_voltage(PCFG_Type *ptr, uint16_t mv)
Definition: hpm_pcfg_drv.c:14
hpm_stat_t pcfg_ldo2p5_set_voltage(PCFG_Type *ptr, uint16_t mv)
Definition: hpm_pcfg_drv.c:24
static void pcfg_ddr_dcdc_enable_over_current_prot(PCFG_Type *ptr)
enable ddr over current protection
Definition: hpm_pcfg_drv.h:692
pcfg_dcdc_lp_current_limit_t
Definition: hpm_pcfg_drv.h:34
uint16_t pcfg_dcdc_get_current_level(PCFG_Type *ptr)
Definition: hpm_pcfg_drv.c:47
hpm_stat_t pcfg_dcdc_set_voltage(PCFG_Type *ptr, uint16_t mv)
Definition: hpm_pcfg_drv.c:63
#define PCFG_PERIPH_KEEP_CLOCK_OFF(p)
Definition: hpm_pcfg_drv.h:25
static bool pcfg_ddr_dcdc_is_over_current(PCFG_Type *ptr)
checkover ddr over current flag
Definition: hpm_pcfg_drv.h:714
static void pcfg_ddr_dcdc_enable_over_voltage_prot(PCFG_Type *ptr)
enable ddr over voltage protection
Definition: hpm_pcfg_drv.h:661
static bool pcfg_ddr_dcdc_get_measured_current_level(PCFG_Type *ptr)
get measured ddr current level
Definition: hpm_pcfg_drv.h:758
pcfg_pmc_periph_t
Definition: hpm_pcfg_drv.h:54
static void pcfg_ddr_dcdc_set_over_current_limit(PCFG_Type *ptr, pcfg_dcdc_oc_limit_t limit)
set ddr over current limit
Definition: hpm_pcfg_drv.h:703
static void pcfg_ddr_dcdc_disable_retention(PCFG_Type *ptr)
disable ddr dcdc retention
Definition: hpm_pcfg_drv.h:825
static uint32_t pcfg_ddr_dcdc_get_start_time_in_cycle(PCFG_Type *ptr)
get ddr dcdc start time in number of 24MHz clock cycles
Definition: hpm_pcfg_drv.h:770
static void pcfg_ddr_dcdc_set_lp_current_limit(PCFG_Type *ptr, pcfg_dcdc_lp_current_limit_t limit)
set ddr low power current limit
Definition: hpm_pcfg_drv.h:608
static void pcfg_ddr_dcdc_disable_over_voltage_prot(PCFG_Type *ptr)
disable ddr over voltage protection
Definition: hpm_pcfg_drv.h:651
static void pcfg_ddr_dcdc_disable_measure_current(PCFG_Type *ptr)
disable ddr current measurement
Definition: hpm_pcfg_drv.h:724
static bool pcfg_ddr_dcdc_is_stable(PCFG_Type *ptr)
Definition: hpm_pcfg_drv.h:576
static bool pcfg_dcdc_get_measured_current_level(PCFG_Type *ptr)
get measured current level
Definition: hpm_pcfg_drv.h:375
pcfg_wakeup_src_t
Definition: hpm_pcfg_drv.h:63
pcfg_dcdc_oc_limit_t
Definition: hpm_pcfg_drv.h:39
static void pcfg_dcdc_enable_over_voltage_prot(PCFG_Type *ptr)
enable over voltage protection
Definition: hpm_pcfg_drv.h:278
pcfg_dcdc_mode_t
Definition: hpm_pcfg_drv.h:46
static void pcfg_ddr_dcdc_set_current_hys_range(PCFG_Type *ptr, pcfg_dcdc_current_hys_t range)
set ddr dcdc current hysteres range
Definition: hpm_pcfg_drv.h:815
static void pcfg_ddr_dcdc_set_resume_time_in_cycle(PCFG_Type *ptr, uint32_t cycles)
set ddr dcdc resuem time in 24MHz clock cycles
Definition: hpm_pcfg_drv.h:804
static void pcfg_ddr_dcdc_enable_power_loss_prot(PCFG_Type *ptr)
enable ddr power loss protection
Definition: hpm_pcfg_drv.h:629
static void pcfg_ddr_dcdc_set_voltage_output(PCFG_Type *ptr, uint8_t voltage)
Definition: hpm_pcfg_drv.h:596
static void pcfg_ddr_dcdc_set_mode(PCFG_Type *ptr, uint8_t mode)
Definition: hpm_pcfg_drv.h:585
pcfg_dcdc_current_hys_t
Definition: hpm_pcfg_drv.h:40
static void pcfg_ddr_dcdc_enable_measure_current(PCFG_Type *ptr)
enable ddr current measurement
Definition: hpm_pcfg_drv.h:734
static bool pcfg_ddr_dcdc_is_power_loss(PCFG_Type *ptr)
check if ddr power loss flag is set
Definition: hpm_pcfg_drv.h:641
#define PCFG_PERIPH_KEEP_CLOCK_ON(p)
Definition: hpm_pcfg_drv.h:24
static void pcfg_dcdc_enable_over_current_prot(PCFG_Type *ptr)
enable over current protection
Definition: hpm_pcfg_drv.h:309
pcfg_irc24m_reference_t
Definition: hpm_pcfg_drv.h:28
static void pcfg_ddr_dcdc_enable_retention(PCFG_Type *ptr)
enable ddr dcdc retention to retain soc sram data
Definition: hpm_pcfg_drv.h:835
static void pcfg_ddr_dcdc_disable_over_current_prot(PCFG_Type *ptr)
disable ddr over current protection
Definition: hpm_pcfg_drv.h:682
hpm_stat_t pcfg_dcdc_set_lpmode_voltage(PCFG_Type *ptr, uint16_t mv)
Definition: hpm_pcfg_drv.c:95
static bool pcfg_ddr_dcdc_is_measure_current_valid(PCFG_Type *ptr)
check if measured ddr current is valid
Definition: hpm_pcfg_drv.h:746
static void pcfg_dcdc_disable_over_current_prot(PCFG_Type *ptr)
disable over current protection
Definition: hpm_pcfg_drv.h:299
static uint32_t pcfg_ddr_dcdc_get_resume_time_in_cycle(PCFG_Type *ptr)
get ddr dcdc resume time in number of 24MHz clock cycles
Definition: hpm_pcfg_drv.h:782
static bool pcfg_ddr_dcdc_is_over_voltage(PCFG_Type *ptr)
checkover ddr over voltage flag
Definition: hpm_pcfg_drv.h:672
static void pcfg_dcdc_set_over_current_limit(PCFG_Type *ptr, pcfg_dcdc_oc_limit_t limit)
set over current limit
Definition: hpm_pcfg_drv.h:320
@ pcfg_dcdc_lp_current_limit_250ma
Definition: hpm_pcfg_drv.h:35
@ pcfg_dcdc_lp_current_limit_200ma
Definition: hpm_pcfg_drv.h:36
@ status_pcfg_ldo_out_of_range
Definition: hpm_pcfg_drv.h:74
@ pcfg_pmc_periph_pmic_mem
Definition: hpm_pcfg_drv.h:66
@ pcfg_pmc_periph_timer
Definition: hpm_pcfg_drv.h:57
@ pcfg_pmc_periph_vad
Definition: hpm_pcfg_drv.h:57
@ pcfg_pmc_periph_uart
Definition: hpm_pcfg_drv.h:59
@ pcfg_pmc_periph_ioc
Definition: hpm_pcfg_drv.h:56
@ pcfg_pmc_periph_gpio
Definition: hpm_pcfg_drv.h:55
@ pcfg_pmc_periph_wdog
Definition: hpm_pcfg_drv.h:58
@ pcfg_wakeup_src_vad_wake
Definition: hpm_pcfg_drv.h:73
@ pcfg_wakeup_src_bgpio
Definition: hpm_pcfg_drv.h:77
@ pcfg_wakeup_src_pwdg
Definition: hpm_pcfg_drv.h:67
@ pcfg_wakeup_src_pgpio
Definition: hpm_pcfg_drv.h:68
@ pcfg_wakeup_src_puart
Definition: hpm_pcfg_drv.h:65
@ pcfg_wakeup_src_vad
Definition: hpm_pcfg_drv.h:72
@ pcfg_wakeup_src_soc
Definition: hpm_pcfg_drv.h:64
@ pcfg_wakeup_src_bsecurity
Definition: hpm_pcfg_drv.h:76
@ pcfg_wakeup_src_ptimer
Definition: hpm_pcfg_drv.h:66
@ pcfg_wakeup_src_rtc
Definition: hpm_pcfg_drv.h:79
@ pcfg_dcdc_oc_limit_2000ma
Definition: hpm_pcfg_drv.h:40
@ pcfg_dcdc_oc_limit_1300ma
Definition: hpm_pcfg_drv.h:41
@ pcfg_dcdc_mode_general
Definition: hpm_pcfg_drv.h:49
@ pcfg_dcdc_mode_off
Definition: hpm_pcfg_drv.h:47
@ pcfg_dcdc_mode_basic
Definition: hpm_pcfg_drv.h:48
@ pcfg_dcdc_mode_expert
Definition: hpm_pcfg_drv.h:50
@ pcfg_dcdc_current_hys_25mv
Definition: hpm_pcfg_drv.h:42
@ pcfg_dcdc_current_hys_12_5mv
Definition: hpm_pcfg_drv.h:41
@ pcfg_irc24m_reference_24m_xtal
Definition: hpm_pcfg_drv.h:30
@ pcfg_irc24m_reference_32k
Definition: hpm_pcfg_drv.h:29
Definition: hpm_pcfg_regs.h:12
__RW uint32_t LDO2P5
Definition: hpm_pcfg_regs.h:15
__RW uint32_t DCDCM_POWER_CONFIG
Definition: hpm_pcfg_regs.h:48
__RW uint32_t DCDCM_CURRENT
Definition: hpm_pcfg_regs.h:41
__RW uint32_t POWER_TRAP
Definition: hpm_pcfg_regs.h:28
__RW uint32_t DCDC_CURRENT
Definition: hpm_pcfg_regs.h:20
__RW uint32_t WAKE_MASK
Definition: hpm_pcfg_regs.h:30
__RW uint32_t BANDGAP
Definition: hpm_pcfg_regs.h:13
__RW uint32_t SCG_CTRL
Definition: hpm_pcfg_regs.h:31
__RW uint32_t DCDCM_RESUME_TIME
Definition: hpm_pcfg_regs.h:47
__RW uint32_t DCDC_START_TIME
Definition: hpm_pcfg_regs.h:25
__RW uint32_t DCDC_PROT
Definition: hpm_pcfg_regs.h:19
__RW uint32_t DCDC_MODE
Definition: hpm_pcfg_regs.h:17
__RW uint32_t DCDC_MISC
Definition: hpm_pcfg_regs.h:23
__RW uint32_t DCDCM_START_TIME
Definition: hpm_pcfg_regs.h:46
__RW uint32_t DCDCM_MISC
Definition: hpm_pcfg_regs.h:44
__RW uint32_t DCDCM_MODE
Definition: hpm_pcfg_regs.h:38
__RW uint32_t DCDC_RESUME_TIME
Definition: hpm_pcfg_regs.h:26
__RW uint32_t WAKE_CAUSE
Definition: hpm_pcfg_regs.h:29
__RW uint32_t DCDCM_PROT
Definition: hpm_pcfg_regs.h:40
__RW uint32_t RC24M
Definition: hpm_pcfg_regs.h:33
Definition: hpm_pcfg_drv.h:78