From: Johan Jonker <jbx6244@gmail.com>
To: kever.yang@rock-chips.com
Cc: sjg@chromium.org, philipp.tomsich@vrull.eu, marex@denx.de,
u-boot@lists.denx.de
Subject: [PATCH v2] rockchip: timer: add OF_PLATDATA support for dw-apb-timer
Date: Wed, 5 Jan 2022 03:15:33 +0100 [thread overview]
Message-ID: <20220105021533.21838-1-jbx6244@gmail.com> (raw)
The Rockchip rk3066 SoC has 3 dw-apb-timer nodes.
U-boot is compiled with OF_PLATDATA TPL/SPL options,
so add OF_PLATDATA support for the dw-apb-timer.
Also change driver name to be able to compile with
U-boot scripts. No reset OF_PLATDATA support was added,
because the rk3066 nodes don't need/have them.
Signed-off-by: Johan Jonker <jbx6244@gmail.com>
---
Changed V2:
replace if (IS_ENABLED(OF_REAL)) by #if CONFIG_IS_ENABLED(OF_REAL)
---
drivers/timer/dw-apb-timer.c | 30 +++++++++++++++++++++++++-----
1 file changed, 25 insertions(+), 5 deletions(-)
diff --git a/drivers/timer/dw-apb-timer.c b/drivers/timer/dw-apb-timer.c
index 9aed5dd2..9ba8695f 100644
--- a/drivers/timer/dw-apb-timer.c
+++ b/drivers/timer/dw-apb-timer.c
@@ -8,6 +8,7 @@
#include <common.h>
#include <dm.h>
#include <clk.h>
+#include <dt-structs.h>
#include <malloc.h>
#include <reset.h>
#include <timer.h>
@@ -25,6 +26,12 @@ struct dw_apb_timer_priv {
struct reset_ctl_bulk resets;
};
+struct dw_apb_timer_plat {
+#if CONFIG_IS_ENABLED(OF_PLATDATA)
+ struct dtd_snps_dw_apb_timer dtplat;
+#endif
+};
+
static u64 dw_apb_timer_get_count(struct udevice *dev)
{
struct dw_apb_timer_priv *priv = dev_get_priv(dev);
@@ -43,7 +50,18 @@ static int dw_apb_timer_probe(struct udevice *dev)
struct dw_apb_timer_priv *priv = dev_get_priv(dev);
struct clk clk;
int ret;
+#if CONFIG_IS_ENABLED(OF_PLATDATA)
+ struct dw_apb_timer_plat *plat = dev_get_plat(dev);
+ struct dtd_snps_dw_apb_timer *dtplat = &plat->dtplat;
+ priv->regs = dtplat->reg[0];
+
+ ret = clk_get_by_phandle(dev, &dtplat->clocks[0], &clk);
+ if (ret < 0)
+ return ret;
+
+ uc_priv->clock_rate = dtplat->clock_frequency;
+#else
ret = reset_get_bulk(dev, &priv->resets);
if (ret)
dev_warn(dev, "Can't get reset: %d\n", ret);
@@ -57,7 +75,7 @@ static int dw_apb_timer_probe(struct udevice *dev)
uc_priv->clock_rate = clk_get_rate(&clk);
clk_free(&clk);
-
+#endif
/* init timer */
writel(0xffffffff, priv->regs + DW_APB_LOAD_VAL);
writel(0xffffffff, priv->regs + DW_APB_CURR_VAL);
@@ -68,10 +86,11 @@ static int dw_apb_timer_probe(struct udevice *dev)
static int dw_apb_timer_of_to_plat(struct udevice *dev)
{
+#if CONFIG_IS_ENABLED(OF_REAL)
struct dw_apb_timer_priv *priv = dev_get_priv(dev);
priv->regs = dev_read_addr(dev);
-
+#endif
return 0;
}
@@ -91,13 +110,14 @@ static const struct udevice_id dw_apb_timer_ids[] = {
{}
};
-U_BOOT_DRIVER(dw_apb_timer) = {
- .name = "dw_apb_timer",
+U_BOOT_DRIVER(snps_dw_apb_timer) = {
+ .name = "snps_dw_apb_timer",
.id = UCLASS_TIMER,
.ops = &dw_apb_timer_ops,
.probe = dw_apb_timer_probe,
.of_match = dw_apb_timer_ids,
- .of_to_plat = dw_apb_timer_of_to_plat,
+ .of_to_plat = dw_apb_timer_of_to_plat,
.remove = dw_apb_timer_remove,
.priv_auto = sizeof(struct dw_apb_timer_priv),
+ .plat_auto = sizeof(struct dw_apb_timer_plat),
};
--
2.20.1
next reply other threads:[~2022-01-05 2:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-05 2:15 Johan Jonker [this message]
2022-01-05 14:03 ` [PATCH v2] rockchip: timer: add OF_PLATDATA support for dw-apb-timer Simon Glass
2022-01-05 16:40 ` Johan Jonker
2022-01-05 20:19 ` Johan Jonker
2022-01-06 7:06 ` Simon Glass
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=20220105021533.21838-1-jbx6244@gmail.com \
--to=jbx6244@gmail.com \
--cc=kever.yang@rock-chips.com \
--cc=marex@denx.de \
--cc=philipp.tomsich@vrull.eu \
--cc=sjg@chromium.org \
--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.