| From a96a23570ba0ee54d574f47b00a485b6f573defb Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 15 Jul 2020 12:24:10 +0530 |
| Subject: clk: qcom: gcc: Make disp gpll0 branch aon for sc7180/sdm845 |
| |
| From: Taniya Das <tdas@codeaurora.org> |
| |
| [ Upstream commit 9c3df2b1993da9ab1110702d7b2815d5cd8c02f3 ] |
| |
| The display gpll0 branch clock inside GCC needs to always be enabled. |
| Otherwise the AHB clk (disp_cc_mdss_ahb_clk_src) for the display clk |
| controller (dispcc) will stop clocking while sourcing from gpll0 when |
| this branch inside GCC is turned off during unused clk disabling. We can |
| never turn this branch off because the AHB clk for the display subsystem |
| is needed to read/write any registers inside the display subsystem |
| including clk related ones. This makes this branch a really easy way to |
| turn off AHB access to the display subsystem and cause all sorts of |
| mayhem. Let's just make the clk ops keep the clk enabled forever and |
| ignore any attempts to disable this clk so that dispcc accesses keep |
| working. |
| |
| Signed-off-by: Taniya Das <tdas@codeaurora.org> |
| Reported-by: Evan Green <evgreen@chromium.org> |
| Link: https://lore.kernel.org/r/1594796050-14511-1-git-send-email-tdas@codeaurora.org |
| Fixes: 17269568f726 ("clk: qcom: Add Global Clock controller (GCC) driver for SC7180") |
| Fixes: 06391eddb60a ("clk: qcom: Add Global Clock controller (GCC) driver for SDM845") |
| [sboyd@kernel.org: Fill out commit text more] |
| Signed-off-by: Stephen Boyd <sboyd@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/clk/qcom/gcc-sc7180.c | 2 +- |
| drivers/clk/qcom/gcc-sdm845.c | 4 ++-- |
| 2 files changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/clk/qcom/gcc-sc7180.c b/drivers/clk/qcom/gcc-sc7180.c |
| index 73380525cb091..b3704b685cca3 100644 |
| --- a/drivers/clk/qcom/gcc-sc7180.c |
| +++ b/drivers/clk/qcom/gcc-sc7180.c |
| @@ -1041,7 +1041,7 @@ static struct clk_branch gcc_disp_gpll0_clk_src = { |
| .hw = &gpll0.clkr.hw, |
| }, |
| .num_parents = 1, |
| - .ops = &clk_branch2_ops, |
| + .ops = &clk_branch2_aon_ops, |
| }, |
| }, |
| }; |
| diff --git a/drivers/clk/qcom/gcc-sdm845.c b/drivers/clk/qcom/gcc-sdm845.c |
| index f6ce888098be9..90f7febaf5288 100644 |
| --- a/drivers/clk/qcom/gcc-sdm845.c |
| +++ b/drivers/clk/qcom/gcc-sdm845.c |
| @@ -1,6 +1,6 @@ |
| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| - * Copyright (c) 2018, The Linux Foundation. All rights reserved. |
| + * Copyright (c) 2018, 2020, The Linux Foundation. All rights reserved. |
| */ |
| |
| #include <linux/kernel.h> |
| @@ -1344,7 +1344,7 @@ static struct clk_branch gcc_disp_gpll0_clk_src = { |
| "gpll0", |
| }, |
| .num_parents = 1, |
| - .ops = &clk_branch2_ops, |
| + .ops = &clk_branch2_aon_ops, |
| }, |
| }, |
| }; |
| -- |
| 2.25.1 |
| |