| // SPDX-License-Identifier: GPL-2.0 | 
 | /* | 
 |  * Copyright (c) 2019 MediaTek Inc. | 
 |  */ | 
 |  | 
 | #include <linux/device.h> | 
 | #include <linux/kernel.h> | 
 | #include <linux/module.h> | 
 | #include <linux/of.h> | 
 | #include <linux/of_platform.h> | 
 | #include <linux/pm_runtime.h> | 
 |  | 
 | static const struct of_device_id bring_up_id_table[] = { | 
 | 	{ .compatible = "mediatek,scpsys-bring-up",}, | 
 | 	{ .compatible = "mediatek,scpsys-bringup-mt6779",}, | 
 | 	{ }, | 
 | }; | 
 | MODULE_DEVICE_TABLE(of, bring_up_id_table); | 
 |  | 
 | static int bring_up_probe(struct platform_device *pdev) | 
 | { | 
 | 	if (!pdev->dev.pm_domain) | 
 | 		return -EPROBE_DEFER; | 
 |  | 
 | 	pm_runtime_enable(&pdev->dev); | 
 |  | 
 | 	/* always enabled in lifetime */ | 
 | 	pm_runtime_get_sync(&pdev->dev); | 
 |  | 
 |  | 
 | 	return 0; | 
 | } | 
 |  | 
 | static int bring_up_remove(struct platform_device *pdev) | 
 | { | 
 | 	pm_runtime_put_sync(&pdev->dev); | 
 | 	return 0; | 
 | } | 
 |  | 
 | static struct platform_driver scpsys_bring_up = { | 
 | 	.probe		= bring_up_probe, | 
 | 	.remove		= bring_up_remove, | 
 | 	.driver		= { | 
 | 		.name	= "scpsys_bring_up", | 
 | 		.owner	= THIS_MODULE, | 
 | 		.of_match_table = bring_up_id_table, | 
 | 	}, | 
 | }; | 
 | //move to builtin so as to earlier than clk-bring up | 
 | builtin_platform_driver(scpsys_bring_up); |