]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
clk: mediatek: provide common clk init function for infrasys
authorChristian Marangi <ansuelsmth@gmail.com>
Fri, 28 Jun 2024 17:40:53 +0000 (19:40 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 1 Aug 2024 21:32:18 +0000 (15:32 -0600)
Provide common clk init function for infrasys that defaults to topckgen
driver if clock-parent is not defined. This is the case for upstream
DTSI that doesn't provide this entry.

This is needed for infracfg driver that will make use of the unified
gates + muxes implementation.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
drivers/clk/mediatek/clk-mtk.c
drivers/clk/mediatek/clk-mtk.h

index 011615ab917e1d45b1d3361e4d770e5c720642dd..35ea9826dba7f8bf7643fc709e5db41922e819a8 100644 (file)
@@ -708,8 +708,9 @@ const struct clk_ops mtk_clk_gate_ops = {
        .get_rate = mtk_clk_gate_get_rate,
 };
 
-int mtk_common_clk_init(struct udevice *dev,
-                       const struct mtk_clk_tree *tree)
+static int mtk_common_clk_init_drv(struct udevice *dev,
+                                  const struct mtk_clk_tree *tree,
+                                  const struct driver *drv)
 {
        struct mtk_clk_priv *priv = dev_get_priv(dev);
        struct udevice *parent;
@@ -721,8 +722,7 @@ int mtk_common_clk_init(struct udevice *dev,
 
        ret = uclass_get_device_by_phandle(UCLASS_CLK, dev, "clock-parent", &parent);
        if (ret || !parent) {
-               ret = uclass_get_device_by_driver(UCLASS_CLK,
-                               DM_DRIVER_GET(mtk_clk_apmixedsys), &parent);
+               ret = uclass_get_device_by_driver(UCLASS_CLK, drv, &parent);
                if (ret || !parent)
                        return -ENOENT;
        }
@@ -733,6 +733,20 @@ int mtk_common_clk_init(struct udevice *dev,
        return 0;
 }
 
+int mtk_common_clk_init(struct udevice *dev,
+                       const struct mtk_clk_tree *tree)
+{
+       return mtk_common_clk_init_drv(dev, tree,
+                                      DM_DRIVER_GET(mtk_clk_apmixedsys));
+}
+
+int mtk_common_clk_infrasys_init(struct udevice *dev,
+                                const struct mtk_clk_tree *tree)
+{
+       return mtk_common_clk_init_drv(dev, tree,
+                                      DM_DRIVER_GET(mtk_clk_topckgen));
+}
+
 int mtk_common_clk_gate_init(struct udevice *dev,
                             const struct mtk_clk_tree *tree,
                             const struct mtk_gate *gates)
index 4423689803ad3b23db25e92d4dc7ed1b6b0cc849..e9c8a52ce8f3ae916f12441b75191262ef0ad966 100644 (file)
@@ -266,6 +266,8 @@ extern const struct clk_ops mtk_clk_gate_ops;
 
 int mtk_common_clk_init(struct udevice *dev,
                        const struct mtk_clk_tree *tree);
+int mtk_common_clk_infrasys_init(struct udevice *dev,
+                                const struct mtk_clk_tree *tree);
 int mtk_common_clk_gate_init(struct udevice *dev,
                             const struct mtk_clk_tree *tree,
                             const struct mtk_gate *gates);