Skip to contentSkip to conversation

SM6115/SM6125 MDSS core reset

PATCH Superseded Val Packett 5 participants 18 messages Feb 16 – Feb 18

Subsystems (5)

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

cover SM6115/SM6125 MDSS core reset

Hi,

this series is like [1] but for these two SoCs.

Yeah: same person, different SoCs, same cause, different symptoms :) On the SC7180 WoA device with DP out, it was causing faults+artifacts due to EFI framebuffer scanout not stopping when Linux takes over. This time, the reset was necessary for MIPI DSI display to work *at all* on the sm6115-motorola-guamp (Moto G9 Play) phone (DTS coming very soon!)

With the state left by the bootloader, the display would stay gray. DCS setup commands would go through fine, some dsi_err_worker: status=4 errors would be logged after setup a few times (not continuously) but the display would not start working. With the reset, it works fine!

Since the SM6125 is closely related, I've done the same for it as well. The QCM2290 already does have the reset.

[1]: https://lore.kernel.org/all/20260120-topic-7180_dispcc_bcr-v1-0-0b1b442156c3@oss.qualcomm.com/

Thanks,
~val

Val Packett (6):
dt-bindings: clock: qcom,sm6115-dispcc: Define MDSS resets
dt-bindings: clock: qcom,dispcc-sm6125: Define MDSS resets
clk: qcom: dispcc-sm6115: Add missing MDSS resets
clk: qcom: dispcc-sm6125: Add missing MDSS resets
arm64: dts: qcom: sm6115: Add missing MDSS core reset
arm64: dts: qcom: sm6125: Add missing MDSS core reset

 arch/arm64/boot/dts/qcom/sm6115.dtsi           | 2 ++
 arch/arm64/boot/dts/qcom/sm6125.dtsi           | 3 +++
 drivers/clk/qcom/dispcc-sm6115.c               | 7 +++++++
 drivers/clk/qcom/dispcc-sm6125.c               | 7 +++++++
 include/dt-bindings/clock/qcom,dispcc-sm6125.h | 6 +++++-
 include/dt-bindings/clock/qcom,sm6115-dispcc.h | 7 +++++--
 6 files changed, 29 insertions(+), 3 deletions(-)
Signature · 1 line
2.52.0
#1 lore raw

PATCH 1/6 dt-bindings: clock: qcom,sm6115-dispcc: Define MDSS resets

Add the missing defines for MDSS resets.
While here, align comment style with other SoCs.

Fixes 38557c6fc077 ("dt-bindings: clock: add QCOM SM6115 display clock bindings")
---
 include/dt-bindings/clock/qcom,sm6115-dispcc.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
include/dt-bindings/clock/qcom,sm6115-dispcc.h +5 -2
index d1a6c45b5029..ab8d312ade37 100644
@@ -6,7 +6,7 @@
 #ifndef _DT_BINDINGS_CLK_QCOM_DISP_CC_SM6115_H
 #define _DT_BINDINGS_CLK_QCOM_DISP_CC_SM6115_H
 
-/* DISP_CC clocks */
+/* Clocks */
 #define DISP_CC_PLL0			0
 #define DISP_CC_PLL0_OUT_MAIN		1
 #define DISP_CC_MDSS_AHB_CLK		2
@@ -30,7 +30,10 @@
 #define DISP_CC_SLEEP_CLK		20
 #define DISP_CC_SLEEP_CLK_SRC		21
 
-/* DISP_CC GDSCR */
+/* Resets */
+#define DISP_CC_MDSS_CORE_BCR			0
+
+/* GDSCs */
 #define MDSS_GDSC			0
 
 #endif
Signature · 1 line
2.52.0
#2 lore raw

Re: [PATCH 1/6] dt-bindings: clock: qcom,sm6115-dispcc: Define MDSS resets

Quoted 4 lines · Val Packett

Add the missing defines for MDSS resets.
While here, align comment style with other SoCs.

Fixes 38557c6fc077 ("dt-bindings: clock: add QCOM SM6115 display clock bindings")

Not a fix or explain the impact of the bug.

Quoted 4 lines
---
 include/dt-bindings/clock/qcom,sm6115-dispcc.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Best regards,
Krzysztof

#3 lore raw

PATCH 2/6 dt-bindings: clock: qcom,dispcc-sm6125: Define MDSS resets

In reply to Val Packett

Add the missing defines for MDSS resets.
While here, align comment style with other SoCs.

Fixes 8397c9c0c26b ("dt-bindings: clock: add QCOM SM6125 display clock bindings")
---
 include/dt-bindings/clock/qcom,dispcc-sm6125.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
include/dt-bindings/clock/qcom,dispcc-sm6125.h +5 -1
index 4ff974f4fcc3..f58b85d2c814 100644
@@ -6,6 +6,7 @@
 #ifndef _DT_BINDINGS_CLK_QCOM_DISP_CC_SM6125_H
 #define _DT_BINDINGS_CLK_QCOM_DISP_CC_SM6125_H
 
+/* Clocks */
 #define DISP_CC_PLL0			0
 #define DISP_CC_MDSS_AHB_CLK		1
 #define DISP_CC_MDSS_AHB_CLK_SRC	2
@@ -35,7 +36,10 @@
 #define DISP_CC_MDSS_VSYNC_CLK_SRC	26
 #define DISP_CC_XO_CLK			27
 
-/* DISP_CC GDSCR */
+/* Resets */
+#define DISP_CC_MDSS_CORE_BCR			0
+
+/* GDSCs */
 #define MDSS_GDSC			0
 
 #endif
Signature · 1 line
2.52.0
#4 lore raw

PATCH 3/6 clk: qcom: dispcc-sm6115: Add missing MDSS resets

In reply to Val Packett

The MDSS resets were left undescribed, fix that.

Fixes 9b518788631c ("clk: qcom: Add display clock controller driver for SM6115")
---
 drivers/clk/qcom/dispcc-sm6115.c | 7 +++++++
 1 file changed, 7 insertions(+)
drivers/clk/qcom/dispcc-sm6115.c +7 -0
index 8ae25d51db94..75bd57213079 100644
@@ -22,6 +22,7 @@
 #include "clk-regmap-divider.h"
 #include "common.h"
 #include "gdsc.h"
+#include "reset.h"
 
 enum {
 	DT_BI_TCXO,
@@ -511,6 +512,10 @@ static struct clk_branch disp_cc_sleep_clk = {
 	},
 };
 
+static const struct qcom_reset_map disp_cc_sm6115_resets[] = {
+	[DISP_CC_MDSS_CORE_BCR] = { 0x2000 },
+};
+
 static struct gdsc mdss_gdsc = {
 	.gdscr = 0x3000,
 	.pd = {
@@ -561,6 +566,8 @@ static const struct qcom_cc_desc disp_cc_sm6115_desc = {
 	.config = &disp_cc_sm6115_regmap_config,
 	.clks = disp_cc_sm6115_clocks,
 	.num_clks = ARRAY_SIZE(disp_cc_sm6115_clocks),
+	.resets = disp_cc_sm6115_resets,
+	.num_resets = ARRAY_SIZE(disp_cc_sm6115_resets),
 	.gdscs = disp_cc_sm6115_gdscs,
 	.num_gdscs = ARRAY_SIZE(disp_cc_sm6115_gdscs),
 };
Signature · 1 line
2.52.0
Reviewed-by on v1 3/6
#5 lore raw

Re: [PATCH 3/6] clk: qcom: dispcc-sm6115: Add missing MDSS resets

Quoted 8 lines · Val Packett

The MDSS resets were left undescribed, fix that.

Fixes 9b518788631c ("clk: qcom: Add display clock controller driver for SM6115")
---
 drivers/clk/qcom/dispcc-sm6115.c | 7 +++++++
 1 file changed, 7 insertions(+)
Signature · 2 lines
With best wishes
Dmitry
#7 lore raw

PATCH 4/6 clk: qcom: dispcc-sm6125: Add missing MDSS resets

In reply to Val Packett

The MDSS resets were left undescribed, fix that.

Fixes 6e87c8f07407 ("clk: qcom: Add display clock controller driver for SM6125")
---
 drivers/clk/qcom/dispcc-sm6125.c | 7 +++++++
 1 file changed, 7 insertions(+)
drivers/clk/qcom/dispcc-sm6125.c +7 -0
index 851d38a487d3..2c67abcfef12 100644
@@ -17,6 +17,7 @@
 #include "clk-regmap.h"
 #include "common.h"
 #include "gdsc.h"
+#include "reset.h"
 
 enum {
 	P_BI_TCXO,
@@ -607,6 +608,10 @@ static struct clk_branch disp_cc_xo_clk = {
 	},
 };
 
+static const struct qcom_reset_map disp_cc_sm6125_resets[] = {
+	[DISP_CC_MDSS_CORE_BCR] = { 0x2000 },
+};
+
 static struct gdsc mdss_gdsc = {
 	.gdscr = 0x3000,
 	.pd = {
@@ -663,6 +668,8 @@ static const struct qcom_cc_desc disp_cc_sm6125_desc = {
 	.config = &disp_cc_sm6125_regmap_config,
 	.clks = disp_cc_sm6125_clocks,
 	.num_clks = ARRAY_SIZE(disp_cc_sm6125_clocks),
+	.resets = disp_cc_sm6125_resets,
+	.num_resets = ARRAY_SIZE(disp_cc_sm6125_resets),
 	.gdscs = disp_cc_sm6125_gdscs,
 	.num_gdscs = ARRAY_SIZE(disp_cc_sm6125_gdscs),
 };
Signature · 1 line
2.52.0
Reviewed-by on v1 4/6
#8 lore raw

Re: [PATCH 4/6] clk: qcom: dispcc-sm6125: Add missing MDSS resets

Quoted 8 lines · Val Packett

The MDSS resets were left undescribed, fix that.

Fixes 6e87c8f07407 ("clk: qcom: Add display clock controller driver for SM6125")
---
 drivers/clk/qcom/dispcc-sm6125.c | 7 +++++++
 1 file changed, 7 insertions(+)
Signature · 2 lines
With best wishes
Dmitry
#9 lore raw

Re: [PATCH 4/6] clk: qcom: dispcc-sm6125: Add missing MDSS resets

In reply to Val Packett
Quoted 1 line · Val Packett

The MDSS resets were left undescribed, fix that.

Fix what? It is perfectly fine to have things "undescribed". Explain what is the problem of these being missing.

Quoted 6 lines
Fixes 6e87c8f07407 ("clk: qcom: Add display clock controller driver for SM6125")
---
 drivers/clk/qcom/dispcc-sm6125.c | 7 +++++++
 1 file changed, 7 insertions(+)

Best regards,
Krzysztof

#11 lore raw

PATCH 5/6 arm64: dts: qcom: sm6115: Add missing MDSS core reset

In reply to Val Packett

To make sure the display subsystem starts in a predictable state, we need to reset it. Otherwise, unpredictable issues can happen, e.g. on the motorola-guamp smartphone DSI would not transmit anything.

Wire up the reset to fix.

Fixes 705e50427d81 ("arm64: dts: qcom: sm6115: Add mdss/dpu node")
---
 arch/arm64/boot/dts/qcom/sm6115.dtsi | 2 ++
 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/qcom/sm6115.dtsi +2 -0
index e9336adbc391..3a9a1ad8d581 100644
@@ -1864,6 +1864,8 @@ mdss: display-subsystem@5e00000 {
 				 <&gcc GCC_DISP_HF_AXI_CLK>,
 				 <&dispcc DISP_CC_MDSS_MDP_CLK>;
 
+			resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
+
 			interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <1>;
Signature · 1 line
2.52.0
Reviewed-by on v1 5/6
#12 lore raw

Re: [PATCH 5/6] arm64: dts: qcom: sm6115: Add missing MDSS core reset

Quoted 4 lines · Val Packett

To make sure the display subsystem starts in a predictable state, we need to reset it. Otherwise, unpredictable issues can happen, e.g. on the motorola-guamp smartphone DSI would not transmit anything.

Quoted 8 lines

Wire up the reset to fix.

Fixes 705e50427d81 ("arm64: dts: qcom: sm6115: Add mdss/dpu node")
---
 arch/arm64/boot/dts/qcom/sm6115.dtsi | 2 ++
 1 file changed, 2 insertions(+)
Signature · 2 lines
With best wishes
Dmitry
Reviewed-by on v1 5/6
#13 lore raw

Re: [PATCH 5/6] arm64: dts: qcom: sm6115: Add missing MDSS core reset

In reply to Val Packett
Quoted 9 lines · Val Packett

To make sure the display subsystem starts in a predictable state, we need to reset it. Otherwise, unpredictable issues can happen, e.g. on the motorola-guamp smartphone DSI would not transmit anything.

Wire up the reset to fix.

Fixes 705e50427d81 ("arm64: dts: qcom: sm6115: Add mdss/dpu node")

---

Konrad

#14 lore raw

PATCH 6/6 arm64: dts: qcom: sm6125: Add missing MDSS core reset

In reply to Val Packett

To make sure the display subsystem starts in a predictable state, we need to reset it. On closely related SoC (sm6115) this has caused DSI displays to not work.

Wire up the reset to fix.

Fixes 0865d23a0226 ("arm64: dts: qcom: sm6125: Add display hardware nodes")
---
 arch/arm64/boot/dts/qcom/sm6125.dtsi | 3 +++
 1 file changed, 3 insertions(+)
arch/arm64/boot/dts/qcom/sm6125.dtsi +3 -0
index 80c42dff5399..a22374e5a17f 100644
@@ -1238,6 +1238,8 @@ mdss: display-subsystem@5e00000 {
 				      "ahb",
 				      "core";
 
+			resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
+
 			power-domains = <&dispcc MDSS_GDSC>;
 
 			iommus = <&apps_smmu 0x400 0x0>;
@@ -1437,6 +1439,7 @@ dispcc: clock-controller@5f00000 {
 			power-domains = <&rpmpd RPMPD_VDDCX>;
 
 			#clock-cells = <1>;
+			#reset-cells = <1>;
 			#power-domain-cells = <1>;
 		};
 
Signature · 1 line
2.52.0
Reviewed-by on v1 6/6
#15 lore raw

Re: [PATCH 6/6] arm64: dts: qcom: sm6125: Add missing MDSS core reset

Quoted 4 lines · Val Packett

To make sure the display subsystem starts in a predictable state, we need to reset it. On closely related SoC (sm6115) this has caused DSI displays to not work.

Quoted 8 lines

Wire up the reset to fix.

Fixes 0865d23a0226 ("arm64: dts: qcom: sm6125: Add display hardware nodes")
---
 arch/arm64/boot/dts/qcom/sm6125.dtsi | 3 +++
 1 file changed, 3 insertions(+)
Signature · 2 lines
With best wishes
Dmitry
Reviewed-by on v1 6/6
#16 lore raw

Re: [PATCH 6/6] arm64: dts: qcom: sm6125: Add missing MDSS core reset

In reply to Val Packett
Quoted 9 lines · Val Packett

To make sure the display subsystem starts in a predictable state, we need to reset it. On closely related SoC (sm6115) this has caused DSI displays to not work.

Wire up the reset to fix.

Fixes 0865d23a0226 ("arm64: dts: qcom: sm6125: Add display hardware nodes")

---

Konrad

Tested-by on v1 6/6
#17 lore raw

Re: [PATCH 6/6] arm64: dts: qcom: sm6125: Add missing MDSS core reset

In reply to Val Packett
Quoted 11 lines · Val Packett

To make sure the display subsystem starts in a predictable state, we need to reset it. On closely related SoC (sm6115) this has caused DSI displays to not work.

Wire up the reset to fix.

Fixes 0865d23a0226 ("arm64: dts: qcom: sm6125: Add display hardware nodes")
---
 arch/arm64/boot/dts/qcom/sm6125.dtsi | 3 +++
 1 file changed, 3 insertions(+)

This makes a panel driver I'm testing work more reliably, right after boot instead of some random time later.

Regards, Yedaya