]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
phy: sun4i-usb: Do not drive VBUS with external VBUS present
authorSamuel Holland <samuel@sholland.org>
Fri, 15 Jul 2022 03:34:53 +0000 (22:34 -0500)
committerAndre Przywara <andre.przywara@arm.com>
Fri, 28 Apr 2023 00:30:40 +0000 (01:30 +0100)
It is possible to use host-side USB with externally-provided VBUS. For
example, some USB OTG cables have an extra power input which powers
both the board and the USB peripheral.

To support this setup, skip enabling the VBUS switch/regulator if VBUS
voltage is already present. This behavior matches the Linux PHY driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
drivers/phy/allwinner/phy-sun4i-usb.c

index 2e969ab91e35195300015e5556e8b04d4895d420..6428163c188cb5fbb1e9b66a592a3347fb5b956e 100644 (file)
@@ -224,6 +224,12 @@ static int sun4i_usb_phy_power_on(struct phy *phy)
                initial_usb_scan_delay = 0;
        }
 
+       /* For phy0 only turn on Vbus if we don't have an ext. Vbus */
+       if (phy->id == 0 && sun4i_usb_phy_vbus_detect(phy)) {
+               dev_warn(phy->dev, "External vbus detected, not enabling our own vbus\n");
+               return 0;
+       }
+
        if (dm_gpio_is_valid(&usb_phy->gpio_vbus))
                dm_gpio_set_value(&usb_phy->gpio_vbus, 1);