zephyr/drivers/timer
Wayne Ren 0156511e71 drivers: improve the arcv2_timer driver to update cycles correctly
referring the ARM's Systick driver, we did the following improvements:

* use 31 bits of 32-bit counter to avoid the rare but possible
  overflow of elapsed(). If 32 bits val are used, elpased() may
  return a wrong value. then wrong HW cycles.
* two ways to update the correct cycles
  - through systick timer irq
  - when systick timer irq cann't be handled because of irq
    locked/disabled, call z_timer_cycle_get_32->elapsed to update
    the correct cylces. no more than one counter-wrap is allowed.
* if elapsed() is not called too long (more than one counter-wrap) from
  systick tiemr irq or from z_timer_cycle_get_32. The lost of HW cycles
  is unavoidable.

* some detailed discussion can be found in #24332

Signed-off-by: Wayne Ren <wei.ren@synopsys.com>
2020-05-07 14:49:31 +02:00
..
altera_avalon_timer_hal.c kernel/sys_clock.h: Deprecate and convert uses of old conversions 2019-11-08 11:08:58 +01:00
apic_timer.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
arcv2_timer0.c drivers: improve the arcv2_timer driver to update cycles correctly 2020-05-07 14:49:31 +02:00
arm_arch_timer.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
cavs_timer.c intc: intc_cavs: Replace DT_CAVS_ICTL_BASE_ADDR with new macros 2020-04-22 04:59:22 -05:00
cc13x2_cc26x2_rtc_timer.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
CMakeLists.txt timer: add CAVS DSP wall clock timer for Intel SoC 2020-03-25 19:07:28 -04:00
cortex_m_systick.c arch: arm: aarch32: Fix incorrect z_arm_{int,exc}_exit usage 2020-04-20 18:22:46 +02:00
hpet.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
Kconfig timer: add CAVS DSP wall clock timer for Intel SoC 2020-03-25 19:07:28 -04:00
Kconfig.stm32_lptim kconfig: Fix up newly-introduced copy-pasted headers 2019-11-19 15:25:08 -05:00
legacy_api.h kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
litex_timer.c drivers: litex: Convert litex drivers to new DT_INST macros 2020-03-30 12:49:43 -05:00
loapic_timer.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
mchp_xec_rtos_timer.c timer: mchp_xec_rtos: enable benchmarking during ISR 2020-03-31 19:52:21 -04:00
native_posix_timer.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
nrf_rtc_timer.c drivers: timer: nrf_rtc: Refactor alarm setting 2020-04-22 17:45:07 +02:00
riscv_machine_timer.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
rv32m1_lptmr_timer.c drivers: timer: rv32m1_lptmr: Convert driver to new DT_INST macros 2020-04-10 14:38:04 -05:00
sam0_rtc_timer.c drivers: timer: sam0_rtc_timer: Fix incorrect DT_INST conversion 2020-04-16 14:09:23 +02:00
stm32_lptim_timer.c drivers/timer: stm32_lptim: Move to new DT api 2020-04-24 12:09:17 -05:00
sys_clock_init.c include: move system timer headers to include/drivers/timer/ 2019-06-25 15:27:00 -04:00
xlnx_psttc_timer_priv.h drivers: timer: xlnx_psttc_timer: Implement tickless support 2020-03-21 14:20:17 -04:00
xlnx_psttc_timer.c drivers: timer: xlnx_psttc: Convert driver to DT_INST macro 2020-04-17 16:00:58 -05:00
xtensa_sys_timer.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00