]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
clk: mediatek: clk-mtk: Introduce mtk_clk_get_hwv_regmap()
authorLaura Nao <laura.nao@collabora.com>
Mon, 15 Sep 2025 15:19:24 +0000 (17:19 +0200)
committerStephen Boyd <sboyd@kernel.org>
Sun, 21 Sep 2025 16:33:45 +0000 (09:33 -0700)
On MT8196, some clock controllers use a separate regmap for hardware
voting via set/clear/status registers. Add mtk_clk_get_hwv_regmap() to
retrieve this optional regmap, avoiding duplicated lookup code in 
mtk_clk_register_muxes() and mtk_clk_register_gate().

Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Signed-off-by: Laura Nao <laura.nao@collabora.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/mediatek/clk-mtk.c
drivers/clk/mediatek/clk-mtk.h

index ba1d1c495bc2bf9ad96f8d86dec34007c60b96a7..19cd27941747aacf1a03d55e1e13ca21c49086ee 100644 (file)
@@ -685,4 +685,20 @@ void mtk_clk_simple_remove(struct platform_device *pdev)
 }
 EXPORT_SYMBOL_GPL(mtk_clk_simple_remove);
 
+struct regmap *mtk_clk_get_hwv_regmap(struct device_node *node)
+{
+       struct device_node *hwv_node;
+       struct regmap *regmap_hwv;
+
+       hwv_node = of_parse_phandle(node, "mediatek,hardware-voter", 0);
+       if (!hwv_node)
+               return NULL;
+
+       regmap_hwv = device_node_to_regmap(hwv_node);
+       of_node_put(hwv_node);
+
+       return regmap_hwv;
+}
+EXPORT_SYMBOL_GPL(mtk_clk_get_hwv_regmap);
+
 MODULE_LICENSE("GPL");
index c17fe1c2d732da1e7baf1d274cc6242f4d2e1a5e..11962fac43eaecb65e4475959504f34519e9fb74 100644 (file)
@@ -245,5 +245,6 @@ int mtk_clk_pdev_probe(struct platform_device *pdev);
 void mtk_clk_pdev_remove(struct platform_device *pdev);
 int mtk_clk_simple_probe(struct platform_device *pdev);
 void mtk_clk_simple_remove(struct platform_device *pdev);
+struct regmap *mtk_clk_get_hwv_regmap(struct device_node *node);
 
 #endif /* __DRV_CLK_MTK_H */