public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH] Revert "usb: cdns3: use VBUS Valid to determine role for dr_mode OTG"
@ 2026-03-12 13:32 Prasanth Babu Mantena
  2026-03-12 13:50 ` Tom Rini
  2026-04-04 18:25 ` Tom Rini
  0 siblings, 2 replies; 8+ messages in thread
From: Prasanth Babu Mantena @ 2026-03-12 13:32 UTC (permalink / raw)
  To: u-boot, trini, n-francis; +Cc: u-kumar1, vigneshr, s-vadapalli

While USB DFU boot works with this patch, but the non USB boot modes like
SD Boot and flash boot fails for J784S4 EVM device.

So, Reverting this patch.

This reverts commit bfb530e06ca6c19f66c079601e568c761a001993.

Signed-off-by: Prasanth Babu Mantena <p-mantena@ti.com>
---
 drivers/usb/cdns3/core.c | 53 ----------------------------------------
 drivers/usb/cdns3/drd.c  | 11 ---------
 2 files changed, 64 deletions(-)

diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c
index 10bc4cabed4..4434dc15bec 100644
--- a/drivers/usb/cdns3/core.c
+++ b/drivers/usb/cdns3/core.c
@@ -392,52 +392,6 @@ static const struct udevice_id cdns3_ids[] = {
 	{ },
 };
 
-/*
- * The VBUS Valid Bit in the OTG Status register can be used to determine
- * the role. When VBUS Valid is set, it indicates that a USB Host is supplying
- * power, so the Controller should assume the PERIPHERAL role. If it isn't set,
- * it indicates the absence of a USB Host, so the Controller should assume the
- * HOST role. If the OTG Status register is inaccessible, return an error.
- */
-static int cdns3_get_otg_mode(struct udevice *parent, enum usb_dr_mode *mode)
-{
-	/* Create a temporary child device for using devfdt_remap_addr_name() */
-	struct udevice child = {
-		.parent = parent,
-	};
-	struct cdns3 cdns, *cdnsp;
-	void __iomem *otg_regs;
-
-	dev_set_ofnode(&child, ofnode_first_subnode(dev_ofnode(parent)));
-	otg_regs = devfdt_remap_addr_name(&child, "otg");
-	if (!otg_regs) {
-		dev_err(parent, "failed to get otg registers for child node\n");
-		return -ENXIO;
-	}
-
-	/*
-	 * As mentioned in drivers/usb/cdns3/drd.c, there are two versions
-	 * of the Controller. The following logic detects the version of the
-	 * Controller and interprets the register layout accordingly.
-	 */
-	cdnsp = &cdns;
-	cdnsp->otg_v0_regs = otg_regs;
-	if (!readl(&cdnsp->otg_v0_regs->cmd)) {
-		cdnsp->otg_regs = otg_regs;
-	} else {
-		cdnsp->otg_v1_regs = otg_regs;
-		cdnsp->otg_regs = (void *)&cdnsp->otg_v1_regs->cmd;
-	}
-
-	/* Use VBUS Valid to determine role */
-	if (readl(&cdnsp->otg_regs->sts) & OTGSTS_VBUS_VALID)
-		*mode = USB_DR_MODE_PERIPHERAL;
-	else
-		*mode = USB_DR_MODE_HOST;
-
-	return 0;
-}
-
 int cdns3_bind(struct udevice *parent)
 {
 	enum usb_dr_mode dr_mode;
@@ -459,13 +413,6 @@ int cdns3_bind(struct udevice *parent)
 	if (dr_mode == USB_DR_MODE_UNKNOWN)
 		dr_mode = usb_get_dr_mode(dev_ofnode(parent));
 
-	/* Use VBUS Valid to determine role */
-	if (dr_mode == USB_DR_MODE_OTG) {
-		ret = cdns3_get_otg_mode(parent, &dr_mode);
-		if (ret < 0)
-			return ret;
-	}
-
 	switch (dr_mode) {
 #if defined(CONFIG_SPL_USB_HOST) || \
 	(!defined(CONFIG_XPL_BUILD) && defined(CONFIG_USB_HOST))
diff --git a/drivers/usb/cdns3/drd.c b/drivers/usb/cdns3/drd.c
index 0ca40a5cc8d..cbb13342343 100644
--- a/drivers/usb/cdns3/drd.c
+++ b/drivers/usb/cdns3/drd.c
@@ -301,17 +301,6 @@ int cdns3_drd_init(struct cdns3 *cdns)
 		cdns->dr_mode = USB_DR_MODE_PERIPHERAL;
 	}
 
-	/*
-	 * In the absence of STRAP configuration, use VBUS Valid to
-	 * determine the appropriate role to be assigned to dr_mode.
-	 */
-	if (cdns->dr_mode == USB_DR_MODE_OTG) {
-		if (cdns3_get_vbus(cdns))
-			cdns->dr_mode = USB_DR_MODE_PERIPHERAL;
-		else
-			cdns->dr_mode = USB_DR_MODE_HOST;
-	}
-
 	state = readl(&cdns->otg_regs->sts);
 	if (OTGSTS_OTG_NRDY(state) != 0) {
 		dev_err(cdns->dev, "Cadence USB3 OTG device not ready\n");
-- 
2.34.1


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

end of thread, other threads:[~2026-04-04 18:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-12 13:32 [PATCH] Revert "usb: cdns3: use VBUS Valid to determine role for dr_mode OTG" Prasanth Babu Mantena
2026-03-12 13:50 ` Tom Rini
2026-03-12 15:01   ` Marek Vasut
2026-03-13  3:59     ` Siddharth Vadapalli
2026-04-02 11:03       ` Siddharth Vadapalli
2026-04-03 22:39         ` Marek Vasut
2026-04-03 22:38       ` Marek Vasut
2026-04-04 18:25 ` Tom Rini

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