CLOCK driver APIs. More...
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... | |
CLOCK driver APIs.
| #define CLK_SRC_GROUP_ADC (1U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_AHB (5U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_AXI0 (6U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_AXI1 (7U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_AXI2 (8U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_COMMON (0U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Clock source group definitions.
| #define CLK_SRC_GROUP_CPU0 (9U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_CPU1 (10U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_I2S (2U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_INVALID (15U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_PMIC (4U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_PWDG (12U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_SRC (11U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLK_SRC_GROUP_WDG (3U) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define CLOCK_DIV_INVALID (~0UL) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define GET_CLK_NODE_FROM_NAME | ( | name | ) | ((uint32_t)(name)&0xFFUL) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define GET_CLK_RESOURCE_FROM_NAME | ( | name | ) | ((uint32_t)(name) >> 16) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define GET_CLK_SRC_GROUP | ( | src | ) | (((uint8_t)(src) >> 4) & 0x0FU) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define GET_CLK_SRC_GROUP_FROM_NAME | ( | name | ) | (((uint32_t)(name) >> 8) & 0xFFUL) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define GET_CLK_SRC_INDEX | ( | src | ) | ((uint8_t)(src)&0x0FU) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define GET_CLOCK_SOURCE_FROM_CLK_SRC | ( | clk_src | ) | (clock_source_t)((uint32_t)(clk_src) & 0xFU) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define MAKE_CLK_SRC | ( | src_grp, | |
| index | |||
| ) | (((uint8_t)(src_grp) << 4) | (index)) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define MAKE_CLOCK_NAME | ( | resource, | |
| src_type, | |||
| node | |||
| ) | (((uint32_t)(resource) << 16) | ((uint32_t)(src_type) << 8) | ((uint32_t)node)) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| #define RESOURCE_INVALID (0xFFFFU) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
| typedef enum _clock_sources clk_src_t |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Clock source definitions.
| typedef enum _clock_name clock_name_t |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Peripheral Clock Type Description.
| anonymous enum |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Error codes for clock driver.
| void clock_add_to_group | ( | clock_name_t | clock_name, |
| uint32_t | group | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Add IP to specified group.
| [in] | clock_name | IP clock name |
| [in] | group | resource group index, valid value: 0/1/2/3 |
| bool clock_check_in_group | ( | clock_name_t | clock_name, |
| uint32_t | group | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Check IP in specified group.
| [in] | clock_name | IP clock name |
| [in] | group | resource group index, valid value: 0/1/2/3 |
| void clock_connect_group_to_cpu | ( | uint32_t | group, |
| uint32_t | cpu | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Disconnect the clock group from specified CPU.
| [in] | group | clock group index, value value is 0/1/2/3 |
| [in] | cpu | CPU index, valid value is 0/1 |
| void clock_cpu_delay_ms | ( | uint32_t | ms | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Delay specified milliseconds.
| [in] | ms | expected delay interval in milliseconds |
| void clock_cpu_delay_us | ( | uint32_t | us | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Delay specified microseconds.
| [in] | us | expected delay interval in microseconds |
| void clock_disable | ( | clock_name_t | clock_name | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Disable IP clock.
| [in] | clock_name | IP clock name |
| void clock_disconnect_group_from_cpu | ( | uint32_t | group, |
| uint32_t | cpu | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Disconnect the clock group from specified CPU.
| [in] | group | clock group index, value value is 0/1/2/3 |
| [in] | cpu | CPU index, valid value is 0/1 |
| void clock_enable | ( | clock_name_t | clock_name | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Enable IP clock.
| [in] | clock_name | IP clock name |
| uint32_t clock_get_core_clock_ticks_per_ms | ( | void | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Get core clock ticks per millisecond.
| uint32_t clock_get_core_clock_ticks_per_us | ( | void | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Get core clock ticks per microsecond.
| uint32_t clock_get_divider | ( | clock_name_t | clock_name | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Get the IP clock divider Note:This API return the direct clock divider.
| [in] | clock_name | clock name |
| uint32_t clock_get_frequency | ( | clock_name_t | clock_name | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Get specified IP frequency.
| [in] | clock_name | IP clock name |
| clk_src_t clock_get_source | ( | clock_name_t | clock_name | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Get the IP clock source.
| [in] | clock_name | IP clock name |
Get the IP clock source.
| [in] | clock_name | clock name |
| void clock_remove_from_group | ( | clock_name_t | clock_name, |
| uint32_t | group | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Remove IP from specified group.
| [in] | clock_name | IP clock name |
| [in] | group | resource group index, valid value: 0/1/2/3 |
| hpm_stat_t clock_set_adc_source | ( | clock_name_t | clock_name, |
| clk_src_t | src | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Set ADC clock source.
| [in] | clock_name | ADC clock name |
| [in] | src | ADC clock source |
| status_success | Setting ADC clock source is successful |
| status_clk_invalid | Invalid ADC clock |
| status_clk_src_invalid | Invalid ADC clock source |
| [in] | clock_name | ADC clock name |
| [in] | src | ADC clock source |
| hpm_stat_t clock_set_i2s_source | ( | clock_name_t | clock_name, |
| clk_src_t | src | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Set I2S clock source.
| [in] | clock_name | I2S clock name |
| [in] | src | I2S clock source |
| status_success | Setting I2S clock source is successful |
| status_clk_invalid | Invalid I2S clock |
| status_clk_src_invalid | Invalid I2S clock source |
| [in] | clock_name | I2S clock name |
| [in] | src | I2S clock source |
| hpm_stat_t clock_set_source_divider | ( | clock_name_t | clock_name, |
| clk_src_t | src, | ||
| uint32_t | div | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Set the IP clock source and divider.
| [in] | clock_name | clock name |
| [in] | src | clock source |
| [in] | div | clock divider, valid range (1 - 256) |
| status_success | Setting Clock source and divider is successful. |
| status_clk_set_by_other_api | The clock should be set by other API |
| status_clk_src_invalid | clock source is invalid. |
| status_clk_fixed | clock source and divider is a fixed value |
| status_clk_shared_ahb | Clock is shared with the AHB clock |
| status_clk_shared_axi0 | Clock is shared with the AXI0 clock |
| status_clk_shared_axi1 | CLock is shared with the AXI1 clock |
| status_clk_shared_axi2 | Clock is shared with the AXI2 clock |
| status_clk_shared_cpu0 | Clock is shared with the CPU0 clock |
| status_clk_shared_cpu1 | Clock is shared with the CPU1 clock |
| [in] | clock_name | clock name |
| [in] | src | clock source |
| [in] | div | clock divider, valid range (1 - 256) |
| hpm_stat_t clock_set_wdg_source | ( | clock_name_t | clock_name, |
| clk_src_t | src | ||
| ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Set the WDG clock source.
| [in] | clock_name | WDG clock name |
| [in] | src | WDG clock source |
| status_success | Setting WDG clock source is successful |
| status_invalid_argument | Invalid WDG or invalid clock source |
| void clock_update_core_clock | ( | void | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Update the Core clock frequency.
| hpm_stat_t clock_wait_source_stable | ( | clock_name_t | clock_name | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Wait until the clock source for specified IP clock is stable.
| [in] | clock_name | Clock name for specified IP module |
| status_success | The clock source is stable |
| status_invalid_argument | Invalid clock name is provided |
| status_timeout | Timeout occurred |
| uint32_t get_frequency_for_source | ( | clock_source_t | source | ) |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
Get Clock frequency for selected clock source.
| [in] | source | clock source |
|
extern |
#include <soc/HPM6700/HPM6750/hpm_clock_drv.h>
HPM Core clock variable.