]> www.infradead.org Git - linux.git/commitdiff
clk: samsung: Extract clocks registration to common function
authorSam Protsenko <semen.protsenko@linaro.org>
Tue, 7 Mar 2023 00:24:21 +0000 (18:24 -0600)
committerKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Tue, 7 Mar 2023 07:38:54 +0000 (08:38 +0100)
It might be useful to have a separate clocks registration function, so
it can be called from different users. Extract that common code from
samsung_cmu_register_one() to samsung_cmu_register_clocks(). Also make
that new function global as it's going to be used in other modules
further.

Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Link: https://lore.kernel.org/r/20230307002423.24454-2-semen.protsenko@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
drivers/clk/samsung/clk.c
drivers/clk/samsung/clk.h

index 912dfbe5ac2038a14c5622200ba5f1b0767bf751..b6701905f25461934d60173e43756d96ab44ea47 100644 (file)
@@ -335,6 +335,33 @@ void samsung_clk_extended_sleep_init(void __iomem *reg_base,
 }
 #endif
 
+/**
+ * samsung_cmu_register_clocks() - Register all clocks provided in CMU object
+ * @ctx: Clock provider object
+ * @cmu: CMU object with clocks to register
+ */
+void __init samsung_cmu_register_clocks(struct samsung_clk_provider *ctx,
+                                       const struct samsung_cmu_info *cmu)
+{
+       if (cmu->pll_clks)
+               samsung_clk_register_pll(ctx, cmu->pll_clks, cmu->nr_pll_clks);
+       if (cmu->mux_clks)
+               samsung_clk_register_mux(ctx, cmu->mux_clks, cmu->nr_mux_clks);
+       if (cmu->div_clks)
+               samsung_clk_register_div(ctx, cmu->div_clks, cmu->nr_div_clks);
+       if (cmu->gate_clks)
+               samsung_clk_register_gate(ctx, cmu->gate_clks,
+                                         cmu->nr_gate_clks);
+       if (cmu->fixed_clks)
+               samsung_clk_register_fixed_rate(ctx, cmu->fixed_clks,
+                                               cmu->nr_fixed_clks);
+       if (cmu->fixed_factor_clks)
+               samsung_clk_register_fixed_factor(ctx, cmu->fixed_factor_clks,
+                                                 cmu->nr_fixed_factor_clks);
+       if (cmu->cpu_clks)
+               samsung_clk_register_cpu(ctx, cmu->cpu_clks, cmu->nr_cpu_clks);
+}
+
 /*
  * Common function which registers plls, muxes, dividers and gates
  * for each CMU. It also add CMU register list to register cache.
@@ -353,29 +380,12 @@ struct samsung_clk_provider * __init samsung_cmu_register_one(
        }
 
        ctx = samsung_clk_init(NULL, reg_base, cmu->nr_clk_ids);
+       samsung_cmu_register_clocks(ctx, cmu);
 
-       if (cmu->pll_clks)
-               samsung_clk_register_pll(ctx, cmu->pll_clks, cmu->nr_pll_clks);
-       if (cmu->mux_clks)
-               samsung_clk_register_mux(ctx, cmu->mux_clks,
-                       cmu->nr_mux_clks);
-       if (cmu->div_clks)
-               samsung_clk_register_div(ctx, cmu->div_clks, cmu->nr_div_clks);
-       if (cmu->gate_clks)
-               samsung_clk_register_gate(ctx, cmu->gate_clks,
-                       cmu->nr_gate_clks);
-       if (cmu->fixed_clks)
-               samsung_clk_register_fixed_rate(ctx, cmu->fixed_clks,
-                       cmu->nr_fixed_clks);
-       if (cmu->fixed_factor_clks)
-               samsung_clk_register_fixed_factor(ctx, cmu->fixed_factor_clks,
-                       cmu->nr_fixed_factor_clks);
        if (cmu->clk_regs)
                samsung_clk_extended_sleep_init(reg_base,
                        cmu->clk_regs, cmu->nr_clk_regs,
                        cmu->suspend_regs, cmu->nr_suspend_regs);
-       if (cmu->cpu_clks)
-               samsung_clk_register_cpu(ctx, cmu->cpu_clks, cmu->nr_cpu_clks);
 
        samsung_clk_of_add_provider(np, ctx);
 
index 3fd6c0868921abc3d6c6c17db1fda60e145cb2f1..ab9c3d7a25b3d6514afda12a1cf722d44daf4df4 100644 (file)
@@ -377,6 +377,8 @@ void samsung_clk_register_pll(struct samsung_clk_provider *ctx,
 void samsung_clk_register_cpu(struct samsung_clk_provider *ctx,
                const struct samsung_cpu_clock *list, unsigned int nr_clk);
 
+void samsung_cmu_register_clocks(struct samsung_clk_provider *ctx,
+                                const struct samsung_cmu_info *cmu);
 struct samsung_clk_provider *samsung_cmu_register_one(
                        struct device_node *,
                        const struct samsung_cmu_info *);