blob: f09ecb1a379e4255a26ad5369dfd106e16c448f1 [file] [log] [blame]
Russell King8c3abc72008-11-08 20:25:21 +00001#include <asm/clkdev.h>
Russell Kinga6dba202007-08-20 10:18:02 +01002
3struct clkops {
4 void (*enable)(struct clk *);
5 void (*disable)(struct clk *);
6 unsigned long (*getrate)(struct clk *);
7};
8
9struct clk {
Russell Kinga6dba202007-08-20 10:18:02 +010010 const struct clkops *ops;
11 unsigned long rate;
12 unsigned int cken;
13 unsigned int delay;
14 unsigned int enabled;
15};
16
Russell King8c3abc72008-11-08 20:25:21 +000017#define INIT_CLKREG(_clk,_devname,_conname) \
Russell Kinga6dba202007-08-20 10:18:02 +010018 { \
Russell King8c3abc72008-11-08 20:25:21 +000019 .clk = _clk, \
20 .dev_id = _devname, \
21 .con_id = _conname, \
22 }
23
Russell King8c3abc72008-11-08 20:25:21 +000024#define DEFINE_CK(_name, _cken, _ops) \
25struct clk clk_##_name = { \
Russell Kinga6dba202007-08-20 10:18:02 +010026 .ops = _ops, \
27 .cken = CKEN_##_cken, \
28 }
29
Russell King8c3abc72008-11-08 20:25:21 +000030#define DEFINE_CLK(_name, _ops, _rate, _delay) \
31struct clk clk_##_name = { \
32 .ops = _ops, \
33 .rate = _rate, \
Ian Moltoned847782008-07-08 10:32:08 +010034 .delay = _delay, \
35 }
36
Eric Miao2e8581e2010-11-22 09:41:39 +080037#define DEFINE_CKEN(_name, _cken, _rate, _delay) \
38struct clk clk_##_name = { \
39 .ops = &clk_cken_ops, \
40 .rate = _rate, \
41 .cken = CKEN_##_cken, \
42 .delay = _delay, \
43 }
44
Russell Kinga6dba202007-08-20 10:18:02 +010045extern const struct clkops clk_cken_ops;
46
47void clk_cken_enable(struct clk *clk);
48void clk_cken_disable(struct clk *clk);
49
eric miao7a2c5cb2008-02-19 11:13:31 +080050#ifdef CONFIG_PXA3xx
Russell King8c3abc72008-11-08 20:25:21 +000051#define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay) \
52struct clk clk_##_name = { \
eric miao7a2c5cb2008-02-19 11:13:31 +080053 .ops = &clk_pxa3xx_cken_ops, \
54 .rate = _rate, \
55 .cken = CKEN_##_cken, \
56 .delay = _delay, \
57 }
58
eric miao7a2c5cb2008-02-19 11:13:31 +080059extern const struct clkops clk_pxa3xx_cken_ops;
60extern void clk_pxa3xx_cken_enable(struct clk *);
61extern void clk_pxa3xx_cken_disable(struct clk *);
62#endif
63