lkml.org 
[lkml]   [2023]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 4/6] clk: samsung: Extract clocks registration to common function
    Date
    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>
    ---
    Changes in v2:
    - Rebased on top of latest soc/for-next tree

    drivers/clk/samsung/clk.c | 46 ++++++++++++++++++++++++---------------
    drivers/clk/samsung/clk.h | 2 ++
    2 files changed, 30 insertions(+), 18 deletions(-)

    diff --git a/drivers/clk/samsung/clk.c b/drivers/clk/samsung/clk.c
    index 912dfbe5ac20..b6701905f254 100644
    --- a/drivers/clk/samsung/clk.c
    +++ b/drivers/clk/samsung/clk.c
    @@ -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);

    diff --git a/drivers/clk/samsung/clk.h b/drivers/clk/samsung/clk.h
    index 3fd6c0868921..ab9c3d7a25b3 100644
    --- a/drivers/clk/samsung/clk.h
    +++ b/drivers/clk/samsung/clk.h
    @@ -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 *);
    --
    2.39.1
    \
     
     \ /
      Last update: 2023-03-27 00:15    [W:7.776 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site