* [PATCH 2/2] arm64: dts: qcom: sm6115: Add missing MDSS AHB clock
2026-10-24 14:27 [PATCH 0/2] Fix SM6115 MDSS register access during runtime resume Michael McAllister
@ 2026-10-24 14:27 ` Michael McAllister
2026-10-26 12:57 ` Konrad Dybcio
2026-10-24 14:27 ` [PATCH 1/2] dt-bindings: display: msm: sm6115-mdss: Add missing " Michael McAllister
2026-10-26 21:46 ` [PATCH v2 0/2] Fix SM6115 MDSS register access during runtime resume Michael McAllister
2 siblings, 1 reply; 8+ messages in thread
From: Michael McAllister @ 2026-10-24 14:27 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Dmitry Baryshkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rob Clark,
Abhinav Kumar, Jessica Zhang, Sean Paul, Marijn Suijten,
Adam Skladowski, linux-arm-msm, dri-devel, freedreno, devicetree,
linux-kernel
The MDSS node is missing DISP_CC_MDSS_AHB_CLK. Although the DPU child
already requests this clock, MDSS resumes before the child enables it.
The MDSS hardware-version register can then read as zero, causing
msm_mdss_enable() to skip UBWC configuration.
On the Motorola Moto G10 (SM4250), this results in garbled compressed
scanout after display power cycling. Adding the clock restores the
UBWC configuration and makes compressed and linear scanout agree.
Include the DISPCC AHB clock in the MDSS clock list so that its existing
bulk clock handling enables it before accessing the MDSS registers.
Fixes: 705e50427d81 ("arm64: dts: qcom: sm6115: Add mdss/dpu node")
Cc: stable@vger.kernel.org
Signed-off-by: Michael McAllister <me@michaelmcallister.org>
---
arch/arm64/boot/dts/qcom/sm6115.dtsi | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/sm6115.dtsi b/arch/arm64/boot/dts/qcom/sm6115.dtsi
index 0f2af8aba..f7002b9eb 100644
--- a/arch/arm64/boot/dts/qcom/sm6115.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm6115.dtsi
@@ -1927,7 +1927,8 @@ mdss: display-subsystem@5e00000 {
clocks = <&gcc GCC_DISP_AHB_CLK>,
<&gcc GCC_DISP_HF_AXI_CLK>,
- <&dispcc DISP_CC_MDSS_MDP_CLK>;
+ <&dispcc DISP_CC_MDSS_MDP_CLK>,
+ <&dispcc DISP_CC_MDSS_AHB_CLK>;
resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 2/2] arm64: dts: qcom: sm6115: Add missing MDSS AHB clock
2026-10-24 14:27 ` [PATCH 2/2] arm64: dts: qcom: sm6115: Add missing MDSS AHB clock Michael McAllister
@ 2026-10-26 12:57 ` Konrad Dybcio
0 siblings, 0 replies; 8+ messages in thread
From: Konrad Dybcio @ 2026-10-26 12:57 UTC (permalink / raw)
To: Michael McAllister, Bjorn Andersson, Konrad Dybcio, Dmitry Baryshkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rob Clark,
Abhinav Kumar, Jessica Zhang, Sean Paul, Marijn Suijten,
Adam Skladowski, linux-arm-msm, dri-devel, freedreno, devicetree,
linux-kernel
On 10/24/26 4:27 PM, Michael McAllister wrote:
> The MDSS node is missing DISP_CC_MDSS_AHB_CLK. Although the DPU child
> already requests this clock, MDSS resumes before the child enables it.
> The MDSS hardware-version register can then read as zero, causing
> msm_mdss_enable() to skip UBWC configuration.
>
> On the Motorola Moto G10 (SM4250), this results in garbled compressed
> scanout after display power cycling. Adding the clock restores the
> UBWC configuration and makes compressed and linear scanout agree.
>
> Include the DISPCC AHB clock in the MDSS clock list so that its existing
> bulk clock handling enables it before accessing the MDSS registers.
>
> Fixes: 705e50427d81 ("arm64: dts: qcom: sm6115: Add mdss/dpu node")
> Cc: stable@vger.kernel.org
>
> Signed-off-by: Michael McAllister <me@michaelmcallister.org>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] dt-bindings: display: msm: sm6115-mdss: Add missing AHB clock
2026-10-24 14:27 [PATCH 0/2] Fix SM6115 MDSS register access during runtime resume Michael McAllister
2026-10-24 14:27 ` [PATCH 2/2] arm64: dts: qcom: sm6115: Add missing MDSS AHB clock Michael McAllister
@ 2026-10-24 14:27 ` Michael McAllister
2026-10-26 12:40 ` Krzysztof Kozlowski
2026-10-26 21:46 ` [PATCH v2 0/2] Fix SM6115 MDSS register access during runtime resume Michael McAllister
2 siblings, 1 reply; 8+ messages in thread
From: Michael McAllister @ 2026-10-24 14:27 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Dmitry Baryshkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rob Clark,
Abhinav Kumar, Jessica Zhang, Sean Paul, Marijn Suijten,
Adam Skladowski, linux-arm-msm, dri-devel, freedreno, devicetree,
linux-kernel
MDSS register access requires the AHB clock supplied by DISPCC, in
addition to the GCC bus clocks and the MDP core clock already listed.
The DPU child also uses this clock, but MDSS needs it before the child
resumes so that it can access its own registers.
Add the missing clock to the end of the list and update the example.
Keep the existing three-clock descriptions valid for compatibility with
older device trees.
Fixes: b93bdff44a85 ("dt-bindings: display/msm: add support for SM6115")
Signed-off-by: Michael McAllister <me@michaelmcallister.org>
---
.../devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
index 309de1953..d4fac93d9 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
@@ -21,10 +21,12 @@ properties:
const: qcom,sm6115-mdss
clocks:
+ minItems: 3
items:
- description: Display AHB clock from gcc
- description: Display AXI clock
- description: Display core clock
+ - description: Display AHB clock from dispcc
iommus:
maxItems: 2
@@ -92,7 +94,8 @@ examples:
power-domains = <&dispcc MDSS_GDSC>;
clocks = <&gcc GCC_DISP_AHB_CLK>,
<&gcc GCC_DISP_HF_AXI_CLK>,
- <&dispcc DISP_CC_MDSS_MDP_CLK>;
+ <&dispcc DISP_CC_MDSS_MDP_CLK>,
+ <&dispcc DISP_CC_MDSS_AHB_CLK>;
interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 1/2] dt-bindings: display: msm: sm6115-mdss: Add missing AHB clock
2026-10-24 14:27 ` [PATCH 1/2] dt-bindings: display: msm: sm6115-mdss: Add missing " Michael McAllister
@ 2026-10-26 12:40 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-10-26 12:40 UTC (permalink / raw)
To: Michael McAllister
Cc: Bjorn Andersson, Konrad Dybcio, Dmitry Baryshkov, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Rob Clark, Abhinav Kumar,
Jessica Zhang, Sean Paul, Marijn Suijten, Adam Skladowski,
linux-arm-msm, dri-devel, freedreno, devicetree, linux-kernel
On Sat, Oct 24, 2026 at 03:27:59PM +0100, Michael McAllister wrote:
> MDSS register access requires the AHB clock supplied by DISPCC, in
> addition to the GCC bus clocks and the MDP core clock already listed.
> The DPU child also uses this clock, but MDSS needs it before the child
> resumes so that it can access its own registers.
>
> Add the missing clock to the end of the list and update the example.
> Keep the existing three-clock descriptions valid for compatibility with
> older device trees.
>
> Fixes: b93bdff44a85 ("dt-bindings: display/msm: add support for SM6115")
>
Drop the blank line between tags.
> Signed-off-by: Michael McAllister <me@michaelmcallister.org>
> ---
> .../devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 0/2] Fix SM6115 MDSS register access during runtime resume
2026-10-24 14:27 [PATCH 0/2] Fix SM6115 MDSS register access during runtime resume Michael McAllister
2026-10-24 14:27 ` [PATCH 2/2] arm64: dts: qcom: sm6115: Add missing MDSS AHB clock Michael McAllister
2026-10-24 14:27 ` [PATCH 1/2] dt-bindings: display: msm: sm6115-mdss: Add missing " Michael McAllister
@ 2026-10-26 21:46 ` Michael McAllister
2026-10-26 21:46 ` [PATCH v2 2/2] arm64: dts: qcom: sm6115: Add missing MDSS AHB clock Michael McAllister
2026-10-26 21:46 ` [PATCH v2 1/2] dt-bindings: display: msm: sm6115-mdss: Add missing " Michael McAllister
2 siblings, 2 replies; 8+ messages in thread
From: Michael McAllister @ 2026-10-26 21:46 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Dmitry Baryshkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rob Clark,
Abhinav Kumar, Jessica Zhang, Sean Paul, Marijn Suijten,
Adam Skladowski, linux-arm-msm, dri-devel, freedreno, devicetree,
linux-kernel
Hi,
This fixes garbled compressed scanout on my device (Moto G10, SM4250)
after display power cycling. MDSS needs the DISPCC AHB clock before the
DPU child resumes, so this adds it to the binding and shared SM6115 clock
list. I tested this on 7.2.9 and power-cycled the display 20 times.
Changes in v2:
- Remove blank lines between commit trailers.
- Add the received review tags.
v1: https://lore.kernel.org/all/cover.1792852079.git.me@michaelmcallister.org/
Michael McAllister (2):
dt-bindings: display: msm: sm6115-mdss: Add missing AHB clock
arm64: dts: qcom: sm6115: Add missing MDSS AHB clock
.../devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml | 5 ++++-
arch/arm64/boot/dts/qcom/sm6115.dtsi | 3 ++-
2 files changed, 6 insertions(+), 2 deletions(-)
base-commit: d053e38e614fb2e383b298ce8fc308a780d7f209
--
2.39.5
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] arm64: dts: qcom: sm6115: Add missing MDSS AHB clock
2026-10-26 21:46 ` [PATCH v2 0/2] Fix SM6115 MDSS register access during runtime resume Michael McAllister
@ 2026-10-26 21:46 ` Michael McAllister
2026-10-26 21:46 ` [PATCH v2 1/2] dt-bindings: display: msm: sm6115-mdss: Add missing " Michael McAllister
1 sibling, 0 replies; 8+ messages in thread
From: Michael McAllister @ 2026-10-26 21:46 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Dmitry Baryshkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rob Clark,
Abhinav Kumar, Jessica Zhang, Sean Paul, Marijn Suijten,
Adam Skladowski, linux-arm-msm, dri-devel, freedreno, devicetree,
linux-kernel
The MDSS node is missing DISP_CC_MDSS_AHB_CLK. Although the DPU child
already requests this clock, MDSS resumes before the child enables it.
The MDSS hardware-version register can then read as zero, causing
msm_mdss_enable() to skip UBWC configuration.
On the Motorola Moto G10 (SM4250), this results in garbled compressed
scanout after display power cycling. Adding the clock restores the
UBWC configuration and makes compressed and linear scanout agree.
Include the DISPCC AHB clock in the MDSS clock list so that its existing
bulk clock handling enables it before accessing the MDSS registers.
Fixes: 705e50427d81 ("arm64: dts: qcom: sm6115: Add mdss/dpu node")
Cc: stable@vger.kernel.org
Signed-off-by: Michael McAllister <me@michaelmcallister.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
Changes in v2:
- Remove the blank line between commit trailers.
- Add the received Reviewed-by tag.
arch/arm64/boot/dts/qcom/sm6115.dtsi | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/sm6115.dtsi b/arch/arm64/boot/dts/qcom/sm6115.dtsi
index 0f2af8aba..f7002b9eb 100644
--- a/arch/arm64/boot/dts/qcom/sm6115.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm6115.dtsi
@@ -1927,7 +1927,8 @@ mdss: display-subsystem@5e00000 {
clocks = <&gcc GCC_DISP_AHB_CLK>,
<&gcc GCC_DISP_HF_AXI_CLK>,
- <&dispcc DISP_CC_MDSS_MDP_CLK>;
+ <&dispcc DISP_CC_MDSS_MDP_CLK>,
+ <&dispcc DISP_CC_MDSS_AHB_CLK>;
resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v2 1/2] dt-bindings: display: msm: sm6115-mdss: Add missing AHB clock
2026-10-26 21:46 ` [PATCH v2 0/2] Fix SM6115 MDSS register access during runtime resume Michael McAllister
2026-10-26 21:46 ` [PATCH v2 2/2] arm64: dts: qcom: sm6115: Add missing MDSS AHB clock Michael McAllister
@ 2026-10-26 21:46 ` Michael McAllister
1 sibling, 0 replies; 8+ messages in thread
From: Michael McAllister @ 2026-10-26 21:46 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Dmitry Baryshkov
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rob Clark,
Abhinav Kumar, Jessica Zhang, Sean Paul, Marijn Suijten,
Adam Skladowski, linux-arm-msm, dri-devel, freedreno, devicetree,
linux-kernel
MDSS register access requires the AHB clock supplied by DISPCC, in
addition to the GCC bus clocks and the MDP core clock already listed.
The DPU child also uses this clock, but MDSS needs it before the child
resumes so that it can access its own registers.
Add the missing clock to the end of the list and update the example.
Keep the existing three-clock descriptions valid for compatibility with
older device trees.
Fixes: b93bdff44a85 ("dt-bindings: display/msm: add support for SM6115")
Signed-off-by: Michael McAllister <me@michaelmcallister.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
---
Changes in v2:
- Remove the blank line between commit trailers.
- Add the received Reviewed-by tag.
.../devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
index 309de1953..d4fac93d9 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
@@ -21,10 +21,12 @@ properties:
const: qcom,sm6115-mdss
clocks:
+ minItems: 3
items:
- description: Display AHB clock from gcc
- description: Display AXI clock
- description: Display core clock
+ - description: Display AHB clock from dispcc
iommus:
maxItems: 2
@@ -92,7 +94,8 @@ examples:
power-domains = <&dispcc MDSS_GDSC>;
clocks = <&gcc GCC_DISP_AHB_CLK>,
<&gcc GCC_DISP_HF_AXI_CLK>,
- <&dispcc DISP_CC_MDSS_MDP_CLK>;
+ <&dispcc DISP_CC_MDSS_MDP_CLK>,
+ <&dispcc DISP_CC_MDSS_AHB_CLK>;
interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
^ permalink raw reply [flat|nested] 8+ messages in thread