aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/clk/clk-scpi.c13
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
37static struct platform_device *cpufreq_dev;
38
37static unsigned long scpi_clk_recalc_rate(struct clk_hw *hw, 39static 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