cpufreq: mediatek: Unregister platform device on exit
authorRex-BC Chen <rex-bc.chen@mediatek.com>
Thu, 5 May 2022 11:52:18 +0000 (19:52 +0800)
committerViresh Kumar <viresh.kumar@linaro.org>
Fri, 6 May 2022 04:08:10 +0000 (09:38 +0530)
We register the platform device when driver inits. However, we do not
unregister it when driver exits.

To resolve this, we declare the platform data to be a global static
variable and rename it to be "cpufreq_pdev". With this global variable,
we can do platform_device_unregister() when driver exits.

Fixes: 501c574f4e3a ("cpufreq: mediatek: Add support of cpufreq to MT2701/MT7623 SoC")
Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com>
[ Viresh: Commit log and Subject ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/mediatek-cpufreq.c

index 901042e9a240098aa9cbfe2b3dc7f1c161584d1a..d15cbef4a72edce3ac9ebc30ae8565657239ad29 100644 (file)
@@ -43,6 +43,8 @@ struct mtk_cpu_dvfs_info {
        int pre_vproc;
 };
 
+static struct platform_device *cpufreq_pdev;
+
 static LIST_HEAD(dvfs_info_list);
 
 static struct mtk_cpu_dvfs_info *mtk_cpu_dvfs_info_lookup(int cpu)
@@ -578,7 +580,6 @@ static int __init mtk_cpufreq_driver_init(void)
 {
        struct device_node *np;
        const struct of_device_id *match;
-       struct platform_device *pdev;
        int err;
 
        np = of_find_node_by_path("/");
@@ -602,11 +603,11 @@ static int __init mtk_cpufreq_driver_init(void)
         * and the device registration codes are put here to handle defer
         * probing.
         */
-       pdev = platform_device_register_simple("mtk-cpufreq", -1, NULL, 0);
-       if (IS_ERR(pdev)) {
+       cpufreq_pdev = platform_device_register_simple("mtk-cpufreq", -1, NULL, 0);
+       if (IS_ERR(cpufreq_pdev)) {
                pr_err("failed to register mtk-cpufreq platform device\n");
                platform_driver_unregister(&mtk_cpufreq_platdrv);
-               return PTR_ERR(pdev);
+               return PTR_ERR(cpufreq_pdev);
        }
 
        return 0;
@@ -615,6 +616,7 @@ module_init(mtk_cpufreq_driver_init)
 
 static void __exit mtk_cpufreq_driver_exit(void)
 {
+       platform_device_unregister(cpufreq_pdev);
        platform_driver_unregister(&mtk_cpufreq_platdrv);
 }
 module_exit(mtk_cpufreq_driver_exit)