[PATCH v2] usb: dwc3-meson-g12a: add power-on/off of the PHYs
Neil Armstrong
narmstrong at baylibre.com
Fri Apr 24 09:18:20 CEST 2020
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 <narmstrong at 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
More information about the U-Boot
mailing list