Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: qcom: dispcc: Update the transition delay for MDSS GDSC

On SC7180 we observe black screens because the gdsc is being
enabled/disabled very rapidly and the GDSC FSM state does not work as
expected. This is due to the fact that the GDSC reset value is being
updated from SW.

The recommended transition delay for mdss core gdsc updated for
SC7180/SC7280/SM8250.

Fixes: dd3d06622138 ("clk: qcom: Add display clock controller driver for SC7180")
Fixes: 1a00c962f9cd ("clk: qcom: Add display clock controller driver for SC7280")
Fixes: 80a18f4a8567 ("clk: qcom: Add display clock controller driver for SM8150 and SM8250")
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Link: https://lore.kernel.org/r/20220223185606.3941-2-tdas@codeaurora.org
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
[sboyd@kernel.org: lowercase hex]
Signed-off-by: Stephen Boyd <sboyd@kernel.org>

authored by

Taniya Das and committed by
Stephen Boyd
6e6fec3f 4e7c4d36

+12 -3
+4 -1
drivers/clk/qcom/dispcc-sc7180.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 2 /* 3 - * Copyright (c) 2019, The Linux Foundation. All rights reserved. 3 + * Copyright (c) 2019, 2022, The Linux Foundation. All rights reserved. 4 4 */ 5 5 6 6 #include <linux/clk-provider.h> ··· 625 625 626 626 static struct gdsc mdss_gdsc = { 627 627 .gdscr = 0x3000, 628 + .en_rest_wait_val = 0x2, 629 + .en_few_wait_val = 0x2, 630 + .clk_dis_wait_val = 0xf, 628 631 .pd = { 629 632 .name = "mdss_gdsc", 630 633 },
+4 -1
drivers/clk/qcom/dispcc-sc7280.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 2 /* 3 - * Copyright (c) 2021, The Linux Foundation. All rights reserved. 3 + * Copyright (c) 2021-2022, The Linux Foundation. All rights reserved. 4 4 */ 5 5 6 6 #include <linux/clk-provider.h> ··· 787 787 788 788 static struct gdsc disp_cc_mdss_core_gdsc = { 789 789 .gdscr = 0x1004, 790 + .en_rest_wait_val = 0x2, 791 + .en_few_wait_val = 0x2, 792 + .clk_dis_wait_val = 0xf, 790 793 .pd = { 791 794 .name = "disp_cc_mdss_core_gdsc", 792 795 },
+4 -1
drivers/clk/qcom/dispcc-sm8250.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 2 /* 3 - * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. 3 + * Copyright (c) 2018-2020, 2022, The Linux Foundation. All rights reserved. 4 4 */ 5 5 6 6 #include <linux/clk-provider.h> ··· 1126 1126 1127 1127 static struct gdsc mdss_gdsc = { 1128 1128 .gdscr = 0x3000, 1129 + .en_rest_wait_val = 0x2, 1130 + .en_few_wait_val = 0x2, 1131 + .clk_dis_wait_val = 0xf, 1129 1132 .pd = { 1130 1133 .name = "mdss_gdsc", 1131 1134 },