All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] timer: mtk_timer: initialize the timer before use
@ 2021-01-12  5:44 Weijie Gao
  2021-01-12  5:44 ` [PATCH 2/2] dts: mt7622: use accurate clock source fot mtk_timer Weijie Gao
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Weijie Gao @ 2021-01-12  5:44 UTC (permalink / raw)
  To: u-boot

The timer being used by this driver may have already been used by first
stage bootloader (e.g. ATF/preloader), and it's settings may differ from
what this driver is going to use.

This may cause issues, such as inaccurate timer frequency due to
incorrect clock divider.

This patch adds the initialization code to avoid them.

Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
---
 drivers/timer/mtk_timer.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/timer/mtk_timer.c b/drivers/timer/mtk_timer.c
index 448a76a7e1..f6b97f868c 100644
--- a/drivers/timer/mtk_timer.c
+++ b/drivers/timer/mtk_timer.c
@@ -61,6 +61,16 @@ static int mtk_timer_probe(struct udevice *dev)
 	if (!uc_priv->clock_rate)
 		return -EINVAL;
 
+	/*
+	 * Initialize the timer:
+	 * 1. set clock source to system clock with clock divider setting to 1
+	 * 2. set timer mode to free running
+	 * 3. reset timer counter to 0 then enable the timer
+	 */
+	writel(GPT4_CLK_SYS | GPT4_CLK_DIV1, priv->base + MTK_GPT4_CLK);
+	writel(GPT4_FREERUN | GPT4_CLEAR | GPT4_ENABLE,
+	       priv->base + MTK_GPT4_CTRL);
+
 	return 0;
 }
 
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-01-19 13:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-12  5:44 [PATCH 1/2] timer: mtk_timer: initialize the timer before use Weijie Gao
2021-01-12  5:44 ` [PATCH 2/2] dts: mt7622: use accurate clock source fot mtk_timer Weijie Gao
2021-01-19 13:06   ` Tom Rini
2021-01-15 16:36 ` [PATCH 1/2] timer: mtk_timer: initialize the timer before use Matthias Brugger
2021-01-18  0:44   ` Weijie Gao
2021-01-19 10:42     ` Matthias Brugger
2021-01-19 13:06 ` Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.