drivers: clk: Fix using assigned-clocks in the node of the clock it sets up
authorJean-Jacques Hiblot <jjhiblot@ti.com>
Tue, 22 Oct 2019 12:00:06 +0000 (14:00 +0200)
committerLukasz Majewski <lukma@denx.de>
Tue, 22 Oct 2019 14:14:05 +0000 (16:14 +0200)
commitfd1ba2965244e7628ac3aa539e51653490e1b4fe
treefef3571441f22b016b6601e73b447a82f18811b0
parentdd2e0ce2a408c527b1146a9159b68565596cef56
drivers: clk: Fix using assigned-clocks in the node of the clock it sets up

This fixes the case where assigned-clocks is used to define a clock
defaults inside this same clock's node. This is used sometimes to setup a
default parents and/or rate for a clock.

example:
muxed_clock: muxed_clock {
clocks = <&clk_provider 0>, <&clk_provider 1>;
#clock-cells = <0>;
assigned-clocks = <&muxed_clock>;
assigned-clock-parents = <&clk_provider 1>;
};

It doesn't work in u-boot because the assigned-clocks are setup *before*
the clock is probed. (clk_set_parent() will likely crash or fail if called
before the device probe function)
Making it work by handling "assigned-clocks" in 2 steps: first before the
clk device is probed, and then after the clk device is probed.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
drivers/clk/clk-uclass.c
drivers/core/device.c
include/clk.h