zephyr/drivers/timer
Andrzej Kuros e03d5d4c6d nrf53: RTC pretick allows user channels and require just one CC
The nrf53 pretick can be used with non-zero
`NRF_RTC_TIMER_USER_CHAN_COUNT` Kconfig option.

The nrf53 pretick requires just one RTC1 CC channel.

The nrf53 pretick handles also RTC1 and RTC0 both CCs and OVERFLOW
events by examination of events scheduled on them. The pretick is set
based on number of ticks to the closest event scheduled that can trigger
an interrupt.

Because the operation in `z_arm_on_enter_cpu_idle` hook would
take too much time with interrupts disabled, the
`z_arm_on_enter_cpu_idle_prepare` hook enabled by Kconfig option
`ARM_ON_ENTER_CPU_IDLE_PREPARE_HOOK` is used. It performs RTC0 and RTC1
examination, and sets pretick without interrupts being blocked.

The LDREX/STREX are leveraged to detect if exception took place
between start of `z_arm_on_enter_cpu_idle_prepare` and
`z_arm_on_enter_cpu_idle`. If exception has not been taken, the pretick
calculation can be trusted because source data could not changed and
too much time could not pass. Otherwise the sleep attempt is disallowed,
the idle will loop again and try later.

Prompt for `SOC_NRF53_RTC_PRETICK` Kconfig option allows to control
this option by an user and turn the feature off if necessary.

Signed-off-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2023-09-30 18:48:19 +02:00
..
altera_avalon_timer_hal.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
ambiq_stimer.c drivers: timer: Add driver for Ambiq system timer (STIMER) 2023-08-04 10:48:58 +02:00
apic_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
apic_tsc.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
arcv2_timer0.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
arm_arch_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
cc13xx_cc26xx_rtc_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
CMakeLists.txt drivers: timer: Add driver for Ambiq system timer (STIMER) 2023-08-04 10:48:58 +02:00
cortex_m_systick.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
esp32c3_sys_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
gecko_burtc_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
hpet.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
intel_adsp_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
ite_it8xxx2_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
Kconfig drivers: timer: Add driver for Ambiq system timer (STIMER) 2023-08-04 10:48:58 +02:00
Kconfig.altera_avalon drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.ambiq drivers: timer: Add driver for Ambiq system timer (STIMER) 2023-08-04 10:48:58 +02:00
Kconfig.apic timer: APIC timer count is a lock free accessor 2022-10-18 14:14:12 +02:00
Kconfig.arcv2 drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.arm_arch drivers: timer: split Kconfig 2021-12-04 07:34:53 -05:00
Kconfig.cavs drivers: timer: intel_adsp: Update driver to use dts Kconfig symbol 2022-11-01 09:03:17 +00:00
Kconfig.cc13xx_cc26xx_rtc dts: ti: cc13xx_cc26xx: devicetree sysclk alignment 2023-07-07 18:46:24 -04:00
Kconfig.cortex_m_systick drivers: systick: implement option for sys_clock_cycle_get_64() 2023-07-01 12:04:10 +02:00
Kconfig.esp32c3_sys soc: xtensa,riscv: esp32xx: refactor folder structure 2023-07-25 18:12:33 +02:00
Kconfig.gecko soc/arm/silabs_exx32: fix PM implementation - wake up using BURTC timer 2023-04-21 16:24:05 +02:00
Kconfig.hpet timer: Revert "timer: HPET is also a lock free readable timer" 2022-11-01 23:15:23 +09:00
Kconfig.ite_it8xxx2 drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.leon_gptimer drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.litex drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.mchp_xec_rtos drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.mcux_gpt soc: arm: nxp: switch imxrt boards to use systick timer unless CONFIG_PM=y 2022-12-16 09:31:48 +01:00
Kconfig.mcux_lptmr drivers: timer: mcux: lptmr: add dependency on CONFIG_PM 2023-01-31 22:10:28 -06:00
Kconfig.mcux_os drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.mips_cp0 timer: Add tickless support for the MIPS CP0 timer 2022-01-19 13:48:21 -05:00
Kconfig.native_posix drivers: timer: improve sys_timer_disable usage 2021-12-04 07:34:53 -05:00
Kconfig.npcx_itim drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.nrf_rtc drivers: timer: nrf_rtc_timer: Implement stop function 2023-04-11 12:02:47 +02:00
Kconfig.rcar_cmt drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.riscv_machine riscv_machine_timer: remove unused config option 2023-06-01 04:53:19 -04:00
Kconfig.rv32m1_lptmr drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.sam0_rtc drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.stm32_lptim drivers: timer: stm32_lptim: Change clock source config check sanction 2022-09-21 18:39:07 +00:00
Kconfig.xlnx_psttc drivers: timer: Update drivers to use devicetree Kconfig symbol 2022-09-09 09:58:48 +00:00
Kconfig.xtensa drivers/xtensa_sys_timer: Change default timer ID 2022-02-21 22:10:03 -05:00
leon_gptimer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
litex_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
mchp_xec_rtos_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
mcux_gpt_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
mcux_lptmr_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
mcux_os_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
mips_cp0_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
native_posix_timer.c include: always use <> for Zephyr includes 2023-09-14 13:49:58 +02:00
npcx_itim_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
nrf_rtc_timer.c nrf53: RTC pretick allows user channels and require just one CC 2023-09-30 18:48:19 +02:00
rcar_cmt_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
riscv_machine_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
rv32m1_lptmr_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
sam0_rtc_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
stm32_lptim_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
sys_clock_init.c drivers: migrate includes to <zephyr/...> 2022-05-06 19:58:21 +02:00
xlnx_psttc_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00
xlnx_psttc_timer_priv.h drivers: timer: xlnx_psttc_timer: Implement tickless support 2020-03-21 14:20:17 -04:00
xtensa_sys_timer.c drivers: timer: s/device.h/init.h 2023-08-29 11:29:18 +01:00