aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/clock.h
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2008-03-18 04:22:06 -0400
committerTony Lindgren <tony@atomide.com>2008-04-14 13:29:38 -0400
commit543d93781a3c744017594d0721c4c1814a26bcce (patch)
treead0058328bb8a0c1746e451093f77691dee2980b /arch/arm/mach-omap2/clock.h
parent3d876e59c819efcc4810a5945f9d780d05e28d93 (diff)
ARM: OMAP2: Add common clock framework for 24xx and 34xx
This patch adds a common clock framework for 24xx and 34xx. Note that this patch does not add it to Makefile until in next patch. Some functions are modified from earlier 24xx clock framework code. Signed-off-by: Paul Walmsley <paul@pwsan.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/clock.h')
-rw-r--r--arch/arm/mach-omap2/clock.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
new file mode 100644
index 000000000000..d9cc99c466da
--- /dev/null
+++ b/arch/arm/mach-omap2/clock.h
@@ -0,0 +1,73 @@
1/*
2 * linux/arch/arm/mach-omap2/clock.h
3 *
4 * Copyright (C) 2005 Texas Instruments Inc.
5 * Richard Woodruff <r-woodruff2@ti.com>
6 * Created for OMAP2.
7 *
8 * Copyright (C) 2004 Nokia corporation
9 * Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>
10 * Based on clocks.h by Tony Lindgren, Gordon McNutt and RidgeRun, Inc
11 *
12 * Copyright (C) 2007 Texas Instruments, Inc.
13 * Copyright (C) 2007 Nokia Corporation
14 * Paul Walmsley
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License version 2 as
18 * published by the Free Software Foundation.
19 */
20
21#ifndef __ARCH_ARM_MACH_OMAP2_CLOCK_H
22#define __ARCH_ARM_MACH_OMAP2_CLOCK_H
23
24#include <asm/arch/clock.h>
25
26int omap2_clk_enable(struct clk *clk);
27void omap2_clk_disable(struct clk *clk);
28long omap2_clk_round_rate(struct clk *clk, unsigned long rate);
29int omap2_clk_set_rate(struct clk *clk, unsigned long rate);
30int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent);
31
32#ifdef CONFIG_OMAP_RESET_CLOCKS
33void omap2_clk_disable_unused(struct clk *clk);
34#else
35#define omap2_clk_disable_unused NULL
36#endif
37
38void omap2_clksel_recalc(struct clk *clk);
39void omap2_init_clksel_parent(struct clk *clk);
40u32 omap2_clksel_get_divisor(struct clk *clk);
41u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate,
42 u32 *new_div);
43u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val);
44u32 omap2_divisor_to_clksel(struct clk *clk, u32 div);
45void omap2_fixed_divisor_recalc(struct clk *clk);
46long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate);
47int omap2_clksel_set_rate(struct clk *clk, unsigned long rate);
48u32 omap2_get_dpll_rate(struct clk *clk);
49int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name);
50
51extern u8 cpu_mask;
52
53/* clksel_rate data common to 24xx/343x */
54static const struct clksel_rate gpt_32k_rates[] = {
55 { .div = 1, .val = 0, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE },
56 { .div = 0 }
57};
58
59static const struct clksel_rate gpt_sys_rates[] = {
60 { .div = 1, .val = 1, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE },
61 { .div = 0 }
62};
63
64static const struct clksel_rate gfx_l3_rates[] = {
65 { .div = 1, .val = 1, .flags = RATE_IN_24XX | RATE_IN_343X },
66 { .div = 2, .val = 2, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE },
67 { .div = 3, .val = 3, .flags = RATE_IN_243X | RATE_IN_343X },
68 { .div = 4, .val = 4, .flags = RATE_IN_243X | RATE_IN_343X },
69 { .div = 0 }
70};
71
72
73#endif