mirror of https://gitee.com/openkylin/linux.git
44 lines
870 B
C
44 lines
870 B
C
struct clk;
|
|
|
|
struct clkops {
|
|
void (*enable)(struct clk *);
|
|
void (*disable)(struct clk *);
|
|
unsigned long (*getrate)(struct clk *);
|
|
};
|
|
|
|
struct clk {
|
|
struct list_head node;
|
|
const char *name;
|
|
struct device *dev;
|
|
const struct clkops *ops;
|
|
unsigned long rate;
|
|
unsigned int cken;
|
|
unsigned int delay;
|
|
unsigned int enabled;
|
|
};
|
|
|
|
#define INIT_CKEN(_name, _cken, _rate, _delay, _dev) \
|
|
{ \
|
|
.name = _name, \
|
|
.dev = _dev, \
|
|
.ops = &clk_cken_ops, \
|
|
.rate = _rate, \
|
|
.cken = CKEN_##_cken, \
|
|
.delay = _delay, \
|
|
}
|
|
|
|
#define INIT_CK(_name, _cken, _ops, _dev) \
|
|
{ \
|
|
.name = _name, \
|
|
.dev = _dev, \
|
|
.ops = _ops, \
|
|
.cken = CKEN_##_cken, \
|
|
}
|
|
|
|
extern const struct clkops clk_cken_ops;
|
|
|
|
void clk_cken_enable(struct clk *clk);
|
|
void clk_cken_disable(struct clk *clk);
|
|
|
|
void clks_register(struct clk *clks, size_t num);
|