Re: [PATCH] clk: qcom: gcc-sdm845: Add missing flag to votable GDSCs

Rob Clark
2019-11-26T18:11:36Z

On Tue, Nov 26, 2019 at 7:34 AM Georgi Djakov <georgi.djakov@linaro.org> wrote:
>
> 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>

Tested-by: Rob Clark <robdclark@gmail.com>

(on yoga c630)

> ---
> drivers/clk/qcom/gcc-sdm845.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> 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[] = {