An mdelay of 1 seems to be necessary on some machines, since the monsel status does not seem to be accurate. On rare occasions just working with the phy after this pll check lead to no functional usb. With this short mdelay this issue was not reported again. Signed-off-by: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx> --- drivers/phy/phy-stm32-usbphyc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/phy/phy-stm32-usbphyc.c b/drivers/phy/phy-stm32-usbphyc.c index 657824405f..aff6b60d5e 100644 --- a/drivers/phy/phy-stm32-usbphyc.c +++ b/drivers/phy/phy-stm32-usbphyc.c @@ -271,6 +271,15 @@ static int stm32_usbphyc_phy_init(struct phy *phy) goto pll_disable; } + /* This is a workaround that seems to be necessary on some + * machines, since the monsel status does not seem to be + * accurate. On rare occasions just working with the phy after + * this pll check the usb peripheral (e.g. on the dwc2) run into + * timeout issues and leading to no functional usb. With this + * short mdelay this issue was not reported again. + */ + mdelay(1); + usbphyc_phy->active = true; return 0; -- 2.30.2