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); |