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)
116 uint32_t status = ptr->
XTAL;
150 uint32_t status = ptr->
PLL[pll].
MFI;
175 uint32_t status = ptr->
PLL[pll].
DIV[clk];
#define PLLCTLV2_XTAL_BUSY_MASK
Definition: hpm_pllctlv2_regs.h:40
#define PLLCTLV2_XTAL_RESPONSE_MASK
Definition: hpm_pllctlv2_regs.h:51
#define PLLCTLV2_PLL_DIV_BUSY_MASK
Definition: hpm_pllctlv2_regs.h:252
#define PLLCTLV2_PLL_DIV_ENABLE_MASK
Definition: hpm_pllctlv2_regs.h:274
#define PLLCTLV2_PLL_DIV_RESPONSE_MASK
Definition: hpm_pllctlv2_regs.h:263
#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_MFI_BUSY_MASK
Definition: hpm_pllctlv2_regs.h:88
#define PLLCTLV2_PLL_CONFIG_SPREAD_MASK
Definition: hpm_pllctlv2_regs.h:182
#define PLLCTLV2_PLL_ADVANCED_DITHER_MASK
Definition: hpm_pllctlv2_regs.h:239
#define PLLCTLV2_PLL_ADVANCED_SLOW_MASK
Definition: hpm_pllctlv2_regs.h:229
#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:135
#define IS_HPM_BITMASK_CLR(val, mask)
Definition: hpm_common.h:63
#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)
Initializes the PLL to generate a specific output frequency.
Definition: hpm_pllctlv2_drv.c:45
void pllctlv2_setup_spread_spectrum(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint8_t spread_range, uint32_t modulation_freq)
Configures spread spectrum modulation parameters for a PLL.
Definition: hpm_pllctlv2_drv.c:146
static bool pllctlv2_pll_is_enabled(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Checks if the specified PLL is enabled.
Definition: hpm_pllctlv2_drv.h:161
static bool pllctlv2_xtal_is_enabled(PLLCTLV2_Type *ptr)
Checks if the external crystal oscillator is enabled.
Definition: hpm_pllctlv2_drv.h:126
static void pllctlv2_select_reference_clock(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint8_t src)
Selects the reference clock source for the specified PLL.
Definition: hpm_pllctlv2_drv.h:188
static void pllctlv2_enable_slow_lock(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Enable slow lock for the specified PLL.
Definition: hpm_pllctlv2_drv.h:262
static void pllctlv2_enable_dither(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Enable dither for the specified PLL.
Definition: hpm_pllctlv2_drv.h:242
uint32_t pllctlv2_get_pll_freq_in_hz(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Retrieves the current output frequency of the specified PLL.
Definition: hpm_pllctlv2_drv.c:101
void pllctlv2_enable_spread_spectrum(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t step, uint32_t stop)
Enables and configures the spread spectrum modulation for the specified PLL.
Definition: hpm_pllctlv2_drv.c:71
static void pllctlv2_disable_slow_lock(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Disable slow lock for the specified PLL.
Definition: hpm_pllctlv2_drv.h:272
static bool pllctlv2_xtal_is_stable(PLLCTLV2_Type *ptr)
Checks the stability status of the external crystal oscillator.
Definition: hpm_pllctlv2_drv.h:114
static bool pllctlv2_pll_clk_is_stable(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, pllctlv2_clk_t clk)
Checks if the specified PLL CLK has achieved stable operation.
Definition: hpm_pllctlv2_drv.h:173
static void pllctlv2_set_pll_lock_time(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t xtal_cycles)
Sets the lock time for the specified PLL.
Definition: hpm_pllctlv2_drv.h:220
hpm_stat_t pllctlv2_set_pll_with_mfi_mfn(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t mfi, uint32_t mfn)
Configures the PLL frequency using direct MFI and MFN values.
Definition: hpm_pllctlv2_drv.c:25
static bool pllctlv2_pll_is_stable(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Checks if the specified PLL has achieved stable operation.
Definition: hpm_pllctlv2_drv.h:148
uint32_t pllctlv2_get_pll_postdiv_freq_in_hz(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, pllctlv2_clk_t clk)
Retrieves the frequency of a specific PLL post-divider output.
Definition: hpm_pllctlv2_drv.c:134
static void pllctlv2_disable_spread_spectrum(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Disables the spread spectrum modulation for the specified PLL.
Definition: hpm_pllctlv2_drv.h:208
static void pllctlv2_xtal_set_rampup_time(PLLCTLV2_Type *ptr, uint32_t rc24m_cycles)
Configures the ramp-up time for the external crystal oscillator.
Definition: hpm_pllctlv2_drv.h:137
void pllctlv2_set_postdiv(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, pllctlv2_clk_t clk, pllctlv2_div_t div_value)
Configures the post-divider for a specific PLL output clock.
Definition: hpm_pllctlv2_drv.c:89
static void pllctlv2_disable_dither(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll)
Disable dither for the specified PLL.
Definition: hpm_pllctlv2_drv.h:252
static void pllctlv2_set_pll_step_time(PLLCTLV2_Type *ptr, pllctlv2_pll_t pll, uint32_t xtal_cycles)
Sets the step time for frequency changes in the specified PLL.
Definition: hpm_pllctlv2_drv.h:232
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 ADVANCED
Definition: hpm_pllctlv2_regs.h:24
__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
__RW uint32_t MFI
Definition: hpm_pllctlv2_regs.h:16
__RW uint32_t DIV[3]
Definition: hpm_pllctlv2_regs.h:26
__RW uint32_t LOCKTIME
Definition: hpm_pllctlv2_regs.h:22
struct PLLCTLV2_Type::@325 PLL[2]