Message ID | 20240517023648.3459188-1-peter.chen@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 718d4a63c0a62d16af1d0425d515d7e76f35681e |
Headers | show |
Series | [1/1] Revert "usb: chipidea: move ci_ulpi_init after the phy initialization" | expand |
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@me.ssier.org/ Could this get picked up? Regards Luca > Cc: Michael Grzeschik <m.grzeschik@pengutronix.de> > Cc: Marek Szyprowski <m.szyprowski@samsung.com> > Cc: Wouter Franken <wouter@franken-peeters.be> > Signed-off-by: Peter Chen <peter.chen@kernel.org> > --- > 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; >
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;
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 Cc: Michael Grzeschik <m.grzeschik@pengutronix.de> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: Wouter Franken <wouter@franken-peeters.be> Signed-off-by: Peter Chen <peter.chen@kernel.org> --- drivers/usb/chipidea/core.c | 8 ++++---- drivers/usb/chipidea/ulpi.c | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-)