ARM: OMAP2+: omap_device: create clock alias purely from DT data
[cascardo/linux.git] / arch / arm / mach-omap2 / omap_device.c
index a7be05d..c2626f8 100644 (file)
@@ -63,7 +63,22 @@ static void _add_clkdev(struct omap_device *od, const char *clk_alias,
                return;
        }
 
-       rc = clk_add_alias(clk_alias, dev_name(&od->pdev->dev), clk_name, NULL);
+       r = clk_get_sys(NULL, clk_name);
+
+       if (IS_ERR(r) && of_have_populated_dt()) {
+               struct of_phandle_args clkspec;
+
+               clkspec.np = of_find_node_by_name(NULL, clk_name);
+
+               r = of_clk_get_from_provider(&clkspec);
+
+               rc = clk_register_clkdev(r, clk_alias,
+                                        dev_name(&od->pdev->dev));
+       } else {
+               rc = clk_add_alias(clk_alias, dev_name(&od->pdev->dev),
+                                  clk_name, NULL);
+       }
+
        if (rc) {
                if (rc == -ENODEV || rc == -ENOMEM)
                        dev_err(&od->pdev->dev,