diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-26 15:42:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-26 15:42:29 -0400 |
commit | 27953437059c64d14086196eb96f43c78caa9db3 (patch) | |
tree | 0cfd5fb21262a6db3de0c64462847b4c0c43e9df /arch/arm/mach-imx/clk.h | |
parent | 2c757fd5d1a92086f225a75a8fac7cab242d11b0 (diff) | |
parent | 3c0dec5f58b3c7b3627715126d1bf9b030a076f0 (diff) |
Merge tag 'clock' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull arm-soc clock driver changes from Olof Johansson:
"The new clock subsystem was merged in linux-3.4 without any users,
this now moves the first three platforms over to it: imx, mxs and
spear.
The series also contains the changes for the clock subsystem itself,
since Mike preferred to have it together with the platforms that
require these changes, in order to avoid interdependencies and
conflicts."
Fix up trivial conflicts in arch/arm/mach-kirkwood/common.c (code
removed in one branch, added OF support in another) and
drivers/dma/imx-sdma.c (independent changes next to each other).
* tag 'clock' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (97 commits)
clk: Fix CLK_SET_RATE_GATE flag validation in clk_set_rate().
clk: Provide dummy clk_unregister()
SPEAr: Update defconfigs
SPEAr: Add SMI NOR partition info in dts files
SPEAr: Switch to common clock framework
SPEAr: Call clk_prepare() before calling clk_enable
SPEAr: clk: Add General Purpose Timer Synthesizer clock
SPEAr: clk: Add Fractional Synthesizer clock
SPEAr: clk: Add Auxiliary Synthesizer clock
SPEAr: clk: Add VCO-PLL Synthesizer clock
SPEAr: Add DT bindings for SPEAr's timer
ARM i.MX: remove now unused clock files
ARM: i.MX6: implement clocks using common clock framework
ARM i.MX35: implement clocks using common clock framework
ARM i.MX5: implement clocks using common clock framework
ARM: Kirkwood: Replace clock gating
ARM: Orion: Audio: Add clk/clkdev support
ARM: Orion: PCIE: Add support for clk
ARM: Orion: XOR: Add support for clk
ARM: Orion: CESA: Add support for clk
...
Diffstat (limited to 'arch/arm/mach-imx/clk.h')
-rw-r--r-- | arch/arm/mach-imx/clk.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/clk.h b/arch/arm/mach-imx/clk.h new file mode 100644 index 00000000000..1bf64fe2523 --- /dev/null +++ b/arch/arm/mach-imx/clk.h | |||
@@ -0,0 +1,83 @@ | |||
1 | #ifndef __MACH_IMX_CLK_H | ||
2 | #define __MACH_IMX_CLK_H | ||
3 | |||
4 | #include <linux/spinlock.h> | ||
5 | #include <linux/clk-provider.h> | ||
6 | #include <mach/clock.h> | ||
7 | |||
8 | struct clk *imx_clk_pllv1(const char *name, const char *parent, | ||
9 | void __iomem *base); | ||
10 | |||
11 | struct clk *imx_clk_pllv2(const char *name, const char *parent, | ||
12 | void __iomem *base); | ||
13 | |||
14 | enum imx_pllv3_type { | ||
15 | IMX_PLLV3_GENERIC, | ||
16 | IMX_PLLV3_SYS, | ||
17 | IMX_PLLV3_USB, | ||
18 | IMX_PLLV3_AV, | ||
19 | IMX_PLLV3_ENET, | ||
20 | IMX_PLLV3_MLB, | ||
21 | }; | ||
22 | |||
23 | struct clk *imx_clk_pllv3(enum imx_pllv3_type type, const char *name, | ||
24 | const char *parent_name, void __iomem *base, u32 gate_mask, | ||
25 | u32 div_mask); | ||
26 | |||
27 | struct clk *clk_register_gate2(struct device *dev, const char *name, | ||
28 | const char *parent_name, unsigned long flags, | ||
29 | void __iomem *reg, u8 bit_idx, | ||
30 | u8 clk_gate_flags, spinlock_t *lock); | ||
31 | |||
32 | static inline struct clk *imx_clk_gate2(const char *name, const char *parent, | ||
33 | void __iomem *reg, u8 shift) | ||
34 | { | ||
35 | return clk_register_gate2(NULL, name, parent, CLK_SET_RATE_PARENT, reg, | ||
36 | shift, 0, &imx_ccm_lock); | ||
37 | } | ||
38 | |||
39 | struct clk *imx_clk_pfd(const char *name, const char *parent_name, | ||
40 | void __iomem *reg, u8 idx); | ||
41 | |||
42 | struct clk *imx_clk_busy_divider(const char *name, const char *parent_name, | ||
43 | void __iomem *reg, u8 shift, u8 width, | ||
44 | void __iomem *busy_reg, u8 busy_shift); | ||
45 | |||
46 | struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift, | ||
47 | u8 width, void __iomem *busy_reg, u8 busy_shift, | ||
48 | const char **parent_names, int num_parents); | ||
49 | |||
50 | static inline struct clk *imx_clk_fixed(const char *name, int rate) | ||
51 | { | ||
52 | return clk_register_fixed_rate(NULL, name, NULL, CLK_IS_ROOT, rate); | ||
53 | } | ||
54 | |||
55 | static inline struct clk *imx_clk_divider(const char *name, const char *parent, | ||
56 | void __iomem *reg, u8 shift, u8 width) | ||
57 | { | ||
58 | return clk_register_divider(NULL, name, parent, CLK_SET_RATE_PARENT, | ||
59 | reg, shift, width, 0, &imx_ccm_lock); | ||
60 | } | ||
61 | |||
62 | static inline struct clk *imx_clk_gate(const char *name, const char *parent, | ||
63 | void __iomem *reg, u8 shift) | ||
64 | { | ||
65 | return clk_register_gate(NULL, name, parent, CLK_SET_RATE_PARENT, reg, | ||
66 | shift, 0, &imx_ccm_lock); | ||
67 | } | ||
68 | |||
69 | static inline struct clk *imx_clk_mux(const char *name, void __iomem *reg, | ||
70 | u8 shift, u8 width, const char **parents, int num_parents) | ||
71 | { | ||
72 | return clk_register_mux(NULL, name, parents, num_parents, 0, reg, shift, | ||
73 | width, 0, &imx_ccm_lock); | ||
74 | } | ||
75 | |||
76 | static inline struct clk *imx_clk_fixed_factor(const char *name, | ||
77 | const char *parent, unsigned int mult, unsigned int div) | ||
78 | { | ||
79 | return clk_register_fixed_factor(NULL, name, parent, | ||
80 | CLK_SET_RATE_PARENT, mult, div); | ||
81 | } | ||
82 | |||
83 | #endif | ||