From 42b1f85ae3c1640ef193c2dad1f80b11ebbfcfae Mon Sep 17 00:00:00 2001 From: GuEe-GUI <2991707448@qq.com> Date: Tue, 2 Dec 2025 14:01:50 +0800 Subject: [PATCH 1/2] [DM][HWTIMER] Make Kconfig import for DM Signed-off-by: GuEe-GUI <2991707448@qq.com> --- components/drivers/hwtimer/Kconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/drivers/hwtimer/Kconfig b/components/drivers/hwtimer/Kconfig index a1755ba0e6e..0fd1974b899 100644 --- a/components/drivers/hwtimer/Kconfig +++ b/components/drivers/hwtimer/Kconfig @@ -8,3 +8,7 @@ config RT_HWTIMER_ARM_ARCH depends on RT_USING_HWTIMER depends on ARCH_ARM_CORTEX_A || ARCH_ARMV8 default n + +if RT_USING_DM && RT_USING_HWTIMER + osource "$(SOC_DM_HWTIMER_DIR)/Kconfig" +endif From 441d912a9e0401947dc91169e082f0826df27e11 Mon Sep 17 00:00:00 2001 From: GuEe-GUI <2991707448@qq.com> Date: Tue, 2 Dec 2025 14:02:39 +0800 Subject: [PATCH 2/2] [DM][HWTIMER] Enable arm arch timer more API for cpuidle in the future Signed-off-by: GuEe-GUI <2991707448@qq.com> --- components/drivers/hwtimer/hwtimer-arm_arch.c | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/components/drivers/hwtimer/hwtimer-arm_arch.c b/components/drivers/hwtimer/hwtimer-arm_arch.c index 3cfb4318d8c..5d6b0eafcfa 100644 --- a/components/drivers/hwtimer/hwtimer-arm_arch.c +++ b/components/drivers/hwtimer/hwtimer-arm_arch.c @@ -201,7 +201,7 @@ static timer_value_handle value_handle[] = os_vtimer_value, }; -static rt_err_t arm_arch_timer_local_enable(void) +rt_err_t arm_arch_timer_local_enable(void) { rt_err_t ret = RT_EOK; @@ -222,8 +222,7 @@ static rt_err_t arm_arch_timer_local_enable(void) return ret; } -rt_used -static rt_err_t arm_arch_timer_local_disable(void) +rt_err_t arm_arch_timer_local_disable(void) { rt_err_t ret = RT_EOK; @@ -240,8 +239,7 @@ static rt_err_t arm_arch_timer_local_disable(void) return ret; } -rt_used -static rt_err_t arm_arch_timer_set_frequency(rt_uint64_t frq) +rt_err_t arm_arch_timer_set_frequency(rt_uint64_t frq) { rt_err_t ret = RT_EOK; @@ -256,8 +254,7 @@ static rt_err_t arm_arch_timer_set_frequency(rt_uint64_t frq) return ret; } -rt_used -static rt_uint64_t arm_arch_timer_get_frequency(void) +rt_uint64_t arm_arch_timer_get_frequency(void) { rt_uint64_t frq; @@ -268,8 +265,7 @@ static rt_uint64_t arm_arch_timer_get_frequency(void) return frq; } -rt_used -static rt_err_t arm_arch_timer_set_value(rt_uint64_t val) +rt_err_t arm_arch_timer_set_value(rt_uint64_t val) { rt_err_t ret = RT_EOK; @@ -285,8 +281,7 @@ static rt_err_t arm_arch_timer_set_value(rt_uint64_t val) return ret; } -rt_used -static rt_uint64_t arm_arch_timer_get_value(void) +rt_uint64_t arm_arch_timer_get_value(void) { rt_uint64_t val = 0; @@ -298,6 +293,15 @@ static rt_uint64_t arm_arch_timer_get_value(void) return val; } +rt_uint64_t arm_arch_timer_get_count(void) +{ + rt_uint64_t cntpct; + + rt_hw_sysreg_read(CNTPCT, cntpct); + + return cntpct; +} + static void arm_arch_timer_isr(int vector, void *param) { arm_arch_timer_set_value(timer_step);