aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/ux500/u8500_of_clk.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clk/ux500/u8500_of_clk.c')
-rw-r--r--drivers/clk/ux500/u8500_of_clk.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index bfbe3cae72d7..b9b3317bdc2f 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -15,6 +15,28 @@
15#include <linux/platform_data/clk-ux500.h> 15#include <linux/platform_data/clk-ux500.h>
16#include "clk.h" 16#include "clk.h"
17 17
18#define PRCC_SHOW(clk, base, bit) \
19 clk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit]
20
21struct clk *ux500_twocell_get(struct of_phandle_args *clkspec, void *data)
22{
23 struct clk **clk_data = data;
24 unsigned int base, bit;
25
26 if (clkspec->args_count != 2)
27 return ERR_PTR(-EINVAL);
28
29 base = clkspec->args[0];
30 bit = clkspec->args[1];
31
32 if (base != 1 && base != 2 && base != 3 && base != 5 && base != 6) {
33 pr_err("%s: invalid PRCC base %d\n", __func__, base);
34 return ERR_PTR(-EINVAL);
35 }
36
37 return PRCC_SHOW(clk_data, base, bit);
38}
39
18static const struct of_device_id u8500_clk_of_match[] = { 40static const struct of_device_id u8500_clk_of_match[] = {
19 { .compatible = "stericsson,u8500-clks", }, 41 { .compatible = "stericsson,u8500-clks", },
20 { }, 42 { },