On 24/04/2020 09:41, Marek Vasut wrote: > On 4/24/20 9:18 AM, Neil Armstrong wrote: >> On 21/04/2020 10:17, Neil Armstrong via groups.io wrote: >>> Power on/off the PHYs to enable power to the USB ports, fixing USB support >>> on Khadas VIM3/VIM3L boards. >>> >>> The G12A USB complex has at least 2 USB2 PHYs, but one is muxed between the >>> DWC2 and DWC3 controller and the other one directly connected to the DWC3 >>> controller. The USB3+PCIe combo PHY is muxed between the DWC3 controller >>> and a DW-PCIE controller. >>> All PHYs are optional, but it's type (usb2/usb3) and position are important >>> to determine it's capabilities, thus they are stored in a fixed size >>> array and the phy-name determines it's position, it's position determining >>> it's type and functionnalities. >>> This is why we need to loop over the array to power on all the DT provided >>> PHYs. >>> >>> Signed-off-by: Neil Armstrong <narmstr...@baylibre.com> >>> --- >>> Changes since v1: >>> - removed extra space before semicolon >>> - added clarification in commit message >>> >>> drivers/usb/dwc3/dwc3-meson-g12a.c | 16 ++++++++++++++++ >>> 1 file changed, 16 insertions(+) >>> >>> diff --git a/drivers/usb/dwc3/dwc3-meson-g12a.c >>> b/drivers/usb/dwc3/dwc3-meson-g12a.c >>> index d4453f8784..de964d6c10 100644 >>> --- a/drivers/usb/dwc3/dwc3-meson-g12a.c >>> +++ b/drivers/usb/dwc3/dwc3-meson-g12a.c >>> @@ -408,6 +408,15 @@ static int dwc3_meson_g12a_probe(struct udevice *dev) >>> goto err_phy_init; >>> } >>> >>> + for (i = 0; i < PHY_COUNT; ++i) { >>> + if (!priv->phys[i].dev) >>> + continue; >>> + >>> + ret = generic_phy_power_on(&priv->phys[i]); >>> + if (ret) >>> + goto err_phy_init; >>> + } >>> + >>> return 0; >>> >>> err_phy_init: >>> @@ -430,6 +439,13 @@ static int dwc3_meson_g12a_remove(struct udevice *dev) >>> >>> clk_release_all(&priv->clk, 1); >>> >>> + for (i = 0; i < PHY_COUNT; ++i) { >>> + if (!priv->phys[i].dev) >>> + continue; >>> + >>> + generic_phy_power_off(&priv->phys[i]); >>> + } >>> + >>> for (i = 0 ; i < PHY_COUNT ; ++i) { >>> if (!priv->phys[i].dev) >>> continue; >>> >> >> Applied to u-boot-amlogic > > Did you apply V1 or V2 ? >
v2 Neil