]> bbs.cooldavid.org Git - net-next-2.6.git/blame - arch/arm/mach-pxa/clock.h
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
[net-next-2.6.git] / arch / arm / mach-pxa / clock.h
CommitLineData
8c3abc7d 1#include <asm/clkdev.h>
a6dba20c
RK
2
3struct clkops {
4 void (*enable)(struct clk *);
5 void (*disable)(struct clk *);
6 unsigned long (*getrate)(struct clk *);
7};
8
9struct clk {
a6dba20c
RK
10 const struct clkops *ops;
11 unsigned long rate;
12 unsigned int cken;
13 unsigned int delay;
14 unsigned int enabled;
15};
16
8c3abc7d 17#define INIT_CLKREG(_clk,_devname,_conname) \
a6dba20c 18 { \
8c3abc7d
RK
19 .clk = _clk, \
20 .dev_id = _devname, \
21 .con_id = _conname, \
22 }
23
24#define DEFINE_CKEN(_name, _cken, _rate, _delay) \
25struct clk clk_##_name = { \
a6dba20c
RK
26 .ops = &clk_cken_ops, \
27 .rate = _rate, \
28 .cken = CKEN_##_cken, \
29 .delay = _delay, \
30 }
31
8c3abc7d
RK
32#define DEFINE_CK(_name, _cken, _ops) \
33struct clk clk_##_name = { \
a6dba20c
RK
34 .ops = _ops, \
35 .cken = CKEN_##_cken, \
36 }
37
8c3abc7d
RK
38#define DEFINE_CLK(_name, _ops, _rate, _delay) \
39struct clk clk_##_name = { \
40 .ops = _ops, \
41 .rate = _rate, \
ed847782
IM
42 .delay = _delay, \
43 }
44
a6dba20c
RK
45extern const struct clkops clk_cken_ops;
46
47void clk_cken_enable(struct clk *clk);
48void clk_cken_disable(struct clk *clk);
49
7a2c5cb0 50#ifdef CONFIG_PXA3xx
8c3abc7d
RK
51#define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay) \
52struct clk clk_##_name = { \
7a2c5cb0 53 .ops = &clk_pxa3xx_cken_ops, \
54 .rate = _rate, \
55 .cken = CKEN_##_cken, \
56 .delay = _delay, \
57 }
58
8c3abc7d
RK
59#define DEFINE_PXA3_CK(_name, _cken, _ops) \
60struct clk clk_##_name = { \
7a2c5cb0 61 .ops = _ops, \
62 .cken = CKEN_##_cken, \
63 }
64
65extern const struct clkops clk_pxa3xx_cken_ops;
66extern void clk_pxa3xx_cken_enable(struct clk *);
67extern void clk_pxa3xx_cken_disable(struct clk *);
68#endif
69