home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-sh / clock.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.2 KB  |  62 lines

  1. #ifndef __ASM_SH_CLOCK_H
  2. #define __ASM_SH_CLOCK_H
  3.  
  4. #include <linux/kref.h>
  5. #include <linux/list.h>
  6. #include <linux/seq_file.h>
  7.  
  8. struct clk;
  9.  
  10. struct clk_ops {
  11.     void (*init)(struct clk *clk);
  12.     void (*enable)(struct clk *clk);
  13.     void (*disable)(struct clk *clk);
  14.     void (*recalc)(struct clk *clk);
  15.     int (*set_rate)(struct clk *clk, unsigned long rate);
  16. };
  17.  
  18. struct clk {
  19.     struct list_head    node;
  20.     const char        *name;
  21.  
  22.     struct module        *owner;
  23.  
  24.     struct clk        *parent;
  25.     struct clk_ops        *ops;
  26.  
  27.     struct kref        kref;
  28.  
  29.     unsigned long        rate;
  30.     unsigned long        flags;
  31. };
  32.  
  33. #define CLK_ALWAYS_ENABLED    (1 << 0)
  34. #define CLK_RATE_PROPAGATES    (1 << 1)
  35.  
  36. /* Should be defined by processor-specific code */
  37. void arch_init_clk_ops(struct clk_ops **, int type);
  38.  
  39. /* arch/sh/kernel/cpu/clock.c */
  40. int clk_init(void);
  41.  
  42. int __clk_enable(struct clk *);
  43. int clk_enable(struct clk *);
  44.  
  45. void __clk_disable(struct clk *);
  46. void clk_disable(struct clk *);
  47.  
  48. int clk_set_rate(struct clk *, unsigned long rate);
  49. unsigned long clk_get_rate(struct clk *);
  50. void clk_recalc_rate(struct clk *);
  51.  
  52. struct clk *clk_get(const char *id);
  53. void clk_put(struct clk *);
  54.  
  55. int clk_register(struct clk *);
  56. void clk_unregister(struct clk *);
  57.  
  58. int show_clocks(struct seq_file *m);
  59.  
  60. #endif /* __ASM_SH_CLOCK_H */
  61.  
  62.