Several MediaTek SoCs expose multiple clock gate controller instances. In U-Boot, each instance currently requires its own U_BOOT_DRIVER, mtk_clk_tree, probe() function and compatible table, even though they all share the same implementation. This results in a significant amount of duplicated code, and the duplication grows every time a new clock gate controller is added (for example the ones needed for upcoming HDMI support on MT8188).
MT8189 already avoids this by using a single generic U_BOOT_DRIVER shared across all clock gate controller compatibles, with the SoC-specific gate tables provided through driver data. This series generalizes that approach. The first patch introduces struct mtk_gate_clk_data and the MTK_GATE_CLK_DATA() helper in clk-mtk.h, the second one converts MT8189 to it as the first user, and the remaining patches convert every SoC that declares more than one clock gate driver: MT8188, MT7622, MT7623, MT7629, MT7981, MT7988 and MT8512. Drivers are only merged when they share the same DM flags and bind() callback, so device lifecycle (pre-relocation binding/probing, reset controller binding) is preserved. Controllers that bind a reset controller keep a dedicated U_BOOT_DRIVER but still share the generic probe() function. SoCs with a single clock gate controller (MT7986, MT7987, MT8183, MT8195, MT8365, MT8516, MT8518) are left untouched since there is no duplication to remove there. All conversions are intended to be non-functional changes, with one exception called out in its commit message: on MT7629 the conversion fixes an off-by-one in the infracfg gate lookup, whose clock IDs start at 1 while the driver used a gate offset of 0. Build-tested using the following command: ./tools/buildman/buildman -b b4/b4-mtk-clk-cleanup-clock-gate-drivers -c 10 -x mips mt7622 mt7623 mt7629 mt7981 mt7986 mt7987 mt7988 mt8183 mt8195 mt8365 mt8512 mt8516 mt8518 Tested on genio-700: clk dump before and after is equivalent (other than the driver name) Signed-off-by: Julien Stephan <[email protected]> --- Julien Stephan (9): clk: mediatek: introduce mtk_gate_clk_data clk: mediatek: mt8189: convert to mtk_gate_clk_data clk: mediatek: mt8188: convert to mtk_gate_clk_data clk: mediatek: mt7622: convert to mtk_gate_clk_data clk: mediatek: mt7623: convert to mtk_gate_clk_data clk: mediatek: mt7629: convert to mtk_gate_clk_data clk: mediatek: mt7981: convert to mtk_gate_clk_data clk: mediatek: mt7988: convert to mtk_gate_clk_data clk: mediatek: mt8512: convert to mtk_gate_clk_data drivers/clk/mediatek/clk-mt7622.c | 113 +++++++++----------------- drivers/clk/mediatek/clk-mt7623.c | 67 +++++++--------- drivers/clk/mediatek/clk-mt7629.c | 109 ++++++++++---------------- drivers/clk/mediatek/clk-mt7981.c | 66 +++++++--------- drivers/clk/mediatek/clk-mt7988.c | 74 +++++++----------- drivers/clk/mediatek/clk-mt8188.c | 161 ++++++++++---------------------------- drivers/clk/mediatek/clk-mt8189.c | 26 ++---- drivers/clk/mediatek/clk-mt8512.c | 52 ++++++------ drivers/clk/mediatek/clk-mtk.h | 11 +++ 9 files changed, 252 insertions(+), 427 deletions(-) --- base-commit: b5fca5f601e5da4955a3ab815f614e1a1300ec2b change-id: 20260710-b4-mtk-clk-cleanup-clock-gate-drivers-0b211852ad81 Best regards, -- Julien Stephan <[email protected]>

