clk: return probe defer when DT clock not yet ready
At probe time, a clock device may not be ready when some other device wants to use it. This patch lets the functions clk_get/devm_clk_get return a probe defer when the clock is defined in the DT but not yet available. Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Tested-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mike Turquette <mturquette@linaro.org>
This commit is contained in:
parent
86bcfa2e87
commit
a34cd4666f
2 changed files with 3 additions and 1 deletions
|
@ -2466,7 +2466,7 @@ EXPORT_SYMBOL_GPL(of_clk_del_provider);
|
|||
struct clk *__of_clk_get_from_provider(struct of_phandle_args *clkspec)
|
||||
{
|
||||
struct of_clk_provider *provider;
|
||||
struct clk *clk = ERR_PTR(-ENOENT);
|
||||
struct clk *clk = ERR_PTR(-EPROBE_DEFER);
|
||||
|
||||
/* Check if we have such a provider in our array */
|
||||
list_for_each_entry(provider, &of_clk_providers, link) {
|
||||
|
|
|
@ -167,6 +167,8 @@ struct clk *clk_get(struct device *dev, const char *con_id)
|
|||
clk = of_clk_get_by_name(dev->of_node, con_id);
|
||||
if (!IS_ERR(clk))
|
||||
return clk;
|
||||
if (PTR_ERR(clk) == -EPROBE_DEFER)
|
||||
return clk;
|
||||
}
|
||||
|
||||
return clk_get_sys(dev_id, con_id);
|
||||
|
|
Loading…
Reference in a new issue