The original driver has two defects: 1. When setting the next timeout value the original implementation simply sets a delta value equal to ticks * CYC_PER_TICK. This operation is reckless and may incorrectly "reset" the fractional tick, causing clock skew. 2. The original implementation doesn't handle the counter overflow situation. When the counter overflows from 0xffffffff to 0x0, the uptimer counter becomes incorrect. We have fixed above issue by rewriting most of the functions in this driver and verified it by running all tests under tests/kernel/timer folder. Signed-off-by: Zhengwei Wang <zwang@ambiq.com> |
||
|---|---|---|
| .. | ||
| altera_avalon_timer_hal.c | ||
| ambiq_stimer.c | ||
| apic_timer.c | ||
| apic_tsc.c | ||
| arcv2_timer0.c | ||
| arm_arch_timer.c | ||
| cc13xx_cc26xx_rtc_timer.c | ||
| CMakeLists.txt | ||
| cortex_m_systick.c | ||
| esp32_sys_timer.c | ||
| gecko_burtc_timer.c | ||
| hpet.c | ||
| intel_adsp_timer.c | ||
| ite_it8xxx2_timer.c | ||
| Kconfig | ||
| Kconfig.altera_avalon | ||
| Kconfig.ambiq | ||
| Kconfig.arcv2 | ||
| Kconfig.arm_arch | ||
| Kconfig.cavs | ||
| Kconfig.cc13xx_cc26xx_rtc | ||
| Kconfig.cortex_m_systick | ||
| Kconfig.esp32 | ||
| Kconfig.gecko | ||
| Kconfig.ite_it8xxx2 | ||
| Kconfig.leon_gptimer | ||
| Kconfig.litex | ||
| Kconfig.mchp_xec_rtos | ||
| Kconfig.mcux_gpt | ||
| Kconfig.mcux_lptmr | ||
| Kconfig.mcux_os | ||
| Kconfig.mips_cp0 | ||
| Kconfig.mtk_adsp | ||
| Kconfig.native_posix | ||
| Kconfig.npcx_itim | ||
| Kconfig.nrf_grtc | ||
| Kconfig.nrf_rtc | ||
| Kconfig.nrf_xrtc | ||
| Kconfig.rcar_cmt | ||
| Kconfig.riscv_machine | ||
| Kconfig.rv32m1_lptmr | ||
| Kconfig.sam0_rtc | ||
| Kconfig.smartbond | ||
| Kconfig.stm32_lptim | ||
| Kconfig.x86 | ||
| Kconfig.xlnx_psttc | ||
| Kconfig.xtensa | ||
| leon_gptimer.c | ||
| litex_timer.c | ||
| mchp_xec_rtos_timer.c | ||
| mcux_gpt_timer.c | ||
| mcux_lptmr_timer.c | ||
| mcux_os_timer.c | ||
| mips_cp0_timer.c | ||
| mtk_adsp_timer.c | ||
| native_posix_timer.c | ||
| npcx_itim_timer.c | ||
| nrf_grtc_timer.c | ||
| nrf_rtc_timer.c | ||
| rcar_cmt_timer.c | ||
| riscv_machine_timer.c | ||
| rv32m1_lptmr_timer.c | ||
| sam0_rtc_timer.c | ||
| smartbond_timer.c | ||
| stm32_lptim_timer.c | ||
| sys_clock_init.c | ||
| xlnx_psttc_timer_priv.h | ||
| xlnx_psttc_timer.c | ||
| xtensa_sys_timer.c | ||