public inbox for devicetree@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] arm64: dts: qcom: eliza: Add ADSP and USB support
@ 2026-03-31 10:37 Abel Vesa
  2026-03-31 10:37 ` [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes Abel Vesa
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Abel Vesa @ 2026-03-31 10:37 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Abel Vesa

The following patchsets document all necessary bindings:

https://lore.kernel.org/all/20260327-eliza-bindings-mailbox-ipcc-v1-1-3f1c89bdf72e@oss.qualcomm.com/
https://lore.kernel.org/all/20260327-eliza-remoteproc-adsp-v1-1-1c46c5e5f809@oss.qualcomm.com/
https://lore.kernel.org/all/20260327-eliza-bindings-phy-eusb2-v1-1-1f8a9ad6a033@oss.qualcomm.com/
https://lore.kernel.org/all/20260318-eliza-bindings-qmp-phy-v1-1-96a0d529ad2d@oss.qualcomm.com/
https://lore.kernel.org/all/20260327-eliza-bindings-dwc3-v2-1-28439482ebce@oss.qualcomm.com/
https://lore.kernel.org/all/20260327-eliza-bindings-aoss-v1-1-70df76adc69b@oss.qualcomm.com/
https://lore.kernel.org/all/20260327-eliza-bindings-pmic-glink-v1-1-f9a65495f599@oss.qualcomm.com/

Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
---
Abel Vesa (3):
      arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
      arm64: dts: qcom: Add Eliza-specific PM7750BA dtsi
      arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support

 arch/arm64/boot/dts/qcom/eliza-mtp.dts       |  83 +++++++++
 arch/arm64/boot/dts/qcom/eliza.dtsi          | 261 +++++++++++++++++++++++++++
 arch/arm64/boot/dts/qcom/pm7550ba-eliza.dtsi |  69 +++++++
 3 files changed, 413 insertions(+)
---
base-commit: 5e59a51e3378f5d31e1f4f8efcb9763db3e322cf
change-id: 20260330-eliza-adsp-usb-8ef2b1b0fc13

Best regards,
--  
Abel Vesa <abel.vesa@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-03-31 10:37 [PATCH 0/3] arm64: dts: qcom: eliza: Add ADSP and USB support Abel Vesa
@ 2026-03-31 10:37 ` Abel Vesa
  2026-03-31 13:27   ` Krzysztof Kozlowski
  2026-03-31 13:37   ` Konrad Dybcio
  2026-03-31 10:37 ` [PATCH 2/3] arm64: dts: qcom: Add Eliza-specific PM7750BA dtsi Abel Vesa
  2026-03-31 10:37 ` [PATCH 3/3] arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support Abel Vesa
  2 siblings, 2 replies; 18+ messages in thread
From: Abel Vesa @ 2026-03-31 10:37 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Abel Vesa

Describe the ADSP remoteproc node along with its dependencies, including
the IPCC mailbox, AOSS QMP and SMP2P links used for communication.

The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
combo PHY and an SNPS eUSB2 PHY. Describe them.

Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/eliza.dtsi | 261 ++++++++++++++++++++++++++++++++++++
 1 file changed, 261 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/eliza.dtsi b/arch/arm64/boot/dts/qcom/eliza.dtsi
index 4a7a0ac40ce6..37baa4b240d6 100644
--- a/arch/arm64/boot/dts/qcom/eliza.dtsi
+++ b/arch/arm64/boot/dts/qcom/eliza.dtsi
@@ -6,10 +6,13 @@
 #include <dt-bindings/clock/qcom,eliza-gcc.h>
 #include <dt-bindings/clock/qcom,eliza-tcsr.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interconnect/qcom,eliza-rpmh.h>
 #include <dt-bindings/interconnect/qcom,icc.h>
 #include <dt-bindings/interconnect/qcom,osm-l3.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/mailbox/qcom-ipcc.h>
+#include <dt-bindings/phy/phy-qcom-qmp.h>
 #include <dt-bindings/power/qcom,rpmhpd.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 
@@ -596,6 +599,30 @@ llcc_lpi_mem: llcc-lpi@ff800000 {
 		};
 	};
 
+	smp2p-adsp {
+		compatible = "qcom,smp2p";
+		qcom,smem = <443>, <429>;
+		interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
+					     IPCC_MPROC_SIGNAL_SMP2P
+					     IRQ_TYPE_EDGE_RISING>;
+		mboxes = <&ipcc IPCC_CLIENT_LPASS
+				IPCC_MPROC_SIGNAL_SMP2P>;
+
+		qcom,local-pid = <0>;
+		qcom,remote-pid = <2>;
+
+		smp2p_adsp_out: master-kernel {
+			qcom,entry-name = "master-kernel";
+			#qcom,smem-state-cells = <1>;
+		};
+
+		smp2p_adsp_in: slave-kernel {
+			qcom,entry-name = "slave-kernel";
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+	};
+
 	soc: soc@0 {
 		compatible = "simple-bus";
 
@@ -624,6 +651,17 @@ gcc: clock-controller@100000 {
 			#power-domain-cells = <1>;
 		};
 
+		ipcc: mailbox@406000 {
+			compatible = "qcom,eliza-ipcc", "qcom,ipcc";
+			reg = <0x0 0x00406000 0x0 0x1000>;
+
+			interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <3>;
+
+			#mbox-cells = <2>;
+		};
+
 		qupv3_2: geniqup@8c0000 {
 			compatible = "qcom,geni-se-qup";
 			reg = <0x0 0x008c0000 0x0 0x2000>;
@@ -862,6 +900,55 @@ tcsr: clock-controller@1fbf000 {
 			#reset-cells = <1>;
 		};
 
+		remoteproc_adsp: remoteproc@3000000 {
+			compatible = "qcom,eliza-adsp-pas";
+			reg = <0x0 0x03000000 0x0 0x10000>;
+
+			interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
+					      <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
+					      <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
+					      <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
+					      <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>,
+					      <&smp2p_adsp_in 7 IRQ_TYPE_EDGE_RISING>;
+			interrupt-names = "wdog",
+					  "fatal",
+					  "ready",
+					  "handover",
+					  "stop-ack",
+					  "shutdown-ack";
+
+			clocks = <&rpmhcc RPMH_CXO_CLK>;
+			clock-names = "xo";
+
+			power-domains = <&rpmhpd RPMHPD_LCX>,
+					<&rpmhpd RPMHPD_LMX>;
+			power-domain-names = "lcx",
+					     "lmx";
+
+			interconnects = <&lpass_lpicx_noc MASTER_LPASS_PROC QCOM_ICC_TAG_ALWAYS
+					 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+
+			memory-region = <&adspslpi_mem>, <&q6_adsp_dtb_mem>;
+
+			qcom,qmp = <&aoss_qmp>;
+
+			qcom,smem-states = <&smp2p_adsp_out 0>;
+			qcom,smem-state-names = "stop";
+
+			status = "disabled";
+
+			glink-edge {
+				interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
+							     IPCC_MPROC_SIGNAL_GLINK_QMP
+							     IRQ_TYPE_EDGE_RISING>;
+				mboxes = <&ipcc IPCC_CLIENT_LPASS
+						IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+				label = "lpass";
+				qcom,remote-pid = <2>;
+			};
+		};
+
 		lpass_ag_noc: interconnect@7e40000 {
 			compatible = "qcom,eliza-lpass-ag-noc";
 			reg = <0x0 0x07e40000 0x0 0xe080>;
@@ -883,6 +970,167 @@ lpass_lpicx_noc: interconnect@7420000 {
 			#interconnect-cells = <2>;
 		};
 
+		usb_hsphy: phy@88e3000 {
+			compatible = "qcom,eliza-snps-eusb2-phy",
+				     "qcom,sm8550-snps-eusb2-phy";
+			reg = <0x0 0x088e3000 0x0 0x154>;
+			#phy-cells = <0>;
+
+			clocks = <&rpmhcc RPMH_CXO_CLK>;
+			clock-names = "ref";
+
+			resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
+
+			status = "disabled";
+		};
+
+		usb_dp_qmpphy: phy@88e8000 {
+			compatible = "qcom,eliza-qmp-usb3-dp-phy",
+				     "qcom,sm8650-qmp-usb3-dp-phy";
+			reg = <0x0 0x088e8000 0x0 0x4000>;
+
+			clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
+				 <&tcsr TCSR_USB3_CLKREF_EN>,
+				 <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>,
+				 <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
+			clock-names = "aux",
+				      "ref",
+				      "com_aux",
+				      "usb3_pipe";
+
+			resets = <&gcc GCC_USB3_PHY_PRIM_BCR>,
+				 <&gcc GCC_USB3_DP_PHY_PRIM_BCR>;
+			reset-names = "phy",
+				      "common";
+
+			power-domains = <&gcc GCC_USB3_PHY_GDSC>;
+
+			#clock-cells = <1>;
+			#phy-cells = <1>;
+
+			orientation-switch;
+
+			status = "disabled";
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port@0 {
+					reg = <0>;
+
+					usb_dp_qmpphy_out: endpoint {
+					};
+				};
+
+				port@1 {
+					reg = <1>;
+
+					usb_dp_qmpphy_usb_ss_in: endpoint {
+						remote-endpoint = <&usb_dwc3_ss>;
+					};
+				};
+
+				port@2 {
+					reg = <2>;
+
+					usb_dp_qmpphy_dp_in: endpoint {
+					};
+				};
+			};
+		};
+
+		usb: usb@a600000 {
+			compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
+			reg = <0x0 0x0a600000 0x0 0xfc100>;
+
+			interrupts-extended = <&intc GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
+					      <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
+					      <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+					      <&pdc 14 IRQ_TYPE_EDGE_BOTH>,
+					      <&pdc 15 IRQ_TYPE_EDGE_BOTH>,
+					      <&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "dwc_usb3",
+					  "pwr_event",
+					  "hs_phy_irq",
+					  "dp_hs_phy_irq",
+					  "dm_hs_phy_irq",
+					  "ss_phy_irq";
+
+			clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
+				 <&gcc GCC_USB30_PRIM_MASTER_CLK>,
+				 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
+				 <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
+				 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+				 <&rpmhcc RPMH_CXO_CLK>;
+			clock-names = "cfg_noc",
+				      "core",
+				      "iface",
+				      "sleep",
+				      "mock_utmi",
+				      "xo";
+
+			assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+					  <&gcc GCC_USB30_PRIM_MASTER_CLK>;
+			assigned-clock-rates = <19200000>,
+					       <200000000>;
+
+			resets = <&gcc GCC_USB30_PRIM_BCR>;
+
+			phys = <&usb_hsphy>,
+			       <&usb_dp_qmpphy QMP_USB43DP_USB3_PHY>;
+			phy-names = "usb2-phy",
+				    "usb3-phy";
+
+			interconnects = <&aggre1_noc MASTER_USB3_0 QCOM_ICC_TAG_ALWAYS
+					 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+					<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+					 &config_noc SLAVE_USB3_0 QCOM_ICC_TAG_ACTIVE_ONLY>;
+			interconnect-names = "usb-ddr", "apps-usb";
+
+			iommus = <&apps_smmu 0x40 0x0>;
+
+			power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
+			required-opps = <&rpmhpd_opp_nom>;
+
+			snps,hird-threshold = /bits/ 8 <0x0>;
+			snps,usb2-gadget-lpm-disable;
+			snps,dis_u2_susphy_quirk;
+			snps,dis_enblslpm_quirk;
+			snps,dis-u1-entry-quirk;
+			snps,dis-u2-entry-quirk;
+			snps,is-utmi-l1-suspend;
+			snps,usb3_lpm_capable;
+			snps,usb2-lpm-disable;
+			snps,has-lpm-erratum;
+			tx-fifo-resize;
+
+			dma-coherent;
+			usb-role-switch;
+
+			status = "disabled";
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port@0 {
+					reg = <0>;
+
+					usb_dwc3_hs: endpoint {
+					};
+				};
+
+				port@1 {
+					reg = <1>;
+
+					usb_dwc3_ss: endpoint {
+						remote-endpoint = <&usb_dp_qmpphy_usb_ss_in>;
+					};
+				};
+			};
+		};
+
 		pdc: interrupt-controller@b220000 {
 			compatible = "qcom,eliza-pdc", "qcom,pdc";
 			reg = <0x0 0x0b220000 0x0 0x40000>,
@@ -957,6 +1205,19 @@ tsens2: thermal-sensor@c22a000 {
 			#thermal-sensor-cells = <1>;
 		};
 
+		aoss_qmp: power-management@c300000 {
+			compatible = "qcom,eliza-aoss-qmp", "qcom,aoss-qmp";
+			reg = <0x0 0x0c300000 0x0 0x400>;
+
+			interrupt-parent = <&ipcc>;
+			interrupts-extended = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP
+						     IRQ_TYPE_EDGE_RISING>;
+
+			mboxes = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+			#clock-cells = <0>;
+		};
+
 		spmi: arbiter@c400000 {
 			compatible = "qcom,eliza-spmi-pmic-arb",
 				     "qcom,x1e80100-spmi-pmic-arb";

-- 
2.48.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 2/3] arm64: dts: qcom: Add Eliza-specific PM7750BA dtsi
  2026-03-31 10:37 [PATCH 0/3] arm64: dts: qcom: eliza: Add ADSP and USB support Abel Vesa
  2026-03-31 10:37 ` [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes Abel Vesa
@ 2026-03-31 10:37 ` Abel Vesa
  2026-03-31 10:37 ` [PATCH 3/3] arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support Abel Vesa
  2 siblings, 0 replies; 18+ messages in thread
From: Abel Vesa @ 2026-03-31 10:37 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Abel Vesa

On Eliza, the SPMI arbiter supports multiple bus masters, requiring
explicit selection of the master for each PMIC.

The existing PM7750BA dtsi does not provide a way to describe this,
so introduce an Eliza-specific variant with the appropriate bus
configuration.

This duplication is required due to hardware differences in how the
SPMI bus is exposed on this platform.

Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/pm7550ba-eliza.dtsi | 69 ++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/pm7550ba-eliza.dtsi b/arch/arm64/boot/dts/qcom/pm7550ba-eliza.dtsi
new file mode 100644
index 000000000000..2c386f16eca4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/pm7550ba-eliza.dtsi
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2026 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+	thermal-zones {
+		pm7550ba-thermal {
+			polling-delay-passive = <100>;
+
+			thermal-sensors = <&pm7550ba_temp_alarm>;
+
+			trips {
+				trip0 {
+					temperature = <95000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+
+				trip1 {
+					temperature = <115000>;
+					hysteresis = <0>;
+					type = "hot";
+				};
+
+				trip2 {
+					temperature = <145000>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+			};
+		};
+	};
+};
+
+&spmi_bus0 {
+	pm7550ba: pmic@7 {
+		compatible = "qcom,pm7550ba", "qcom,spmi-pmic";
+		reg = <7 SPMI_USID>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pm7550ba_temp_alarm: temp-alarm@a00 {
+			compatible = "qcom,spmi-temp-alarm";
+			reg = <0xa00>;
+			interrupts = <0x7 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+			#thermal-sensor-cells = <0>;
+		};
+
+		pm7550ba_gpios: gpio@8800 {
+			compatible = "qcom,pm7550ba-gpio", "qcom,spmi-gpio";
+			reg = <0x8800>;
+			gpio-controller;
+			gpio-ranges = <&pm7550ba_gpios 0 0 8>;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		pm7550ba_eusb2_repeater: phy@fd00 {
+			compatible = "qcom,pm7550ba-eusb2-repeater", "qcom,pm8550b-eusb2-repeater";
+			reg = <0xfd00>;
+			#phy-cells = <0>;
+		};
+	};
+};

-- 
2.48.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 3/3] arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support
  2026-03-31 10:37 [PATCH 0/3] arm64: dts: qcom: eliza: Add ADSP and USB support Abel Vesa
  2026-03-31 10:37 ` [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes Abel Vesa
  2026-03-31 10:37 ` [PATCH 2/3] arm64: dts: qcom: Add Eliza-specific PM7750BA dtsi Abel Vesa
@ 2026-03-31 10:37 ` Abel Vesa
  2026-03-31 11:12   ` Konrad Dybcio
  2026-03-31 13:27   ` Krzysztof Kozlowski
  2 siblings, 2 replies; 18+ messages in thread
From: Abel Vesa @ 2026-03-31 10:37 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel, Abel Vesa

The Eliza MTP features a single USB Type-C port. Its USB 2.0 lines are
routed through an eUSB2 repeater provided by the PM7750BA PMIC.

Describe the port and repeater, and enable the USB controller and PHYs.

Also specify the ADSP firmware and enable the remoteproc.

Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/eliza-mtp.dts | 83 ++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/eliza-mtp.dts b/arch/arm64/boot/dts/qcom/eliza-mtp.dts
index 90f629800cb0..c31f00e36eee 100644
--- a/arch/arm64/boot/dts/qcom/eliza-mtp.dts
+++ b/arch/arm64/boot/dts/qcom/eliza-mtp.dts
@@ -6,9 +6,12 @@
 /dts-v1/;
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 #include "eliza.dtsi"
 
+#include "pm7550ba-eliza.dtsi"
+
 / {
 	model = "Qualcomm Technologies, Inc. Eliza MTP";
 	compatible = "qcom,eliza-mtp", "qcom,eliza";
@@ -54,6 +57,44 @@ bi_tcxo_ao_div2: bi-tcxo-ao-div2-clk {
 		};
 	};
 
+	pmic-glink {
+		compatible = "qcom,eliza-pmic-glink",
+			     "qcom,sm8550-pmic-glink",
+			     "qcom,pmic-glink";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		orientation-gpios = <&tlmm 122 GPIO_ACTIVE_HIGH>;
+
+		connector@0 {
+			compatible = "usb-c-connector";
+			reg = <0>;
+
+			power-role = "dual";
+			data-role = "dual";
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port@0 {
+					reg = <0>;
+
+					pmic_glink_hs_in: endpoint {
+						remote-endpoint = <&usb_dwc3_hs>;
+					};
+				};
+
+				port@1 {
+					reg = <1>;
+
+					pmic_glink_ss_in: endpoint {
+						remote-endpoint = <&usb_dp_qmpphy_out>;
+					};
+				};
+			};
+		};
+	};
+
 	vph_pwr: regulator-vph-pwr {
 		compatible = "regulator-fixed";
 
@@ -376,6 +417,18 @@ vreg_l7k: ldo7 {
 	};
 };
 
+&pm7550ba_eusb2_repeater {
+	vdd18-supply = <&vreg_l7b>;
+	vdd3-supply = <&vreg_l17b>;
+};
+
+&remoteproc_adsp {
+	firmware-name = "qcom/eliza/adsp.mbn",
+			"qcom/eliza/adsp_dtb.mbn";
+
+	status = "okay";
+};
+
 &tlmm {
 	gpio-reserved-ranges = <20 4>,   /* NFC SPI */
 			       <111 2>,  /* WCN UART1 */
@@ -405,3 +458,33 @@ &ufs_mem_phy {
 
 	status = "okay";
 };
+
+&usb {
+	dr_mode = "otg";
+
+	status = "okay";
+};
+
+&usb_dp_qmpphy {
+	vdda-phy-supply = <&vreg_l3g>;
+	vdda-pll-supply = <&vreg_l7k>;
+
+	status = "okay";
+};
+
+&usb_dp_qmpphy_out {
+	remote-endpoint = <&pmic_glink_ss_in>;
+};
+
+&usb_dwc3_hs {
+	remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_hsphy {
+	vdd-supply = <&vreg_l2b>;
+	vdda12-supply = <&vreg_l4b>;
+
+	phys = <&pm7550ba_eusb2_repeater>;
+
+	status = "okay";
+};

-- 
2.48.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 3/3] arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support
  2026-03-31 10:37 ` [PATCH 3/3] arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support Abel Vesa
@ 2026-03-31 11:12   ` Konrad Dybcio
  2026-03-31 13:27   ` Krzysztof Kozlowski
  1 sibling, 0 replies; 18+ messages in thread
From: Konrad Dybcio @ 2026-03-31 11:12 UTC (permalink / raw)
  To: Abel Vesa, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel

On 3/31/26 12:37 PM, Abel Vesa wrote:
> The Eliza MTP features a single USB Type-C port. Its USB 2.0 lines are
> routed through an eUSB2 repeater provided by the PM7750BA PMIC.
> 
> Describe the port and repeater, and enable the USB controller and PHYs.
> 
> Also specify the ADSP firmware and enable the remoteproc.
> 
> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> ---

[...]

> +&usb {
> +	dr_mode = "otg";

That's the default if dr_mode is absent, drop 

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>

Konrad

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-03-31 10:37 ` [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes Abel Vesa
@ 2026-03-31 13:27   ` Krzysztof Kozlowski
  2026-03-31 13:37   ` Konrad Dybcio
  1 sibling, 0 replies; 18+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-31 13:27 UTC (permalink / raw)
  To: Abel Vesa, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel

On 31/03/2026 12:37, Abel Vesa wrote:
> Describe the ADSP remoteproc node along with its dependencies, including
> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
> 
> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
> combo PHY and an SNPS eUSB2 PHY. Describe them.
> 
> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> ---
>  arch/arm64/boot/dts/qcom/eliza.dtsi | 261 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 261 insertions(+)

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Tested-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 3/3] arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support
  2026-03-31 10:37 ` [PATCH 3/3] arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support Abel Vesa
  2026-03-31 11:12   ` Konrad Dybcio
@ 2026-03-31 13:27   ` Krzysztof Kozlowski
  1 sibling, 0 replies; 18+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-31 13:27 UTC (permalink / raw)
  To: Abel Vesa, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel

On 31/03/2026 12:37, Abel Vesa wrote:
> The Eliza MTP features a single USB Type-C port. Its USB 2.0 lines are
> routed through an eUSB2 repeater provided by the PM7750BA PMIC.
> 
> Describe the port and repeater, and enable the USB controller and PHYs.
> 
> Also specify the ADSP firmware and enable the remoteproc.
> 
> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> ---
>  arch/arm64/boot/dts/qcom/eliza-mtp.dts | 83 ++++++++++++++++++++++++++++++++++
>  1 file changed, 83 insertions(+)
> 

With fix as pointed out by Konrad:

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Tested-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-03-31 10:37 ` [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes Abel Vesa
  2026-03-31 13:27   ` Krzysztof Kozlowski
@ 2026-03-31 13:37   ` Konrad Dybcio
  2026-04-22  9:41     ` Abel Vesa
  1 sibling, 1 reply; 18+ messages in thread
From: Konrad Dybcio @ 2026-03-31 13:37 UTC (permalink / raw)
  To: Abel Vesa, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-msm, devicetree, linux-kernel

On 3/31/26 12:37 PM, Abel Vesa wrote:
> Describe the ADSP remoteproc node along with its dependencies, including
> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
> 
> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
> combo PHY and an SNPS eUSB2 PHY. Describe them.
> 
> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> ---

[...]

> +		usb_hsphy: phy@88e3000 {
> +			compatible = "qcom,eliza-snps-eusb2-phy",
> +				     "qcom,sm8550-snps-eusb2-phy";
> +			reg = <0x0 0x088e3000 0x0 0x154>;
> +			#phy-cells = <0>;
> +
> +			clocks = <&rpmhcc RPMH_CXO_CLK>;

This is TCSR_USB2_CLKREF_EN


> +		usb: usb@a600000 {
> +			compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";

Does the device suspend and resume successfully?

Konrad

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-03-31 13:37   ` Konrad Dybcio
@ 2026-04-22  9:41     ` Abel Vesa
  2026-04-22 10:09       ` Konrad Dybcio
  0 siblings, 1 reply; 18+ messages in thread
From: Abel Vesa @ 2026-04-22  9:41 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, linux-arm-msm, devicetree, linux-kernel

On 26-03-31 15:37:08, Konrad Dybcio wrote:
> On 3/31/26 12:37 PM, Abel Vesa wrote:
> > Describe the ADSP remoteproc node along with its dependencies, including
> > the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
> > 
> > The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
> > combo PHY and an SNPS eUSB2 PHY. Describe them.
> > 
> > Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> > ---
> 
> [...]
> 
> > +		usb_hsphy: phy@88e3000 {
> > +			compatible = "qcom,eliza-snps-eusb2-phy",
> > +				     "qcom,sm8550-snps-eusb2-phy";
> > +			reg = <0x0 0x088e3000 0x0 0x154>;
> > +			#phy-cells = <0>;
> > +
> > +			clocks = <&rpmhcc RPMH_CXO_CLK>;
> 
> This is TCSR_USB2_CLKREF_EN

Good point. Will fix.

> 
> 
> > +		usb: usb@a600000 {
> > +			compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
> 
> Does the device suspend and resume successfully?

Well, tested with pm_test devices and it does suspend and resume
successfully, but there is this:

[   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2

But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
all platforms that have them.

Please correct me if I'm wrong.

Sorry for the late reply.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-04-22  9:41     ` Abel Vesa
@ 2026-04-22 10:09       ` Konrad Dybcio
  2026-04-22 10:20         ` Abel Vesa
  0 siblings, 1 reply; 18+ messages in thread
From: Konrad Dybcio @ 2026-04-22 10:09 UTC (permalink / raw)
  To: Abel Vesa
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, linux-arm-msm, devicetree, linux-kernel

On 4/22/26 11:41 AM, Abel Vesa wrote:
> On 26-03-31 15:37:08, Konrad Dybcio wrote:
>> On 3/31/26 12:37 PM, Abel Vesa wrote:
>>> Describe the ADSP remoteproc node along with its dependencies, including
>>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
>>>
>>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
>>> combo PHY and an SNPS eUSB2 PHY. Describe them.
>>>
>>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
>>> ---
>>
>> [...]
>>
>>> +		usb_hsphy: phy@88e3000 {
>>> +			compatible = "qcom,eliza-snps-eusb2-phy",
>>> +				     "qcom,sm8550-snps-eusb2-phy";
>>> +			reg = <0x0 0x088e3000 0x0 0x154>;
>>> +			#phy-cells = <0>;
>>> +
>>> +			clocks = <&rpmhcc RPMH_CXO_CLK>;
>>
>> This is TCSR_USB2_CLKREF_EN
> 
> Good point. Will fix.
> 
>>
>>
>>> +		usb: usb@a600000 {
>>> +			compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
>>
>> Does the device suspend and resume successfully?
> 
> Well, tested with pm_test devices and it does suspend and resume
> successfully, but there is this:
> 
> [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
> 
> But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
> all platforms that have them.

Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
some DWC quirk in the list, although it seems pretty long already. Perhaps
Wesley would know more.

Konrad

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-04-22 10:09       ` Konrad Dybcio
@ 2026-04-22 10:20         ` Abel Vesa
  2026-04-28  5:46           ` Krishna Kurapati PSSNV
  0 siblings, 1 reply; 18+ messages in thread
From: Abel Vesa @ 2026-04-22 10:20 UTC (permalink / raw)
  To: Konrad Dybcio, Wesley Cheng
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, linux-arm-msm, devicetree, linux-kernel

On 26-04-22 12:09:31, Konrad Dybcio wrote:
> On 4/22/26 11:41 AM, Abel Vesa wrote:
> > On 26-03-31 15:37:08, Konrad Dybcio wrote:
> >> On 3/31/26 12:37 PM, Abel Vesa wrote:
> >>> Describe the ADSP remoteproc node along with its dependencies, including
> >>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
> >>>
> >>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
> >>> combo PHY and an SNPS eUSB2 PHY. Describe them.
> >>>
> >>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> >>> ---
> >>
> >> [...]
> >>
> >>> +		usb_hsphy: phy@88e3000 {
> >>> +			compatible = "qcom,eliza-snps-eusb2-phy",
> >>> +				     "qcom,sm8550-snps-eusb2-phy";
> >>> +			reg = <0x0 0x088e3000 0x0 0x154>;
> >>> +			#phy-cells = <0>;
> >>> +
> >>> +			clocks = <&rpmhcc RPMH_CXO_CLK>;
> >>
> >> This is TCSR_USB2_CLKREF_EN
> > 
> > Good point. Will fix.
> > 
> >>
> >>
> >>> +		usb: usb@a600000 {
> >>> +			compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
> >>
> >> Does the device suspend and resume successfully?
> > 
> > Well, tested with pm_test devices and it does suspend and resume
> > successfully, but there is this:
> > 
> > [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
> > 
> > But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
> > all platforms that have them.
> 
> Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
> some DWC quirk in the list, although it seems pretty long already. Perhaps
> Wesley would know more.

+ Wesley

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-04-22 10:20         ` Abel Vesa
@ 2026-04-28  5:46           ` Krishna Kurapati PSSNV
  2026-04-28  9:24             ` Konrad Dybcio
  0 siblings, 1 reply; 18+ messages in thread
From: Krishna Kurapati PSSNV @ 2026-04-28  5:46 UTC (permalink / raw)
  To: Abel Vesa, Konrad Dybcio
  Cc: Wesley Cheng, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
	linux-kernel

On Wed, Apr 22, 2026 at 3:55 PM Abel Vesa <abel.vesa@oss.qualcomm.com> wrote:
>
> On 26-04-22 12:09:31, Konrad Dybcio wrote:
> > On 4/22/26 11:41 AM, Abel Vesa wrote:
> > > On 26-03-31 15:37:08, Konrad Dybcio wrote:
> > >> On 3/31/26 12:37 PM, Abel Vesa wrote:
> > >>> Describe the ADSP remoteproc node along with its dependencies, including
> > >>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
> > >>>
> > >>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
> > >>> combo PHY and an SNPS eUSB2 PHY. Describe them.
> > >>>
> > >>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> > >>> ---
> > >>
> > >> [...]
> > >>
> > >>> +         usb_hsphy: phy@88e3000 {
> > >>> +                 compatible = "qcom,eliza-snps-eusb2-phy",
> > >>> +                              "qcom,sm8550-snps-eusb2-phy";
> > >>> +                 reg = <0x0 0x088e3000 0x0 0x154>;
> > >>> +                 #phy-cells = <0>;
> > >>> +
> > >>> +                 clocks = <&rpmhcc RPMH_CXO_CLK>;
> > >>
> > >> This is TCSR_USB2_CLKREF_EN
> > >
> > > Good point. Will fix.
> > >
> > >>
> > >>
> > >>> +         usb: usb@a600000 {
> > >>> +                 compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
> > >>
> > >> Does the device suspend and resume successfully?
> > >
> > > Well, tested with pm_test devices and it does suspend and resume
> > > successfully, but there is this:
> > >
> > > [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
> > >
> > > But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
> > > all platforms that have them.
> >
> > Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
> > some DWC quirk in the list, although it seems pretty long already. Perhaps
> > Wesley would know more.
>
> + Wesley
>

As per HPG and downstream, this is what needs to be done while entering suspend:

1. Clear PWR_EVNT_LPM_IN_L2_MASK bit of pwr_evnt_irq_stat_reg
2. Clear PWR_EVNT_LPM_OUT_L2_MASK bit of pwr_evnt_irq_stat_reg
3. Set the following bits in the pwr_evnt_irq_stat_reg:
 a)  DWC3_GUSB2PHYCFG_ENBLSLPM  and  DWC3_GUSB2PHYCFG_SUSPHY
4. Wait for 3ms for PWR_EVNT_LPM_IN_L2_MASK to be set
5. If it is not set, then we can print the error
6. If its set, then we need to clear the bits.

Regards,
Krishna,

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-04-28  5:46           ` Krishna Kurapati PSSNV
@ 2026-04-28  9:24             ` Konrad Dybcio
  2026-04-29  1:57               ` Krishna Kurapati PSSNV
  0 siblings, 1 reply; 18+ messages in thread
From: Konrad Dybcio @ 2026-04-28  9:24 UTC (permalink / raw)
  To: Krishna Kurapati PSSNV, Abel Vesa
  Cc: Wesley Cheng, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
	linux-kernel

On 4/28/26 7:46 AM, Krishna Kurapati PSSNV wrote:
> On Wed, Apr 22, 2026 at 3:55 PM Abel Vesa <abel.vesa@oss.qualcomm.com> wrote:
>>
>> On 26-04-22 12:09:31, Konrad Dybcio wrote:
>>> On 4/22/26 11:41 AM, Abel Vesa wrote:
>>>> On 26-03-31 15:37:08, Konrad Dybcio wrote:
>>>>> On 3/31/26 12:37 PM, Abel Vesa wrote:
>>>>>> Describe the ADSP remoteproc node along with its dependencies, including
>>>>>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
>>>>>>
>>>>>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
>>>>>> combo PHY and an SNPS eUSB2 PHY. Describe them.
>>>>>>
>>>>>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
>>>>>> ---
>>>>>
>>>>> [...]
>>>>>
>>>>>> +         usb_hsphy: phy@88e3000 {
>>>>>> +                 compatible = "qcom,eliza-snps-eusb2-phy",
>>>>>> +                              "qcom,sm8550-snps-eusb2-phy";
>>>>>> +                 reg = <0x0 0x088e3000 0x0 0x154>;
>>>>>> +                 #phy-cells = <0>;
>>>>>> +
>>>>>> +                 clocks = <&rpmhcc RPMH_CXO_CLK>;
>>>>>
>>>>> This is TCSR_USB2_CLKREF_EN
>>>>
>>>> Good point. Will fix.
>>>>
>>>>>
>>>>>
>>>>>> +         usb: usb@a600000 {
>>>>>> +                 compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
>>>>>
>>>>> Does the device suspend and resume successfully?
>>>>
>>>> Well, tested with pm_test devices and it does suspend and resume
>>>> successfully, but there is this:
>>>>
>>>> [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
>>>>
>>>> But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
>>>> all platforms that have them.
>>>
>>> Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
>>> some DWC quirk in the list, although it seems pretty long already. Perhaps
>>> Wesley would know more.
>>
>> + Wesley
>>
> 
> As per HPG and downstream, this is what needs to be done while entering suspend:
> 
> 1. Clear PWR_EVNT_LPM_IN_L2_MASK bit of pwr_evnt_irq_stat_reg
> 2. Clear PWR_EVNT_LPM_OUT_L2_MASK bit of pwr_evnt_irq_stat_reg
> 3. Set the following bits in the pwr_evnt_irq_stat_reg:
>  a)  DWC3_GUSB2PHYCFG_ENBLSLPM  and  DWC3_GUSB2PHYCFG_SUSPHY

In case that's related, most platforms (including this one), set
snps,dis_enblslpm_quirk which prevents the first bit from being set

Likewise, snps,dis_u2_susphy_quirk for the second one

(although it looks like setting these bits is currently
unconditional upon suspend in HOST mode?)


As for the sequence you mentioned, I believe the diff below should be
OK - although it _really_ just adds some delay vs the current state,
since the bits are cleared in the resume call

diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
index f43f73ac36ff..e7b1775b7207 100644
--- a/drivers/usb/dwc3/dwc3-qcom.c
+++ b/drivers/usb/dwc3/dwc3-qcom.c
@@ -12,6 +12,7 @@
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/interconnect.h>
+#include <linux/iopoll.h>
 #include <linux/platform_device.h>
 #include <linux/phy/phy.h>
 #include <linux/usb/of.h>
@@ -344,10 +345,18 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup)
                return 0;
 
        for (i = 0; i < qcom->num_ports; i++) {
-               val = readl(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
-               if (!(val & PWR_EVNT_LPM_IN_L2_MASK))
+               /* Wait for the PHYs to go into L2 */
+               ret = readl_poll_timeout(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i],
+                                        val, val & PWR_EVNT_LPM_IN_L2_MASK,
+                                        10, 3 * USEC_PER_MSEC);
+
+               if (ret == -ETIMEDOUT)
                        dev_err(qcom->dev, "port-%d HS-PHY not in L2\n", i + 1);
        }
+
+       /* Clear L2 event bit */
+       writel(PWR_EVNT_LPM_IN_L2_MASK, qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
+
        clk_bulk_disable_unprepare(qcom->num_clocks, qcom->clks);
 
        ret = dwc3_qcom_interconnect_disable(qcom);
@@ -752,6 +761,13 @@ static int dwc3_qcom_pm_suspend(struct device *dev)
        bool wakeup = device_may_wakeup(dev);
        int ret;
 
+       /* Clear previous L2 events */
+       for (int i = 0; i < qcom->num_ports; i++) {
+               writel(PWR_EVNT_LPM_IN_L2_MASK | PWR_EVNT_LPM_OUT_L2_MASK,
+                      qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
+       }
+
        ret = dwc3_pm_suspend(&qcom->dwc);
        if (ret)
                return ret;


Konrad

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-04-28  9:24             ` Konrad Dybcio
@ 2026-04-29  1:57               ` Krishna Kurapati PSSNV
  2026-04-29  9:45                 ` Konrad Dybcio
  0 siblings, 1 reply; 18+ messages in thread
From: Krishna Kurapati PSSNV @ 2026-04-29  1:57 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Abel Vesa, Wesley Cheng, Bjorn Andersson, Konrad Dybcio,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
	devicetree, linux-kernel

On Tue, Apr 28, 2026 at 2:54 PM Konrad Dybcio
<konrad.dybcio@oss.qualcomm.com> wrote:
>
> On 4/28/26 7:46 AM, Krishna Kurapati PSSNV wrote:
> > On Wed, Apr 22, 2026 at 3:55 PM Abel Vesa <abel.vesa@oss.qualcomm.com> wrote:
> >>
> >> On 26-04-22 12:09:31, Konrad Dybcio wrote:
> >>> On 4/22/26 11:41 AM, Abel Vesa wrote:
> >>>> On 26-03-31 15:37:08, Konrad Dybcio wrote:
> >>>>> On 3/31/26 12:37 PM, Abel Vesa wrote:
> >>>>>> Describe the ADSP remoteproc node along with its dependencies, including
> >>>>>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
> >>>>>>
> >>>>>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
> >>>>>> combo PHY and an SNPS eUSB2 PHY. Describe them.
> >>>>>>
> >>>>>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> >>>>>> ---
> >>>>>
> >>>>> [...]
> >>>>>
> >>>>>> +         usb_hsphy: phy@88e3000 {
> >>>>>> +                 compatible = "qcom,eliza-snps-eusb2-phy",
> >>>>>> +                              "qcom,sm8550-snps-eusb2-phy";
> >>>>>> +                 reg = <0x0 0x088e3000 0x0 0x154>;
> >>>>>> +                 #phy-cells = <0>;
> >>>>>> +
> >>>>>> +                 clocks = <&rpmhcc RPMH_CXO_CLK>;
> >>>>>
> >>>>> This is TCSR_USB2_CLKREF_EN
> >>>>
> >>>> Good point. Will fix.
> >>>>
> >>>>>
> >>>>>
> >>>>>> +         usb: usb@a600000 {
> >>>>>> +                 compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
> >>>>>
> >>>>> Does the device suspend and resume successfully?
> >>>>
> >>>> Well, tested with pm_test devices and it does suspend and resume
> >>>> successfully, but there is this:
> >>>>
> >>>> [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
> >>>>
> >>>> But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
> >>>> all platforms that have them.
> >>>
> >>> Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
> >>> some DWC quirk in the list, although it seems pretty long already. Perhaps
> >>> Wesley would know more.
> >>
> >> + Wesley
> >>
> >
> > As per HPG and downstream, this is what needs to be done while entering suspend:
> >
> > 1. Clear PWR_EVNT_LPM_IN_L2_MASK bit of pwr_evnt_irq_stat_reg
> > 2. Clear PWR_EVNT_LPM_OUT_L2_MASK bit of pwr_evnt_irq_stat_reg
> > 3. Set the following bits in the pwr_evnt_irq_stat_reg:
> >  a)  DWC3_GUSB2PHYCFG_ENBLSLPM  and  DWC3_GUSB2PHYCFG_SUSPHY
>
> In case that's related, most platforms (including this one), set
> snps,dis_enblslpm_quirk which prevents the first bit from being set
>
> Likewise, snps,dis_u2_susphy_quirk for the second one
>
> (although it looks like setting these bits is currently
> unconditional upon suspend in HOST mode?)
>
>
> As for the sequence you mentioned, I believe the diff below should be
> OK - although it _really_ just adds some delay vs the current state,
> since the bits are cleared in the resume call
>
> diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
> index f43f73ac36ff..e7b1775b7207 100644
> --- a/drivers/usb/dwc3/dwc3-qcom.c
> +++ b/drivers/usb/dwc3/dwc3-qcom.c
> @@ -12,6 +12,7 @@
>  #include <linux/module.h>
>  #include <linux/kernel.h>
>  #include <linux/interconnect.h>
> +#include <linux/iopoll.h>
>  #include <linux/platform_device.h>
>  #include <linux/phy/phy.h>
>  #include <linux/usb/of.h>
> @@ -344,10 +345,18 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup)
>                 return 0;
>
>         for (i = 0; i < qcom->num_ports; i++) {
> -               val = readl(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
> -               if (!(val & PWR_EVNT_LPM_IN_L2_MASK))
> +               /* Wait for the PHYs to go into L2 */
> +               ret = readl_poll_timeout(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i],
> +                                        val, val & PWR_EVNT_LPM_IN_L2_MASK,
> +                                        10, 3 * USEC_PER_MSEC);
> +
> +               if (ret == -ETIMEDOUT)
>                         dev_err(qcom->dev, "port-%d HS-PHY not in L2\n", i + 1);
>         }
> +


I think its best to set the DWC3_GUSB2PHYCFG_ENBLSLPM and
DWC3_GUSB2PHYCFG_SUSPHY here as well based on quirks before polling
for the irq_stat register.

Regards,
Krishna,

> +       /* Clear L2 event bit */
> +       writel(PWR_EVNT_LPM_IN_L2_MASK, qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
> +
>         clk_bulk_disable_unprepare(qcom->num_clocks, qcom->clks);
>
>         ret = dwc3_qcom_interconnect_disable(qcom);
> @@ -752,6 +761,13 @@ static int dwc3_qcom_pm_suspend(struct device *dev)
>         bool wakeup = device_may_wakeup(dev);
>         int ret;
>
> +       /* Clear previous L2 events */
> +       for (int i = 0; i < qcom->num_ports; i++) {
> +               writel(PWR_EVNT_LPM_IN_L2_MASK | PWR_EVNT_LPM_OUT_L2_MASK,
> +                      qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
> +       }
> +
>         ret = dwc3_pm_suspend(&qcom->dwc);
>         if (ret)
>                 return ret;
>
>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-04-29  1:57               ` Krishna Kurapati PSSNV
@ 2026-04-29  9:45                 ` Konrad Dybcio
  2026-05-04 10:06                   ` Abel Vesa
  0 siblings, 1 reply; 18+ messages in thread
From: Konrad Dybcio @ 2026-04-29  9:45 UTC (permalink / raw)
  To: Krishna Kurapati PSSNV
  Cc: Abel Vesa, Wesley Cheng, Bjorn Andersson, Konrad Dybcio,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
	devicetree, linux-kernel

On 4/29/26 3:57 AM, Krishna Kurapati PSSNV wrote:
> On Tue, Apr 28, 2026 at 2:54 PM Konrad Dybcio
> <konrad.dybcio@oss.qualcomm.com> wrote:
>>
>> On 4/28/26 7:46 AM, Krishna Kurapati PSSNV wrote:
>>> On Wed, Apr 22, 2026 at 3:55 PM Abel Vesa <abel.vesa@oss.qualcomm.com> wrote:
>>>>
>>>> On 26-04-22 12:09:31, Konrad Dybcio wrote:
>>>>> On 4/22/26 11:41 AM, Abel Vesa wrote:
>>>>>> On 26-03-31 15:37:08, Konrad Dybcio wrote:
>>>>>>> On 3/31/26 12:37 PM, Abel Vesa wrote:
>>>>>>>> Describe the ADSP remoteproc node along with its dependencies, including
>>>>>>>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
>>>>>>>>
>>>>>>>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
>>>>>>>> combo PHY and an SNPS eUSB2 PHY. Describe them.
>>>>>>>>
>>>>>>>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
>>>>>>>> ---
>>>>>>>
>>>>>>> [...]
>>>>>>>
>>>>>>>> +         usb_hsphy: phy@88e3000 {
>>>>>>>> +                 compatible = "qcom,eliza-snps-eusb2-phy",
>>>>>>>> +                              "qcom,sm8550-snps-eusb2-phy";
>>>>>>>> +                 reg = <0x0 0x088e3000 0x0 0x154>;
>>>>>>>> +                 #phy-cells = <0>;
>>>>>>>> +
>>>>>>>> +                 clocks = <&rpmhcc RPMH_CXO_CLK>;
>>>>>>>
>>>>>>> This is TCSR_USB2_CLKREF_EN
>>>>>>
>>>>>> Good point. Will fix.
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> +         usb: usb@a600000 {
>>>>>>>> +                 compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
>>>>>>>
>>>>>>> Does the device suspend and resume successfully?
>>>>>>
>>>>>> Well, tested with pm_test devices and it does suspend and resume
>>>>>> successfully, but there is this:
>>>>>>
>>>>>> [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
>>>>>>
>>>>>> But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
>>>>>> all platforms that have them.
>>>>>
>>>>> Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
>>>>> some DWC quirk in the list, although it seems pretty long already. Perhaps
>>>>> Wesley would know more.
>>>>
>>>> + Wesley
>>>>
>>>
>>> As per HPG and downstream, this is what needs to be done while entering suspend:
>>>
>>> 1. Clear PWR_EVNT_LPM_IN_L2_MASK bit of pwr_evnt_irq_stat_reg
>>> 2. Clear PWR_EVNT_LPM_OUT_L2_MASK bit of pwr_evnt_irq_stat_reg
>>> 3. Set the following bits in the pwr_evnt_irq_stat_reg:
>>>  a)  DWC3_GUSB2PHYCFG_ENBLSLPM  and  DWC3_GUSB2PHYCFG_SUSPHY
>>
>> In case that's related, most platforms (including this one), set
>> snps,dis_enblslpm_quirk which prevents the first bit from being set
>>
>> Likewise, snps,dis_u2_susphy_quirk for the second one
>>
>> (although it looks like setting these bits is currently
>> unconditional upon suspend in HOST mode?)
>>
>>
>> As for the sequence you mentioned, I believe the diff below should be
>> OK - although it _really_ just adds some delay vs the current state,
>> since the bits are cleared in the resume call
>>
>> diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
>> index f43f73ac36ff..e7b1775b7207 100644
>> --- a/drivers/usb/dwc3/dwc3-qcom.c
>> +++ b/drivers/usb/dwc3/dwc3-qcom.c
>> @@ -12,6 +12,7 @@
>>  #include <linux/module.h>
>>  #include <linux/kernel.h>
>>  #include <linux/interconnect.h>
>> +#include <linux/iopoll.h>
>>  #include <linux/platform_device.h>
>>  #include <linux/phy/phy.h>
>>  #include <linux/usb/of.h>
>> @@ -344,10 +345,18 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup)
>>                 return 0;
>>
>>         for (i = 0; i < qcom->num_ports; i++) {
>> -               val = readl(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
>> -               if (!(val & PWR_EVNT_LPM_IN_L2_MASK))
>> +               /* Wait for the PHYs to go into L2 */
>> +               ret = readl_poll_timeout(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i],
>> +                                        val, val & PWR_EVNT_LPM_IN_L2_MASK,
>> +                                        10, 3 * USEC_PER_MSEC);
>> +
>> +               if (ret == -ETIMEDOUT)
>>                         dev_err(qcom->dev, "port-%d HS-PHY not in L2\n", i + 1);
>>         }
>> +
> 
> 
> I think its best to set the DWC3_GUSB2PHYCFG_ENBLSLPM and
> DWC3_GUSB2PHYCFG_SUSPHY here as well based on quirks before polling
> for the irq_stat register.

Hm, it seems like the dwc3 core layer only does so in the suspend
path if dr_mode = "host"?

Konrad

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-04-29  9:45                 ` Konrad Dybcio
@ 2026-05-04 10:06                   ` Abel Vesa
  2026-05-04 10:25                     ` Konrad Dybcio
  0 siblings, 1 reply; 18+ messages in thread
From: Abel Vesa @ 2026-05-04 10:06 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Krishna Kurapati PSSNV, Wesley Cheng, Bjorn Andersson,
	Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-arm-msm, devicetree, linux-kernel

On 26-04-29 11:45:10, Konrad Dybcio wrote:
> On 4/29/26 3:57 AM, Krishna Kurapati PSSNV wrote:
> > On Tue, Apr 28, 2026 at 2:54 PM Konrad Dybcio
> > <konrad.dybcio@oss.qualcomm.com> wrote:
> >>
> >> On 4/28/26 7:46 AM, Krishna Kurapati PSSNV wrote:
> >>> On Wed, Apr 22, 2026 at 3:55 PM Abel Vesa <abel.vesa@oss.qualcomm.com> wrote:
> >>>>
> >>>> On 26-04-22 12:09:31, Konrad Dybcio wrote:
> >>>>> On 4/22/26 11:41 AM, Abel Vesa wrote:
> >>>>>> On 26-03-31 15:37:08, Konrad Dybcio wrote:
> >>>>>>> On 3/31/26 12:37 PM, Abel Vesa wrote:
> >>>>>>>> Describe the ADSP remoteproc node along with its dependencies, including
> >>>>>>>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
> >>>>>>>>
> >>>>>>>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
> >>>>>>>> combo PHY and an SNPS eUSB2 PHY. Describe them.
> >>>>>>>>
> >>>>>>>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> >>>>>>>> ---
> >>>>>>>
> >>>>>>> [...]
> >>>>>>>
> >>>>>>>> +         usb_hsphy: phy@88e3000 {
> >>>>>>>> +                 compatible = "qcom,eliza-snps-eusb2-phy",
> >>>>>>>> +                              "qcom,sm8550-snps-eusb2-phy";
> >>>>>>>> +                 reg = <0x0 0x088e3000 0x0 0x154>;
> >>>>>>>> +                 #phy-cells = <0>;
> >>>>>>>> +
> >>>>>>>> +                 clocks = <&rpmhcc RPMH_CXO_CLK>;
> >>>>>>>
> >>>>>>> This is TCSR_USB2_CLKREF_EN
> >>>>>>
> >>>>>> Good point. Will fix.
> >>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>> +         usb: usb@a600000 {
> >>>>>>>> +                 compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
> >>>>>>>
> >>>>>>> Does the device suspend and resume successfully?
> >>>>>>
> >>>>>> Well, tested with pm_test devices and it does suspend and resume
> >>>>>> successfully, but there is this:
> >>>>>>
> >>>>>> [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
> >>>>>>
> >>>>>> But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
> >>>>>> all platforms that have them.
> >>>>>
> >>>>> Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
> >>>>> some DWC quirk in the list, although it seems pretty long already. Perhaps
> >>>>> Wesley would know more.
> >>>>
> >>>> + Wesley
> >>>>
> >>>
> >>> As per HPG and downstream, this is what needs to be done while entering suspend:
> >>>
> >>> 1. Clear PWR_EVNT_LPM_IN_L2_MASK bit of pwr_evnt_irq_stat_reg
> >>> 2. Clear PWR_EVNT_LPM_OUT_L2_MASK bit of pwr_evnt_irq_stat_reg
> >>> 3. Set the following bits in the pwr_evnt_irq_stat_reg:
> >>>  a)  DWC3_GUSB2PHYCFG_ENBLSLPM  and  DWC3_GUSB2PHYCFG_SUSPHY
> >>
> >> In case that's related, most platforms (including this one), set
> >> snps,dis_enblslpm_quirk which prevents the first bit from being set
> >>
> >> Likewise, snps,dis_u2_susphy_quirk for the second one
> >>
> >> (although it looks like setting these bits is currently
> >> unconditional upon suspend in HOST mode?)
> >>
> >>
> >> As for the sequence you mentioned, I believe the diff below should be
> >> OK - although it _really_ just adds some delay vs the current state,
> >> since the bits are cleared in the resume call
> >>
> >> diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
> >> index f43f73ac36ff..e7b1775b7207 100644
> >> --- a/drivers/usb/dwc3/dwc3-qcom.c
> >> +++ b/drivers/usb/dwc3/dwc3-qcom.c
> >> @@ -12,6 +12,7 @@
> >>  #include <linux/module.h>
> >>  #include <linux/kernel.h>
> >>  #include <linux/interconnect.h>
> >> +#include <linux/iopoll.h>
> >>  #include <linux/platform_device.h>
> >>  #include <linux/phy/phy.h>
> >>  #include <linux/usb/of.h>
> >> @@ -344,10 +345,18 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup)
> >>                 return 0;
> >>
> >>         for (i = 0; i < qcom->num_ports; i++) {
> >> -               val = readl(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
> >> -               if (!(val & PWR_EVNT_LPM_IN_L2_MASK))
> >> +               /* Wait for the PHYs to go into L2 */
> >> +               ret = readl_poll_timeout(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i],
> >> +                                        val, val & PWR_EVNT_LPM_IN_L2_MASK,
> >> +                                        10, 3 * USEC_PER_MSEC);
> >> +
> >> +               if (ret == -ETIMEDOUT)
> >>                         dev_err(qcom->dev, "port-%d HS-PHY not in L2\n", i + 1);
> >>         }
> >> +
> > 
> > 
> > I think its best to set the DWC3_GUSB2PHYCFG_ENBLSLPM and
> > DWC3_GUSB2PHYCFG_SUSPHY here as well based on quirks before polling
> > for the irq_stat register.
> 
> Hm, it seems like the dwc3 core layer only does so in the suspend
> path if dr_mode = "host"?

OK, so I guess the quirk list is complete then, right ?

Lets unblock this.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-05-04 10:06                   ` Abel Vesa
@ 2026-05-04 10:25                     ` Konrad Dybcio
  2026-05-04 10:30                       ` Abel Vesa
  0 siblings, 1 reply; 18+ messages in thread
From: Konrad Dybcio @ 2026-05-04 10:25 UTC (permalink / raw)
  To: Abel Vesa
  Cc: Krishna Kurapati PSSNV, Wesley Cheng, Bjorn Andersson,
	Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-arm-msm, devicetree, linux-kernel

On 5/4/26 12:06 PM, Abel Vesa wrote:
> On 26-04-29 11:45:10, Konrad Dybcio wrote:
>> On 4/29/26 3:57 AM, Krishna Kurapati PSSNV wrote:
>>> On Tue, Apr 28, 2026 at 2:54 PM Konrad Dybcio
>>> <konrad.dybcio@oss.qualcomm.com> wrote:
>>>>
>>>> On 4/28/26 7:46 AM, Krishna Kurapati PSSNV wrote:
>>>>> On Wed, Apr 22, 2026 at 3:55 PM Abel Vesa <abel.vesa@oss.qualcomm.com> wrote:
>>>>>>
>>>>>> On 26-04-22 12:09:31, Konrad Dybcio wrote:
>>>>>>> On 4/22/26 11:41 AM, Abel Vesa wrote:
>>>>>>>> On 26-03-31 15:37:08, Konrad Dybcio wrote:
>>>>>>>>> On 3/31/26 12:37 PM, Abel Vesa wrote:
>>>>>>>>>> Describe the ADSP remoteproc node along with its dependencies, including
>>>>>>>>>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
>>>>>>>>>>
>>>>>>>>>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
>>>>>>>>>> combo PHY and an SNPS eUSB2 PHY. Describe them.
>>>>>>>>>>
>>>>>>>>>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
>>>>>>>>>> ---
>>>>>>>>>
>>>>>>>>> [...]
>>>>>>>>>
>>>>>>>>>> +         usb_hsphy: phy@88e3000 {
>>>>>>>>>> +                 compatible = "qcom,eliza-snps-eusb2-phy",
>>>>>>>>>> +                              "qcom,sm8550-snps-eusb2-phy";
>>>>>>>>>> +                 reg = <0x0 0x088e3000 0x0 0x154>;
>>>>>>>>>> +                 #phy-cells = <0>;
>>>>>>>>>> +
>>>>>>>>>> +                 clocks = <&rpmhcc RPMH_CXO_CLK>;
>>>>>>>>>
>>>>>>>>> This is TCSR_USB2_CLKREF_EN
>>>>>>>>
>>>>>>>> Good point. Will fix.
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> +         usb: usb@a600000 {
>>>>>>>>>> +                 compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
>>>>>>>>>
>>>>>>>>> Does the device suspend and resume successfully?
>>>>>>>>
>>>>>>>> Well, tested with pm_test devices and it does suspend and resume
>>>>>>>> successfully, but there is this:
>>>>>>>>
>>>>>>>> [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
>>>>>>>>
>>>>>>>> But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
>>>>>>>> all platforms that have them.
>>>>>>>
>>>>>>> Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
>>>>>>> some DWC quirk in the list, although it seems pretty long already. Perhaps
>>>>>>> Wesley would know more.
>>>>>>
>>>>>> + Wesley
>>>>>>
>>>>>
>>>>> As per HPG and downstream, this is what needs to be done while entering suspend:
>>>>>
>>>>> 1. Clear PWR_EVNT_LPM_IN_L2_MASK bit of pwr_evnt_irq_stat_reg
>>>>> 2. Clear PWR_EVNT_LPM_OUT_L2_MASK bit of pwr_evnt_irq_stat_reg
>>>>> 3. Set the following bits in the pwr_evnt_irq_stat_reg:
>>>>>  a)  DWC3_GUSB2PHYCFG_ENBLSLPM  and  DWC3_GUSB2PHYCFG_SUSPHY
>>>>
>>>> In case that's related, most platforms (including this one), set
>>>> snps,dis_enblslpm_quirk which prevents the first bit from being set
>>>>
>>>> Likewise, snps,dis_u2_susphy_quirk for the second one
>>>>
>>>> (although it looks like setting these bits is currently
>>>> unconditional upon suspend in HOST mode?)
>>>>
>>>>
>>>> As for the sequence you mentioned, I believe the diff below should be
>>>> OK - although it _really_ just adds some delay vs the current state,
>>>> since the bits are cleared in the resume call
>>>>
>>>> diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
>>>> index f43f73ac36ff..e7b1775b7207 100644
>>>> --- a/drivers/usb/dwc3/dwc3-qcom.c
>>>> +++ b/drivers/usb/dwc3/dwc3-qcom.c
>>>> @@ -12,6 +12,7 @@
>>>>  #include <linux/module.h>
>>>>  #include <linux/kernel.h>
>>>>  #include <linux/interconnect.h>
>>>> +#include <linux/iopoll.h>
>>>>  #include <linux/platform_device.h>
>>>>  #include <linux/phy/phy.h>
>>>>  #include <linux/usb/of.h>
>>>> @@ -344,10 +345,18 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup)
>>>>                 return 0;
>>>>
>>>>         for (i = 0; i < qcom->num_ports; i++) {
>>>> -               val = readl(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
>>>> -               if (!(val & PWR_EVNT_LPM_IN_L2_MASK))
>>>> +               /* Wait for the PHYs to go into L2 */
>>>> +               ret = readl_poll_timeout(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i],
>>>> +                                        val, val & PWR_EVNT_LPM_IN_L2_MASK,
>>>> +                                        10, 3 * USEC_PER_MSEC);
>>>> +
>>>> +               if (ret == -ETIMEDOUT)
>>>>                         dev_err(qcom->dev, "port-%d HS-PHY not in L2\n", i + 1);
>>>>         }
>>>> +
>>>
>>>
>>> I think its best to set the DWC3_GUSB2PHYCFG_ENBLSLPM and
>>> DWC3_GUSB2PHYCFG_SUSPHY here as well based on quirks before polling
>>> for the irq_stat register.
>>
>> Hm, it seems like the dwc3 core layer only does so in the suspend
>> path if dr_mode = "host"?
> 
> OK, so I guess the quirk list is complete then, right ?

Yeah, seems that way

Konrad

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes
  2026-05-04 10:25                     ` Konrad Dybcio
@ 2026-05-04 10:30                       ` Abel Vesa
  0 siblings, 0 replies; 18+ messages in thread
From: Abel Vesa @ 2026-05-04 10:30 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Krishna Kurapati PSSNV, Wesley Cheng, Bjorn Andersson,
	Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-arm-msm, devicetree, linux-kernel

On 26-05-04 12:25:36, Konrad Dybcio wrote:
> On 5/4/26 12:06 PM, Abel Vesa wrote:
> > On 26-04-29 11:45:10, Konrad Dybcio wrote:
> >> On 4/29/26 3:57 AM, Krishna Kurapati PSSNV wrote:
> >>> On Tue, Apr 28, 2026 at 2:54 PM Konrad Dybcio
> >>> <konrad.dybcio@oss.qualcomm.com> wrote:
> >>>>
> >>>> On 4/28/26 7:46 AM, Krishna Kurapati PSSNV wrote:
> >>>>> On Wed, Apr 22, 2026 at 3:55 PM Abel Vesa <abel.vesa@oss.qualcomm.com> wrote:
> >>>>>>
> >>>>>> On 26-04-22 12:09:31, Konrad Dybcio wrote:
> >>>>>>> On 4/22/26 11:41 AM, Abel Vesa wrote:
> >>>>>>>> On 26-03-31 15:37:08, Konrad Dybcio wrote:
> >>>>>>>>> On 3/31/26 12:37 PM, Abel Vesa wrote:
> >>>>>>>>>> Describe the ADSP remoteproc node along with its dependencies, including
> >>>>>>>>>> the IPCC mailbox, AOSS QMP and SMP2P links used for communication.
> >>>>>>>>>>
> >>>>>>>>>> The Eliza SoC features a USB 3.1 Gen 2 controller connected to a QMP
> >>>>>>>>>> combo PHY and an SNPS eUSB2 PHY. Describe them.
> >>>>>>>>>>
> >>>>>>>>>> Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
> >>>>>>>>>> ---
> >>>>>>>>>
> >>>>>>>>> [...]
> >>>>>>>>>
> >>>>>>>>>> +         usb_hsphy: phy@88e3000 {
> >>>>>>>>>> +                 compatible = "qcom,eliza-snps-eusb2-phy",
> >>>>>>>>>> +                              "qcom,sm8550-snps-eusb2-phy";
> >>>>>>>>>> +                 reg = <0x0 0x088e3000 0x0 0x154>;
> >>>>>>>>>> +                 #phy-cells = <0>;
> >>>>>>>>>> +
> >>>>>>>>>> +                 clocks = <&rpmhcc RPMH_CXO_CLK>;
> >>>>>>>>>
> >>>>>>>>> This is TCSR_USB2_CLKREF_EN
> >>>>>>>>
> >>>>>>>> Good point. Will fix.
> >>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>> +         usb: usb@a600000 {
> >>>>>>>>>> +                 compatible = "qcom,eliza-dwc3", "qcom,snps-dwc3";
> >>>>>>>>>
> >>>>>>>>> Does the device suspend and resume successfully?
> >>>>>>>>
> >>>>>>>> Well, tested with pm_test devices and it does suspend and resume
> >>>>>>>> successfully, but there is this:
> >>>>>>>>
> >>>>>>>> [   54.584126] dwc3-qcom a600000.usb: port-1 HS-PHY not in L2
> >>>>>>>>
> >>>>>>>> But if I'm not mistaken, this is valid accross all SNPS eUSB2 PHYs, on
> >>>>>>>> all platforms that have them.
> >>>>>>>
> >>>>>>> Well it's not fatal, but ideally this wouldn't be there. Maybe you're missing
> >>>>>>> some DWC quirk in the list, although it seems pretty long already. Perhaps
> >>>>>>> Wesley would know more.
> >>>>>>
> >>>>>> + Wesley
> >>>>>>
> >>>>>
> >>>>> As per HPG and downstream, this is what needs to be done while entering suspend:
> >>>>>
> >>>>> 1. Clear PWR_EVNT_LPM_IN_L2_MASK bit of pwr_evnt_irq_stat_reg
> >>>>> 2. Clear PWR_EVNT_LPM_OUT_L2_MASK bit of pwr_evnt_irq_stat_reg
> >>>>> 3. Set the following bits in the pwr_evnt_irq_stat_reg:
> >>>>>  a)  DWC3_GUSB2PHYCFG_ENBLSLPM  and  DWC3_GUSB2PHYCFG_SUSPHY
> >>>>
> >>>> In case that's related, most platforms (including this one), set
> >>>> snps,dis_enblslpm_quirk which prevents the first bit from being set
> >>>>
> >>>> Likewise, snps,dis_u2_susphy_quirk for the second one
> >>>>
> >>>> (although it looks like setting these bits is currently
> >>>> unconditional upon suspend in HOST mode?)
> >>>>
> >>>>
> >>>> As for the sequence you mentioned, I believe the diff below should be
> >>>> OK - although it _really_ just adds some delay vs the current state,
> >>>> since the bits are cleared in the resume call
> >>>>
> >>>> diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
> >>>> index f43f73ac36ff..e7b1775b7207 100644
> >>>> --- a/drivers/usb/dwc3/dwc3-qcom.c
> >>>> +++ b/drivers/usb/dwc3/dwc3-qcom.c
> >>>> @@ -12,6 +12,7 @@
> >>>>  #include <linux/module.h>
> >>>>  #include <linux/kernel.h>
> >>>>  #include <linux/interconnect.h>
> >>>> +#include <linux/iopoll.h>
> >>>>  #include <linux/platform_device.h>
> >>>>  #include <linux/phy/phy.h>
> >>>>  #include <linux/usb/of.h>
> >>>> @@ -344,10 +345,18 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup)
> >>>>                 return 0;
> >>>>
> >>>>         for (i = 0; i < qcom->num_ports; i++) {
> >>>> -               val = readl(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i]);
> >>>> -               if (!(val & PWR_EVNT_LPM_IN_L2_MASK))
> >>>> +               /* Wait for the PHYs to go into L2 */
> >>>> +               ret = readl_poll_timeout(qcom->qscratch_base + pwr_evnt_irq_stat_reg[i],
> >>>> +                                        val, val & PWR_EVNT_LPM_IN_L2_MASK,
> >>>> +                                        10, 3 * USEC_PER_MSEC);
> >>>> +
> >>>> +               if (ret == -ETIMEDOUT)
> >>>>                         dev_err(qcom->dev, "port-%d HS-PHY not in L2\n", i + 1);
> >>>>         }
> >>>> +
> >>>
> >>>
> >>> I think its best to set the DWC3_GUSB2PHYCFG_ENBLSLPM and
> >>> DWC3_GUSB2PHYCFG_SUSPHY here as well based on quirks before polling
> >>> for the irq_stat register.
> >>
> >> Hm, it seems like the dwc3 core layer only does so in the suspend
> >> path if dr_mode = "host"?
> > 
> > OK, so I guess the quirk list is complete then, right ?
> 
> Yeah, seems that way

Ok, will respin with your other comment addressed.

Thanks.

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2026-05-04 10:30 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-31 10:37 [PATCH 0/3] arm64: dts: qcom: eliza: Add ADSP and USB support Abel Vesa
2026-03-31 10:37 ` [PATCH 1/3] arm64: dts: qcom: eliza: Describe the ADSP and USB related nodes Abel Vesa
2026-03-31 13:27   ` Krzysztof Kozlowski
2026-03-31 13:37   ` Konrad Dybcio
2026-04-22  9:41     ` Abel Vesa
2026-04-22 10:09       ` Konrad Dybcio
2026-04-22 10:20         ` Abel Vesa
2026-04-28  5:46           ` Krishna Kurapati PSSNV
2026-04-28  9:24             ` Konrad Dybcio
2026-04-29  1:57               ` Krishna Kurapati PSSNV
2026-04-29  9:45                 ` Konrad Dybcio
2026-05-04 10:06                   ` Abel Vesa
2026-05-04 10:25                     ` Konrad Dybcio
2026-05-04 10:30                       ` Abel Vesa
2026-03-31 10:37 ` [PATCH 2/3] arm64: dts: qcom: Add Eliza-specific PM7750BA dtsi Abel Vesa
2026-03-31 10:37 ` [PATCH 3/3] arm64: dts: qcom: eliza-mtp: Enable USB and ADSP support Abel Vesa
2026-03-31 11:12   ` Konrad Dybcio
2026-03-31 13:27   ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox