[PATCH v4] usb: cdns3: use VBUS Valid to determine role for dr_mode OTG

Marek Vasut marek.vasut at mailbox.org
Mon Feb 16 15:07:25 CET 2026


On 2/16/26 5:34 AM, Siddharth Vadapalli wrote:
> The cdns3_bind() function is responsible for identifying the appropriate
> driver to bind to the USB Controller's device-tree node. If the device-tree
> node has the 'dr_mode' property set to 'otg', the existing approach fails
> to bind a driver, leading to loss of functionality.
> 
> To address this, use the VBUS Valid field of the OTG Status register to
> determine the role as follows:
> - If VBUS Valid field is set, it indicates that a USB Host is supplying
>    power and the Controller should assume the Peripheral role.
> - If VBUS Valid field is clear, it indicates the absence of a USB Host and
>    the Controller should assume the Host role.
> 
> Additionally, when 'dr_mode' happens to be 'otg' and the STRAP settings
> are not specified, use VBUS Valid to determine the role in cdns3_drd_init()
> and assign it to cdns->dr_mode.
> 
> Signed-off-by: Siddharth Vadapalli <s-vadapalli at ti.com>
Reviewed-by: Marek Vasut <marek.vasut at mailbox.org>

Thanks


More information about the U-Boot mailing list