| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Alexandre Belloni <alexandre.belloni@free-electrons.com> |
| Date: Fri, 12 May 2017 16:25:30 +0200 |
| Subject: clk: at91: fix clk-generated parenting |
| |
| From: Alexandre Belloni <alexandre.belloni@free-electrons.com> |
| |
| |
| [ 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 | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/drivers/clk/at91/clk-generated.c |
| +++ b/drivers/clk/at91/clk-generated.c |
| @@ -260,13 +260,12 @@ at91_clk_register_generated(struct regma |
| 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; |
| } |