|
@@ -190,6 +190,7 @@ static int init_cc_resources(struct platform_device *plat_dev)
|
|
|
u64 dma_mask;
|
|
|
const struct cc_hw_data *hw_rev;
|
|
|
const struct of_device_id *dev_id;
|
|
|
+ struct clk *clk;
|
|
|
int rc = 0;
|
|
|
|
|
|
new_drvdata = devm_kzalloc(dev, sizeof(*new_drvdata), GFP_KERNEL);
|
|
@@ -219,7 +220,24 @@ static int init_cc_resources(struct platform_device *plat_dev)
|
|
|
platform_set_drvdata(plat_dev, new_drvdata);
|
|
|
new_drvdata->plat_dev = plat_dev;
|
|
|
|
|
|
- new_drvdata->clk = of_clk_get(np, 0);
|
|
|
+ clk = devm_clk_get(dev, NULL);
|
|
|
+ if (IS_ERR(clk))
|
|
|
+ switch (PTR_ERR(clk)) {
|
|
|
+ /* Clock is optional so this might be fine */
|
|
|
+ case -ENOENT:
|
|
|
+ break;
|
|
|
+
|
|
|
+ /* Clock not available, let's try again soon */
|
|
|
+ case -EPROBE_DEFER:
|
|
|
+ return -EPROBE_DEFER;
|
|
|
+
|
|
|
+ default:
|
|
|
+ dev_err(dev, "Error getting clock: %ld\n",
|
|
|
+ PTR_ERR(clk));
|
|
|
+ return PTR_ERR(clk);
|
|
|
+ }
|
|
|
+ new_drvdata->clk = clk;
|
|
|
+
|
|
|
new_drvdata->coherent = of_dma_is_coherent(np);
|
|
|
|
|
|
/* Get device resources */
|