From d8c2c2cbb8b4e40ff257eb55c4dbcef9ea7796ee Mon Sep 17 00:00:00 2001 From: Dino Li Date: Thu, 24 Feb 2022 16:50:17 +0800 Subject: [PATCH] it8xxx2: timer: to unified method of enabling event timer. This enable timer and also reset it. fixes #42851 fixes #42953 Signed-off-by: Dino Li --- drivers/timer/ite_it8xxx2_timer.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/timer/ite_it8xxx2_timer.c b/drivers/timer/ite_it8xxx2_timer.c index 2fee9c11168..64091ba872c 100644 --- a/drivers/timer/ite_it8xxx2_timer.c +++ b/drivers/timer/ite_it8xxx2_timer.c @@ -122,6 +122,13 @@ void timer_5ms_one_shot(void) } #endif /* CONFIG_SOC_IT8XXX2_PLL_FLASH_48M */ +static void evt_timer_enable(void) +{ + /* Enable and re-start event timer */ + IT8XXX2_EXT_CTRLX(EVENT_TIMER) |= (IT8XXX2_EXT_ETXEN | + IT8XXX2_EXT_ETXRST); +} + static void evt_timer_isr(const void *unused) { ARG_UNUSED(unused); @@ -142,10 +149,8 @@ static void evt_timer_isr(const void *unused) sys_clock_announce(dticks); } else { - /* Enable and re-start event timer */ - IT8XXX2_EXT_CTRLX(EVENT_TIMER) |= (IT8XXX2_EXT_ETXEN | - IT8XXX2_EXT_ETXRST); - + /* enable event timer */ + evt_timer_enable(); /* Informs kernel that one system tick has elapsed */ sys_clock_announce(1); } @@ -215,11 +220,8 @@ void sys_clock_set_timeout(int32_t ticks, bool idle) /* W/C event timer interrupt status */ ite_intc_isr_clear(EVENT_TIMER_IRQ); - /* - * When timer enable bit is from 0->1, timer will reload counts and - * start countdown. - */ - IT8XXX2_EXT_CTRLX(EVENT_TIMER) |= IT8XXX2_EXT_ETXEN; + /* enable event timer */ + evt_timer_enable(); k_spin_unlock(&lock, key);