diff options
| author | Thierry Reding <treding@nvidia.com> | 2015-01-21 11:13:00 -0500 |
|---|---|---|
| committer | Michael Turquette <mturquette@linaro.org> | 2015-01-24 19:56:55 -0500 |
| commit | 4e88f3de89fbb7b5a5a0aca20376b276d26732ac (patch) | |
| tree | 010afff654b43fd252c9b1482b034781a3cbfaa1 /include/linux | |
| parent | 97bf6af1f928216fd6c5a66e8a57bfa95a659672 (diff) | |
clk: Introduce clk_has_parent()
This new function is similar to clk_set_parent(), except that it doesn't
actually change the parent. It merely checks that the given parent clock
can be a parent for the given clock.
A situation where this is useful is to check that a particular setup is
valid before switching to it. One specific use-case for this is atomic
modesetting in the DRM framework where setting a mode is divided into a
check phase where a given configuration is validated before applying
changes to the hardware.
Cc: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Michael Turquette <mturquette@linaro.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/clk.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/clk.h b/include/linux/clk.h index c7f258a81761..ba7e9eda4347 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h | |||
| @@ -302,6 +302,18 @@ long clk_round_rate(struct clk *clk, unsigned long rate); | |||
| 302 | int clk_set_rate(struct clk *clk, unsigned long rate); | 302 | int clk_set_rate(struct clk *clk, unsigned long rate); |
| 303 | 303 | ||
| 304 | /** | 304 | /** |
| 305 | * clk_has_parent - check if a clock is a possible parent for another | ||
| 306 | * @clk: clock source | ||
| 307 | * @parent: parent clock source | ||
| 308 | * | ||
| 309 | * This function can be used in drivers that need to check that a clock can be | ||
| 310 | * the parent of another without actually changing the parent. | ||
| 311 | * | ||
| 312 | * Returns true if @parent is a possible parent for @clk, false otherwise. | ||
| 313 | */ | ||
| 314 | bool clk_has_parent(struct clk *clk, struct clk *parent); | ||
| 315 | |||
| 316 | /** | ||
| 305 | * clk_set_parent - set the parent clock source for this clock | 317 | * clk_set_parent - set the parent clock source for this clock |
| 306 | * @clk: clock source | 318 | * @clk: clock source |
| 307 | * @parent: parent clock source | 319 | * @parent: parent clock source |
| @@ -374,6 +386,11 @@ static inline long clk_round_rate(struct clk *clk, unsigned long rate) | |||
| 374 | return 0; | 386 | return 0; |
| 375 | } | 387 | } |
| 376 | 388 | ||
| 389 | static inline bool clk_has_parent(struct clk *clk, struct clk *parent) | ||
| 390 | { | ||
| 391 | return true; | ||
| 392 | } | ||
| 393 | |||
| 377 | static inline int clk_set_parent(struct clk *clk, struct clk *parent) | 394 | static inline int clk_set_parent(struct clk *clk, struct clk *parent) |
| 378 | { | 395 | { |
| 379 | return 0; | 396 | return 0; |
