We should fully configure the desired register settings before calling of_platform_populate() to make sure they actually have an effect. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/usb/dwc3/dwc3-am62.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-am62.c b/drivers/usb/dwc3/dwc3-am62.c index 7dac8981fb..848549fbf6 100644 --- a/drivers/usb/dwc3/dwc3-am62.c +++ b/drivers/usb/dwc3/dwc3-am62.c @@ -240,17 +240,17 @@ static int dwc3_ti_probe(struct device *dev) clk_prepare_enable(am62->usb2_refclk); + /* Set mode valid bit to indicate role is valid */ + reg = dwc3_ti_readl(am62, USBSS_MODE_CONTROL); + reg |= USBSS_MODE_VALID; + dwc3_ti_writel(am62, USBSS_MODE_CONTROL, reg); + ret = of_platform_populate(node, NULL, dev); if (ret) { dev_err_probe(dev, ret, "failed to create dwc3 core\n"); goto err_pm_disable; } - /* Set mode valid bit to indicate role is valid */ - reg = dwc3_ti_readl(am62, USBSS_MODE_CONTROL); - reg |= USBSS_MODE_VALID; - dwc3_ti_writel(am62, USBSS_MODE_CONTROL, reg); - return 0; err_pm_disable: -- 2.39.5