Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cpufreq: tegra20: Use resource-managed API

Switch cpufreq-tegra20 driver to use resource-managed API.
This removes the need to get opp_table pointer using
dev_pm_opp_get_opp_table() in order to release OPP table that
was requested by dev_pm_opp_set_supported_hw(), making the code
a bit more straightforward.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

authored by

Dmitry Osipenko and committed by
Viresh Kumar
763ec5da 5c8fe583

+22 -23
+22 -23
drivers/cpufreq/tegra20-cpufreq.c
··· 32 32 return ret; 33 33 } 34 34 35 + static void tegra20_cpufreq_put_supported_hw(void *opp_table) 36 + { 37 + dev_pm_opp_put_supported_hw(opp_table); 38 + } 39 + 40 + static void tegra20_cpufreq_dt_unregister(void *cpufreq_dt) 41 + { 42 + platform_device_unregister(cpufreq_dt); 43 + } 44 + 35 45 static int tegra20_cpufreq_probe(struct platform_device *pdev) 36 46 { 37 47 struct platform_device *cpufreq_dt; ··· 78 68 return err; 79 69 } 80 70 71 + err = devm_add_action_or_reset(&pdev->dev, 72 + tegra20_cpufreq_put_supported_hw, 73 + opp_table); 74 + if (err) 75 + return err; 76 + 81 77 cpufreq_dt = platform_device_register_simple("cpufreq-dt", -1, NULL, 0); 82 78 err = PTR_ERR_OR_ZERO(cpufreq_dt); 83 79 if (err) { 84 80 dev_err(&pdev->dev, 85 81 "failed to create cpufreq-dt device: %d\n", err); 86 - goto err_put_supported_hw; 82 + return err; 87 83 } 88 84 89 - platform_set_drvdata(pdev, cpufreq_dt); 90 - 91 - return 0; 92 - 93 - err_put_supported_hw: 94 - dev_pm_opp_put_supported_hw(opp_table); 95 - 96 - return err; 97 - } 98 - 99 - static int tegra20_cpufreq_remove(struct platform_device *pdev) 100 - { 101 - struct platform_device *cpufreq_dt; 102 - struct opp_table *opp_table; 103 - 104 - cpufreq_dt = platform_get_drvdata(pdev); 105 - platform_device_unregister(cpufreq_dt); 106 - 107 - opp_table = dev_pm_opp_get_opp_table(get_cpu_device(0)); 108 - dev_pm_opp_put_supported_hw(opp_table); 109 - dev_pm_opp_put_opp_table(opp_table); 85 + err = devm_add_action_or_reset(&pdev->dev, 86 + tegra20_cpufreq_dt_unregister, 87 + cpufreq_dt); 88 + if (err) 89 + return err; 110 90 111 91 return 0; 112 92 } 113 93 114 94 static struct platform_driver tegra20_cpufreq_driver = { 115 95 .probe = tegra20_cpufreq_probe, 116 - .remove = tegra20_cpufreq_remove, 117 96 .driver = { 118 97 .name = "tegra20-cpufreq", 119 98 },