Merge branch 'for-next' of git://git.o-hand.com/linux-mfd
[linux-2.6] / arch / powerpc / kernel / clock.c
1 /*
2  * Dummy clk implementations for powerpc.
3  * These need to be overridden in platform code.
4  */
5
6 #include <linux/clk.h>
7 #include <linux/err.h>
8 #include <linux/errno.h>
9 #include <linux/module.h>
10 #include <asm/clk_interface.h>
11
12 struct clk_interface clk_functions;
13
14 struct clk *clk_get(struct device *dev, const char *id)
15 {
16         if (clk_functions.clk_get)
17                 return clk_functions.clk_get(dev, id);
18         return ERR_PTR(-ENOSYS);
19 }
20 EXPORT_SYMBOL(clk_get);
21
22 void clk_put(struct clk *clk)
23 {
24         if (clk_functions.clk_put)
25                 clk_functions.clk_put(clk);
26 }
27 EXPORT_SYMBOL(clk_put);
28
29 int clk_enable(struct clk *clk)
30 {
31         if (clk_functions.clk_enable)
32                 return clk_functions.clk_enable(clk);
33         return -ENOSYS;
34 }
35 EXPORT_SYMBOL(clk_enable);
36
37 void clk_disable(struct clk *clk)
38 {
39         if (clk_functions.clk_disable)
40                 clk_functions.clk_disable(clk);
41 }
42 EXPORT_SYMBOL(clk_disable);
43
44 unsigned long clk_get_rate(struct clk *clk)
45 {
46         if (clk_functions.clk_get_rate)
47                 return clk_functions.clk_get_rate(clk);
48         return 0;
49 }
50 EXPORT_SYMBOL(clk_get_rate);
51
52 long clk_round_rate(struct clk *clk, unsigned long rate)
53 {
54         if (clk_functions.clk_round_rate)
55                 return clk_functions.clk_round_rate(clk, rate);
56         return -ENOSYS;
57 }
58 EXPORT_SYMBOL(clk_round_rate);
59
60 int clk_set_rate(struct clk *clk, unsigned long rate)
61 {
62         if (clk_functions.clk_set_rate)
63                 return clk_functions.clk_set_rate(clk, rate);
64         return -ENOSYS;
65 }
66 EXPORT_SYMBOL(clk_set_rate);
67
68 struct clk *clk_get_parent(struct clk *clk)
69 {
70         if (clk_functions.clk_get_parent)
71                 return clk_functions.clk_get_parent(clk);
72         return ERR_PTR(-ENOSYS);
73 }
74 EXPORT_SYMBOL(clk_get_parent);
75
76 int clk_set_parent(struct clk *clk, struct clk *parent)
77 {
78         if (clk_functions.clk_set_parent)
79                 return clk_functions.clk_set_parent(clk, parent);
80         return -ENOSYS;
81 }
82 EXPORT_SYMBOL(clk_set_parent);