diff options
-rw-r--r-- | drivers/clk/clk-scpi.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/clk/clk-scpi.c b/drivers/clk/clk-scpi.c index 72f0486b5de6..0b501a9fef92 100644 --- a/drivers/clk/clk-scpi.c +++ b/drivers/clk/clk-scpi.c | |||
@@ -34,6 +34,8 @@ struct scpi_clk { | |||
34 | 34 | ||
35 | #define to_scpi_clk(clk) container_of(clk, struct scpi_clk, hw) | 35 | #define to_scpi_clk(clk) container_of(clk, struct scpi_clk, hw) |
36 | 36 | ||
37 | static struct platform_device *cpufreq_dev; | ||
38 | |||
37 | static unsigned long scpi_clk_recalc_rate(struct clk_hw *hw, | 39 | static unsigned long scpi_clk_recalc_rate(struct clk_hw *hw, |
38 | unsigned long parent_rate) | 40 | unsigned long parent_rate) |
39 | { | 41 | { |
@@ -263,6 +265,11 @@ static int scpi_clocks_remove(struct platform_device *pdev) | |||
263 | struct device *dev = &pdev->dev; | 265 | struct device *dev = &pdev->dev; |
264 | struct device_node *child, *np = dev->of_node; | 266 | struct device_node *child, *np = dev->of_node; |
265 | 267 | ||
268 | if (cpufreq_dev) { | ||
269 | platform_device_unregister(cpufreq_dev); | ||
270 | cpufreq_dev = NULL; | ||
271 | } | ||
272 | |||
266 | for_each_available_child_of_node(np, child) | 273 | for_each_available_child_of_node(np, child) |
267 | of_clk_del_provider(np); | 274 | of_clk_del_provider(np); |
268 | return 0; | 275 | return 0; |
@@ -288,6 +295,12 @@ static int scpi_clocks_probe(struct platform_device *pdev) | |||
288 | return ret; | 295 | return ret; |
289 | } | 296 | } |
290 | } | 297 | } |
298 | /* Add the virtual cpufreq device */ | ||
299 | cpufreq_dev = platform_device_register_simple("scpi-cpufreq", | ||
300 | -1, NULL, 0); | ||
301 | if (!cpufreq_dev) | ||
302 | pr_warn("unable to register cpufreq device"); | ||
303 | |||
291 | return 0; | 304 | return 0; |
292 | } | 305 | } |
293 | 306 | ||