On Thu, Oct 01, 2020 at 06:56:46PM +0200, Krzysztof Kozlowski wrote: > The Exynos clkout driver depends on board input clock (typically XXTI or > XUSBXTI), however on Exynos4 boards these clocks were modeled as part of > SoC clocks (Exynos4 clocks driver). Obviously this is not proper, but > correcting it would break DT backward compatibility. > > Both drivers - clkout and Exynos4 clocks - register the clock providers > with CLK_OF_DECLARE/OF_DECLARE_1 so their order is fragile (in the > Makefile clkout is behind Exynos4 clock). It will work only if the > Exynos4 clock driver comes up before clkout. > > A change in DTS adding input clock reference to Exynos4 clocks input > PLL, see reverted commit eaf2d2f6895d ("ARM: dts: exynos: add input > clock to CMU in Exynos4412 Odroid"), caused probe reorder: the clkout > appeared before Exynos4 clock provider. Since clkout depends on Exynos4 > clocks and does not support deferred probe, this did not work and caused > later failure of usb3503 USB hub probe which needs clkout: > > [ 5.007442] usb3503 0-0008: unable to request refclk (-517) > > The Exynos clkout driver is not a critical/core clock so there is > actually no problem in instantiating it later, as a regular module. > This removes specific probe ordering and adds support for probe > deferral. > > Signed-off-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx> > --- > drivers/clk/samsung/clk-exynos-clkout.c | 198 +++++++++++++++++------- > 1 file changed, 141 insertions(+), 57 deletions(-) Applied (with fixes pointed out by Sylwester). Best regards, Krzysztof