| From 0468fdc8917b5df067527d1e30e42ca104c6db8e Mon Sep 17 00:00:00 2001 |
| From: Georgi Djakov <georgi.djakov@linaro.org> |
| Date: Tue, 26 Nov 2019 17:34:37 +0200 |
| Subject: [PATCH] clk: qcom: gcc-sdm845: Add missing flag to votable GDSCs |
| |
| commit 5e82548e26ef62e257dc2ff37c11acb5eb72728e upstream. |
| |
| On sdm845 devices, during boot we see the following warnings (unless we |
| have added 'pd_ignore_unused' to the kernel command line): |
| hlos1_vote_mmnoc_mmu_tbu_sf_gdsc status stuck at 'on' |
| hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc status stuck at 'on' |
| hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc status stuck at 'on' |
| hlos1_vote_aggre_noc_mmu_tbu2_gdsc status stuck at 'on' |
| hlos1_vote_aggre_noc_mmu_tbu1_gdsc status stuck at 'on' |
| hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc status stuck at 'on' |
| hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc status stuck at 'on' |
| |
| As the name of these GDSCs suggests, they are "votable" and in downstream |
| DT, they all have the property "qcom,no-status-check-on-disable", which |
| means that we should not poll the status bit when we disable them. |
| |
| Luckily the VOTABLE flag already exists and it does exactly what we need, |
| so let's make use of it to make the warnings disappear. |
| |
| Fixes: 06391eddb60a ("clk: qcom: Add Global Clock controller (GCC) driver for SDM845") |
| Reported-by: Rob Clark <robdclark@gmail.com> |
| Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org> |
| Link: https://lkml.kernel.org/r/20191126153437.11808-1-georgi.djakov@linaro.org |
| Tested-by: Rob Clark <robdclark@gmail.com> |
| Signed-off-by: Stephen Boyd <sboyd@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/clk/qcom/gcc-sdm845.c b/drivers/clk/qcom/gcc-sdm845.c |
| index 95be125c3bdd..56d22dd225c9 100644 |
| --- a/drivers/clk/qcom/gcc-sdm845.c |
| +++ b/drivers/clk/qcom/gcc-sdm845.c |
| @@ -3255,6 +3255,7 @@ static struct gdsc hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc = { |
| .name = "hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc", |
| }, |
| .pwrsts = PWRSTS_OFF_ON, |
| + .flags = VOTABLE, |
| }; |
| |
| static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = { |
| @@ -3263,6 +3264,7 @@ static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = { |
| .name = "hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc", |
| }, |
| .pwrsts = PWRSTS_OFF_ON, |
| + .flags = VOTABLE, |
| }; |
| |
| static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = { |
| @@ -3271,6 +3273,7 @@ static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = { |
| .name = "hlos1_vote_aggre_noc_mmu_tbu1_gdsc", |
| }, |
| .pwrsts = PWRSTS_OFF_ON, |
| + .flags = VOTABLE, |
| }; |
| |
| static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = { |
| @@ -3279,6 +3282,7 @@ static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = { |
| .name = "hlos1_vote_aggre_noc_mmu_tbu2_gdsc", |
| }, |
| .pwrsts = PWRSTS_OFF_ON, |
| + .flags = VOTABLE, |
| }; |
| |
| static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = { |
| @@ -3287,6 +3291,7 @@ static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = { |
| .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc", |
| }, |
| .pwrsts = PWRSTS_OFF_ON, |
| + .flags = VOTABLE, |
| }; |
| |
| static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = { |
| @@ -3295,6 +3300,7 @@ static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = { |
| .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc", |
| }, |
| .pwrsts = PWRSTS_OFF_ON, |
| + .flags = VOTABLE, |
| }; |
| |
| static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = { |
| @@ -3303,6 +3309,7 @@ static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = { |
| .name = "hlos1_vote_mmnoc_mmu_tbu_sf_gdsc", |
| }, |
| .pwrsts = PWRSTS_OFF_ON, |
| + .flags = VOTABLE, |
| }; |
| |
| static struct clk_regmap *gcc_sdm845_clocks[] = { |
| -- |
| 2.7.4 |
| |