lkml.org 
[lkml]   [2020]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.5 258/542] clk: actually call the clock init before any other callback of the clock
    Date
    From: Jerome Brunet <jbrunet@baylibre.com>

    [ Upstream commit f6fa75ca912be6021335de63a32aa4d295f3c524 ]

    __clk_init_parent() will call the .get_parent() callback of the clock
    so .init() must run before.

    Fixes: 541debae0adf ("clk: call the clock init() callback before any other ops callback")
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Link: https://lkml.kernel.org/r/20190924123954.31561-2-jbrunet@baylibre.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/clk/clk.c | 26 +++++++++++++++-----------
    1 file changed, 15 insertions(+), 11 deletions(-)

    diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
    index 772258de2d1f3..53585cfc4b9ba 100644
    --- a/drivers/clk/clk.c
    +++ b/drivers/clk/clk.c
    @@ -3338,6 +3338,21 @@ static int __clk_core_init(struct clk_core *core)
    goto out;
    }

    + /*
    + * optional platform-specific magic
    + *
    + * The .init callback is not used by any of the basic clock types, but
    + * exists for weird hardware that must perform initialization magic.
    + * Please consider other ways of solving initialization problems before
    + * using this callback, as its use is discouraged.
    + *
    + * If it exist, this callback should called before any other callback of
    + * the clock
    + */
    + if (core->ops->init)
    + core->ops->init(core->hw);
    +
    +
    core->parent = __clk_init_parent(core);

    /*
    @@ -3362,17 +3377,6 @@ static int __clk_core_init(struct clk_core *core)
    core->orphan = true;
    }

    - /*
    - * optional platform-specific magic
    - *
    - * The .init callback is not used by any of the basic clock types, but
    - * exists for weird hardware that must perform initialization magic.
    - * Please consider other ways of solving initialization problems before
    - * using this callback, as its use is discouraged.
    - */
    - if (core->ops->init)
    - core->ops->init(core->hw);
    -
    /*
    * Set clk's accuracy. The preferred method is to use
    * .recalc_accuracy. For simple clocks and lazy developers the default
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-02-14 16:54    [W:2.245 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site