Quoting Serge Semin (2022-09-29 15:54:02)
> In accordance with the way the MIPS platform is normally design there are
> only six clock sources which need to be available on the kernel start in
> order to one end up booting correctly:
> + CPU PLL: needed by the r4k and MIPS GIC timer drivers. The former one is
> initialized by the arch code, while the later one is implemented in the
> mips-gic-timer.c driver as the OF-declared timer.
> + PCIe PLL: required as a parental clock source for the APB/timer domains.
> + APB clock: needed in order to access all the SoC CSRs at least for the
> timer OF-declared drivers.
> + APB Timer{0-2} clocks: these are the DW APB timers which drivers
> dw_apb_timer_of.c are implemented as the OF-declared timers.
>
> So as long as the clocks above are available early the kernel will
> normally work. Let's convert the Baikal-T1 CCU drivers to the platform
> device drivers keeping that in mind.
>
> Generally speaking the conversion isn't that complicated since the driver
> infrastructure has been designed as flexible enough for that. First we
> need to add a new PLL/Divider clock features flag which indicates the
> corresponding clock source as a basic one and that clock sources will be
> available on the kernel early boot stages. Second the internal PLL/Divider
> descriptors need to be initialized with -EPROBE_DEFER value as the
> corresponding clock source is unavailable at the early stages. They will
> be allocated and initialized on the Baikal-T1 clock platform driver probe
> procedure. Finally the already available PLL/Divider init functions need
> to be split up into two ones: init procedure performed in the framework of
> the OF-declared clock initialization (of_clk_init()), and the probe
> procedure called by the platform devices bus driver. Note the later method
> will just continue the system clocks initialization started in the former
> one.
>
> Signed-off-by: Serge Semin <[email protected]>
>
> ---
Applied to clk-next