diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-01-03 18:34:20 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-03 18:34:20 +0000 |
commit | f47fc0ac7ead5ed91a11fcabfad6ee44c17ee934 (patch) | |
tree | 463b2d165afb2221d3c9f78f64ce0abb906c9814 | |
parent | 78ff18a412da24a4b79c6a97000ef5e467e813da (diff) |
[ARM] Add additional documentation to the clock source framework
It seems that there's some confusion over how the clock source
framework should be used. Add some additional comments to explain
the ambiguous areas.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | include/asm-arm/hardware/clock.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/asm-arm/hardware/clock.h b/include/asm-arm/hardware/clock.h index 19da861e523d..5c5689409a4b 100644 --- a/include/asm-arm/hardware/clock.h +++ b/include/asm-arm/hardware/clock.h @@ -33,6 +33,8 @@ struct clk; * uses @dev and @id to determine the clock consumer, and thereby * the clock producer. (IOW, @id may be identical strings, but * clk_get may return different clock producers depending on @dev.) + * + * Drivers must assume that the clock source is not enabled. */ struct clk *clk_get(struct device *dev, const char *id); @@ -49,6 +51,14 @@ int clk_enable(struct clk *clk); /** * clk_disable - inform the system when the clock source is no longer required. * @clk: clock source + * + * Inform the system that a clock source is no longer required by + * a driver and may be shut down. + * + * Implementation detail: if the clock source is shared between + * multiple drivers, clk_enable() calls must be balanced by the + * same number of clk_disable() calls for the clock source to be + * disabled. */ void clk_disable(struct clk *clk); @@ -76,6 +86,10 @@ unsigned long clk_get_rate(struct clk *clk); /** * clk_put - "free" the clock source * @clk: clock source + * + * Note: drivers must ensure that all clk_enable calls made on this + * clock source are balanced by clk_disable calls prior to calling + * this function. */ void clk_put(struct clk *clk); |