All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ryder Lee <ryder.lee@mediatek.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 10/20] timer: MediaTek: add timer driver for MediaTek SoCs
Date: Tue, 2 Oct 2018 14:13:47 +0800	[thread overview]
Message-ID: <d615166666683e3210e0afe7e81a360b28baee90.1538460580.git.ryder.lee@mediatek.com> (raw)
In-Reply-To: <cover.1538460580.git.ryder.lee@mediatek.com>

This patch adds clock source/event for the timer found on the Mediatek SoCs.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
---
 drivers/timer/Kconfig     |  7 ++++
 drivers/timer/Makefile    |  1 +
 drivers/timer/mtk_timer.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 93 insertions(+)
 create mode 100644 drivers/timer/mtk_timer.c

diff --git a/drivers/timer/Kconfig b/drivers/timer/Kconfig
index a7d600b..83ec0e6 100644
--- a/drivers/timer/Kconfig
+++ b/drivers/timer/Kconfig
@@ -147,4 +147,11 @@ config MPC83XX_TIMER
 	  Select this to enable support for the timer found on
 	  devices based on the MPC83xx family of SoCs.
 
+config MTK_TIMER
+        bool "MediaTek timer support"
+	depends on TIMER
+	help
+	  Select this to enable support for the timer found on
+	  MediaTek devices.
+
 endmenu
diff --git a/drivers/timer/Makefile b/drivers/timer/Makefile
index 7f19c49..c4fbab2 100644
--- a/drivers/timer/Makefile
+++ b/drivers/timer/Makefile
@@ -18,3 +18,4 @@ obj-$(CONFIG_SANDBOX_TIMER)	+= sandbox_timer.o
 obj-$(CONFIG_STI_TIMER)		+= sti-timer.o
 obj-$(CONFIG_STM32_TIMER)	+= stm32_timer.o
 obj-$(CONFIG_X86_TSC_TIMER)	+= tsc_timer.o
+obj-$(CONFIG_MTK_TIMER)		+= mtk_timer.o
diff --git a/drivers/timer/mtk_timer.c b/drivers/timer/mtk_timer.c
new file mode 100644
index 0000000..b5e76bd
--- /dev/null
+++ b/drivers/timer/mtk_timer.c
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * MediaTek timer driver
+ *
+ * Copyright (C) 2018 MediaTek Inc.
+ * Author: Ryder Lee <ryder.lee@mediatek.com>
+ */
+
+#include <clk.h>
+#include <common.h>
+#include <dm.h>
+#include <timer.h>
+#include <asm/io.h>
+
+#define MTK_GPT4_CTRL	0x40
+#define MTK_GPT4_CLK	0x44
+#define MTK_GPT4_CNT	0x48
+
+#define GPT4_ENABLE	BIT(0)
+#define GPT4_CLEAR	BIT(1)
+#define GPT4_FREERUN	GENMASK(5, 4)
+#define GPT4_CLK_SYS	0x0
+#define GPT4_CLK_DIV1	0x0
+
+struct mtk_timer_priv {
+	void __iomem *base;
+};
+
+static int mtk_timer_get_count(struct udevice *dev, u64 *count)
+{
+	struct mtk_timer_priv *priv = dev_get_priv(dev);
+	u32 val = readl(priv->base + MTK_GPT4_CNT);
+
+	*count = timer_conv_64(val);
+
+	return 0;
+}
+
+static int mtk_timer_probe(struct udevice *dev)
+{
+	struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
+	struct mtk_timer_priv *priv = dev_get_priv(dev);
+	struct clk clk, parent;
+	int ret;
+
+	priv->base = dev_read_addr_ptr(dev);
+	if (!priv->base)
+		return -ENOENT;
+
+	ret = clk_get_by_index(dev, 0, &clk);
+	if (ret)
+		return ret;
+
+	ret = clk_get_by_index(dev, 1, &parent);
+	if (!ret) {
+		ret = clk_set_parent(&clk, &parent);
+		if (ret)
+			return ret;
+	}
+
+	uc_priv->clock_rate = clk_get_rate(&clk);
+	if (!uc_priv->clock_rate)
+		return -EINVAL;
+
+	return 0;
+}
+
+static const struct timer_ops mtk_timer_ops = {
+	.get_count = mtk_timer_get_count,
+};
+
+static const struct udevice_id mtk_timer_ids[] = {
+	{ .compatible = "mediatek,timer" },
+	{ }
+};
+
+U_BOOT_DRIVER(mtk_timer) = {
+	.name = "mtk_timer",
+	.id = UCLASS_TIMER,
+	.of_match = mtk_timer_ids,
+	.priv_auto_alloc_size = sizeof(struct mtk_timer_priv),
+	.probe = mtk_timer_probe,
+	.ops = &mtk_timer_ops,
+	.flags = DM_FLAG_PRE_RELOC,
+};
-- 
1.9.1

  parent reply	other threads:[~2018-10-02  6:13 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-02  6:13 [U-Boot] [PATCH 00/20] Add support for MediaTek SoCs - MT7623n / MT7629 Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 01/20] tools: MediaTek: add MTK boot header generation to mkimage Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 02/20] arm: MediaTek: add basic support for MT7629 boards Ryder Lee
2018-10-02 14:29   ` Matthias Brugger
2018-10-02  6:13 ` [U-Boot] [PATCH 03/20] arm: MediaTek: add basic support for MT7623 boards Ryder Lee
2018-10-02 14:27   ` Matthias Brugger
2018-10-02 15:20     ` Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 04/20] arm: dts: MediaTek: add MT7629 reference board support Ryder Lee
2018-10-02 13:07   ` Matthias Brugger
2018-10-02 13:34     ` Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 05/20] arm: dts: MediaTek: add MT7623 Bananapi R2 " Ryder Lee
2018-10-02 13:10   ` Matthias Brugger
2018-10-02 13:36     ` Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 06/20] configs: MediaTek: add MT7629 reference " Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 07/20] configs: MediaTek: add MT7623 Bananapi R2 " Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 08/20] clk: MediaTek: add clock driver for MT7629 SoC Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 09/20] clk: MediaTek: add clock driver for MT7623 SoC Ryder Lee
2018-10-02  6:13 ` Ryder Lee [this message]
2018-10-02 14:20   ` [U-Boot] [PATCH 10/20] timer: MediaTek: add timer driver for MediaTek SoCs Matthias Brugger
2018-10-02  6:13 ` [U-Boot] [PATCH 11/20] watchdog: MediaTek: add watchdog " Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 12/20] pinctrl: MediaTek: add pinctrl driver for MT7629 SoC Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 13/20] pinctrl: MediaTek: add pinctrl driver for MT7623 SoC Ryder Lee
2018-10-02 14:31   ` Matthias Brugger
2018-10-02  6:13 ` [U-Boot] [PATCH 14/20] power domain: MediaTek: add power domain driver for MT7629 SoC Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 15/20] power domain: MediaTek: add power domain driver for MT7623 SoC Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 16/20] serial: 16550: allow the driver to support MediaTek serial Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 17/20] ram: MediaTek: add DDR3 driver for MT7629 SoC Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 18/20] spi: mtk_qspi: add qspi " Ryder Lee
2018-10-04 16:01   ` Jagan Teki
2018-10-08 13:00     ` Guochun Mao
2018-10-11  6:03     ` Guochun Mao
2018-10-02  6:13 ` [U-Boot] [PATCH 19/20] mmc: mtk-sd: add SD/MMC host controller driver for MT7623 SoC Ryder Lee
2018-10-02  6:13 ` [U-Boot] [PATCH 20/20] MAINTAINERS: add an entry for MediaTek Ryder Lee
2018-10-02 15:08 ` [U-Boot] [PATCH 00/20] Add support for MediaTek SoCs - MT7623n / MT7629 Matthias Brugger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d615166666683e3210e0afe7e81a360b28baee90.1538460580.git.ryder.lee@mediatek.com \
    --to=ryder.lee@mediatek.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.