clk: at91: fix clk-generated parenting
authorAlexandre Belloni <alexandre.belloni@free-electrons.com>
Fri, 12 May 2017 14:25:30 +0000 (16:25 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 13 Apr 2018 17:48:14 +0000 (19:48 +0200)
[ Upstream commit 8e56133e5c7b7a7a97f6a92d92f664d5ecd30745 ]

clk_generated_startup is called after clk_hw_register. So the first call to
get_parent will not have the correct value (i.e. 0) and because this is
cached, it may never be updated.

Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Fixes: df70aeef6083 ("clk: at91: add generated clock driver")
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/clk/at91/clk-generated.c

index 4e1cd5aa69d8aa6c884a5a51198c7ce499b8ee93..70474bd97a10de8887e0b803d6d50d196d899a0b 100644 (file)
@@ -260,13 +260,12 @@ at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock,
        gck->lock = lock;
        gck->range = *range;
 
+       clk_generated_startup(gck);
        hw = &gck->hw;
        ret = clk_hw_register(NULL, &gck->hw);
        if (ret) {
                kfree(gck);
                hw = ERR_PTR(ret);
-       } else
-               clk_generated_startup(gck);
 
        return hw;
 }