| From 10bc7b200a590fd4cccdbfeb24aecf258b219ba1 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 26 Sep 2022 10:45:09 +0200 |
| Subject: clk: bcm2835: Make peripheral PLLC critical |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Maxime Ripard <maxime@cerno.tech> |
| |
| [ Upstream commit 6c5422851d8be8c7451e968fd2e6da41b6109e17 ] |
| |
| When testing for a series affecting the VEC, it was discovered that |
| turning off and on the VEC clock is crashing the system. |
| |
| It turns out that, when disabling the VEC clock, it's the only child of |
| the PLLC-per clock which will also get disabled. The source of the crash |
| is PLLC-per being disabled. |
| |
| It's likely that some other device might not take a clock reference that |
| it actually needs, but it's unclear which at this point. Let's make |
| PLLC-per critical so that we don't have that crash. |
| |
| Reported-by: Noralf Trønnes <noralf@tronnes.org> |
| Signed-off-by: Maxime Ripard <maxime@cerno.tech> |
| Link: https://lore.kernel.org/r/20220926084509.12233-1-maxime@cerno.tech |
| Reviewed-by: Stefan Wahren <stefan.wahren@i2se.com> |
| Acked-by: Noralf Trønnes <noralf@tronnes.org> |
| Signed-off-by: Stephen Boyd <sboyd@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/clk/bcm/clk-bcm2835.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c |
| index f306b959297d..b7f89873fcf5 100644 |
| --- a/drivers/clk/bcm/clk-bcm2835.c |
| +++ b/drivers/clk/bcm/clk-bcm2835.c |
| @@ -1786,7 +1786,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { |
| .load_mask = CM_PLLC_LOADPER, |
| .hold_mask = CM_PLLC_HOLDPER, |
| .fixed_divider = 1, |
| - .flags = CLK_SET_RATE_PARENT), |
| + .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT), |
| |
| /* |
| * PLLD is the display PLL, used to drive DSI display panels. |
| -- |
| 2.35.1 |
| |