summaryrefslogtreecommitdiffstats
path: root/kernel/arch/m68k/include/asm/mcfclk.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/arch/m68k/include/asm/mcfclk.h')
-rw-r--r--kernel/arch/m68k/include/asm/mcfclk.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/kernel/arch/m68k/include/asm/mcfclk.h b/kernel/arch/m68k/include/asm/mcfclk.h
new file mode 100644
index 000000000..ea4791e3a
--- /dev/null
+++ b/kernel/arch/m68k/include/asm/mcfclk.h
@@ -0,0 +1,50 @@
+/*
+ * mcfclk.h -- coldfire specific clock structure
+ */
+
+
+#ifndef mcfclk_h
+#define mcfclk_h
+
+struct clk;
+
+struct clk_ops {
+ void (*enable)(struct clk *);
+ void (*disable)(struct clk *);
+};
+
+struct clk {
+ const char *name;
+ struct clk_ops *clk_ops;
+ unsigned long rate;
+ unsigned long enabled;
+ u8 slot;
+};
+
+extern struct clk *mcf_clks[];
+
+#ifdef MCFPM_PPMCR0
+extern struct clk_ops clk_ops0;
+#ifdef MCFPM_PPMCR1
+extern struct clk_ops clk_ops1;
+#endif /* MCFPM_PPMCR1 */
+
+#define DEFINE_CLK(clk_bank, clk_name, clk_slot, clk_rate) \
+static struct clk __clk_##clk_bank##_##clk_slot = { \
+ .name = clk_name, \
+ .clk_ops = &clk_ops##clk_bank, \
+ .rate = clk_rate, \
+ .slot = clk_slot, \
+}
+
+void __clk_init_enabled(struct clk *);
+void __clk_init_disabled(struct clk *);
+#else
+#define DEFINE_CLK(clk_ref, clk_name, clk_rate) \
+ static struct clk clk_##clk_ref = { \
+ .name = clk_name, \
+ .rate = clk_rate, \
+ }
+#endif /* MCFPM_PPMCR0 */
+
+#endif /* mcfclk_h */