Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
523824d
Revert "FROMLIST: arm64: dts: qcom: Map USB connector to EUD for kodi…
elsonroy May 13, 2026
9f86732
Revert "FROMLIST: arm64: dts: qcom: kodiak: Fix EUD USB controller co…
elsonroy May 13, 2026
6d1d981
Revert "FROMLIST: usb: dwc3: qcom: notify EUD driver of role changes"
elsonroy May 13, 2026
fb8f03e
Revert "FROMLIST: usb: misc: qcom_eud: add host mode coordination"
elsonroy May 13, 2026
e22c48c
Revert "FROMLIST: usb: misc: qcom_eud: fix virtual attach/detach even…
elsonroy May 13, 2026
808c319
Revert "FROMLIST: usb: misc: qcom_eud: improve enable_store API"
elsonroy May 13, 2026
e6a8101
Revert "FROMLIST: usb: misc: qcom_eud: add per-port role switch support"
elsonroy May 13, 2026
0a3cfd2
Revert "FROMLIST: usb: misc: qcom_eud: add per-port High-Speed PHY co…
elsonroy May 13, 2026
c331c16
Revert "FROMLIST: usb: misc: qcom_eud: add sysfs attribute for port s…
elsonroy May 13, 2026
c349a01
Revert "FROMLIST: dt-bindings: soc: qcom: eud: Add support for dual-p…
elsonroy May 13, 2026
068d832
Revert "FROMLIST: dt-bindings: connector: Add role‑switch provider ph…
elsonroy May 13, 2026
d79e16d
FROMLIST: dt-bindings: soc: qcom: eud: Add per-path child nodes for U…
elsonroy May 1, 2026
6848889
FROMLIST: usb: misc: qcom_eud: add sysfs attribute for port selection
elsonroy May 1, 2026
63b2be6
FROMLIST: usb: misc: qcom_eud: add per-path High-Speed PHY control
elsonroy May 1, 2026
99d21fc
FROMLIST: usb: misc: qcom_eud: add per-path role switch support
elsonroy May 1, 2026
a8c790b
FROMLIST: usb: misc: qcom_eud: improve enable_store API
elsonroy May 1, 2026
db3238a
FROMLIST: usb: misc: qcom_eud: add host mode coordination
elsonroy May 1, 2026
b22675f
FROMLIST: usb: misc: qcom_eud: fix virtual attach/detach event handling
elsonroy May 1, 2026
9c5c28d
FROMLIST: arm64: dts: qcom: kodiak: Describe EUD UTMI path using chil…
elsonroy May 1, 2026
5fc0400
FROMLIST: arm64: dts: qcom: Map USB connector to EUD on Kodiak boards
elsonroy May 1, 2026
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
6 changes: 3 additions & 3 deletions Documentation/ABI/testing/sysfs-driver-eud
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ Description:
USB ports.

Valid values:
0 - Primary USB port
1 - Secondary USB port
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 number.
USB port.
Original file line number Diff line number Diff line change
Expand Up @@ -95,14 +95,6 @@ properties:
- device
- dual

usb-role-switch:
$ref: /schemas/types.yaml#/definitions/phandle
description:
A phandle to the USB role-switch provider. The provider is typically
a dual-role (DRD) USB controller node that declares the boolean
'usb-role-switch' property. Use this when the connector is not
directly linked to the provider in the OF graph.

typec-power-opmode:
description: Determines the power operation mode that the Type C connector
will support and will advertise through CC pins when it has no power
Expand Down
70 changes: 57 additions & 13 deletions Documentation/devicetree/bindings/soc/qcom/qcom,eud.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,32 +32,76 @@ properties:
ports:
$ref: /schemas/graph.yaml#/properties/ports
description:
These ports attach to endpoints of DWC3 controller nodes and Type-C
connector nodes. The controller has the "usb-role-switch" property.
EUD supports up to 2 USB ports. For single-port configurations, use
port@0 and port@1. For dual-port configurations, use all four ports.
These ports is to be attached to the endpoint of the DWC3 controller node
and type C connector node. The controller has the "usb-role-switch"
property.

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

port@1:
$ref: /schemas/graph.yaml#/properties/port
description: This port is to be attached to the primary Type-C connector.
description: This port is to be attached to the type C connector.

port@2:
$ref: /schemas/graph.yaml#/properties/port
description: This port is to be attached to the secondary DWC3 controller.
'#address-cells':
const: 1

port@3:
$ref: /schemas/graph.yaml#/properties/port
description: This port is to be attached to the secondary Type-C connector.
'#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
32 changes: 19 additions & 13 deletions arch/arm64/boot/dts/qcom/kodiak.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -4617,22 +4617,28 @@
<0 0x88e2000 0 0x1000>;
interrupts-extended = <&pdc 11 IRQ_TYPE_LEVEL_HIGH>;

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

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

eud_ep: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;

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

eud_con: endpoint {
port@1 {
reg = <1>;
eud_con: endpoint {
};
};
};
};
Expand Down Expand Up @@ -4858,7 +4864,7 @@
reg = <0>;

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

Expand Down
1 change: 0 additions & 1 deletion arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@
reg = <0>;
power-role = "dual";
data-role = "dual";
usb-role-switch = <&usb_1>;

ports {
#address-cells = <1>;
Expand Down
1 change: 0 additions & 1 deletion arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@
reg = <0>;
power-role = "dual";
data-role = "dual";
usb-role-switch = <&usb_1>;

ports {
#address-cells = <1>;
Expand Down
1 change: 0 additions & 1 deletion arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@
reg = <0>;
power-role = "dual";
data-role = "dual";
usb-role-switch = <&usb_1>;

ports {
#address-cells = <1>;
Expand Down
1 change: 0 additions & 1 deletion arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,6 @@
reg = <0>;
power-role = "dual";
data-role = "dual";
usb-role-switch = <&usb_1>;

ports {
#address-cells = <1>;
Expand Down
1 change: 0 additions & 1 deletion arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@
reg = <0>;
power-role = "dual";
data-role = "dual";
usb-role-switch = <&usb_1>;

ports {
#address-cells = <1>;
Expand Down
1 change: 0 additions & 1 deletion arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@
reg = <0>;
power-role = "dual";
data-role = "dual";
usb-role-switch = <&usb_1>;

ports {
#address-cells = <1>;
Expand Down
1 change: 0 additions & 1 deletion drivers/usb/dwc3/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ config USB_DWC3_QCOM
depends on ARCH_QCOM || COMPILE_TEST
depends on EXTCON || !EXTCON
depends on OF
depends on USB_QCOM_EUD || !USB_QCOM_EUD
default USB_DWC3
help
Some Qualcomm SoCs use DesignWare Core IP for USB2/3
Expand Down
10 changes: 0 additions & 10 deletions drivers/usb/dwc3/dwc3-qcom.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
#include <linux/clk.h>
#include <linux/irq.h>
#include <linux/of_clk.h>
#include <linux/of_graph.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/interconnect.h>
Expand All @@ -20,7 +19,6 @@
#include <linux/iopoll.h>
#include <linux/usb/hcd.h>
#include <linux/usb.h>
#include <linux/usb/qcom_eud.h>
#include "core.h"
#include "glue.h"

Expand Down Expand Up @@ -563,7 +561,6 @@ static int dwc3_qcom_setup_irq(struct dwc3_qcom *qcom, struct platform_device *p
static void dwc3_qcom_set_role_notifier(struct dwc3 *dwc, enum usb_role next_role)
{
struct dwc3_qcom *qcom = to_dwc3_qcom(dwc);
struct device_node *eud_node;

if (qcom->current_role == next_role)
return;
Expand All @@ -573,13 +570,6 @@ static void dwc3_qcom_set_role_notifier(struct dwc3 *dwc, enum usb_role next_rol
return;
}

/* Notify EUD of role change */
eud_node = of_graph_get_remote_node(qcom->dev->of_node, 0, -1);
if (eud_node) {
qcom_eud_usb_role_notify(eud_node, dwc->usb2_generic_phy[0], next_role);
of_node_put(eud_node);
}

if (qcom->current_role == USB_ROLE_DEVICE)
dwc3_qcom_vbus_override_enable(qcom, false);
else if (qcom->current_role != USB_ROLE_DEVICE)
Expand Down
1 change: 0 additions & 1 deletion drivers/usb/misc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ config USB_APPLEDISPLAY
config USB_QCOM_EUD
tristate "QCOM Embedded USB Debugger(EUD) Driver"
depends on ARCH_QCOM || COMPILE_TEST
depends on OF
select QCOM_SCM
select USB_ROLE_SWITCH
help
Expand Down
Loading