lkml.org 
[lkml]   [2019]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.0 017/262] clk: ti: clkctrl: Fix clkdm_name regression for TI_CLK_CLKCTRL_COMPAT
    Date
    From: Tony Lindgren <tony@atomide.com>

    [ Upstream commit d17a718db40df2548e99a62dc3d7e5e2b38143cc ]

    Commit a72d785021cb ("clk: ti: Prepare for remove of OF node name")
    changed the code to use kasprintf() for provider->clkdm_name but also
    changed the offset used later on by three. We don't need to change the
    offset as we already have the extra three characters in the format for
    kasprintf with "%pOFnxxx".

    This caused the clocks with TI_CLK_CLKCTRL_COMPAT to have NULL
    clk->clkdm_name for omap4 and 5. And null clkdm_name can cause module
    reset, enable, and idle to fail.

    The issue can also be seen also when enabling DEBUG for clkctrl.c
    and then we start seeing "clock: could not associate" messages for
    omap4 and 5 as the generated name is something like "l4_wkclkdm" instead
    of "l4_wkup_clkdm" that's needed.

    Let's fix the issue with a partial revert of commit a72d785021cb ("clk:
    ti: Prepare for remove of OF node name").

    ALso note that in general code should not depend on the dts node names.
    And the node names should be generic types like clock-domain in this case.
    This could be fixed later by using separate compatible properties for the
    clockdomains, or by adding soc_device_match() table with reg offsets
    to the driver. But let's fix the regression first.

    Fixes: a72d785021cb ("clk: ti: Prepare for remove of OF node name")
    Cc: Tero Kristo <t-kristo@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/clk/ti/clkctrl.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
    index 40630eb950fc..85d7f301149b 100644
    --- a/drivers/clk/ti/clkctrl.c
    +++ b/drivers/clk/ti/clkctrl.c
    @@ -530,7 +530,7 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
    * Create default clkdm name, replace _cm from end of parent
    * node name with _clkdm
    */
    - provider->clkdm_name[strlen(provider->clkdm_name) - 5] = 0;
    + provider->clkdm_name[strlen(provider->clkdm_name) - 2] = 0;
    } else {
    provider->clkdm_name = kasprintf(GFP_KERNEL, "%pOFn", node);
    if (!provider->clkdm_name) {
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-03-27 20:35    [W:3.282 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site