cpufreq: mediatek: Unregister platform device on exit

[ Upstream commit f126fbadce92b92c3a7be41e4abc1fbae93ae2ef ]

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: 501c574f4e ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Rex-BC Chen
2022-05-05 19:52:18 +08:00
committed by Greg Kroah-Hartman
parent 9d91400fff
commit ec5ded7acb

View File

@@ -44,6 +44,8 @@ struct mtk_cpu_dvfs_info {
bool need_voltage_tracking; bool need_voltage_tracking;
}; };
static struct platform_device *cpufreq_pdev;
static LIST_HEAD(dvfs_info_list); static LIST_HEAD(dvfs_info_list);
static struct mtk_cpu_dvfs_info *mtk_cpu_dvfs_info_lookup(int cpu) static struct mtk_cpu_dvfs_info *mtk_cpu_dvfs_info_lookup(int cpu)
@@ -546,7 +548,6 @@ static int __init mtk_cpufreq_driver_init(void)
{ {
struct device_node *np; struct device_node *np;
const struct of_device_id *match; const struct of_device_id *match;
struct platform_device *pdev;
int err; int err;
np = of_find_node_by_path("/"); np = of_find_node_by_path("/");
@@ -570,11 +571,11 @@ static int __init mtk_cpufreq_driver_init(void)
* and the device registration codes are put here to handle defer * and the device registration codes are put here to handle defer
* probing. * probing.
*/ */
pdev = platform_device_register_simple("mtk-cpufreq", -1, NULL, 0); cpufreq_pdev = platform_device_register_simple("mtk-cpufreq", -1, NULL, 0);
if (IS_ERR(pdev)) { if (IS_ERR(cpufreq_pdev)) {
pr_err("failed to register mtk-cpufreq platform device\n"); pr_err("failed to register mtk-cpufreq platform device\n");
platform_driver_unregister(&mtk_cpufreq_platdrv); platform_driver_unregister(&mtk_cpufreq_platdrv);
return PTR_ERR(pdev); return PTR_ERR(cpufreq_pdev);
} }
return 0; return 0;
@@ -583,6 +584,7 @@ module_init(mtk_cpufreq_driver_init)
static void __exit mtk_cpufreq_driver_exit(void) static void __exit mtk_cpufreq_driver_exit(void)
{ {
platform_device_unregister(cpufreq_pdev);
platform_driver_unregister(&mtk_cpufreq_platdrv); platform_driver_unregister(&mtk_cpufreq_platdrv);
} }
module_exit(mtk_cpufreq_driver_exit) module_exit(mtk_cpufreq_driver_exit)