diff mbox series

[v2,1/2] Revert "usb: dwc3: dwc3-generic: check the parent nodes"

Message ID 20220616084712.1508917-2-alban.bedel@aerq.com
State Deferred
Delegated to: Tom Rini
Headers show
Series usb: dwc3: Add support for standalone DWC3 nodes | expand

Commit Message

Bedel, Alban June 16, 2022, 8:47 a.m. UTC
This reverts commit c08db05455bcb2259849a096acf2e90cce258849.

All the devices supported by this driver use a top glue node with DWC3
devices a subnodes. The imx8mq has no glue device, the DWC3 is
directly on the parent bus. But the DWC3 node might have `port`
subnode to define the connection to type C connectors.

The code added by commit c08db05455bc ("usb: dwc3: dwc3-generic:
check the parent nodes") would let the driver interpret the `port`
subnode as DWC3 nodes, which lead to the need to add code to lookup
properties in the parent node. As this code is based on a
missunderstanding of the binding let's just revert it, a following
commit will add support for standalone DWC3 devices.

Signed-off-by: Alban Bedel <alban.bedel@aerq.com>
---
 drivers/usb/dwc3/dwc3-generic.c | 25 +++++--------------------
 1 file changed, 5 insertions(+), 20 deletions(-)
diff mbox series

Patch

diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index c5310e465cbf..38367ea0f116 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -111,12 +111,7 @@  static int dwc3_generic_of_to_plat(struct udevice *dev)
 	struct dwc3_generic_plat *plat = dev_get_plat(dev);
 	ofnode node = dev_ofnode(dev);
 
-	if (!strncmp(dev->name, "port", 4) || !strncmp(dev->name, "hub", 3)) {
-		/* This is a leaf so check the parent */
-		plat->base = dev_read_addr(dev->parent);
-	} else {
-		plat->base = dev_read_addr(dev);
-	}
+	plat->base = dev_read_addr(dev);
 
 	plat->maximum_speed = usb_get_maximum_speed(node);
 	if (plat->maximum_speed == USB_SPEED_UNKNOWN) {
@@ -126,13 +121,8 @@  static int dwc3_generic_of_to_plat(struct udevice *dev)
 
 	plat->dr_mode = usb_get_dr_mode(node);
 	if (plat->dr_mode == USB_DR_MODE_UNKNOWN) {
-		/* might be a leaf so check the parent for mode */
-		node = dev_ofnode(dev->parent);
-		plat->dr_mode = usb_get_dr_mode(node);
-		if (plat->dr_mode == USB_DR_MODE_UNKNOWN) {
-			pr_err("Invalid usb mode setup\n");
-			return -ENODEV;
-		}
+		pr_err("Invalid usb mode setup\n");
+		return -ENODEV;
 	}
 
 	return 0;
@@ -363,20 +353,16 @@  static int dwc3_glue_bind(struct udevice *parent)
 {
 	ofnode node;
 	int ret;
-	enum usb_dr_mode dr_mode;
-
-	dr_mode = usb_get_dr_mode(dev_ofnode(parent));
 
 	ofnode_for_each_subnode(node, dev_ofnode(parent)) {
 		const char *name = ofnode_get_name(node);
+		enum usb_dr_mode dr_mode;
 		struct udevice *dev;
 		const char *driver = NULL;
 
 		debug("%s: subnode name: %s\n", __func__, name);
 
-		/* if the parent node doesn't have a mode check the leaf */
-		if (!dr_mode)
-			dr_mode = usb_get_dr_mode(node);
+		dr_mode = usb_get_dr_mode(node);
 
 		switch (dr_mode) {
 		case USB_DR_MODE_PERIPHERAL:
@@ -536,7 +522,6 @@  static const struct udevice_id dwc3_glue_ids[] = {
 	{ .compatible = "rockchip,rk3399-dwc3" },
 	{ .compatible = "qcom,dwc3" },
 	{ .compatible = "fsl,imx8mp-dwc3", .data = (ulong)&imx8mp_ops },
-	{ .compatible = "fsl,imx8mq-dwc3" },
 	{ .compatible = "intel,tangier-dwc3" },
 	{ }
 };