HPM SDK
HPMicro Software Development Kit
hpm_sysctl_drv.c File Reference
#include "hpm_soc_feature.h"
#include "hpm_sysctl_drv.h"
#include "hpm_clock_drv.h"

Macros

#define SYSCTL_RESOURCE_GROUP0   0
 
#define SYSCTL_RESOURCE_GROUP1   1
 
#define SYSCTL_CPU_RELEASE_KEY(cpu)   (0xC0BEF1A9UL | (((cpu) & 1) << 24))
 

Functions

static bool sysctl_valid_cpu_index (uint8_t cpu)
 
hpm_stat_t sysctl_get_cpu_gpr (SYSCTL_Type *ptr, uint8_t cpu, uint32_t *data, uint32_t size)
 
hpm_stat_t sysctl_cpu0_get_gpr (SYSCTL_Type *ptr, uint8_t start, uint8_t count, uint32_t *data)
 Get data saved from GPU0 GPR starting from given index. More...
 
hpm_stat_t sysctl_cpu1_get_gpr (SYSCTL_Type *ptr, uint8_t start, uint8_t count, uint32_t *data)
 
hpm_stat_t sysctl_cpu0_set_gpr (SYSCTL_Type *ptr, uint8_t start, uint8_t count, uint32_t *data, bool lock)
 Save data to GPU0 GPR starting from given index. More...
 
hpm_stat_t sysctl_cpu1_set_gpr (SYSCTL_Type *ptr, uint8_t start, uint8_t count, uint32_t *data, bool lock)
 Set data to CPU1 GPR starting from given index. More...
 
void sysctl_monitor_get_default_config (SYSCTL_Type *ptr, monitor_config_t *config)
 Get default monitor config. More...
 
void sysctl_monitor_init (SYSCTL_Type *ptr, uint8_t monitor_index, monitor_config_t *config)
 Initialize Monitor. More...
 
uint32_t sysctl_monitor_measure_frequency (SYSCTL_Type *ptr, uint8_t monitor_index, monitor_target_t target, bool enable_output)
 Measure specific target frequency. More...
 
hpm_stat_t sysctl_set_cpu_entry (SYSCTL_Type *ptr, uint8_t cpu, uint32_t entry)
 Set entry point on CPU boot or wakeup. More...
 
hpm_stat_t sysctl_set_cpu1_entry (SYSCTL_Type *ptr, uint32_t entry)
 Set entry point on either CPU1 boot or wakeup. More...
 
hpm_stat_t sysctl_set_cpu0_wakeup_entry (SYSCTL_Type *ptr, uint32_t entry)
 Set entry point on CPU0 wakeup. More...
 
hpm_stat_t sysctl_enable_group_resource (SYSCTL_Type *ptr, uint8_t group, sysctl_resource_t resource, bool enable)
 Enable group resource. More...
 
bool sysctl_check_group_resource_enable (SYSCTL_Type *ptr, uint8_t group, sysctl_resource_t resource)
 Check group resource enable status. More...
 
uint32_t sysctl_get_group_resource_value (SYSCTL_Type *ptr, uint8_t group, uint8_t index)
 Get group resource value. More...
 
hpm_stat_t sysctl_add_resource_to_cpu0 (SYSCTL_Type *ptr, sysctl_resource_t resource)
 Add resource to CPU0. More...
 
hpm_stat_t sysctl_remove_resource_from_cpu0 (SYSCTL_Type *ptr, sysctl_resource_t resource)
 Remove resource from CPU0. More...
 
hpm_stat_t sysctl_add_resource_to_cpu1 (SYSCTL_Type *ptr, sysctl_resource_t resource)
 Add resource to CPU1. More...
 
hpm_stat_t sysctl_remove_resource_from_cpu1 (SYSCTL_Type *ptr, sysctl_resource_t resource)
 Remove resource from CPU1. More...
 
hpm_stat_t sysctl_update_divider (SYSCTL_Type *ptr, clock_node_t node, uint32_t divide_by)
 
hpm_stat_t sysctl_config_clock (SYSCTL_Type *ptr, clock_node_t node, clock_source_t source, uint32_t divide_by)
 Config lock. More...
 
hpm_stat_t sysctl_config_cpu0_domain_clock (SYSCTL_Type *ptr, clock_source_t source, uint32_t cpu_div, uint32_t axi_sub_div, uint32_t ahb_sub_div)
 Configure CPU domain clock. More...
 
hpm_stat_t sysctl_set_adc_clock_mux (SYSCTL_Type *ptr, clock_node_t node, clock_source_adc_t source)
 Set ADC clock mux. More...
 
hpm_stat_t sysctl_set_dac_clock_mux (SYSCTL_Type *ptr, clock_node_t node, clock_source_dac_t source)
 Set DAC clock mux. More...
 

Macro Definition Documentation

◆ SYSCTL_CPU_RELEASE_KEY

#define SYSCTL_CPU_RELEASE_KEY (   cpu)    (0xC0BEF1A9UL | (((cpu) & 1) << 24))

◆ SYSCTL_RESOURCE_GROUP0

#define SYSCTL_RESOURCE_GROUP0   0

◆ SYSCTL_RESOURCE_GROUP1

#define SYSCTL_RESOURCE_GROUP1   1

Function Documentation

◆ sysctl_cpu1_get_gpr()

hpm_stat_t sysctl_cpu1_get_gpr ( SYSCTL_Type ptr,
uint8_t  start,
uint8_t  count,
uint32_t *  data 
)

◆ sysctl_get_cpu_gpr()

hpm_stat_t sysctl_get_cpu_gpr ( SYSCTL_Type ptr,
uint8_t  cpu,
uint32_t *  data,
uint32_t  size 
)

◆ sysctl_update_divider()

hpm_stat_t sysctl_update_divider ( SYSCTL_Type ptr,
clock_node_t  node,
uint32_t  divide_by 
)

◆ sysctl_valid_cpu_index()

static bool sysctl_valid_cpu_index ( uint8_t  cpu)
inlinestatic