diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-27 02:41:50 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-27 02:41:50 -0400 |
| commit | 18974369cfe23acf16d0fb79e0d1fba7a9a95ec0 (patch) | |
| tree | 22367984dbd4c79e9635035e268c428444c40e76 /include | |
| parent | 7e0a6fd5a4723c79cc46c9541e343092302e0e5b (diff) | |
| parent | 196a57c2749119be4732cc2b2adb8aafcb4fcb14 (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.h | 43 | ||||
| -rw-r--r-- | include/linux/clkdev.h | 7 |
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 | |||
| 14 | struct device; | 16 | struct device; |
| 15 | 17 | ||
| 16 | /* | 18 | /* |
| @@ -41,11 +43,31 @@ struct clk; | |||
| 41 | struct clk *clk_get(struct device *dev, const char *id); | 43 | struct 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 | ||
| 54 | int clk_prepare(struct clk *clk); | ||
| 55 | #else | ||
| 56 | static 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 | */ |
| 51 | int clk_enable(struct clk *clk); | 73 | int 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 | */ |
| 65 | void clk_disable(struct clk *clk); | 89 | void 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 | ||
| 102 | void clk_unprepare(struct clk *clk); | ||
| 103 | #else | ||
| 104 | static 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 | |||
| 27 | struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id, | 34 | struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id, |
| 28 | const char *dev_fmt, ...); | 35 | const char *dev_fmt, ...); |
| 29 | 36 | ||
