From e505f2476aa56f22626f61fdd6fa032f07983872 Mon Sep 17 00:00:00 2001 From: Ruibin Chang Date: Thu, 4 Nov 2021 18:02:40 +0800 Subject: [PATCH] ITE drivers/timer: update timer_init() definition Update timer_init() definition. Signed-off-by: Ruibin Chang --- drivers/timer/ite_it8xxx2_timer.c | 61 +++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/drivers/timer/ite_it8xxx2_timer.c b/drivers/timer/ite_it8xxx2_timer.c index 306a5fea534..1e070034edb 100644 --- a/drivers/timer/ite_it8xxx2_timer.c +++ b/drivers/timer/ite_it8xxx2_timer.c @@ -54,6 +54,26 @@ static struct k_spinlock lock; /* Last HW count that we called sys_clock_announce() */ static volatile uint32_t last_announced_hw_cnt; +enum ext_timer_raw_cnt { + EXT_NOT_RAW_CNT = 0, + EXT_RAW_CNT, +}; + +enum ext_timer_init { + EXT_NOT_FIRST_TIME_ENABLE = 0, + EXT_FIRST_TIME_ENABLE, +}; + +enum ext_timer_int { + EXT_WITHOUT_TIMER_INT = 0, + EXT_WITH_TIMER_INT, +}; + +enum ext_timer_start { + EXT_NOT_START_TIMER = 0, + EXT_START_TIMER, +}; + #ifdef CONFIG_SOC_IT8XXX2_PLL_FLASH_48M static void timer_5ms_one_shot_isr(const void *unused) { @@ -244,17 +264,17 @@ uint32_t sys_clock_cycle_get_32(void) static int timer_init(enum ext_timer_idx ext_timer, enum ext_clk_src_sel clock_source_sel, - uint32_t raw, + enum ext_timer_raw_cnt raw, uint32_t ms, - uint8_t first_time_enable, + enum ext_timer_init first_time_enable, uint32_t irq_num, uint32_t irq_flag, - uint8_t with_int, - uint8_t start) + enum ext_timer_int with_int, + enum ext_timer_start start) { uint32_t hw_cnt; - if (raw) { + if (raw == EXT_RAW_CNT) { hw_cnt = ms; } else { if (clock_source_sel == EXT_PSR_32P768K) @@ -276,7 +296,7 @@ static int timer_init(enum ext_timer_idx ext_timer, return -1; } - if (first_time_enable) { + if (first_time_enable == EXT_FIRST_TIME_ENABLE) { /* Enable and re-start external timer x */ IT8XXX2_EXT_CTRLX(ext_timer) |= (IT8XXX2_EXT_ETXEN | IT8XXX2_EXT_ETXRST); @@ -298,12 +318,12 @@ static int timer_init(enum ext_timer_idx ext_timer, /* Disable external timer x */ IT8XXX2_EXT_CTRLX(ext_timer) &= ~IT8XXX2_EXT_ETXEN; - if (start) + if (start == EXT_START_TIMER) /* Enable and re-start external timer x */ IT8XXX2_EXT_CTRLX(ext_timer) |= (IT8XXX2_EXT_ETXEN | IT8XXX2_EXT_ETXRST); - if (with_int) + if (with_int == EXT_WITH_TIMER_INT) irq_enable(irq_num); else irq_disable(irq_num); @@ -319,11 +339,12 @@ int sys_clock_driver_init(const struct device *dev) /* Enable 32-bit free run timer overflow interrupt */ IRQ_CONNECT(FREE_RUN_TIMER_IRQ, 0, free_run_timer_overflow_isr, NULL, - FREE_RUN_TIMER_FLAG); + FREE_RUN_TIMER_FLAG); /* Set 32-bit timer4 for free run*/ - ret = timer_init(FREE_RUN_TIMER, EXT_PSR_32P768K, TRUE, - FREE_RUN_TIMER_MAX_CNT, TRUE, FREE_RUN_TIMER_IRQ, - FREE_RUN_TIMER_FLAG, TRUE, TRUE); + ret = timer_init(FREE_RUN_TIMER, EXT_PSR_32P768K, EXT_RAW_CNT, + FREE_RUN_TIMER_MAX_CNT, EXT_FIRST_TIME_ENABLE, + FREE_RUN_TIMER_IRQ, FREE_RUN_TIMER_FLAG, + EXT_WITH_TIMER_INT, EXT_START_TIMER); if (ret < 0) { LOG_ERR("Init free run timer failed"); return ret; @@ -332,15 +353,17 @@ int sys_clock_driver_init(const struct device *dev) /* Set 24-bit timer3 for timeout event */ IRQ_CONNECT(EVENT_TIMER_IRQ, 0, evt_timer_isr, NULL, EVENT_TIMER_FLAG); if (IS_ENABLED(CONFIG_TICKLESS_KERNEL)) { - ret = timer_init(EVENT_TIMER, EXT_PSR_32P768K, TRUE, - EVENT_TIMER_MAX_CNT, TRUE, EVENT_TIMER_IRQ, - EVENT_TIMER_FLAG, TRUE, FALSE); + ret = timer_init(EVENT_TIMER, EXT_PSR_32P768K, EXT_RAW_CNT, + EVENT_TIMER_MAX_CNT, EXT_FIRST_TIME_ENABLE, + EVENT_TIMER_IRQ, EVENT_TIMER_FLAG, + EXT_WITH_TIMER_INT, EXT_NOT_START_TIMER); } else { /* Start a event timer in one system tick */ - ret = timer_init(EVENT_TIMER, EXT_PSR_32P768K, TRUE, - MAX((1 * HW_CNT_PER_SYS_TICK), 1), TRUE, - EVENT_TIMER_IRQ, EVENT_TIMER_FLAG, - TRUE, TRUE); + ret = timer_init(EVENT_TIMER, EXT_PSR_32P768K, EXT_RAW_CNT, + MAX((1 * HW_CNT_PER_SYS_TICK), 1), + EXT_FIRST_TIME_ENABLE, EVENT_TIMER_IRQ, + EVENT_TIMER_FLAG, EXT_WITH_TIMER_INT, + EXT_START_TIMER); } if (ret < 0) { LOG_ERR("Init event timer failed");