at v2.6.16-rc2 61 lines 1.2 kB view raw
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 8struct clk; 9 10struct 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 18struct 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 */ 37void arch_init_clk_ops(struct clk_ops **, int type); 38 39/* arch/sh/kernel/cpu/clock.c */ 40int clk_init(void); 41 42int __clk_enable(struct clk *); 43int clk_enable(struct clk *); 44 45void __clk_disable(struct clk *); 46void clk_disable(struct clk *); 47 48int clk_set_rate(struct clk *, unsigned long rate); 49unsigned long clk_get_rate(struct clk *); 50void clk_recalc_rate(struct clk *); 51 52struct clk *clk_get(const char *id); 53void clk_put(struct clk *); 54 55int clk_register(struct clk *); 56void clk_unregister(struct clk *); 57 58int show_clocks(struct seq_file *m); 59 60#endif /* __ASM_SH_CLOCK_H */ 61