HPM SDK
HPMicro Software Development Kit
hpm_clock_drv.h File Reference
#include "hpm_common.h"
#include "hpm_sysctl_drv.h"
#include "hpm_csr_drv.h"

Go to the source code of this file.

Macros

#define CLOCK_DIV_INVALID   (~0UL)
 
#define CLK_SRC_GROUP_COMMON   (0U)
 Clock source group definitions. More...
 
#define CLK_SRC_GROUP_ADC   (1U)
 
#define CLK_SRC_GROUP_I2S   (2U)
 
#define CLK_SRC_GROUP_WDG   (3U)
 
#define CLK_SRC_GROUP_PMIC   (4U)
 
#define CLK_SRC_GROUP_AHB   (5U)
 
#define CLK_SRC_GROUP_AXI0   (6U)
 
#define CLK_SRC_GROUP_AXI1   (7U)
 
#define CLK_SRC_GROUP_AXI2   (8U)
 
#define CLK_SRC_GROUP_CPU0   (9U)
 
#define CLK_SRC_GROUP_CPU1   (10U)
 
#define CLK_SRC_GROUP_SRC   (11U)
 
#define CLK_SRC_GROUP_PWDG   (12U)
 
#define CLK_SRC_GROUP_INVALID   (15U)
 
#define MAKE_CLK_SRC(src_grp, index)   (((uint8_t)(src_grp) << 4) | (index))
 
#define GET_CLK_SRC_GROUP(src)   (((uint8_t)(src) >> 4) & 0x0FU)
 
#define GET_CLK_SRC_INDEX(src)   ((uint8_t)(src)&0x0FU)
 
#define GET_CLOCK_SOURCE_FROM_CLK_SRC(clk_src)   (clock_source_t)((uint32_t)(clk_src) & 0xFU)
 
#define RESOURCE_INVALID   (0xFFFFU)
 
#define MAKE_CLOCK_NAME(resource, src_type, node)   (((uint32_t)(resource) << 16) | ((uint32_t)(src_type) << 8) | ((uint32_t)node))
 
#define GET_CLK_SRC_GROUP_FROM_NAME(name)   (((uint32_t)(name) >> 8) & 0xFFUL)
 
#define GET_CLK_NODE_FROM_NAME(name)   ((uint32_t)(name)&0xFFUL)
 
#define GET_CLK_RESOURCE_FROM_NAME(name)   ((uint32_t)(name) >> 16)
 

Typedefs

typedef enum _clock_sources clk_src_t
 Clock source definitions. More...
 
typedef enum _clock_name clock_name_t
 Peripheral Clock Type Description. More...
 

Enumerations

enum  {
  status_clk_div_invalid = MAKE_STATUS(status_group_clk, 0) , status_clk_src_invalid = MAKE_STATUS(status_group_clk, 1) , status_clk_invalid = MAKE_STATUS(status_group_clk, 2) , status_clk_operation_unsupported = MAKE_STATUS(status_group_clk, 3) ,
  status_clk_shared_ahb = MAKE_STATUS(status_group_clk, 4) , status_clk_shared_axi0 = MAKE_STATUS(status_group_clk, 5) , status_clk_shared_axi1 = MAKE_STATUS(status_group_clk, 6) , status_clk_shared_axi2 = MAKE_STATUS(status_group_clk, 7) ,
  status_clk_shared_cpu0 = MAKE_STATUS(status_group_clk, 8) , status_clk_shared_cpu1 = MAKE_STATUS(status_group_clk, 9) , status_clk_fixed = MAKE_STATUS(status_group_clk, 10)
}
 Error codes for clock driver. More...
 

Functions

uint32_t clock_get_frequency (clock_name_t clock_name)
 Get specified IP frequency. More...
 
uint32_t get_frequency_for_source (clock_source_t source)
 Get Clock frequency for selected clock source. More...
 
clk_src_t clock_get_source (clock_name_t clock_name)
 Get the IP clock source. More...
 
uint32_t clock_get_divider (clock_name_t clock_name)
 Get the IP clock divider Note:This API return the direct clock divider. More...
 
hpm_stat_t clock_set_adc_source (clock_name_t clock_name, clk_src_t src)
 Set ADC clock source. More...
 
hpm_stat_t clock_set_i2s_source (clock_name_t clock_name, clk_src_t src)
 Set I2S clock source. More...
 
hpm_stat_t clock_set_wdg_source (clock_name_t clock_name, clk_src_t src)
 Set the WDG clock source. More...
 
hpm_stat_t clock_set_source_divider (clock_name_t clock_name, clk_src_t src, uint32_t div)
 Set the IP clock source and divider. More...
 
hpm_stat_t clock_wait_source_stable (clock_name_t clock_name)
 Wait until the clock source for specified IP clock is stable. More...
 
void clock_enable (clock_name_t clock_name)
 Enable IP clock. More...
 
void clock_disable (clock_name_t clock_name)
 Disable IP clock. More...
 
void clock_add_to_group (clock_name_t clock_name, uint32_t group)
 Add IP to specified group. More...
 
void clock_remove_from_group (clock_name_t clock_name, uint32_t group)
 Remove IP from specified group. More...
 
bool clock_check_in_group (clock_name_t clock_name, uint32_t group)
 Check IP in specified group. More...
 
void clock_connect_group_to_cpu (uint32_t group, uint32_t cpu)
 Disconnect the clock group from specified CPU. More...
 
void clock_disconnect_group_from_cpu (uint32_t group, uint32_t cpu)
 Disconnect the clock group from specified CPU. More...
 
uint32_t clock_get_core_clock_ticks_per_us (void)
 Get core clock ticks per microsecond. More...
 
uint32_t clock_get_core_clock_ticks_per_ms (void)
 Get core clock ticks per millisecond. More...
 
void clock_cpu_delay_us (uint32_t us)
 Delay specified microseconds. More...
 
void clock_cpu_delay_ms (uint32_t ms)
 Delay specified milliseconds. More...
 
void clock_update_core_clock (void)
 Update the Core clock frequency. More...
 

Variables

uint32_t hpm_core_clock
 HPM Core clock variable. More...