On 22.11.2021 15:42, Sam Protsenko wrote: > Some clocks must be registered before init calls. For example MCT clock > (from CMU_PERI) is needed for MCT timer driver, which is registered > with TIMER_OF_DECLARE(). By the time we get to core_initcall() used for > clk-exynos850 platform driver init, it's already too late. Inability to > get "mct" clock in MCT driver leads to kernel panic, as functions > registered with *_OF_DECLARE() can't do deferred calls. MCT timer driver > can't be fixed either, as it's acting as a clock source and it's > essential to register it in start_kernel() -> time_init(). > > Let's register CMU_PERI clocks early, using CLK_OF_DECLARE(). CMU_TOP > generates clocks needed for CMU_PERI, but it's already registered early. > > While at it, let's cleanup the code a bit, by extracting everything > related to CMU initialization and registration to the separate function. Applied, thanks.