[U-Boot] [RFC 09/35] sunxi: clk: add DM clock driver template for the A64 SoC
Jagan Teki
jagan at amarulasolutions.com
Mon Jul 16 11:28:24 UTC 2018
From: Andre Przywara <andre.przywara at arm.com>
Create the template for a new DM clock driver for the Allwinner A64 SoC.
Signed-off-by: Andre Przywara <andre.przywara at arm.com>
Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
---
drivers/clk/Makefile | 1 +
drivers/clk/sunxi/Makefile | 7 ++++
drivers/clk/sunxi/clk_a64.c | 77 +++++++++++++++++++++++++++++++++++++
3 files changed, 85 insertions(+)
create mode 100644 drivers/clk/sunxi/Makefile
create mode 100644 drivers/clk/sunxi/clk_a64.c
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index 426c67db9b..5944b9bbb5 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -11,6 +11,7 @@ obj-y += tegra/
obj-$(CONFIG_ARCH_ASPEED) += aspeed/
obj-$(CONFIG_ARCH_MESON) += clk_meson.o
obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/
+obj-$(CONFIG_ARCH_SUNXI) += sunxi/
obj-$(CONFIG_CLK_AT91) += at91/
obj-$(CONFIG_CLK_MVEBU) += mvebu/
obj-$(CONFIG_CLK_BCM6345) += clk_bcm6345.o
diff --git a/drivers/clk/sunxi/Makefile b/drivers/clk/sunxi/Makefile
new file mode 100644
index 0000000000..6cf122c634
--- /dev/null
+++ b/drivers/clk/sunxi/Makefile
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2018 Arm Ltd.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-$(CONFIG_MACH_SUN50I) += clk_a64.o
diff --git a/drivers/clk/sunxi/clk_a64.c b/drivers/clk/sunxi/clk_a64.c
new file mode 100644
index 0000000000..77afbcafd3
--- /dev/null
+++ b/drivers/clk/sunxi/clk_a64.c
@@ -0,0 +1,77 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * (C) Copyright 2018 Arm Ltd.
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <clk-uclass.h>
+#include <dm.h>
+#include <errno.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <dt-bindings/clock/sun50i-a64-ccu.h>
+
+struct a64_clk_priv {
+ void *base;
+};
+
+static ulong a64_clk_get_rate(struct clk *clk)
+{
+ debug("%s(#%ld)\n", __func__, clk->id);
+
+ debug(" unhandled\n");
+ return -EINVAL;
+}
+
+static ulong a64_clk_set_rate(struct clk *clk, ulong rate)
+{
+ debug("%s(#%ld, rate: %lu)\n", __func__, clk->id, rate);
+
+ debug(" unhandled\n");
+ return -EINVAL;
+}
+
+static int a64_clk_enable(struct clk *clk)
+{
+ debug("%s(#%ld)\n", __func__, clk->id);
+
+ debug(" unhandled\n");
+ return -EINVAL;
+}
+
+static struct clk_ops a64_clk_ops = {
+ .get_rate = a64_clk_get_rate,
+ .set_rate = a64_clk_set_rate,
+ .enable = a64_clk_enable,
+};
+
+static int a64_clk_probe(struct udevice *dev)
+{
+ return 0;
+}
+
+static int a64_clk_ofdata_to_platdata(struct udevice *dev)
+{
+ struct a64_clk_priv *priv = dev_get_priv(dev);
+
+ priv->base = dev_read_addr_ptr(dev);
+
+ return 0;
+}
+
+static const struct udevice_id a64_clk_ids[] = {
+ { .compatible = "allwinner,sun50i-a64-ccu" },
+ { }
+};
+
+U_BOOT_DRIVER(clk_sun50i_a64) = {
+ .name = "sun50i_a64_ccu",
+ .id = UCLASS_CLK,
+ .of_match = a64_clk_ids,
+ .priv_auto_alloc_size = sizeof(struct a64_clk_priv),
+ .ofdata_to_platdata = a64_clk_ofdata_to_platdata,
+ .ops = &a64_clk_ops,
+ .probe = a64_clk_probe,
+};
--
2.17.1
More information about the U-Boot
mailing list