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",
334 larb->smi.clk_apb = devm_clk_get(dev, "apb"); in mtk_smi_larb_probe()
335 if (IS_ERR(larb->smi.clk_apb)) in mtk_smi_larb_probe()
336 return PTR_ERR(larb->smi.clk_apb); in mtk_smi_larb_probe()
338 larb->smi.clk_smi = devm_clk_get(dev, "smi"); in mtk_smi_larb_probe()
339 if (IS_ERR(larb->smi.clk_smi)) in mtk_smi_larb_probe()
340 return PTR_ERR(larb->smi.clk_smi); in mtk_smi_larb_probe()
344 larb->smi.clk_gals0 = devm_clk_get(dev, "gals"); in mtk_smi_larb_probe()
345 if (PTR_ERR(larb->smi.clk_gals0) == -ENOENT) in mtk_smi_larb_probe()
346 larb->smi.clk_gals0 = NULL; in mtk_smi_larb_probe()
347 else if (IS_ERR(larb->smi.clk_gals0)) in mtk_smi_larb_probe()
348 return PTR_ERR(larb->smi.clk_gals0); in mtk_smi_larb_probe()
350 larb->smi.dev = dev; in mtk_smi_larb_probe()
352 smi_node = of_parse_phandle(dev->of_node, "mediatek,smi", 0); in mtk_smi_larb_probe()
365 dev_err(dev, "Unable to link smi-common dev\n"); in mtk_smi_larb_probe()
394 ret = mtk_smi_clk_enable(&larb->smi); in mtk_smi_larb_resume()
410 mtk_smi_clk_disable(&larb->smi); in mtk_smi_larb_suspend()
424 .name = "mtk-smi-larb",
461 .compatible = "mediatek,mt8173-smi-common",
465 .compatible = "mediatek,mt8167-smi-common",
469 .compatible = "mediatek,mt2701-smi-common",
473 .compatible = "mediatek,mt2712-smi-common",
477 .compatible = "mediatek,mt6779-smi-common",
481 .compatible = "mediatek,mt8183-smi-common",
485 .compatible = "mediatek,mt8192-smi-common",
508 common->clk_smi = devm_clk_get(dev, "smi"); in mtk_smi_common_probe()
523 * for mtk smi gen 1, we need to get the ao(always on) base to config in mtk_smi_common_probe()
524 * m4u port, and we need to enable the aync clock for transform the smi in mtk_smi_common_probe()
525 * clock into emi clock domain, but for mtk smi gen2, there's no smi ao in mtk_smi_common_probe()
593 .name = "mtk-smi-common",
616 MODULE_DESCRIPTION("MediaTek SMI driver");