Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux-2.6-block.git] / arch / arm / mach-omap2 / omap_device.c
index 208f115630360c36ce52891c13ec68f25f5d56f9..e920dd83e443753ccced325ce19c48c6bca398c6 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,
@@ -268,7 +283,7 @@ static int _omap_device_idle_hwmods(struct omap_device *od)
  * function returns a value different than the value the caller got
  * the last time it called this function.
  *
- * If any hwmods exist for the omap_device assoiated with @pdev,
+ * If any hwmods exist for the omap_device associated with @pdev,
  * return the context loss counter for that hwmod, otherwise return
  * zero.
  */