Merge branch 'linus' into cpus4096
[pandora-kernel.git] / arch / arm / mach-pxa / clock.h
1 struct clk;
2
3 struct clkops {
4         void                    (*enable)(struct clk *);
5         void                    (*disable)(struct clk *);
6         unsigned long           (*getrate)(struct clk *);
7 };
8
9 struct clk {
10         struct list_head        node;
11         const char              *name;
12         struct device           *dev;
13         const struct clkops     *ops;
14         unsigned long           rate;
15         unsigned int            cken;
16         unsigned int            delay;
17         unsigned int            enabled;
18         struct clk              *other;
19 };
20
21 #define INIT_CKEN(_name, _cken, _rate, _delay, _dev)    \
22         {                                               \
23                 .name   = _name,                        \
24                 .dev    = _dev,                         \
25                 .ops    = &clk_cken_ops,                \
26                 .rate   = _rate,                        \
27                 .cken   = CKEN_##_cken,                 \
28                 .delay  = _delay,                       \
29         }
30
31 #define INIT_CK(_name, _cken, _ops, _dev)               \
32         {                                               \
33                 .name   = _name,                        \
34                 .dev    = _dev,                         \
35                 .ops    = _ops,                         \
36                 .cken   = CKEN_##_cken,                 \
37         }
38
39 /*
40  * This is a placeholder to alias one clock device+name pair
41  * to another struct clk.
42  */
43 #define INIT_CKOTHER(_name, _other, _dev)               \
44         {                                               \
45                 .name   = _name,                        \
46                 .dev    = _dev,                         \
47                 .other  = _other,                       \
48         }
49
50 extern const struct clkops clk_cken_ops;
51
52 void clk_cken_enable(struct clk *clk);
53 void clk_cken_disable(struct clk *clk);
54
55 void clks_register(struct clk *clks, size_t num);