[PATCH v2 2/3] clk: mediatek: add grandparent variable in mtk_find_parent_rate()

Weijie Gao weijie.gao at mediatek.com
Thu Apr 16 10:23:05 CEST 2026


From: Sam Shih <sam.shih at mediatek.com>

Add grandparent device variable in mtk_find_parent_rate() to allow
the grandparent device being reused instead of calling
dev_get_parent(priv->parent) multiple times.

Signed-off-by: Sam Shih <sam.shih at mediatek.com>
Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
---
 drivers/clk/mediatek/clk-mtk.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/mediatek/clk-mtk.c b/drivers/clk/mediatek/clk-mtk.c
index 4adec4457b4..f974f0f2432 100644
--- a/drivers/clk/mediatek/clk-mtk.c
+++ b/drivers/clk/mediatek/clk-mtk.c
@@ -216,11 +216,14 @@ static ulong mtk_find_parent_rate(struct mtk_clk_priv *priv, struct clk *clk,
 			parent_dev = clk->dev;
 		else if (dev_get_driver_ops(priv->parent) == &mtk_clk_apmixedsys_ops)
 			parent_dev = priv->parent;
-		else if (dev_get_driver_ops(dev_get_parent(priv->parent)) == &mtk_clk_apmixedsys_ops)
-			parent_dev = dev_get_parent(priv->parent);
-		else
-			return -EINVAL;
+		else {
+			struct udevice *grandparent_dev = dev_get_parent(priv->parent);
 
+			if (dev_get_driver_ops(grandparent_dev) == &mtk_clk_apmixedsys_ops)
+				parent_dev = grandparent_dev;
+			else
+				return -EINVAL;
+		}
 		break;
 	case CLK_PARENT_TOPCKGEN:
 		if (dev_get_driver_ops(clk->dev) == &mtk_clk_topckgen_ops)
-- 
2.45.2



More information about the U-Boot mailing list