Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6.git] / arch / arm / mach-pxa / clock.h
1 #include <linux/clkdev.h>
2 #include <linux/syscore_ops.h>
3
4 struct clkops {
5         void                    (*enable)(struct clk *);
6         void                    (*disable)(struct clk *);
7         unsigned long           (*getrate)(struct clk *);
8 };
9
10 struct clk {
11         const struct clkops     *ops;
12         unsigned long           rate;
13         unsigned int            cken;
14         unsigned int            delay;
15         unsigned int            enabled;
16 };
17
18 void clk_dummy_enable(struct clk *);
19 void clk_dummy_disable(struct clk *);
20
21 extern const struct clkops clk_dummy_ops;
22 extern struct clk clk_dummy;
23
24 #define INIT_CLKREG(_clk,_devname,_conname)             \
25         {                                               \
26                 .clk            = _clk,                 \
27                 .dev_id         = _devname,             \
28                 .con_id         = _conname,             \
29         }
30
31 #define DEFINE_CK(_name, _cken, _ops)                   \
32 struct clk clk_##_name = {                              \
33                 .ops    = _ops,                         \
34                 .cken   = CKEN_##_cken,                 \
35         }
36
37 #define DEFINE_CLK(_name, _ops, _rate, _delay)          \
38 struct clk clk_##_name = {                              \
39                 .ops    = _ops,                         \
40                 .rate   = _rate,                        \
41                 .delay  = _delay,                       \
42         }
43
44 #define DEFINE_PXA2_CKEN(_name, _cken, _rate, _delay)   \
45 struct clk clk_##_name = {                              \
46                 .ops    = &clk_pxa2xx_cken_ops,         \
47                 .rate   = _rate,                        \
48                 .cken   = CKEN_##_cken,                 \
49                 .delay  = _delay,                       \
50         }
51
52 extern const struct clkops clk_pxa2xx_cken_ops;
53
54 void clk_pxa2xx_cken_enable(struct clk *clk);
55 void clk_pxa2xx_cken_disable(struct clk *clk);
56
57 extern struct syscore_ops pxa2xx_clock_syscore_ops;
58
59 #if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x)
60 #define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay)   \
61 struct clk clk_##_name = {                              \
62                 .ops    = &clk_pxa3xx_cken_ops,         \
63                 .rate   = _rate,                        \
64                 .cken   = CKEN_##_cken,                 \
65                 .delay  = _delay,                       \
66         }
67
68 extern const struct clkops clk_pxa3xx_cken_ops;
69 extern const struct clkops clk_pxa3xx_hsio_ops;
70 extern const struct clkops clk_pxa3xx_ac97_ops;
71 extern const struct clkops clk_pxa3xx_pout_ops;
72 extern const struct clkops clk_pxa3xx_smemc_ops;
73
74 extern void clk_pxa3xx_cken_enable(struct clk *);
75 extern void clk_pxa3xx_cken_disable(struct clk *);
76
77 extern struct syscore_ops pxa3xx_clock_syscore_ops;
78
79 #endif