diff options
| -rw-r--r-- | drivers/clk/clk-bulk.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/clk/clk-bulk.c b/drivers/clk/clk-bulk.c index 6904ed6da504..4460ac52199f 100644 --- a/drivers/clk/clk-bulk.c +++ b/drivers/clk/clk-bulk.c | |||
| @@ -19,6 +19,35 @@ | |||
| 19 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
| 20 | #include <linux/device.h> | 20 | #include <linux/device.h> |
| 21 | #include <linux/export.h> | 21 | #include <linux/export.h> |
| 22 | #include <linux/of.h> | ||
| 23 | |||
| 24 | static int __must_check of_clk_bulk_get(struct device_node *np, int num_clks, | ||
| 25 | struct clk_bulk_data *clks) | ||
| 26 | { | ||
| 27 | int ret; | ||
| 28 | int i; | ||
| 29 | |||
| 30 | for (i = 0; i < num_clks; i++) | ||
| 31 | clks[i].clk = NULL; | ||
| 32 | |||
| 33 | for (i = 0; i < num_clks; i++) { | ||
| 34 | clks[i].clk = of_clk_get(np, i); | ||
| 35 | if (IS_ERR(clks[i].clk)) { | ||
| 36 | ret = PTR_ERR(clks[i].clk); | ||
| 37 | pr_err("%pOF: Failed to get clk index: %d ret: %d\n", | ||
| 38 | np, i, ret); | ||
| 39 | clks[i].clk = NULL; | ||
| 40 | goto err; | ||
| 41 | } | ||
| 42 | } | ||
| 43 | |||
| 44 | return 0; | ||
| 45 | |||
| 46 | err: | ||
| 47 | clk_bulk_put(i, clks); | ||
| 48 | |||
| 49 | return ret; | ||
| 50 | } | ||
| 22 | 51 | ||
| 23 | void clk_bulk_put(int num_clks, struct clk_bulk_data *clks) | 52 | void clk_bulk_put(int num_clks, struct clk_bulk_data *clks) |
| 24 | { | 53 | { |
