8 #ifndef HPM_PLLCTLV2_DRV_H
9 #define HPM_PLLCTLV2_DRV_H
13 #include "hpm_soc_feature.h"
14 #include "hpm_pllctlv2_regs.h"
16 #define PLLCTLV2_CLK_SRC_XTAL24M (0U)
17 #define PLLCTLV2_CLK_SRC_IRC24M (1U)
#define PLLCTLV2_XTAL_RESPONSE_MASK
Definition: hpm_pllctlv2_regs.h:51
#define PLLCTLV2_PLL_CONFIG_REFSEL_MASK
Definition: hpm_pllctlv2_regs.h:194
#define PLLCTLV2_PLL_MFI_ENABLE_MASK
Definition: hpm_pllctlv2_regs.h:110
#define PLLCTLV2_PLL_CONFIG_SPREAD_MASK
Definition: hpm_pllctlv2_regs.h:182
#define PLLCTLV2_PLL_MFI_RESPONSE_MASK
Definition: hpm_pllctlv2_regs.h:99
#define PLLCTLV2_PLL_STEPTIME_STEPTIME_SET(x)
Definition: hpm_pllctlv2_regs.h:218
#define PLLCTLV2_PLL_LOCKTIME_LOCKTIME_SET(x)
Definition: hpm_pllctlv2_regs.h:207
#define PLLCTLV2_XTAL_RAMP_TIME_MASK
Definition: hpm_pllctlv2_regs.h:75
#define PLLCTLV2_XTAL_RAMP_TIME_SET(x)
Definition: hpm_pllctlv2_regs.h:77
#define PLLCTLV2_XTAL_ENABLE_MASK
Definition: hpm_pllctlv2_regs.h:62
#define PLLCTLV2_PLL_CONFIG_REFSEL_SET(x)
Definition: hpm_pllctlv2_regs.h:196
uint32_t hpm_stat_t
Definition: hpm_common.h:126
#define IS_HPM_BITMASK_SET(val, mask)
Definition: hpm_common.h:61
hpm_stat_t pllctlv2_init_pll_with_freq(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t freq_in_hz)
Initialize PLL to specified frequency Note: the specified PLL clock needs to be enabled before being ...
Definition: hpm_pllctlv2_drv.c:39
static bool pllctlv2_pll_is_enabled(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Check if PLL is enabled.
Definition: hpm_pllctlv2_drv.h:156
static bool pllctlv2_xtal_is_enabled(PLLCTLV2_Type *ptr)
Check if external crystal is enabled.
Definition: hpm_pllctlv2_drv.h:124
static void pllctlv2_select_reference_clock(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint8_t src)
Select the PLL reference clock.
Definition: hpm_pllctlv2_drv.h:169
uint32_t pllctlv2_get_pll_freq_in_hz(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Get the specified PLl clock frequency.
Definition: hpm_pllctlv2_drv.c:91
void pllctlv2_enable_spread_spectrum(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t step, uint32_t stop)
Enable PLL Spread Spectrum feature.
Definition: hpm_pllctlv2_drv.c:64
static bool pllctlv2_xtal_is_stable(PLLCTLV2_Type *ptr)
Check if external crystal is stable.
Definition: hpm_pllctlv2_drv.h:114
static void pllctlv2_set_pll_lock_time(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t xtal_cycles)
Set PLL lock time.
Definition: hpm_pllctlv2_drv.h:199
hpm_stat_t pllctlv2_set_pll_with_mfi_mfn(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t mfi, uint32_t mfn)
Set the PLL via the low-level MFI, MFD and MFN PLL frequency = REF CLOCK * (mfi + 1....
Definition: hpm_pllctlv2_drv.c:21
static bool pllctlv2_pll_is_stable(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Check is PLL is stable.
Definition: hpm_pllctlv2_drv.h:145
uint32_t pllctlv2_get_pll_postdiv_freq_in_hz(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, pllctlv2_clk_t clk)
Get the selected PLL post divider frequency.
Definition: hpm_pllctlv2_drv.c:103
static void pllctlv2_disable_spread_spectrum(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Disable PLL Spread spectrum.
Definition: hpm_pllctlv2_drv.h:188
static void pllctlv2_xtal_set_rampup_time(PLLCTLV2_Type *ptr, uint32_t rc24m_cycles)
Set external crystal ramp-up time.
Definition: hpm_pllctlv2_drv.h:134
void pllctlv2_set_postdiv(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, pllctlv2_clk_t clk, pllctlv2_div_t div_value)
Set PLL Post divider.
Definition: hpm_pllctlv2_drv.c:82
static void pllctlv2_set_pll_step_time(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t xtal_cycles)
Set PLL step time.
Definition: hpm_pllctlv2_drv.h:210
pllctlv2_pll_t
Definition: hpm_pllctlv2_drv.h:19
@ pllctlv2_pll1
Definition: hpm_pllctlv2_drv.h:21
@ pllctlv2_pll2
Definition: hpm_pllctlv2_drv.h:22
@ pllctlv2_pll6
Definition: hpm_pllctlv2_drv.h:26
@ pllctlv2_pll3
Definition: hpm_pllctlv2_drv.h:23
@ pllctlv2_pll4
Definition: hpm_pllctlv2_drv.h:24
@ pllctlv2_pll0
Definition: hpm_pllctlv2_drv.h:20
@ pllctlv2_pll5
Definition: hpm_pllctlv2_drv.h:25
pllctlv2_clk_t
Definition: hpm_pllctlv2_drv.h:29
@ pllctlv2_clk2
Definition: hpm_pllctlv2_drv.h:32
@ pllctlv2_clk3
Definition: hpm_pllctlv2_drv.h:33
@ pllctlv2_clk1
Definition: hpm_pllctlv2_drv.h:31
@ pllctlv2_clk0
Definition: hpm_pllctlv2_drv.h:30
pllctlv2_div_t
Definition: hpm_pllctlv2_drv.h:36
@ pllctlv2_div_7p6
Definition: hpm_pllctlv2_drv.h:70
@ pllctlv2_div_2p8
Definition: hpm_pllctlv2_drv.h:46
@ pllctlv2_div_13p4
Definition: hpm_pllctlv2_drv.h:99
@ pllctlv2_div_9p2
Definition: hpm_pllctlv2_drv.h:78
@ pllctlv2_div_12p6
Definition: hpm_pllctlv2_drv.h:95
@ pllctlv2_div_10p2
Definition: hpm_pllctlv2_drv.h:83
@ pllctlv2_div_8p6
Definition: hpm_pllctlv2_drv.h:75
@ pllctlv2_div_10p4
Definition: hpm_pllctlv2_drv.h:84
@ pllctlv2_div_5p4
Definition: hpm_pllctlv2_drv.h:59
@ pllctlv2_div_7p8
Definition: hpm_pllctlv2_drv.h:71
@ pllctlv2_div_7p2
Definition: hpm_pllctlv2_drv.h:68
@ pllctlv2_div_3p0
Definition: hpm_pllctlv2_drv.h:47
@ pllctlv2_div_13p0
Definition: hpm_pllctlv2_drv.h:97
@ pllctlv2_div_4p0
Definition: hpm_pllctlv2_drv.h:52
@ pllctlv2_div_11p4
Definition: hpm_pllctlv2_drv.h:89
@ pllctlv2_div_8p2
Definition: hpm_pllctlv2_drv.h:73
@ pllctlv2_div_5p6
Definition: hpm_pllctlv2_drv.h:60
@ pllctlv2_div_5p8
Definition: hpm_pllctlv2_drv.h:61
@ pllctlv2_div_12p2
Definition: hpm_pllctlv2_drv.h:93
@ pllctlv2_div_6p8
Definition: hpm_pllctlv2_drv.h:66
@ pllctlv2_div_6p2
Definition: hpm_pllctlv2_drv.h:63
@ pllctlv2_div_10p6
Definition: hpm_pllctlv2_drv.h:85
@ pllctlv2_div_9p0
Definition: hpm_pllctlv2_drv.h:77
@ pllctlv2_div_1p2
Definition: hpm_pllctlv2_drv.h:38
@ pllctlv2_div_11p6
Definition: hpm_pllctlv2_drv.h:90
@ pllctlv2_div_1p0
Definition: hpm_pllctlv2_drv.h:37
@ pllctlv2_div_4p4
Definition: hpm_pllctlv2_drv.h:54
@ pllctlv2_div_7p0
Definition: hpm_pllctlv2_drv.h:67
@ pllctlv2_div_8p0
Definition: hpm_pllctlv2_drv.h:72
@ pllctlv2_div_2p2
Definition: hpm_pllctlv2_drv.h:43
@ pllctlv2_div_7p4
Definition: hpm_pllctlv2_drv.h:69
@ pllctlv2_div_2p4
Definition: hpm_pllctlv2_drv.h:44
@ pllctlv2_div_11p8
Definition: hpm_pllctlv2_drv.h:91
@ pllctlv2_div_4p8
Definition: hpm_pllctlv2_drv.h:56
@ pllctlv2_div_8p8
Definition: hpm_pllctlv2_drv.h:76
@ pllctlv2_div_2p0
Definition: hpm_pllctlv2_drv.h:42
@ pllctlv2_div_13p2
Definition: hpm_pllctlv2_drv.h:98
@ pllctlv2_div_12p0
Definition: hpm_pllctlv2_drv.h:92
@ pllctlv2_div_9p8
Definition: hpm_pllctlv2_drv.h:81
@ pllctlv2_div_9p4
Definition: hpm_pllctlv2_drv.h:79
@ pllctlv2_div_13p6
Definition: hpm_pllctlv2_drv.h:100
@ pllctlv2_div_3p4
Definition: hpm_pllctlv2_drv.h:49
@ pllctlv2_div_2p6
Definition: hpm_pllctlv2_drv.h:45
@ pllctlv2_div_1p8
Definition: hpm_pllctlv2_drv.h:41
@ pllctlv2_div_6p6
Definition: hpm_pllctlv2_drv.h:65
@ pllctlv2_div_9p6
Definition: hpm_pllctlv2_drv.h:80
@ pllctlv2_div_12p4
Definition: hpm_pllctlv2_drv.h:94
@ pllctlv2_div_1p6
Definition: hpm_pllctlv2_drv.h:40
@ pllctlv2_div_3p2
Definition: hpm_pllctlv2_drv.h:48
@ pllctlv2_div_11p2
Definition: hpm_pllctlv2_drv.h:88
@ pllctlv2_div_11p0
Definition: hpm_pllctlv2_drv.h:87
@ pllctlv2_div_3p6
Definition: hpm_pllctlv2_drv.h:50
@ pllctlv2_div_10p0
Definition: hpm_pllctlv2_drv.h:82
@ pllctlv2_div_8p4
Definition: hpm_pllctlv2_drv.h:74
@ pllctlv2_div_1p4
Definition: hpm_pllctlv2_drv.h:39
@ pllctlv2_div_6p4
Definition: hpm_pllctlv2_drv.h:64
@ pllctlv2_div_6p0
Definition: hpm_pllctlv2_drv.h:62
@ pllctlv2_div_5p2
Definition: hpm_pllctlv2_drv.h:58
@ pllctlv2_div_5p0
Definition: hpm_pllctlv2_drv.h:57
@ pllctlv2_div_12p8
Definition: hpm_pllctlv2_drv.h:96
@ pllctlv2_div_3p8
Definition: hpm_pllctlv2_drv.h:51
@ pllctlv2_div_4p6
Definition: hpm_pllctlv2_drv.h:55
@ pllctlv2_div_10p8
Definition: hpm_pllctlv2_drv.h:86
@ pllctlv2_div_4p2
Definition: hpm_pllctlv2_drv.h:53
Definition: hpm_pllctlv2_regs.h:12
__RW uint32_t CONFIG
Definition: hpm_pllctlv2_regs.h:21
__RW uint32_t XTAL
Definition: hpm_pllctlv2_regs.h:13
__RW uint32_t STEPTIME
Definition: hpm_pllctlv2_regs.h:23
struct PLLCTLV2_Type::@315 PLL[2]
__RW uint32_t MFI
Definition: hpm_pllctlv2_regs.h:16
__RW uint32_t LOCKTIME
Definition: hpm_pllctlv2_regs.h:22