clock.h 870 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. struct clk;
  2. struct clkops {
  3. void (*enable)(struct clk *);
  4. void (*disable)(struct clk *);
  5. unsigned long (*getrate)(struct clk *);
  6. };
  7. struct clk {
  8. struct list_head node;
  9. const char *name;
  10. struct device *dev;
  11. const struct clkops *ops;
  12. unsigned long rate;
  13. unsigned int cken;
  14. unsigned int delay;
  15. unsigned int enabled;
  16. };
  17. #define INIT_CKEN(_name, _cken, _rate, _delay, _dev) \
  18. { \
  19. .name = _name, \
  20. .dev = _dev, \
  21. .ops = &clk_cken_ops, \
  22. .rate = _rate, \
  23. .cken = CKEN_##_cken, \
  24. .delay = _delay, \
  25. }
  26. #define INIT_CK(_name, _cken, _ops, _dev) \
  27. { \
  28. .name = _name, \
  29. .dev = _dev, \
  30. .ops = _ops, \
  31. .cken = CKEN_##_cken, \
  32. }
  33. extern const struct clkops clk_cken_ops;
  34. void clk_cken_enable(struct clk *clk);
  35. void clk_cken_disable(struct clk *clk);
  36. void clks_register(struct clk *clks, size_t num);