blob: 04348781ad79335545b8d79a470c05ab940c12c7 [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
Eric Miao40298132010-11-22 10:49:55 +080017void clk_dummy_enable(struct clk *);
18void clk_dummy_disable(struct clk *);
19
20extern const struct clkops clk_dummy_ops;
21extern struct clk clk_dummy;
22
Russell King8c3abc72008-11-08 20:25:21 +000023#define INIT_CLKREG(_clk,_devname,_conname) \
Russell Kinga6dba202007-08-20 10:18:02 +010024 { \
Russell King8c3abc72008-11-08 20:25:21 +000025 .clk = _clk, \
26 .dev_id = _devname, \
27 .con_id = _conname, \
28 }
29
Russell King8c3abc72008-11-08 20:25:21 +000030#define DEFINE_CK(_name, _cken, _ops) \
31struct clk clk_##_name = { \
Russell Kinga6dba202007-08-20 10:18:02 +010032 .ops = _ops, \
33 .cken = CKEN_##_cken, \
34 }
35
Russell King8c3abc72008-11-08 20:25:21 +000036#define DEFINE_CLK(_name, _ops, _rate, _delay) \
37struct clk clk_##_name = { \
38 .ops = _ops, \
39 .rate = _rate, \
Ian Moltoned847782008-07-08 10:32:08 +010040 .delay = _delay, \
41 }
42
Eric Miao40298132010-11-22 10:49:55 +080043#define DEFINE_PXA2_CKEN(_name, _cken, _rate, _delay) \
Eric Miao2e8581e2010-11-22 09:41:39 +080044struct clk clk_##_name = { \
Eric Miao40298132010-11-22 10:49:55 +080045 .ops = &clk_pxa2xx_cken_ops, \
Eric Miao2e8581e2010-11-22 09:41:39 +080046 .rate = _rate, \
47 .cken = CKEN_##_cken, \
48 .delay = _delay, \
49 }
50
Eric Miao40298132010-11-22 10:49:55 +080051extern const struct clkops clk_pxa2xx_cken_ops;
Russell Kinga6dba202007-08-20 10:18:02 +010052
Eric Miao40298132010-11-22 10:49:55 +080053void clk_pxa2xx_cken_enable(struct clk *clk);
54void clk_pxa2xx_cken_disable(struct clk *clk);
Russell Kinga6dba202007-08-20 10:18:02 +010055
eric miao7a2c5cb2008-02-19 11:13:31 +080056#ifdef CONFIG_PXA3xx
Russell King8c3abc72008-11-08 20:25:21 +000057#define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay) \
58struct clk clk_##_name = { \
eric miao7a2c5cb2008-02-19 11:13:31 +080059 .ops = &clk_pxa3xx_cken_ops, \
60 .rate = _rate, \
61 .cken = CKEN_##_cken, \
62 .delay = _delay, \
63 }
64
eric miao7a2c5cb2008-02-19 11:13:31 +080065extern const struct clkops clk_pxa3xx_cken_ops;
Eric Miao40298132010-11-22 10:49:55 +080066extern const struct clkops clk_pxa3xx_hsio_ops;
67extern const struct clkops clk_pxa3xx_ac97_ops;
68extern const struct clkops clk_pxa3xx_pout_ops;
69
eric miao7a2c5cb2008-02-19 11:13:31 +080070extern void clk_pxa3xx_cken_enable(struct clk *);
71extern void clk_pxa3xx_cken_disable(struct clk *);
72#endif