|
@@ -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,
|