[PATCH] clk: mediatek: fix reprobe regression

David Lechner <[email protected]>
Newsgroups gmane.comp.boot-loaders.u-boot
Message-ID <20260813-mtk-clk-fix-reprobe-regression-v1-1-ed259968c2b8__49894.7300993436$1786626654$gmane$org@baylibre.com>
Clear the MediaTek clock provider registry after relocation. This is
necessary for a couple of reasons. If any clock probed before the
relocation, the registry will contain a pointer to pre-relocation
memory. Also, all drivers reprobe after relocation, so even if we
had a valid pointer, it would be to a clock provider that had not been
reprobed yet. Clearing the registry ensures that all clock providers
are re-registered when they are reprobed after relocation.

Reported-by: Sam Shih <[email protected]>
Fixes: 8ef0ad4c7a6d ("clk: mediatek: use registered provider for parent lookup")
Signed-off-by: David Lechner <[email protected]>
---
 drivers/clk/mediatek/clk-mtk.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/clk/mediatek/clk-mtk.c b/drivers/clk/mediatek/clk-mtk.c
index 13c248c93a6..849e8a196e5 100644
--- a/drivers/clk/mediatek/clk-mtk.c
+++ b/drivers/clk/mediatek/clk-mtk.c
@@ -1130,3 +1130,21 @@ int mtk_clk_probe(struct udevice *dev)
 
 	return mtk_clk_tree_register_provider(dev, tree);
 }
+
+static int mtk_clock_reset_registry(void)
+{
+	/*
+	 * When U-Boot is relocated, the static clock provider registry is no
+	 * longer valid since it contains pointers to the old U-Boot memory.
+	 * Furthermore, all devices are re-probed after relocation. Therefore,
+	 * we need to reset the registry before any devices can probe after
+	 * relocation.
+	 */
+
+	for (int i = 0; i < ARRAY_SIZE(mtk_clk_providers); i++)
+		mtk_clk_providers[i] = NULL;
+
+	return 0;
+}
+
+EVENT_SPY_SIMPLE(EVT_DM_POST_INIT_R, mtk_clock_reset_registry);

---
base-commit: 0b581a9612e46310ee52bf8359165950d38b2a2b
change-id: 20260813-mtk-clk-fix-reprobe-regression-6ac0c072600b

Best regards,
--  
David Lechner <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.