12 #include "hpm_pcfg_regs.h"
21 #define PCFG_CLOCK_GATE_MODE_ALWAYS_ON (0x3UL)
22 #define PCFG_CLOCK_GATE_MODE_ALWAYS_OFF (0x2UL)
23 #define PCFG_CLOCK_GATE_MODE_ALWAYS_FOLLOW_FLOW (0x1UL)
25 #define PCFG_PERIPH_KEEP_CLOCK_ON(p) (PCFG_CLOCK_GATE_MODE_ALWAYS_ON << (p))
26 #define PCFG_PERIPH_KEEP_CLOCK_OFF(p) (PCFG_CLOCK_GATE_MODE_ALWAYS_OFF << (p))
27 #define PCFG_PERIPH_SET_CLOCK_AUTO(p) (PCFG_CLOCK_GATE_MODE_ALWAYS_FOLLOW_FLOW << (p))
86 bool return_to_default_on_xtal_loss;
91 #define PCFG_CLOCK_GATE_CONTROL_MASK(module, mode) \
92 ((uint32_t) (mode) << ((module) << 1))
94 #define PCFG_DEBUG_STOP_SOURCE_ENABLE_CORE0 (PCFG_DEBUG_STOP_CPU0_MASK)
95 #define PCFG_DEBUG_STOP_SOURCE_DISABLE_CORE0 (0)
96 #define PCFG_DEBUG_STOP_SOURCE_ENABLE_CORE1 (PCFG_DEBUG_STOP_CPU1_MASK)
97 #define PCFG_DEBUG_STOP_SOURCE_DISABLE_CORE1 (0)
584 const uint8_t pcfc_dcdc_min_duty_cycle[] = {
585 0x6E, 0x6E, 0x70, 0x70, 0x70, 0x70, 0x72, 0x72,
586 0x72, 0x72, 0x74, 0x74, 0x74, 0x74, 0x76, 0x76,
587 0x76, 0x78, 0x78, 0x78, 0x78, 0x7A, 0x7A, 0x7A,
588 0x7A, 0x7C, 0x7C, 0x7C, 0x7E, 0x7E, 0x7E, 0x7E
598 voltage = (voltage - 600) / 25;
#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_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_ADVPARAM_MIN_DUT_MASK
Definition: hpm_pcfg_regs.h:437
#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_START_TIME_START_TIME_SET(x)
Definition: hpm_pcfg_regs.h:580
#define PCFG_POWER_TRAP_TRAP_MASK
Definition: hpm_pcfg_regs.h:626
#define PCFG_DCDC_PROT_OVERVOLT_FLAG_MASK
Definition: hpm_pcfg_regs.h:246
#define PCFG_DCDC_MODE_VOLT_GET(x)
Definition: hpm_pcfg_regs.h:175
#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_ADVPARAM_MIN_DUT_SET(x)
Definition: hpm_pcfg_regs.h:439
#define PCFG_DEBUG_STOP_CPU0_MASK
Definition: hpm_pcfg_regs.h:749
#define PCFG_DCDC_PROT_DISABLE_POWER_LOSS_MASK
Definition: hpm_pcfg_regs.h:248
#define PCFG_DEBUG_STOP_CPU1_MASK
Definition: hpm_pcfg_regs.h:737
#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:180
static bool pcfg_bandgap_is_trimmed(PCFG_Type *ptr)
check if bandgap is trimmed or not
Definition: hpm_pcfg_drv.h:150
static void pcfg_enable_power_trap(PCFG_Type *ptr)
enable power trap
Definition: hpm_pcfg_drv.h:385
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:495
static bool pcfg_dcdc_is_measure_current_valid(PCFG_Type *ptr)
check if measured current is valid
Definition: hpm_pcfg_drv.h:319
static void pcfg_bandgap_disable_lowpower_mode(PCFG_Type *ptr)
bandgap disable power save mode
Definition: hpm_pcfg_drv.h:128
static void pcfg_clear_power_trap_trigger_flag(PCFG_Type *ptr)
clear power trap trigger flag
Definition: hpm_pcfg_drv.h:407
static void pcfg_bandgap_reload_trim(PCFG_Type *ptr)
bandgap reload trim value
Definition: hpm_pcfg_drv.h:160
static void pcfg_disable_cpu1_debug_stop_notfication(PCFG_Type *ptr)
Disable CPU1 debug stop notification to peripherals.
Definition: hpm_pcfg_drv.h:529
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:331
static void pcfg_dcdc_ensable_over_voltage_prot(PCFG_Type *ptr)
enable over voltage protection
Definition: hpm_pcfg_drv.h:276
static void pcfg_bandgap_enable_power_save_mode(PCFG_Type *ptr)
bandgap enable power save mode
Definition: hpm_pcfg_drv.h:118
static void pcfg_dcdc_disable_over_voltage_prot(PCFG_Type *ptr)
disable over voltage protection
Definition: hpm_pcfg_drv.h:266
static void pcfg_disable_dcdc_retention(PCFG_Type *ptr)
disable dcdc retention
Definition: hpm_pcfg_drv.h:417
static void pcfg_config_debug_stop_notification(PCFG_Type *ptr, uint8_t mask)
Configure CPU core debug stop notification to peripherals.
Definition: hpm_pcfg_drv.h:550
static bool pcfg_is_power_trap_triggered(PCFG_Type *ptr)
check if power trap is triggered
Definition: hpm_pcfg_drv.h:397
static bool pcfg_dcdc_is_stable(PCFG_Type *ptr)
Definition: hpm_pcfg_drv.h:202
static void pcfg_dcdc_enable_power_loss_prot(PCFG_Type *ptr)
enable power loss protection
Definition: hpm_pcfg_drv.h:244
static void pcfg_enable_cpu0_debug_stop_notfication(PCFG_Type *ptr)
Enable CPU0 debug stop notification to peripherals.
Definition: hpm_pcfg_drv.h:519
static void pcfg_bandgap_disable_power_save_mode(PCFG_Type *ptr)
bandgap disable power save mode
Definition: hpm_pcfg_drv.h:108
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:483
static void pcfg_dcdc_set_mode(PCFG_Type *ptr, uint8_t mode)
Definition: hpm_pcfg_drv.h:211
static void pcfg_disable_cpu0_debug_stop_notfication(PCFG_Type *ptr)
Disable CPU0 debug stop notficiation to peripherals.
Definition: hpm_pcfg_drv.h:509
static void pcfg_disable_wakeup_source(PCFG_Type *ptr, uint32_t mask)
disable wakeup source
Definition: hpm_pcfg_drv.h:472
static bool pcfg_dcdc_is_power_loss(PCFG_Type *ptr)
check if power loss flag is set
Definition: hpm_pcfg_drv.h:256
static void pcfg_bandgap_enable_lowpower_mode(PCFG_Type *ptr)
bandgap enable low power mode
Definition: hpm_pcfg_drv.h:138
static bool pcfg_irc24m_is_trimmed(PCFG_Type *ptr)
check if irc24m is trimmed
Definition: hpm_pcfg_drv.h:562
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:365
static bool pcfg_ldo2p5_is_stable(PCFG_Type *ptr)
check if LDO 2.5V is stable
Definition: hpm_pcfg_drv.h:192
static void pcfg_irc24m_reload_trim(PCFG_Type *ptr)
reload irc24m trim value
Definition: hpm_pcfg_drv.h:572
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:354
static void pcfg_dcdc_enable_measure_current(PCFG_Type *ptr)
enable current measurement
Definition: hpm_pcfg_drv.h:307
static void pcfg_dcdc_disable_power_loss_prot(PCFG_Type *ptr)
disable power loss protection
Definition: hpm_pcfg_drv.h:234
static void pcfg_clear_wakeup_cause(PCFG_Type *ptr, uint32_t mask)
clear wakeup cause flag
Definition: hpm_pcfg_drv.h:438
static void pcfg_enable_wakeup_source(PCFG_Type *ptr, uint32_t mask)
enable wakeup source
Definition: hpm_pcfg_drv.h:461
static void pcfg_dcdc_disable_measure_current(PCFG_Type *ptr)
disable current measurement
Definition: hpm_pcfg_drv.h:297
static void pcfg_disable_power_trap(PCFG_Type *ptr)
disable power trap
Definition: hpm_pcfg_drv.h:375
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:223
static bool pcfg_dcdc_is_over_voltage(PCFG_Type *ptr)
checkover voltage flag
Definition: hpm_pcfg_drv.h:287
static void pcfg_enable_cpu1_debug_stop_notfication(PCFG_Type *ptr)
Enable CPU1 debug stop notification to peripherals.
Definition: hpm_pcfg_drv.h:539
static uint32_t pcfg_get_wakeup_cause(PCFG_Type *ptr)
get wakeup cause
Definition: hpm_pcfg_drv.h:450
static void pcfg_enable_dcdc_retention(PCFG_Type *ptr)
enable dcdc retention to retain soc sram data
Definition: hpm_pcfg_drv.h:427
static void pcfg_ldo2p5_turn_off(PCFG_Type *ptr)
turn off LDO2P5
Definition: hpm_pcfg_drv.h:170
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:343
uint32_t hpm_stat_t
Definition: hpm_common.h:123
#define MAKE_STATUS(group, code)
Definition: hpm_common.h:132
@ status_group_pcfg
Definition: hpm_common.h:156
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
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:26
pcfg_pmc_periph_t
Definition: hpm_pcfg_drv.h:54
pcfg_wakeup_src_t
Definition: hpm_pcfg_drv.h:63
pcfg_dcdc_mode_t
Definition: hpm_pcfg_drv.h:46
static void pcfg_dcdc_switch_to_dcm_mode(PCFG_Type *ptr)
dcdc switch to dcm mode
Definition: hpm_pcfg_drv.h:582
pcfg_dcdc_current_hys_t
Definition: hpm_pcfg_drv.h:40
#define PCFG_PERIPH_KEEP_CLOCK_ON(p)
Definition: hpm_pcfg_drv.h:25
pcfg_irc24m_reference_t
Definition: hpm_pcfg_drv.h:28
hpm_stat_t pcfg_dcdc_set_lpmode_voltage(PCFG_Type *ptr, uint16_t mv)
Definition: hpm_pcfg_drv.c:95
@ pcfg_dcdc_lp_current_limit_250ma
Definition: hpm_pcfg_drv.h:35
@ pcfg_dcdc_lp_current_limit_200ma
Definition: hpm_pcfg_drv.h:36
@ pcfg_pmc_periph_fuse
Definition: hpm_pcfg_drv.h:55
@ pcfg_pmc_periph_timer
Definition: hpm_pcfg_drv.h:57
@ pcfg_pmc_periph_ram
Definition: hpm_pcfg_drv.h:56
@ pcfg_pmc_periph_vad
Definition: hpm_pcfg_drv.h:57
@ pcfg_pmc_periph_debug
Definition: hpm_pcfg_drv.h:63
@ 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_pwdg
Definition: hpm_pcfg_drv.h:66
@ pcfg_wakeup_src_pgpio
Definition: hpm_pcfg_drv.h:67
@ pcfg_wakeup_src_otp
Definition: hpm_pcfg_drv.h:68
@ pcfg_wakeup_src_puart
Definition: hpm_pcfg_drv.h:64
@ pcfg_wakeup_src_ptimer
Definition: hpm_pcfg_drv.h:65
@ 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
@ status_pcfg_ldo_out_of_range
Definition: hpm_pcfg_drv.h:72
Definition: hpm_pcfg_regs.h:12
__RW uint32_t LDO2P5
Definition: hpm_pcfg_regs.h:15
__RW uint32_t DCDC_ADVPARAM
Definition: hpm_pcfg_regs.h:22
__RW uint32_t DCDC_ADVMODE
Definition: hpm_pcfg_regs.h:21
__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 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 DEBUG_STOP
Definition: hpm_pcfg_regs.h:32
__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 RC24M
Definition: hpm_pcfg_regs.h:33
Definition: hpm_pcfg_drv.h:76