clk: sunxi: Add a dummy clock driver for the RTC
authorSamuel Holland <samuel@sholland.org>
Mon, 8 Feb 2021 05:57:19 +0000 (23:57 -0600)
committerAndre Przywara <andre.przywara@arm.com>
Fri, 16 Apr 2021 00:12:59 +0000 (01:12 +0100)
The 32kHz clock ("LOSC") on sunxi SoCs is provided by the RTC. It is
used, among other things, by the XHCI controller in the H6. To be able
to call clk_get_bulk() on the XHCI controller, some device needs to
provide all referenced clocks.

Since LOSC is a fixed-rate always-on clock, implementation is trivial.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
drivers/clk/sunxi/Makefile
drivers/clk/sunxi/clk_sun6i_rtc.c [new file with mode: 0644]

index 0dfc0593fb1c449d43de2fdd94b3f75f9659f2d8..4f9282a8b9b91b216b20ec5714d3684e54410b2e 100644 (file)
@@ -6,6 +6,8 @@
 
 obj-$(CONFIG_CLK_SUNXI) += clk_sunxi.o
 
+obj-$(CONFIG_CLK_SUNXI) += clk_sun6i_rtc.o
+
 obj-$(CONFIG_CLK_SUN4I_A10) += clk_a10.o
 obj-$(CONFIG_CLK_SUN5I_A10S) += clk_a10s.o
 obj-$(CONFIG_CLK_SUN6I_A31) += clk_a31.o
diff --git a/drivers/clk/sunxi/clk_sun6i_rtc.c b/drivers/clk/sunxi/clk_sun6i_rtc.c
new file mode 100644 (file)
index 0000000..0c280d2
--- /dev/null
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2018 Amarula Solutions.
+ * Copyright (C) 2020 Samuel Holland <samuel@sholland.org>
+ */
+
+#include <clk-uclass.h>
+#include <dm.h>
+
+static int clk_sun6i_rtc_enable(struct clk *clk)
+{
+       return 0;
+}
+
+static const struct clk_ops clk_sun6i_rtc_ops = {
+       .enable = clk_sun6i_rtc_enable,
+};
+
+static const struct udevice_id sun6i_rtc_ids[] = {
+       { .compatible = "allwinner,sun6i-a31-rtc" },
+       { .compatible = "allwinner,sun8i-a23-rtc" },
+       { .compatible = "allwinner,sun8i-h3-rtc" },
+       { .compatible = "allwinner,sun8i-r40-rtc" },
+       { .compatible = "allwinner,sun8i-v3-rtc" },
+       { .compatible = "allwinner,sun50i-h5-rtc" },
+       { .compatible = "allwinner,sun50i-h6-rtc" },
+       { }
+};
+
+U_BOOT_DRIVER(clk_sun6i_rtc) = {
+       .name           = "clk_sun6i_rtc",
+       .id             = UCLASS_CLK,
+       .of_match       = sun6i_rtc_ids,
+       .ops            = &clk_sun6i_rtc_ops,
+};