+static int mtk_smi_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct mtk_smi_data *smidata;
+ int ret;
+
+ if (!dev->pm_domain)
+ return -EPROBE_DEFER;
+
+ smidata = devm_kzalloc(dev, sizeof(*smidata), GFP_KERNEL);
+ if (!smidata)
+ return -ENOMEM;
+
+ smidata->clk_apb = devm_clk_get(dev, "apb");
+ if (IS_ERR(smidata->clk_apb))
+ return PTR_ERR(smidata->clk_apb);
+
+ smidata->clk_smi = devm_clk_get(dev, "smi");
+ if (IS_ERR(smidata->clk_smi))
+ return PTR_ERR(smidata->clk_smi);
+
+ pm_runtime_enable(dev);
+ dev_set_drvdata(dev, smidata);
+ return ret;
+}