On Freitag, 17. Mai 2024 04:36:48 MESZ Peter Chen wrote: > This reverts commit 22ffd399e6e7aa18ae0314278ed0b7f05f8ab679. > People report this commit causes the driver defer probed, and never > back to work[1][2]. > > [1] https://lore.kernel.org/lkml/20240407011913.GA168730@nchen-desktop/T/#mc2b93bc11a8b01ec7cd0d0bf6b0b03951d9ef751 > [2] https://lore.kernel.org/lkml/20240407011913.GA168730@nchen-desktop/T/#me87d9a2a76c07619d83b3879ea14780da89fbbbf > Hi all, the original commit appears to break USB on Qualcomm msm8974 also (and probably other platforms), as reported in https://lore.kernel.org/all/87546d93-3fe7-4459-b44a-47cbcab9da74@xxxxxxxxxxxx/ Could this get picked up? Regards Luca > Cc: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx> > Cc: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > Cc: Wouter Franken <wouter@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Peter Chen <peter.chen@xxxxxxxxxx> > --- > drivers/usb/chipidea/core.c | 8 ++++---- > drivers/usb/chipidea/ulpi.c | 5 +++++ > 2 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c > index bada13f704b6..835bf2428dc6 100644 > --- a/drivers/usb/chipidea/core.c > +++ b/drivers/usb/chipidea/core.c > @@ -1084,6 +1084,10 @@ static int ci_hdrc_probe(struct platform_device *pdev) > return -ENODEV; > } > > + ret = ci_ulpi_init(ci); > + if (ret) > + return ret; > + > if (ci->platdata->phy) { > ci->phy = ci->platdata->phy; > } else if (ci->platdata->usb_phy) { > @@ -1138,10 +1142,6 @@ static int ci_hdrc_probe(struct platform_device *pdev) > goto ulpi_exit; > } > > - ret = ci_ulpi_init(ci); > - if (ret) > - return ret; > - > ci->hw_bank.phys = res->start; > > ci->irq = platform_get_irq(pdev, 0); > diff --git a/drivers/usb/chipidea/ulpi.c b/drivers/usb/chipidea/ulpi.c > index 89fb51e2c3de..dfec07e8ae1d 100644 > --- a/drivers/usb/chipidea/ulpi.c > +++ b/drivers/usb/chipidea/ulpi.c > @@ -68,6 +68,11 @@ int ci_ulpi_init(struct ci_hdrc *ci) > if (ci->platdata->phy_mode != USBPHY_INTERFACE_MODE_ULPI) > return 0; > > + /* > + * Set PORTSC correctly so we can read/write ULPI registers for > + * identification purposes > + */ > + hw_phymode_configure(ci); > > ci->ulpi_ops.read = ci_ulpi_read; > ci->ulpi_ops.write = ci_ulpi_write; >