Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jean-Francois Moine and committed by
Mike Turquette
a34cd466 86bcfa2e

+3 -1
+1 -1
drivers/clk/clk.c
··· 2466 2466 struct clk *__of_clk_get_from_provider(struct of_phandle_args *clkspec) 2467 2467 { 2468 2468 struct of_clk_provider *provider; 2469 - struct clk *clk = ERR_PTR(-ENOENT); 2469 + struct clk *clk = ERR_PTR(-EPROBE_DEFER); 2470 2470 2471 2471 /* Check if we have such a provider in our array */ 2472 2472 list_for_each_entry(provider, &of_clk_providers, link) {
+2
drivers/clk/clkdev.c
··· 167 167 clk = of_clk_get_by_name(dev->of_node, con_id); 168 168 if (!IS_ERR(clk)) 169 169 return clk; 170 + if (PTR_ERR(clk) == -EPROBE_DEFER) 171 + return clk; 170 172 } 171 173 172 174 return clk_get_sys(dev_id, con_id);