* [PATCH 0/5] arm64: dts: qcom: nord: Add USB support
@ 2026-09-11 14:20 Shawn Guo
2026-09-11 14:20 ` [PATCH 1/5] arm64: dts: qcom: nord-embedded: Fix i2c9/i2c10 pin functions Shawn Guo
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Shawn Guo @ 2026-09-11 14:20 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Krishna Kurapati, devicetree, linux-arm-msm,
linux-kernel, Shawn Guo
This series enables USB on the Qualcomm Nord platform which has three
USB controllers:
usb_0 (0xa600000) eUSB2 + USB3/DP combo PHY
usb_1 (0xa400000) eUSB2 + USB3/DP combo PHY
usb_2 (0xa200000) eUSB2 only, high-speed
The first patch is a fix for the i2c9/i2c10 pin functions, which is a
prerequisite because the eUSB2 repeaters and the Type-C controller all
sit on i2c9.
Patch 2 adds the three DWC3 controller nodes to nord.dtsi. They are
kept as far as possible free of anything variant specific, so the
clocks, resets, power domains, interconnects and PHY references are
added separately in patch 3 for the "embedded" variant, alongside the
five PHY nodes (three eUSB2, two QMP combo). Adding the QMP PHYs also
lets the two pipe clock placeholders in negcc be filled in.
Patches 4 and 5 wire the ports up per board.
Nord RRD:
usb_0 OTG, USB-C, FUSB15201 Type-C/PD controller
usb_1 host, Genesys GL3590 HS/SS onboard hub pair
usb_2 left disabled, not routed on this board
Nord Ride Embedded:
usb_0 OTG, USB-C port 0 of a dual-port FUSB15201
usb_1 OTG, USB-C port 1 of the same FUSB15201
usb_2 host, USB Type-A, VBUS from a PMIC GPIO controlled
fixed regulator
Both boards use NXP PTN3222 eUSB2 repeaters, one per enabled port.
Dependencies:
- PMIC DTS: https://lore.kernel.org/all/20260904081619.593602-1-shengchao.guo@oss.qualcomm.com/
- QUSB2 PHY reset: https://lore.kernel.org/all/20260901035322.654-1-shengchao.guo@oss.qualcomm.com/
- USB PHY: https://lore.kernel.org/all/20260901095055.42229-1-shengchao.guo@oss.qualcomm.com/
- DWC3: https://lore.kernel.org/all/20260901103300.60803-1-shengchao.guo@oss.qualcomm.com/
- FUSB15201: https://lore.kernel.org/all/20260911073414.16711-1-shengchao.guo@oss.qualcomm.com/
Bartosz Golaszewski (2):
arm64: dts: qcom: nord: Add the USB controller nodes
arm64: dts: qcom: nord-embedded: Add USB resources and PHYs
Shawn Guo (3):
arm64: dts: qcom: nord-embedded: Fix i2c9/i2c10 pin functions
arm64: dts: qcom: nord-rrd: Enable USB ports
arm64: dts: qcom: nord-ride-embedded: Enable USB ports
arch/arm64/boot/dts/qcom/nord-embedded.dtsi | 315 +++++++++++++++++-
.../boot/dts/qcom/nord-ride-embedded.dts | 211 ++++++++++++
arch/arm64/boot/dts/qcom/nord-rrd.dts | 169 ++++++++++
arch/arm64/boot/dts/qcom/nord.dtsi | 83 +++++
4 files changed, 772 insertions(+), 6 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/5] arm64: dts: qcom: nord-embedded: Fix i2c9/i2c10 pin functions
2026-09-11 14:20 [PATCH 0/5] arm64: dts: qcom: nord: Add USB support Shawn Guo
@ 2026-09-11 14:20 ` Shawn Guo
2026-09-12 15:34 ` Abel Vesa
2026-09-11 14:20 ` [PATCH 2/5] arm64: dts: qcom: nord: Add the USB controller nodes Shawn Guo
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Shawn Guo @ 2026-09-11 14:20 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Krishna Kurapati, devicetree, linux-arm-msm,
linux-kernel, Shawn Guo
The i2c9/i2c10 and uart9/uart10 pinctrl states shared the same pins and
the same "qup1_se2"/"qup1_se3" function name, so the I2C states were
indistinguishable from the UART ones and ended up muxing the UART lanes.
i2c9 and i2c10 therefore did not work.
Now that the TLMM driver names each lane pair separately, select the
lane 0/1 function for I2C and the lane 2/3 function for UART.
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord-embedded.dtsi | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
index a03ee16c9cff..c7ac2e66632e 100644
--- a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
@@ -1056,14 +1056,14 @@ qup_i2c8_default: qup-i2c8-default-state {
qup_i2c9_default: qup-i2c9-default-state {
pins = "gpio127", "gpio128";
- function = "qup1_se2";
+ function = "qup1_se2_01";
drive-strength = <2>;
bias-pull-up;
};
qup_i2c10_default: qup-i2c10-default-state {
pins = "gpio129", "gpio130";
- function = "qup1_se3";
+ function = "qup1_se3_01";
drive-strength = <2>;
bias-pull-up;
};
@@ -1461,14 +1461,14 @@ qup_uart8_default: qup-uart8-default-state {
qup_uart9_default: qup-uart9-default-state {
pins = "gpio127", "gpio128";
- function = "qup1_se2";
+ function = "qup1_se2_23";
drive-strength = <2>;
bias-disable;
};
qup_uart10_default: qup-uart10-default-state {
pins = "gpio129", "gpio130";
- function = "qup1_se3";
+ function = "qup1_se3_23";
drive-strength = <2>;
bias-disable;
};
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/5] arm64: dts: qcom: nord: Add the USB controller nodes
2026-09-11 14:20 [PATCH 0/5] arm64: dts: qcom: nord: Add USB support Shawn Guo
2026-09-11 14:20 ` [PATCH 1/5] arm64: dts: qcom: nord-embedded: Fix i2c9/i2c10 pin functions Shawn Guo
@ 2026-09-11 14:20 ` Shawn Guo
2026-09-12 15:32 ` Abel Vesa
2026-09-11 14:20 ` [PATCH 3/5] arm64: dts: qcom: nord-embedded: Add USB resources and PHYs Shawn Guo
` (2 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Shawn Guo @ 2026-09-11 14:20 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Krishna Kurapati, devicetree, linux-arm-msm,
linux-kernel, Bartosz Golaszewski, Shawn Guo
From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Add the base nodes for the three DWC3 USB controllers. These carry only
the SoC-invariant properties and are disabled by default. The extension
for the embedded Nord variant and relevant board files will add the
platform resources and enable them.
USB_2 has no SuperSpeed PHY and no 'ss_phy_irq' on this SoC, so it is
capped to high-speed and told to use UTMI as its pipe clock.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord.dtsi | 83 ++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/nord.dtsi b/arch/arm64/boot/dts/qcom/nord.dtsi
index 83760341456b..98967478fc3a 100644
--- a/arch/arm64/boot/dts/qcom/nord.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord.dtsi
@@ -1736,6 +1736,89 @@ ipcc0: mailbox@9007000 {
#mbox-cells = <2>;
};
+ usb_2: usb@a200000 {
+ compatible = "qcom,nord-dwc3",
+ "qcom,snps-dwc3";
+ reg = <0x0 0x0a200000 0x0 0xfc100>;
+
+ interrupts-extended = <&intc GIC_SPI 910 IRQ_TYPE_LEVEL_HIGH>,
+ <&intc GIC_SPI 907 IRQ_TYPE_LEVEL_HIGH>,
+ <&pdc 8 IRQ_TYPE_EDGE_BOTH>,
+ <&pdc 7 IRQ_TYPE_EDGE_BOTH>;
+ interrupt-names = "dwc_usb3",
+ "pwr_event",
+ "dp_hs_phy_irq",
+ "dm_hs_phy_irq";
+
+ iommus = <&apps_smmu_0 0x14e0 0x0>;
+
+ dma-coherent;
+ wakeup-source;
+
+ snps,dis-u1-entry-quirk;
+ snps,dis-u2-entry-quirk;
+
+ maximum-speed = "high-speed";
+
+ qcom,select-utmi-as-pipe-clk;
+
+ status = "disabled";
+ };
+
+ usb_1: usb@a400000 {
+ compatible = "qcom,nord-dwc3",
+ "qcom,snps-dwc3";
+ reg = <0x0 0x0a400000 0x0 0xfc100>;
+
+ interrupts-extended = <&intc GIC_SPI 917 IRQ_TYPE_LEVEL_HIGH>,
+ <&intc GIC_SPI 918 IRQ_TYPE_LEVEL_HIGH>,
+ <&pdc 13 IRQ_TYPE_EDGE_BOTH>,
+ <&pdc 12 IRQ_TYPE_EDGE_BOTH>,
+ <&pdc 41 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "dwc_usb3",
+ "pwr_event",
+ "dp_hs_phy_irq",
+ "dm_hs_phy_irq",
+ "ss_phy_irq";
+
+ iommus = <&apps_smmu_0 0x15c0 0x0>;
+
+ dma-coherent;
+ wakeup-source;
+
+ snps,dis-u1-entry-quirk;
+ snps,dis-u2-entry-quirk;
+
+ status = "disabled";
+ };
+
+ usb_0: usb@a600000 {
+ compatible = "qcom,nord-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>,
+ <&pdc 14 IRQ_TYPE_EDGE_BOTH>,
+ <&pdc 15 IRQ_TYPE_EDGE_BOTH>,
+ <&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "dwc_usb3",
+ "pwr_event",
+ "dp_hs_phy_irq",
+ "dm_hs_phy_irq",
+ "ss_phy_irq";
+
+ iommus = <&apps_smmu_0 0x1500 0x0>;
+
+ dma-coherent;
+ wakeup-source;
+
+ snps,dis-u1-entry-quirk;
+ snps,dis-u2-entry-quirk;
+
+ status = "disabled";
+ };
+
pdc: interrupt-controller@b220000 {
compatible = "qcom,nord-pdc",
"qcom,pdc";
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/5] arm64: dts: qcom: nord-embedded: Add USB resources and PHYs
2026-09-11 14:20 [PATCH 0/5] arm64: dts: qcom: nord: Add USB support Shawn Guo
2026-09-11 14:20 ` [PATCH 1/5] arm64: dts: qcom: nord-embedded: Fix i2c9/i2c10 pin functions Shawn Guo
2026-09-11 14:20 ` [PATCH 2/5] arm64: dts: qcom: nord: Add the USB controller nodes Shawn Guo
@ 2026-09-11 14:20 ` Shawn Guo
2026-09-12 15:32 ` Abel Vesa
2026-09-11 14:20 ` [PATCH 4/5] arm64: dts: qcom: nord-rrd: Enable USB ports Shawn Guo
2026-09-11 14:20 ` [PATCH 5/5] arm64: dts: qcom: nord-ride-embedded: " Shawn Guo
4 siblings, 1 reply; 11+ messages in thread
From: Shawn Guo @ 2026-09-11 14:20 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Krishna Kurapati, devicetree, linux-arm-msm,
linux-kernel, Bartosz Golaszewski, Shawn Guo
From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Add the platform resources for the three USB controllers on the embedded
Nord variant: clocks, resets, power domains and interconnect paths.
Add the eUSB2 PHY for each of the three controllers, plus the QMP combo
PHYs for USB_0 and USB_1, and feed the two QMP USB3 pipe clocks back
into negcc, which so far carried placeholder zeros in their place.
The eUSB2 PHY of instance 2 gets no 'resets': the SoC provides only two
QUSB2PHY block resets, belonging to instances 0 and 1. Instance 2 comes
out of reset with the rest of the USB20 tile, driven by the controller.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord-embedded.dtsi | 307 +++++++++++++++++++-
1 file changed, 305 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
index c7ac2e66632e..84ce57a07361 100644
--- a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
@@ -11,6 +11,7 @@
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,icc.h>
#include <dt-bindings/interconnect/qcom,nord-rpmh.h>
+#include <dt-bindings/phy/phy-qcom-qmp.h>
#include <dt-bindings/power/qcom,rpmhpd.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
@@ -842,6 +843,162 @@ hpass_ag_noc: interconnect@5fc0000 {
qcom,bcm-voters = <&apps_bcm_voter>;
};
+ usb_2_hsphy: phy@88e0000 {
+ compatible = "qcom,nord-snps-eusb2-phy",
+ "qcom,sm8550-snps-eusb2-phy";
+ reg = <0x0 0x088e0000 0x0 0x154>;
+
+ clocks = <&tcsrcc TCSR_USB2_2_CLKREF_EN>;
+ clock-names = "ref";
+
+ /*
+ * The SoC has three eUSB2 PHYs but only two QUSB2PHY block
+ * resets, which belong to instances 0 and 1 (usb_0 and usb_1).
+ * This PHY, instance 2, has none of its own: it is taken out of
+ * reset together with the rest of the USB20 tile by
+ * NE_GCC_USB20_PRIM_BCR, which the controller owns and pulses
+ * before touching any register. So no 'resets' here - both
+ * consumers would need that single reset exclusively.
+ */
+
+ #phy-cells = <0>;
+
+ status = "disabled";
+ };
+
+ usb_0_qmpphy: phy@88e1000 {
+ compatible = "qcom,nord-qmp-usb3-dp-phy";
+ reg = <0x0 0x088e1000 0x0 0x3000>;
+
+ clocks = <&negcc NE_GCC_USB3_PRIM_PHY_AUX_CLK>,
+ <&tcsrcc TCSR_USB3_0_CLKREF_EN>,
+ <&negcc NE_GCC_USB3_PRIM_PHY_COM_AUX_CLK>,
+ <&negcc NE_GCC_USB3_PRIM_PHY_PIPE_CLK>;
+ clock-names = "aux",
+ "ref",
+ "com_aux",
+ "usb3_pipe";
+
+ power-domains = <&negcc NE_GCC_USB3_PHY_GDSC>;
+
+ resets = <&negcc NE_GCC_USB3_PHY_PRIM_BCR>,
+ <&negcc NE_GCC_USB3_DP_PHY_PRIM_BCR>;
+ reset-names = "phy",
+ "common";
+
+ #clock-cells = <1>;
+ #phy-cells = <1>;
+
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb_0_qmpphy_usb_ss_out: endpoint@1 {
+ reg = <1>;
+ data-lanes = <1 0>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb_0_qmpphy_usb_ss_in: endpoint {
+ remote-endpoint = <&usb_0_dwc3_ss>;
+ };
+ };
+ };
+ };
+
+ usb_1_qmpphy: phy@88e4000 {
+ compatible = "qcom,nord-qmp-usb3-dp-phy";
+ reg = <0x0 0x088e4000 0x0 0x3000>;
+
+ clocks = <&negcc NE_GCC_USB3_SEC_PHY_AUX_CLK>,
+ <&tcsrcc TCSR_USB3_1_CLKREF_EN>,
+ <&negcc NE_GCC_USB3_SEC_PHY_COM_AUX_CLK>,
+ <&negcc NE_GCC_USB3_SEC_PHY_PIPE_CLK>;
+ clock-names = "aux",
+ "ref",
+ "com_aux",
+ "usb3_pipe";
+
+ power-domains = <&negcc NE_GCC_USB3_SEC_PHY_GDSC>;
+
+ resets = <&negcc NE_GCC_USB3_PHY_SEC_BCR>,
+ <&negcc NE_GCC_USB3_DP_PHY_SEC_BCR>;
+ reset-names = "phy",
+ "common";
+
+ #clock-cells = <1>;
+ #phy-cells = <1>;
+
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /* Same as usb_0_qmpphy above. */
+ usb_1_qmpphy_usb_ss_out: endpoint@1 {
+ reg = <1>;
+ data-lanes = <1 0>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb_1_qmpphy_usb_ss_in: endpoint {
+ remote-endpoint = <&usb_1_dwc3_ss>;
+ };
+ };
+ };
+ };
+
+ usb_0_hsphy: phy@88ea000 {
+ compatible = "qcom,nord-snps-eusb2-phy",
+ "qcom,sm8550-snps-eusb2-phy";
+ reg = <0x0 0x088ea000 0x0 0x154>;
+
+ clocks = <&tcsrcc TCSR_USB2_0_CLKREF_EN>;
+ clock-names = "ref";
+
+ resets = <&negcc NE_GCC_QUSB2PHY_PRIM_BCR>;
+
+ #phy-cells = <0>;
+
+ status = "disabled";
+ };
+
+ usb_1_hsphy: phy@88eb000 {
+ compatible = "qcom,nord-snps-eusb2-phy",
+ "qcom,sm8550-snps-eusb2-phy";
+ reg = <0x0 0x088eb000 0x0 0x154>;
+
+ clocks = <&tcsrcc TCSR_USB2_1_CLKREF_EN>;
+ clock-names = "ref";
+
+ resets = <&negcc NE_GCC_QUSB2PHY_SEC_BCR>;
+
+ #phy-cells = <0>;
+
+ status = "disabled";
+ };
+
negcc: clock-controller@8900000 {
compatible = "qcom,nord-negcc";
reg = <0x0 0x08900000 0x0 0xf4200>;
@@ -850,8 +1007,8 @@ negcc: clock-controller@8900000 {
<0>,
<0>,
<0>,
- <0>,
- <0>;
+ <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>,
+ <&usb_0_qmpphy QMP_USB43DP_USB3_PIPE_CLK>;
#clock-cells = <1>;
#reset-cells = <1>;
#power-domain-cells = <1>;
@@ -1881,3 +2038,149 @@ opp-403000000 {
};
};
};
+
+&usb_0 {
+ clocks = <&negcc NE_GCC_CNOC_USB3_PRIM_AXI_CLK>,
+ <&negcc NE_GCC_USB31_PRIM_MASTER_CLK>,
+ <&negcc NE_GCC_AGGRE_NOC_USB3_PRIM_AXI_CLK>,
+ <&negcc NE_GCC_USB31_PRIM_SLEEP_CLK>,
+ <&negcc NE_GCC_USB31_PRIM_MOCK_UTMI_CLK>,
+ <&tcsrcc TCSR_USB3_0_CLKREF_EN>;
+ clock-names = "cfg_noc",
+ "core",
+ "iface",
+ "sleep",
+ "mock_utmi",
+ "xo";
+
+ assigned-clocks = <&negcc NE_GCC_USB31_PRIM_MOCK_UTMI_CLK>,
+ <&negcc NE_GCC_USB31_PRIM_MASTER_CLK>;
+ assigned-clock-rates = <19200000>, <200000000>;
+
+ power-domains = <&negcc NE_GCC_USB31_PRIM_GDSC>;
+ required-opps = <&rpmhpd_opp_nom>;
+
+ resets = <&negcc NE_GCC_USB31_PRIM_BCR>;
+
+ interconnects = <&aggre1_noc_tile MASTER_USB3_0 QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+ <&hscnoc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+ &config_noc SLAVE_USB3_0 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "usb-ddr",
+ "apps-usb";
+
+ phys = <&usb_0_hsphy>,
+ <&usb_0_qmpphy QMP_USB43DP_USB3_PHY>;
+ phy-names = "usb2-phy",
+ "usb3-phy";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ usb_0_dwc3_hs: endpoint {
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb_0_dwc3_ss: endpoint {
+ remote-endpoint = <&usb_0_qmpphy_usb_ss_in>;
+ };
+ };
+ };
+};
+
+&usb_1 {
+ clocks = <&negcc NE_GCC_CNOC_USB3_SEC_AXI_CLK>,
+ <&negcc NE_GCC_USB31_SEC_MASTER_CLK>,
+ <&negcc NE_GCC_AGGRE_NOC_USB3_SEC_AXI_CLK>,
+ <&negcc NE_GCC_USB31_SEC_SLEEP_CLK>,
+ <&negcc NE_GCC_USB31_SEC_MOCK_UTMI_CLK>,
+ <&tcsrcc TCSR_USB3_1_CLKREF_EN>;
+ clock-names = "cfg_noc",
+ "core",
+ "iface",
+ "sleep",
+ "mock_utmi",
+ "xo";
+
+ assigned-clocks = <&negcc NE_GCC_USB31_SEC_MOCK_UTMI_CLK>,
+ <&negcc NE_GCC_USB31_SEC_MASTER_CLK>;
+ assigned-clock-rates = <19200000>, <200000000>;
+
+ power-domains = <&negcc NE_GCC_USB31_SEC_GDSC>;
+ required-opps = <&rpmhpd_opp_nom>;
+
+ resets = <&negcc NE_GCC_USB31_SEC_BCR>;
+
+ interconnects = <&aggre1_noc_tile MASTER_USB3_1 QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+ <&hscnoc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+ &config_noc SLAVE_USB3_1 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "usb-ddr",
+ "apps-usb";
+
+ phys = <&usb_1_hsphy>,
+ <&usb_1_qmpphy QMP_USB43DP_USB3_PHY>;
+ phy-names = "usb2-phy",
+ "usb3-phy";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ usb_1_dwc3_hs: endpoint {
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb_1_dwc3_ss: endpoint {
+ remote-endpoint = <&usb_1_qmpphy_usb_ss_in>;
+ };
+ };
+ };
+};
+
+&usb_2 {
+ clocks = <&negcc NE_GCC_CNOC_USB2_AXI_CLK>,
+ <&negcc NE_GCC_USB20_MASTER_CLK>,
+ <&negcc NE_GCC_AGGRE_NOC_USB2_AXI_CLK>,
+ <&negcc NE_GCC_USB20_SLEEP_CLK>,
+ <&negcc NE_GCC_USB20_MOCK_UTMI_CLK>,
+ <&tcsrcc TCSR_USB2_2_CLKREF_EN>;
+ clock-names = "cfg_noc",
+ "core",
+ "iface",
+ "sleep",
+ "mock_utmi",
+ "xo";
+
+ assigned-clocks = <&negcc NE_GCC_USB20_MOCK_UTMI_CLK>,
+ <&negcc NE_GCC_USB20_MASTER_CLK>;
+ assigned-clock-rates = <19200000>, <120000000>;
+
+ power-domains = <&negcc NE_GCC_USB20_PRIM_GDSC>;
+ required-opps = <&rpmhpd_opp_nom>;
+
+ resets = <&negcc NE_GCC_USB20_PRIM_BCR>;
+
+ interconnects = <&aggre1_noc_tile MASTER_USB2 QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+ <&hscnoc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+ &config_noc SLAVE_USB2 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "usb-ddr",
+ "apps-usb";
+
+ phys = <&usb_2_hsphy>;
+ phy-names = "usb2-phy";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/5] arm64: dts: qcom: nord-rrd: Enable USB ports
2026-09-11 14:20 [PATCH 0/5] arm64: dts: qcom: nord: Add USB support Shawn Guo
` (2 preceding siblings ...)
2026-09-11 14:20 ` [PATCH 3/5] arm64: dts: qcom: nord-embedded: Add USB resources and PHYs Shawn Guo
@ 2026-09-11 14:20 ` Shawn Guo
2026-09-12 15:26 ` Abel Vesa
2026-09-11 14:20 ` [PATCH 5/5] arm64: dts: qcom: nord-ride-embedded: " Shawn Guo
4 siblings, 1 reply; 11+ messages in thread
From: Shawn Guo @ 2026-09-11 14:20 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Krishna Kurapati, devicetree, linux-arm-msm,
linux-kernel, Shawn Guo
Describe the RRD USB topology. Enable i2c9 and add the two NXP PTN3222
eUSB2 repeaters for USB_0 and USB_1, supplied from vreg_l3l_1p8 and a new
fixed 3.3 V pre-regulator, and reset through pmau0102_i GPIOs 9 and 10.
Add the onsemi FUSB15201 Type-C controller at 0x50 with its interrupt and
pinctrl state on pmau0102_i gpio8. Unlike RIDE, only port A of
the controller is wired on this board, to USB_0, so a single
usb-c-connector is described and port B is left out. USB_0 is configured
for OTG with usb-role-switch and its HS and SS endpoints are linked to
the dwc3 HS endpoint and the QMP combo PHY SS output.
USB_1 is a fixed host port feeding an on-board Genesys Logic GL3590 USB
3.1 hub. Add the HS and SS hub pair as children of USB_1, linked with
peer-hub, with the HS half reset via TLMM GPIO 170 and the SS half
additionally supplied by a fixed 1.2 V rail.
Assisted-by: LLM
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord-rrd.dts | 169 ++++++++++++++++++++++++++
1 file changed, 169 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/nord-rrd.dts b/arch/arm64/boot/dts/qcom/nord-rrd.dts
index c547963371b4..c2f870ac4234 100644
--- a/arch/arm64/boot/dts/qcom/nord-rrd.dts
+++ b/arch/arm64/boot/dts/qcom/nord-rrd.dts
@@ -6,6 +6,7 @@
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "nord-embedded.dtsi"
@@ -53,6 +54,22 @@ bi_tcxo_ao_div2: bi-tcxo-ao-div2-clk {
clock-div = <2>;
};
};
+
+ vreg_per_3p3: regulator-per-3p3 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_per_3p3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
+ vreg_hub_1p2: regulator-hub-1p2 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_hub_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-always-on;
+ };
};
&apps_rsc {
@@ -377,6 +394,86 @@ rtc@32 {
};
};
+&i2c9 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ usb0_repeater: redriver@43 {
+ compatible = "nxp,ptn3222";
+ reg = <0x43>;
+ #phy-cells = <0>;
+ vdd1v8-supply = <&vreg_l3l_1p8>;
+ vdd3v3-supply = <&vreg_per_3p3>;
+ reset-gpios = <&pmau0102_i_gpios 9 GPIO_ACTIVE_LOW>;
+ };
+
+ usb1_repeater: redriver@4f {
+ compatible = "nxp,ptn3222";
+ reg = <0x4f>;
+ #phy-cells = <0>;
+ vdd1v8-supply = <&vreg_l3l_1p8>;
+ vdd3v3-supply = <&vreg_per_3p3>;
+ reset-gpios = <&pmau0102_i_gpios 10 GPIO_ACTIVE_LOW>;
+ };
+
+ typec@50 {
+ compatible = "onnn,fusb15201";
+ reg = <0x50>;
+ interrupts-extended = <&pmau0102_i_gpios 8 IRQ_TYPE_LEVEL_LOW>;
+
+ pinctrl-0 = <&usb_pd_int_default>;
+ pinctrl-names = "default";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /*
+ * Only port A of the controller is wired up on this board, to
+ * USB_0. Port B is left unconnected.
+ */
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ label = "USB-C0";
+ power-role = "dual";
+ data-role = "dual";
+ try-power-role = "sink";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ usb_0_con_hs: endpoint {
+ remote-endpoint = <&usb_0_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb_0_con_ss: endpoint {
+ remote-endpoint = <&usb_0_qmpphy_usb_ss_out>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&pmau0102_i_gpios {
+ usb_pd_int_default: usb-pd-int-state {
+ pins = "gpio8";
+ function = "normal";
+ input-enable;
+ bias-pull-up;
+ power-source = <0>;
+ };
+};
+
&qupv3_0 {
firmware-name = "qcom/nord/qupv3fw.elf";
@@ -459,3 +556,75 @@ &ufs_mem_phy {
status = "okay";
};
+
+&usb_0 {
+ dr_mode = "otg";
+ usb-role-switch;
+
+ status = "okay";
+};
+
+&usb_0_dwc3_hs {
+ remote-endpoint = <&usb_0_con_hs>;
+};
+
+&usb_0_hsphy {
+ vdd-supply = <&vreg_l1h_0p9>;
+ vdda12-supply = <&vreg_l2h_1p2>;
+
+ phys = <&usb0_repeater>;
+
+ status = "okay";
+};
+
+&usb_0_qmpphy {
+ vdda-phy-supply = <&vreg_l2k_0p9>;
+ vdda-pll-supply = <&vreg_l2h_1p2>;
+
+ status = "okay";
+};
+
+&usb_0_qmpphy_usb_ss_out {
+ remote-endpoint = <&usb_0_con_ss>;
+};
+
+&usb_1 {
+ dr_mode = "host";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ status = "okay";
+
+ hub_hs: hub@1 {
+ compatible = "usb5e3,610";
+ reg = <1>;
+ reset-gpios = <&tlmm 170 GPIO_ACTIVE_LOW>;
+ vdd-supply = <&vreg_per_3p3>;
+ peer-hub = <&hub_ss>;
+ };
+
+ hub_ss: hub@2 {
+ compatible = "usb5e3,625";
+ reg = <2>;
+ vdd-supply = <&vreg_per_3p3>;
+ vdd12-supply = <&vreg_hub_1p2>;
+ peer-hub = <&hub_hs>;
+ };
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1h_0p9>;
+ vdda12-supply = <&vreg_l2h_1p2>;
+
+ phys = <&usb1_repeater>;
+
+ status = "okay";
+};
+
+&usb_1_qmpphy {
+ vdda-phy-supply = <&vreg_l2k_0p9>;
+ vdda-pll-supply = <&vreg_l2h_1p2>;
+
+ status = "okay";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/5] arm64: dts: qcom: nord-ride-embedded: Enable USB ports
2026-09-11 14:20 [PATCH 0/5] arm64: dts: qcom: nord: Add USB support Shawn Guo
` (3 preceding siblings ...)
2026-09-11 14:20 ` [PATCH 4/5] arm64: dts: qcom: nord-rrd: Enable USB ports Shawn Guo
@ 2026-09-11 14:20 ` Shawn Guo
2026-09-12 15:25 ` Abel Vesa
4 siblings, 1 reply; 11+ messages in thread
From: Shawn Guo @ 2026-09-11 14:20 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Krishna Kurapati, devicetree, linux-arm-msm,
linux-kernel, Shawn Guo
Wire up the board specific pieces for USB ports. Enable i2c9 and add the
three NXP PTN3222 eUSB2 repeaters (one per USB port) with their 1.8 V
supply and reset GPIOs on the PMIC GPIO expanders.
Add the onsemi FUSB15201 dual port Type-C controller at 0x50, with
its interrupt and pinctrl state on pmau0102_i gpio8. Both controller
ports are wired on this board, so describe two usb-c-connector
children and cross-link their HS and SS endpoints to the dwc3 HS
endpoint and the QMP combo PHY SS output of USB_0 and USB_1. Both
controllers therefore run in OTG mode with usb-role-switch.
USB_2 has no Type-C connector, so it is configured as a fixed host
port. Its VBUS is supplied by a fixed regulator gated by
pmau0102_h gpio3, kept always-on since nothing switches it at
runtime.
Assisted-by: LLM
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
.../boot/dts/qcom/nord-ride-embedded.dts | 211 ++++++++++++++++++
1 file changed, 211 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/nord-ride-embedded.dts b/arch/arm64/boot/dts/qcom/nord-ride-embedded.dts
index 09ee525764ef..f225c6d39b0a 100644
--- a/arch/arm64/boot/dts/qcom/nord-ride-embedded.dts
+++ b/arch/arm64/boot/dts/qcom/nord-ride-embedded.dts
@@ -6,6 +6,7 @@
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "nord-embedded.dtsi"
@@ -53,6 +54,24 @@ bi_tcxo_ao_div2: bi-tcxo-ao-div2-clk {
clock-div = <2>;
};
};
+
+ vreg_per_3p3: regulator-per-3p3 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_per_3p3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
+ regulator-usb2-vbus {
+ compatible = "regulator-fixed";
+ regulator-name = "usb2_vbus";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ gpio = <&pmau0102_h_gpios 3 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+ };
};
&apps_rsc {
@@ -366,6 +385,121 @@ vreg_l3l_1p8: ldo3 {
};
};
+&i2c9 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ usb0_repeater: redriver@43 {
+ compatible = "nxp,ptn3222";
+ reg = <0x43>;
+ #phy-cells = <0>;
+ vdd1v8-supply = <&vreg_l3l_1p8>;
+ vdd3v3-supply = <&vreg_per_3p3>;
+ reset-gpios = <&pmau0102_i_gpios 9 GPIO_ACTIVE_LOW>;
+ };
+
+ usb2_repeater: redriver@47 {
+ compatible = "nxp,ptn3222";
+ reg = <0x47>;
+ #phy-cells = <0>;
+ vdd1v8-supply = <&vreg_l3l_1p8>;
+ vdd3v3-supply = <&vreg_per_3p3>;
+ reset-gpios = <&pmau0102_l_gpios 3 GPIO_ACTIVE_LOW>;
+ };
+
+ usb1_repeater: redriver@4f {
+ compatible = "nxp,ptn3222";
+ reg = <0x4f>;
+ #phy-cells = <0>;
+ vdd1v8-supply = <&vreg_l3l_1p8>;
+ vdd3v3-supply = <&vreg_per_3p3>;
+ reset-gpios = <&pmau0102_i_gpios 10 GPIO_ACTIVE_LOW>;
+ };
+
+ typec@50 {
+ compatible = "onnn,fusb15201";
+ reg = <0x50>;
+ interrupts-extended = <&pmau0102_i_gpios 8 IRQ_TYPE_LEVEL_LOW>;
+
+ pinctrl-0 = <&usb_pd_int_default>;
+ pinctrl-names = "default";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ label = "USB-C0";
+ power-role = "dual";
+ data-role = "dual";
+ try-power-role = "sink";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ usb_0_con_hs: endpoint {
+ remote-endpoint = <&usb_0_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb_0_con_ss: endpoint {
+ remote-endpoint = <&usb_0_qmpphy_usb_ss_out>;
+ };
+ };
+ };
+ };
+
+ connector@1 {
+ compatible = "usb-c-connector";
+ reg = <1>;
+ label = "USB-C1";
+ power-role = "dual";
+ data-role = "dual";
+ try-power-role = "sink";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ usb_1_con_hs: endpoint {
+ remote-endpoint = <&usb_1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb_1_con_ss: endpoint {
+ remote-endpoint = <&usb_1_qmpphy_usb_ss_out>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&pmau0102_i_gpios {
+ usb_pd_int_default: usb-pd-int-state {
+ pins = "gpio8";
+ function = "normal";
+ input-enable;
+ bias-pull-up;
+ power-source = <0>;
+ };
+};
+
&qupv3_0 {
firmware-name = "qcom/nord/qupv3fw.elf";
@@ -440,3 +574,80 @@ &ufs_mem_phy {
status = "okay";
};
+
+&usb_0 {
+ dr_mode = "otg";
+ usb-role-switch;
+
+ status = "okay";
+};
+
+&usb_0_dwc3_hs {
+ remote-endpoint = <&usb_0_con_hs>;
+};
+
+&usb_0_hsphy {
+ vdd-supply = <&vreg_l1h_0p9>;
+ vdda12-supply = <&vreg_l2h_1p2>;
+
+ phys = <&usb0_repeater>;
+
+ status = "okay";
+};
+
+&usb_0_qmpphy {
+ vdda-phy-supply = <&vreg_l2k_0p9>;
+ vdda-pll-supply = <&vreg_l2h_1p2>;
+
+ status = "okay";
+};
+
+&usb_0_qmpphy_usb_ss_out {
+ remote-endpoint = <&usb_0_con_ss>;
+};
+
+&usb_1 {
+ dr_mode = "otg";
+ usb-role-switch;
+
+ status = "okay";
+};
+
+&usb_1_dwc3_hs {
+ remote-endpoint = <&usb_1_con_hs>;
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1h_0p9>;
+ vdda12-supply = <&vreg_l2h_1p2>;
+
+ phys = <&usb1_repeater>;
+
+ status = "okay";
+};
+
+&usb_1_qmpphy {
+ vdda-phy-supply = <&vreg_l2k_0p9>;
+ vdda-pll-supply = <&vreg_l2h_1p2>;
+
+ status = "okay";
+};
+
+&usb_1_qmpphy_usb_ss_out {
+ remote-endpoint = <&usb_1_con_ss>;
+};
+
+&usb_2 {
+ dr_mode = "host";
+
+ status = "okay";
+};
+
+&usb_2_hsphy {
+ vdd-supply = <&vreg_l1h_0p9>;
+ vdda12-supply = <&vreg_l2h_1p2>;
+
+ phys = <&usb2_repeater>;
+
+ status = "okay";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 5/5] arm64: dts: qcom: nord-ride-embedded: Enable USB ports
2026-09-11 14:20 ` [PATCH 5/5] arm64: dts: qcom: nord-ride-embedded: " Shawn Guo
@ 2026-09-12 15:25 ` Abel Vesa
0 siblings, 0 replies; 11+ messages in thread
From: Abel Vesa @ 2026-09-12 15:25 UTC (permalink / raw)
To: Shawn Guo
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bartosz Golaszewski, Krishna Kurapati, devicetree,
linux-arm-msm, linux-kernel
On 26-09-11 22:20:40, Shawn Guo wrote:
> Wire up the board specific pieces for USB ports. Enable i2c9 and add the
> three NXP PTN3222 eUSB2 repeaters (one per USB port) with their 1.8 V
> supply and reset GPIOs on the PMIC GPIO expanders.
>
> Add the onsemi FUSB15201 dual port Type-C controller at 0x50, with
> its interrupt and pinctrl state on pmau0102_i gpio8. Both controller
> ports are wired on this board, so describe two usb-c-connector
> children and cross-link their HS and SS endpoints to the dwc3 HS
> endpoint and the QMP combo PHY SS output of USB_0 and USB_1. Both
> controllers therefore run in OTG mode with usb-role-switch.
>
> USB_2 has no Type-C connector, so it is configured as a fixed host
> port. Its VBUS is supplied by a fixed regulator gated by
> pmau0102_h gpio3, kept always-on since nothing switches it at
> runtime.
>
> Assisted-by: LLM
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/5] arm64: dts: qcom: nord-rrd: Enable USB ports
2026-09-11 14:20 ` [PATCH 4/5] arm64: dts: qcom: nord-rrd: Enable USB ports Shawn Guo
@ 2026-09-12 15:26 ` Abel Vesa
0 siblings, 0 replies; 11+ messages in thread
From: Abel Vesa @ 2026-09-12 15:26 UTC (permalink / raw)
To: Shawn Guo
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bartosz Golaszewski, Krishna Kurapati, devicetree,
linux-arm-msm, linux-kernel
On 26-09-11 22:20:39, Shawn Guo wrote:
> Describe the RRD USB topology. Enable i2c9 and add the two NXP PTN3222
> eUSB2 repeaters for USB_0 and USB_1, supplied from vreg_l3l_1p8 and a new
> fixed 3.3 V pre-regulator, and reset through pmau0102_i GPIOs 9 and 10.
>
> Add the onsemi FUSB15201 Type-C controller at 0x50 with its interrupt and
> pinctrl state on pmau0102_i gpio8. Unlike RIDE, only port A of
> the controller is wired on this board, to USB_0, so a single
> usb-c-connector is described and port B is left out. USB_0 is configured
> for OTG with usb-role-switch and its HS and SS endpoints are linked to
> the dwc3 HS endpoint and the QMP combo PHY SS output.
>
> USB_1 is a fixed host port feeding an on-board Genesys Logic GL3590 USB
> 3.1 hub. Add the HS and SS hub pair as children of USB_1, linked with
> peer-hub, with the HS half reset via TLMM GPIO 170 and the SS half
> additionally supplied by a fixed 1.2 V rail.
>
> Assisted-by: LLM
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/5] arm64: dts: qcom: nord-embedded: Add USB resources and PHYs
2026-09-11 14:20 ` [PATCH 3/5] arm64: dts: qcom: nord-embedded: Add USB resources and PHYs Shawn Guo
@ 2026-09-12 15:32 ` Abel Vesa
0 siblings, 0 replies; 11+ messages in thread
From: Abel Vesa @ 2026-09-12 15:32 UTC (permalink / raw)
To: Shawn Guo
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bartosz Golaszewski, Krishna Kurapati, devicetree,
linux-arm-msm, linux-kernel, Bartosz Golaszewski
On 26-09-11 22:20:38, Shawn Guo wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
>
> Add the platform resources for the three USB controllers on the embedded
> Nord variant: clocks, resets, power domains and interconnect paths.
>
> Add the eUSB2 PHY for each of the three controllers, plus the QMP combo
> PHYs for USB_0 and USB_1, and feed the two QMP USB3 pipe clocks back
> into negcc, which so far carried placeholder zeros in their place.
>
> The eUSB2 PHY of instance 2 gets no 'resets': the SoC provides only two
> QUSB2PHY block resets, belonging to instances 0 and 1. Instance 2 comes
> out of reset with the rest of the USB20 tile, driven by the controller.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/5] arm64: dts: qcom: nord: Add the USB controller nodes
2026-09-11 14:20 ` [PATCH 2/5] arm64: dts: qcom: nord: Add the USB controller nodes Shawn Guo
@ 2026-09-12 15:32 ` Abel Vesa
0 siblings, 0 replies; 11+ messages in thread
From: Abel Vesa @ 2026-09-12 15:32 UTC (permalink / raw)
To: Shawn Guo
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bartosz Golaszewski, Krishna Kurapati, devicetree,
linux-arm-msm, linux-kernel, Bartosz Golaszewski
On 26-09-11 22:20:37, Shawn Guo wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
>
> Add the base nodes for the three DWC3 USB controllers. These carry only
> the SoC-invariant properties and are disabled by default. The extension
> for the embedded Nord variant and relevant board files will add the
> platform resources and enable them.
>
> USB_2 has no SuperSpeed PHY and no 'ss_phy_irq' on this SoC, so it is
> capped to high-speed and told to use UTMI as its pipe clock.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/5] arm64: dts: qcom: nord-embedded: Fix i2c9/i2c10 pin functions
2026-09-11 14:20 ` [PATCH 1/5] arm64: dts: qcom: nord-embedded: Fix i2c9/i2c10 pin functions Shawn Guo
@ 2026-09-12 15:34 ` Abel Vesa
0 siblings, 0 replies; 11+ messages in thread
From: Abel Vesa @ 2026-09-12 15:34 UTC (permalink / raw)
To: Shawn Guo
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bartosz Golaszewski, Krishna Kurapati, devicetree,
linux-arm-msm, linux-kernel
On 26-09-11 22:20:36, Shawn Guo wrote:
> The i2c9/i2c10 and uart9/uart10 pinctrl states shared the same pins and
> the same "qup1_se2"/"qup1_se3" function name, so the I2C states were
> indistinguishable from the UART ones and ended up muxing the UART lanes.
> i2c9 and i2c10 therefore did not work.
>
> Now that the TLMM driver names each lane pair separately, select the
> lane 0/1 function for I2C and the lane 2/3 function for UART.
>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
No fixes tag?
Otherwise, LGTM.
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-09-12 15:34 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-11 14:20 [PATCH 0/5] arm64: dts: qcom: nord: Add USB support Shawn Guo
2026-09-11 14:20 ` [PATCH 1/5] arm64: dts: qcom: nord-embedded: Fix i2c9/i2c10 pin functions Shawn Guo
2026-09-12 15:34 ` Abel Vesa
2026-09-11 14:20 ` [PATCH 2/5] arm64: dts: qcom: nord: Add the USB controller nodes Shawn Guo
2026-09-12 15:32 ` Abel Vesa
2026-09-11 14:20 ` [PATCH 3/5] arm64: dts: qcom: nord-embedded: Add USB resources and PHYs Shawn Guo
2026-09-12 15:32 ` Abel Vesa
2026-09-11 14:20 ` [PATCH 4/5] arm64: dts: qcom: nord-rrd: Enable USB ports Shawn Guo
2026-09-12 15:26 ` Abel Vesa
2026-09-11 14:20 ` [PATCH 5/5] arm64: dts: qcom: nord-ride-embedded: " Shawn Guo
2026-09-12 15:25 ` Abel Vesa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox