aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-27 02:41:50 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-27 02:41:50 -0400
commit18974369cfe23acf16d0fb79e0d1fba7a9a95ec0 (patch)
tree22367984dbd4c79e9635035e268c428444c40e76 /include
parent7e0a6fd5a4723c79cc46c9541e343092302e0e5b (diff)
parent196a57c2749119be4732cc2b2adb8aafcb4fcb14 (diff)
Merge branch 'clk' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm
* 'clk' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm: ARM: 7131/1: clkdev: Add Common Macro for clk_lookup clk: spi-pl022: convert to clk_prepare()/clk_unprepare() clk: timer-sp: convert to clk_prepare()/clk_unprepare() clk: sa1111: convert to clk_prepare()/clk_unprepare() clk: mmci: convert to clk_prepare()/clk_unprepare() clk: amba-pl011: convert to clk_prepare()/clk_unprepare() clk: amba-pl010: convert to clk_prepare()/clk_unprepare() clk: amba-clcd: convert to clk_prepare()/clk_unprepare() clk: amba bus: convert to clk_prepare()/clk_unprepare() clk: provide prepare/unprepare functions
Diffstat (limited to 'include')
-rw-r--r--include/linux/clk.h43
-rw-r--r--include/linux/clkdev.h7
2 files changed, 50 insertions, 0 deletions
diff --git a/include/linux/clk.h b/include/linux/clk.h
index 1d37f42ac294..7213b52b2c0e 100644
--- a/include/linux/clk.h
+++ b/include/linux/clk.h
@@ -11,6 +11,8 @@
11#ifndef __LINUX_CLK_H 11#ifndef __LINUX_CLK_H
12#define __LINUX_CLK_H 12#define __LINUX_CLK_H
13 13
14#include <linux/kernel.h>
15
14struct device; 16struct device;
15 17
16/* 18/*
@@ -41,11 +43,31 @@ struct clk;
41struct clk *clk_get(struct device *dev, const char *id); 43struct clk *clk_get(struct device *dev, const char *id);
42 44
43/** 45/**
46 * clk_prepare - prepare a clock source
47 * @clk: clock source
48 *
49 * This prepares the clock source for use.
50 *
51 * Must not be called from within atomic context.
52 */
53#ifdef CONFIG_HAVE_CLK_PREPARE
54int clk_prepare(struct clk *clk);
55#else
56static inline int clk_prepare(struct clk *clk)
57{
58 might_sleep();
59 return 0;
60}
61#endif
62
63/**
44 * clk_enable - inform the system when the clock source should be running. 64 * clk_enable - inform the system when the clock source should be running.
45 * @clk: clock source 65 * @clk: clock source
46 * 66 *
47 * If the clock can not be enabled/disabled, this should return success. 67 * If the clock can not be enabled/disabled, this should return success.
48 * 68 *
69 * May be called from atomic contexts.
70 *
49 * Returns success (0) or negative errno. 71 * Returns success (0) or negative errno.
50 */ 72 */
51int clk_enable(struct clk *clk); 73int clk_enable(struct clk *clk);
@@ -57,6 +79,8 @@ int clk_enable(struct clk *clk);
57 * Inform the system that a clock source is no longer required by 79 * Inform the system that a clock source is no longer required by
58 * a driver and may be shut down. 80 * a driver and may be shut down.
59 * 81 *
82 * May be called from atomic contexts.
83 *
60 * Implementation detail: if the clock source is shared between 84 * Implementation detail: if the clock source is shared between
61 * multiple drivers, clk_enable() calls must be balanced by the 85 * multiple drivers, clk_enable() calls must be balanced by the
62 * same number of clk_disable() calls for the clock source to be 86 * same number of clk_disable() calls for the clock source to be
@@ -64,6 +88,25 @@ int clk_enable(struct clk *clk);
64 */ 88 */
65void clk_disable(struct clk *clk); 89void clk_disable(struct clk *clk);
66 90
91
92/**
93 * clk_unprepare - undo preparation of a clock source
94 * @clk: clock source
95 *
96 * This undoes a previously prepared clock. The caller must balance
97 * the number of prepare and unprepare calls.
98 *
99 * Must not be called from within atomic context.
100 */
101#ifdef CONFIG_HAVE_CLK_PREPARE
102void clk_unprepare(struct clk *clk);
103#else
104static inline void clk_unprepare(struct clk *clk)
105{
106 might_sleep();
107}
108#endif
109
67/** 110/**
68 * clk_get_rate - obtain the current clock rate (in Hz) for a clock source. 111 * clk_get_rate - obtain the current clock rate (in Hz) for a clock source.
69 * This is only valid once the clock source has been enabled. 112 * This is only valid once the clock source has been enabled.
diff --git a/include/linux/clkdev.h b/include/linux/clkdev.h
index 457bcb0a310a..d9a4fd028c9d 100644
--- a/include/linux/clkdev.h
+++ b/include/linux/clkdev.h
@@ -24,6 +24,13 @@ struct clk_lookup {
24 struct clk *clk; 24 struct clk *clk;
25}; 25};
26 26
27#define CLKDEV_INIT(d, n, c) \
28 { \
29 .dev_id = d, \
30 .con_id = n, \
31 .clk = c, \
32 }
33
27struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id, 34struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id,
28 const char *dev_fmt, ...); 35 const char *dev_fmt, ...);
29 36