2010-11-17 12:04:33 +03:00
# include <linux/clkdev.h>
2011-04-23 00:03:11 +04:00
# include <linux/syscore_ops.h>
2007-08-20 13:18:02 +04:00
struct clkops {
void ( * enable ) ( struct clk * ) ;
void ( * disable ) ( struct clk * ) ;
unsigned long ( * getrate ) ( struct clk * ) ;
2011-04-08 16:15:38 +04:00
int ( * setrate ) ( struct clk * , unsigned long ) ;
2007-08-20 13:18:02 +04:00
} ;
struct clk {
const struct clkops * ops ;
unsigned long rate ;
unsigned int cken ;
unsigned int delay ;
unsigned int enabled ;
} ;
2010-11-22 05:49:55 +03:00
void clk_dummy_enable ( struct clk * ) ;
void clk_dummy_disable ( struct clk * ) ;
extern const struct clkops clk_dummy_ops ;
extern struct clk clk_dummy ;
2008-11-08 23:25:21 +03:00
# define INIT_CLKREG(_clk,_devname,_conname) \
2007-08-20 13:18:02 +04:00
{ \
2008-11-08 23:25:21 +03:00
. clk = _clk , \
. dev_id = _devname , \
. con_id = _conname , \
}
# define DEFINE_CK(_name, _cken, _ops) \
struct clk clk_ # # _name = { \
2007-08-20 13:18:02 +04:00
. ops = _ops , \
. cken = CKEN_ # # _cken , \
}
2008-11-08 23:25:21 +03:00
# define DEFINE_CLK(_name, _ops, _rate, _delay) \
struct clk clk_ # # _name = { \
. ops = _ops , \
. rate = _rate , \
2008-07-08 13:32:08 +04:00
. delay = _delay , \
}
2010-11-22 05:49:55 +03:00
# define DEFINE_PXA2_CKEN(_name, _cken, _rate, _delay) \
2008-11-08 23:25:21 +03:00
struct clk clk_ # # _name = { \
2010-11-22 05:49:55 +03:00
. ops = & clk_pxa2xx_cken_ops , \
2008-02-19 06:13:31 +03:00
. rate = _rate , \
. cken = CKEN_ # # _cken , \
. delay = _delay , \
}
2010-11-22 05:49:55 +03:00
extern const struct clkops clk_pxa2xx_cken_ops ;
2007-08-20 13:18:02 +04:00
2010-11-22 05:49:55 +03:00
void clk_pxa2xx_cken_enable ( struct clk * clk ) ;
void clk_pxa2xx_cken_disable ( struct clk * clk ) ;
2007-08-20 13:18:02 +04:00
2011-04-23 00:03:11 +04:00
extern struct syscore_ops pxa2xx_clock_syscore_ops ;
2010-11-23 12:00:03 +03:00
2010-11-24 06:54:19 +03:00
# if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x)
2008-11-08 23:25:21 +03:00
# define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay) \
struct clk clk_ # # _name = { \
2008-02-19 06:13:31 +03:00
. ops = & clk_pxa3xx_cken_ops , \
. rate = _rate , \
. cken = CKEN_ # # _cken , \
. delay = _delay , \
}
extern const struct clkops clk_pxa3xx_cken_ops ;
2010-11-22 05:49:55 +03:00
extern const struct clkops clk_pxa3xx_hsio_ops ;
extern const struct clkops clk_pxa3xx_ac97_ops ;
extern const struct clkops clk_pxa3xx_pout_ops ;
2010-11-29 17:56:00 +03:00
extern const struct clkops clk_pxa3xx_smemc_ops ;
2010-11-22 05:49:55 +03:00
2008-02-19 06:13:31 +03:00
extern void clk_pxa3xx_cken_enable ( struct clk * ) ;
extern void clk_pxa3xx_cken_disable ( struct clk * ) ;
2011-04-23 00:03:11 +04:00
extern struct syscore_ops pxa3xx_clock_syscore_ops ;
2008-02-19 06:13:31 +03:00
# endif