diff --git a/drivers/rtc/Kconfig.qmsi b/drivers/rtc/Kconfig.qmsi index 3be31fdd756..63a7199fbf2 100644 --- a/drivers/rtc/Kconfig.qmsi +++ b/drivers/rtc/Kconfig.qmsi @@ -18,4 +18,12 @@ config RTC_QMSI_API_REENTRANCY default n help Enable support for RTC shim driver API reentrancy. + +config RTC_PRESCALER + int + default 1 + prompt "Prescaler size" + help + RTC prescaler used to determine ticks per second + endif diff --git a/drivers/rtc/rtc_qmsi.c b/drivers/rtc/rtc_qmsi.c index 5ee44659eb8..27f56845acd 100644 --- a/drivers/rtc/rtc_qmsi.c +++ b/drivers/rtc/rtc_qmsi.c @@ -93,7 +93,7 @@ static int rtc_qmsi_set_config(struct device *dev, struct rtc_config *cfg) * values defined by clk_rtc_div and by QMSI's clk_rtc_div_t match for * both D2000 and SE. */ - qm_cfg.prescaler = (clk_rtc_div_t)RTC_DIVIDER; + qm_cfg.prescaler = (clk_rtc_div_t)CONFIG_RTC_PRESCALER; if (IS_ENABLED(CONFIG_RTC_QMSI_API_REENTRANCY)) { k_sem_take(RP_GET(dev), K_FOREVER); diff --git a/include/rtc.h b/include/rtc.h index 0d1077a404b..ee1a4b5daa6 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -14,29 +14,8 @@ extern "C" { #endif -enum clk_rtc_div { - RTC_CLK_DIV_1, - RTC_CLK_DIV_2, - RTC_CLK_DIV_4, - RTC_CLK_DIV_8, - RTC_CLK_DIV_16, - RTC_CLK_DIV_32, - RTC_CLK_DIV_64, - RTC_CLK_DIV_128, - RTC_CLK_DIV_256, - RTC_CLK_DIV_512, - RTC_CLK_DIV_1024, - RTC_CLK_DIV_2048, - RTC_CLK_DIV_4096, - RTC_CLK_DIV_8192, - RTC_CLK_DIV_16384, - RTC_CLK_DIV_32768 -}; - -#define RTC_DIVIDER RTC_CLK_DIV_1 - /** Number of RTC ticks in a second */ -#define RTC_ALARM_SECOND (32768 / (1UL << RTC_DIVIDER)) +#define RTC_ALARM_SECOND (32768 / CONFIG_RTC_PRESCALER) /** Number of RTC ticks in a minute */ #define RTC_ALARM_MINUTE (RTC_ALARM_SECOND * 60) diff --git a/tests/drivers/rtc/rtc_basic_api/src/test_rtc_calendar.c b/tests/drivers/rtc/rtc_basic_api/src/test_rtc_calendar.c index 9822396606c..7106f4d2e62 100644 --- a/tests/drivers/rtc/rtc_basic_api/src/test_rtc_calendar.c +++ b/tests/drivers/rtc/rtc_basic_api/src/test_rtc_calendar.c @@ -42,7 +42,7 @@ static int test_task(void) k_sleep(2000); val_2 = rtc_read(rtc); - TC_PRINT("val_1: %u, val_2: %u, delta: %lu:%lu\n", + TC_PRINT("val_1: %u, val_2: %u, delta: %u:%u\n", val_1, val_2, (val_2 - val_1) / RTC_ALARM_SECOND, (val_2 - val_1) % RTC_ALARM_SECOND);