Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions Documentation/ABI/testing/sysfs-driver-eud
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,19 @@ Description:
EUD based on a 1 or a 0 value. By enabling EUD,
the user is able to activate the mini-usb hub of
EUD for debug and trace capabilities.

What: /sys/bus/platform/drivers/qcom_eud/.../port
Date: January 2026
Contact: Elson Serrao <elson.serrao@oss.qualcomm.com>
Description:
Selects which USB port the Embedded USB Debugger (EUD)
is mapped to on platforms providing multiple High-Speed
USB ports.

Valid values:
primary - Primary USB port
secondary - Secondary USB port

The attribute is writable only while EUD is disabled.
Reading the attribute returns the currently selected
USB port.
55 changes: 54 additions & 1 deletion Documentation/devicetree/bindings/soc/qcom/qcom,eud.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,63 @@ properties:
$ref: /schemas/graph.yaml#/properties/port
description: This port is to be attached to the type C connector.

'#address-cells':
const: 1

'#size-cells':
const: 0

patternProperties:
"^eud-path@[0-1]$":
type: object
description:
Represents one High-Speed UTMI path that EUD intercepts. Use eud-path nodes
to associate role-switching behavior with specific port connections, allowing
EUD to manage role transitions independently for each UTMI path.

properties:
reg:
maxItems: 1
description: Path number

usb-role-switch:
type: boolean
description:
Indicates that EUD should act as a role switch for this path.
In device role, debug mode inserts the EUD hub into the UTMI path. In
host role, the EUD hub is bypassed and UTMI traffic flows directly
between the PHY and the USB controller.

ports:
$ref: /schemas/graph.yaml#/properties/ports
description:
These ports are to be attached to the endpoint of the USB controller node
and USB connector node.

properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description: This port is to be attached to the USB controller.

port@1:
$ref: /schemas/graph.yaml#/properties/port
description: This port is to be attached to the USB connector.

required:
- reg
- ports

additionalProperties: false

required:
- compatible
- reg
- ports

oneOf:
- required:
- ports
- required:
- eud-path@0

additionalProperties: false

Expand Down
10 changes: 5 additions & 5 deletions arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
reg = <0>;

pmic_glink_hs_in: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
remote-endpoint = <&eud_con>;
};
};

Expand Down Expand Up @@ -654,6 +654,10 @@
};
};

&eud_con {
remote-endpoint = <&pmic_glink_hs_in>;
};

&gcc {
protected-clocks = <GCC_CFG_NOC_LPASS_CLK>,
<GCC_EDP_CLKREF_EN>,
Expand Down Expand Up @@ -1388,10 +1392,6 @@
status = "okay";
};

&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_hs_in>;
};

&usb_1_hsphy {
vdda-pll-supply = <&vreg_l10c>;
vdda18-supply = <&vreg_l1c>;
Expand Down
10 changes: 5 additions & 5 deletions arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
reg = <0>;

pmic_glink_hs_in: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
remote-endpoint = <&eud_con>;
};
};

Expand Down Expand Up @@ -524,6 +524,10 @@
<GCC_WPSS_RSCP_CLK>;
};

&eud_con {
remote-endpoint = <&pmic_glink_hs_in>;
};

&gpu {
status = "okay";
};
Expand Down Expand Up @@ -826,10 +830,6 @@
status = "okay";
};

&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_hs_in>;
};

&usb_1_hsphy {
vdda-pll-supply = <&vreg_l10c_0p88>;
vdda33-supply = <&vreg_l2b_3p072>;
Expand Down
10 changes: 5 additions & 5 deletions arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
reg = <0>;

pmic_glink_hs_in: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
remote-endpoint = <&eud_con>;
};
};

Expand Down Expand Up @@ -490,6 +490,10 @@
};
};

&eud_con {
remote-endpoint = <&pmic_glink_hs_in>;
};

&gcc {
protected-clocks = <GCC_CFG_NOC_LPASS_CLK>,
<GCC_EDP_CLKREF_EN>,
Expand Down Expand Up @@ -921,10 +925,6 @@
status = "okay";
};

&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_hs_in>;
};

&usb_dp_qmpphy_out {
remote-endpoint = <&pmic_glink_ss_in>;
};
Expand Down
10 changes: 5 additions & 5 deletions arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@
reg = <0>;

pmic_glink_hs_in: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
remote-endpoint = <&eud_con>;
};
};

Expand Down Expand Up @@ -735,6 +735,10 @@
};
};

&eud_con {
remote-endpoint = <&pmic_glink_hs_in>;
};

&gcc {
protected-clocks = <GCC_CFG_NOC_LPASS_CLK>,
<GCC_MSS_CFG_AHB_CLK>,
Expand Down Expand Up @@ -1599,10 +1603,6 @@
status = "okay";
};

&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_hs_in>;
};

&usb_1_dwc3_ss {
remote-endpoint = <&usb_dp_qmpphy_usb_ss_in>;
};
Expand Down
57 changes: 32 additions & 25 deletions arch/arm64/boot/dts/qcom/sc7280.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -4343,12 +4343,6 @@
phy-names = "usb2-phy";
maximum-speed = "high-speed";
usb-role-switch;

port {
usb2_role_switch: endpoint {
remote-endpoint = <&eud_ep>;
};
};
};

qspi: spi@88dc000 {
Expand Down Expand Up @@ -4668,25 +4662,37 @@
};

eud: eud@88e0000 {
compatible = "qcom,sc7280-eud", "qcom,eud";
reg = <0 0x88e0000 0 0x2000>,
<0 0x88e2000 0 0x1000>;
interrupts-extended = <&pdc 11 IRQ_TYPE_LEVEL_HIGH>;

status = "disabled";

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
eud_ep: endpoint {
remote-endpoint = <&usb2_role_switch>;
};
};
};
};
compatible = "qcom,sc7280-eud", "qcom,eud";
reg = <0 0x88e0000 0 0x2000>,
<0 0x88e2000 0 0x1000>;
interrupts-extended = <&pdc 11 IRQ_TYPE_LEVEL_HIGH>;

#address-cells = <1>;
#size-cells = <0>;

eud0: eud-path@0 {
reg = <0>;
usb-role-switch;

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
eud_usb: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
};
};

port@1 {
reg = <1>;
eud_con: endpoint {
};
};
};
};
};

nsp_noc: interconnect@a0c0000 {
reg = <0 0x0a0c0000 0 0x10000>;
Expand Down Expand Up @@ -4916,6 +4922,7 @@
reg = <0>;

usb_1_dwc3_hs: endpoint {
remote-endpoint = <&eud_usb>;
};
};

Expand Down
10 changes: 5 additions & 5 deletions arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
reg = <0>;

pmic_glink_hs_in: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
remote-endpoint = <&eud_con>;
};
};

Expand Down Expand Up @@ -884,6 +884,10 @@
};
};

&eud_con {
remote-endpoint = <&pmic_glink_hs_in>;
};

&gcc {
protected-clocks = <GCC_CFG_NOC_LPASS_CLK>,
<GCC_MSS_CFG_AHB_CLK>,
Expand Down Expand Up @@ -1435,10 +1439,6 @@
status = "okay";
};

&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_hs_in>;
};

&usb_1_hsphy {
vdda-pll-supply = <&vdd_a_usbhs_core>;
vdda18-supply = <&vdd_a_usbhs_1p8>;
Expand Down
Loading