On Wed, Dec 09, 2020 at 03:55:44PM +0100, Jules Maselbas wrote: >Signed-off-by: Jules Maselbas >--- > drivers/usb/dwc2/core.h | 2 ++ > drivers/usb/dwc2/dwc2.c | 21 +++++++++++++++++++++ > drivers/usb/dwc2/dwc2.h | 1 + > 3 files changed, 24 insertions(+) > >diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h >index 090ca15fe..b9845b552 100644 >--- a/drivers/usb/dwc2/core.h >+++ b/drivers/usb/dwc2/core.h >@@ -466,6 +466,8 @@ struct dwc2 { > struct dwc2_hw_params hw_params; > struct dwc2_core_params params; > >+ struct phy *phy; /* optional */ >+ > #ifdef CONFIG_USB_DWC2_HOST > struct usb_host host; > u8 in_data_toggle[MAX_DEVICE][MAX_ENDPOINT]; >diff --git a/drivers/usb/dwc2/dwc2.c b/drivers/usb/dwc2/dwc2.c >index 282e6754b..ae144698c 100644 >--- a/drivers/usb/dwc2/dwc2.c >+++ b/drivers/usb/dwc2/dwc2.c >@@ -50,6 +50,17 @@ static int dwc2_probe(struct device_d *dev) > dwc2->regs = IOMEM(iores->start); > dwc2->dev = dev; > >+ dwc2->phy = phy_optional_get(dev, "usb2-phy"); >+ if (!dwc2->phy) >+ dwc2->phy = phy_optional_get(dev, "usb-phy"); >+ if (dwc2->phy) { dwc2->phy could be of type PTR_ERR. So checking for IS_ERR is necessary. >+ ret = phy_power_on(dwc2->phy); >+ if (ret == 0) >+ ret = phy_init(dwc2->phy); >+ if (ret) >+ goto error; >+ } >+ > ret = dwc2_core_snpsid(dwc2); > if (ret) > goto error; >@@ -78,15 +89,25 @@ static int dwc2_probe(struct device_d *dev) > ret = dwc2_set_mode(dwc2, dwc2->dr_mode); > > error: >+ if (dwc2->phy) >+ phy_power_off(dwc2->phy); >+ Same here. > return ret; > } > > static void dwc2_remove(struct device_d *dev) > { > struct dwc2 *dwc2 = dev->priv; >+ int ret; > > dwc2_host_uninit(dwc2); > dwc2_gadget_uninit(dwc2); >+ >+ if (dwc2->phy) { >+ ret = phy_exit(dwc2->phy); >+ if (ret == 0) >+ phy_power_off(dwc2->phy); >+ } > } > > static const struct of_device_id dwc2_platform_dt_ids[] = { >diff --git a/drivers/usb/dwc2/dwc2.h b/drivers/usb/dwc2/dwc2.h >index 30ad90665..196f4a07f 100644 >--- a/drivers/usb/dwc2/dwc2.h >+++ b/drivers/usb/dwc2/dwc2.h >@@ -2,6 +2,7 @@ > #include > #include > #include >+#include > > #include "regs.h" > #include "core.h" >-- >2.17.1 > > > >_______________________________________________ >barebox mailing list >barebox@lists.infradead.org >http://lists.infradead.org/mailman/listinfo/barebox > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |