Lines Matching full:smi

16 #include <soc/mediatek/smi.h>
52 /* SMI COMMON */
89 struct mtk_smi smi; member
98 static int mtk_smi_clk_enable(const struct mtk_smi *smi) in mtk_smi_clk_enable() argument
102 ret = clk_prepare_enable(smi->clk_apb); in mtk_smi_clk_enable()
106 ret = clk_prepare_enable(smi->clk_smi); in mtk_smi_clk_enable()
110 ret = clk_prepare_enable(smi->clk_gals0); in mtk_smi_clk_enable()
114 ret = clk_prepare_enable(smi->clk_gals1); in mtk_smi_clk_enable()
121 clk_disable_unprepare(smi->clk_gals0); in mtk_smi_clk_enable()
123 clk_disable_unprepare(smi->clk_smi); in mtk_smi_clk_enable()
125 clk_disable_unprepare(smi->clk_apb); in mtk_smi_clk_enable()
129 static void mtk_smi_clk_disable(const struct mtk_smi *smi) in mtk_smi_clk_disable() argument
131 clk_disable_unprepare(smi->clk_gals1); in mtk_smi_clk_disable()
132 clk_disable_unprepare(smi->clk_gals0); in mtk_smi_clk_disable()
133 clk_disable_unprepare(smi->clk_smi); in mtk_smi_clk_disable()
134 clk_disable_unprepare(smi->clk_apb); in mtk_smi_clk_disable()
285 .compatible = "mediatek,mt8167-smi-larb",
289 .compatible = "mediatek,mt8173-smi-larb",
293 .compatible = "mediatek,mt2701-smi-larb",
297 .compatible = "mediatek,mt2712-smi-larb",
301 .compatible = "mediatek,mt6779-smi-larb",
305 .compatible = "mediatek,mt8183-smi-larb",
309 .compatible = "mediatek,mt8192-smi-larb",
333 larb->smi.clk_apb = devm_clk_get(dev, "apb"); in mtk_smi_larb_probe()
334 if (IS_ERR(larb->smi.clk_apb)) in mtk_smi_larb_probe()
335 return PTR_ERR(larb->smi.clk_apb); in mtk_smi_larb_probe()
337 larb->smi.clk_smi = devm_clk_get(dev, "smi"); in mtk_smi_larb_probe()
338 if (IS_ERR(larb->smi.clk_smi)) in mtk_smi_larb_probe()
339 return PTR_ERR(larb->smi.clk_smi); in mtk_smi_larb_probe()
343 larb->smi.clk_gals0 = devm_clk_get(dev, "gals"); in mtk_smi_larb_probe()
344 if (PTR_ERR(larb->smi.clk_gals0) == -ENOENT) in mtk_smi_larb_probe()
345 larb->smi.clk_gals0 = NULL; in mtk_smi_larb_probe()
346 else if (IS_ERR(larb->smi.clk_gals0)) in mtk_smi_larb_probe()
347 return PTR_ERR(larb->smi.clk_gals0); in mtk_smi_larb_probe()
349 larb->smi.dev = dev; in mtk_smi_larb_probe()
351 smi_node = of_parse_phandle(dev->of_node, "mediatek,smi", 0); in mtk_smi_larb_probe()
384 /* Power on smi-common. */ in mtk_smi_larb_resume()
387 dev_err(dev, "Failed to pm get for smi-common(%d).\n", ret); in mtk_smi_larb_resume()
391 ret = mtk_smi_clk_enable(&larb->smi); in mtk_smi_larb_resume()
408 mtk_smi_clk_disable(&larb->smi); in mtk_smi_larb_suspend()
423 .name = "mtk-smi-larb",
460 .compatible = "mediatek,mt8173-smi-common",
464 .compatible = "mediatek,mt8167-smi-common",
468 .compatible = "mediatek,mt2701-smi-common",
472 .compatible = "mediatek,mt2712-smi-common",
476 .compatible = "mediatek,mt6779-smi-common",
480 .compatible = "mediatek,mt8183-smi-common",
484 .compatible = "mediatek,mt8192-smi-common",
507 common->clk_smi = devm_clk_get(dev, "smi"); in mtk_smi_common_probe()
522 * for mtk smi gen 1, we need to get the ao(always on) base to config in mtk_smi_common_probe()
523 * m4u port, and we need to enable the aync clock for transform the smi in mtk_smi_common_probe()
524 * clock into emi clock domain, but for mtk smi gen2, there's no smi ao in mtk_smi_common_probe()
592 .name = "mtk-smi-common",
615 MODULE_DESCRIPTION("MediaTek SMI driver");