drivers: timer: silabs: Add sleeptimer timer driver

Add OS timer implementation making use of the Sleeptimer HAL.
Sleeptimer integrates tightly with the Silabs Power Manager HAL,
and must be used as the OS timer to achieve optimal power consumption
when using the radio.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
This commit is contained in:
Aksel Skauge Mellbye 2024-10-21 12:27:03 +02:00 committed by Carles Cufí
commit da6ddc92cd
7 changed files with 202 additions and 8 deletions

View file

@ -139,6 +139,19 @@ if(NOT SILABS_DEVICE_FAMILY_NUMBER EQUAL "21")
)
endif()
# Sleeptimer
if(CONFIG_SOC_SILABS_SLEEPTIMER)
zephyr_library_sources(
${PERIPHERAL_DIR}/src/sl_hal_sysrtc.c
${SERVICE_DIR}/sleeptimer/src/sl_sleeptimer_hal_rtcc.c
${SERVICE_DIR}/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c
${SERVICE_DIR}/sleeptimer/src/sl_sleeptimer.c
)
zephyr_compile_definitions(
SL_CATALOG_SLEEPTIMER_PRESENT
)
endif()
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_IADC ${EMLIB_DIR}/src/em_iadc.c)
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_BURTC ${EMLIB_DIR}/src/em_burtc.c)
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_CMU ${EMLIB_DIR}/src/em_cmu.c)
@ -172,12 +185,6 @@ zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_PRS ${EMLIB_DIR}/src/em_p
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_RMU ${EMLIB_DIR}/src/em_rmu.c)
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_RTC ${EMLIB_DIR}/src/em_rtc.c)
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_RTCC ${EMLIB_DIR}/src/em_rtcc.c)
zephyr_library_sources_ifdef(CONFIG_COUNTER_GECKO_STIMER
${PERIPHERAL_DIR}/src/sl_hal_sysrtc.c
${SERVICE_DIR}/sleeptimer/src/sl_sleeptimer_hal_rtcc.c
${SERVICE_DIR}/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c
${SERVICE_DIR}/sleeptimer/src/sl_sleeptimer.c
)
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_EUSART ${EMLIB_DIR}/src/em_eusart.c)
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_TIMER ${EMLIB_DIR}/src/em_timer.c)
zephyr_library_sources_ifdef(CONFIG_SOC_GECKO_USART ${EMLIB_DIR}/src/em_usart.c)