From 374cb8a28840e54f70463ab6829eb641ab6cdc9f Mon Sep 17 00:00:00 2001 From: Sam Shih Date: Thu, 16 Apr 2026 16:23:05 +0800 Subject: [PATCH] clk: mediatek: add grandparent variable in mtk_find_parent_rate() 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 Signed-off-by: Weijie Gao Link: https://patch.msgid.link/726ccc71593f6c224c13142a0bd4a9f6f0f81445.1776326933.git.weijie.gao@mediatek.com Signed-off-by: David Lechner --- drivers/clk/mediatek/clk-mtk.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/clk/mediatek/clk-mtk.c b/drivers/clk/mediatek/clk-mtk.c index d405eeab6f2..a74c039b9d1 100644 --- a/drivers/clk/mediatek/clk-mtk.c +++ b/drivers/clk/mediatek/clk-mtk.c @@ -217,17 +217,20 @@ static ulong mtk_find_parent_rate(struct mtk_clk_priv *priv, struct clk *clk, case CLK_PARENT_APMIXED: /* APMIXEDSYS can be parent or grandparent. */ if (dev_get_driver_ops(clk->dev) == &mtk_clk_apmixedsys_ops || - dev_get_driver_ops(clk->dev) == &mtk_clk_fixed_pll_ops) + dev_get_driver_ops(clk->dev) == &mtk_clk_fixed_pll_ops) { parent_dev = clk->dev; - else if (dev_get_driver_ops(priv->parent) == &mtk_clk_apmixedsys_ops || - dev_get_driver_ops(priv->parent) == &mtk_clk_fixed_pll_ops) + } else if (dev_get_driver_ops(priv->parent) == &mtk_clk_apmixedsys_ops || + dev_get_driver_ops(priv->parent) == &mtk_clk_fixed_pll_ops) { parent_dev = priv->parent; - else if (dev_get_driver_ops(dev_get_parent(priv->parent)) == &mtk_clk_apmixedsys_ops || - dev_get_driver_ops(dev_get_parent(priv->parent)) == &mtk_clk_fixed_pll_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 || + dev_get_driver_ops(grandparent_dev) == &mtk_clk_fixed_pll_ops) + parent_dev = grandparent_dev; + else + return -EINVAL; + } break; case CLK_PARENT_TOPCKGEN: if (dev_get_driver_ops(clk->dev) == &mtk_clk_topckgen_ops)