From: Ferry Toth <ftoth@exalondelft.nl>
To: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
Sean Anderson <sean.anderson@seco.com>,
Liu Shixin <liushixin2@huawei.com>, Ferry Toth <fntoth@gmail.com>,
Andrey Smirnov <andrew.smirnov@gmail.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Ferry Toth <ftoth@exalondelft.nl>,
stable@vger.kernel.org
Subject: [PATCH v5 2/2] usb: dwc3: core: defer probe on ulpi_read_id timeout
Date: Mon, 5 Dec 2022 21:15:27 +0100 [thread overview]
Message-ID: <20221205201527.13525-3-ftoth@exalondelft.nl> (raw)
In-Reply-To: <20221205201527.13525-1-ftoth@exalondelft.nl>
Since commit 0f0101719138 ("usb: dwc3: Don't switch OTG -> peripheral
if extcon is present"), Dual Role support on Intel Merrifield platform
broke due to rearranging the call to dwc3_get_extcon().
It appears to be caused by ulpi_read_id() masking the timeout on the first
test write. In the past dwc3 probe continued by calling dwc3_core_soft_reset()
followed by dwc3_get_extcon() which happend to return -EPROBE_DEFER.
On deferred probe ulpi_read_id() finally succeeded. Due to above mentioned
rearranging -EPROBE_DEFER is not returned and probe completes without phy.
On Intel Merrifield the timeout on the first test write issue is reproducible
but it is difficult to find the root cause. Using a mainline kernel and
rootfs with buildroot ulpi_read_id() succeeds. As soon as adding
ftrace / bootconfig to find out why, ulpi_read_id() fails and we can't
analyze the flow. Using another rootfs ulpi_read_id() fails even without
adding ftrace. We suspect the issue is some kind of timing / race, but
merely retrying ulpi_read_id() does not resolve the issue.
As we now changed ulpi_read_id() to return -ETIMEDOUT in this case, we
need to handle the error by calling dwc3_core_soft_reset() and request
-EPROBE_DEFER. On deferred probe ulpi_read_id() is retried and succeeds.
Fixes: ef6a7bcfb01c ("usb: ulpi: Support device discovery via DT")
Cc: stable@vger.kernel.org
Signed-off-by: Ferry Toth <ftoth@exalondelft.nl>
---
drivers/usb/dwc3/core.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 648f1c570021..2779f17bffaf 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1106,8 +1106,13 @@ static int dwc3_core_init(struct dwc3 *dwc)
if (!dwc->ulpi_ready) {
ret = dwc3_core_ulpi_init(dwc);
- if (ret)
+ if (ret) {
+ if (ret == -ETIMEDOUT) {
+ dwc3_core_soft_reset(dwc);
+ ret = -EPROBE_DEFER;
+ }
goto err0;
+ }
dwc->ulpi_ready = true;
}
--
2.37.2
next prev parent reply other threads:[~2022-12-05 20:16 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20221205201527.13525-1-ftoth@exalondelft.nl>
2022-12-05 20:15 ` [PATCH v5 1/2] usb: ulpi: defer ulpi_register on ulpi_read_id timeout Ferry Toth
2022-12-07 11:33 ` Heikki Krogerus
2022-12-20 19:43 ` Guenter Roeck
2022-12-21 10:07 ` Ferry Toth
2022-12-21 12:41 ` Guenter Roeck
2022-12-21 14:29 ` Ferry Toth
2022-12-21 17:30 ` Guenter Roeck
2022-12-21 18:23 ` Greg Kroah-Hartman
2022-12-21 18:38 ` Ferry Toth
2022-12-21 18:48 ` Greg Kroah-Hartman
2022-12-22 12:45 ` [PATCH v5 1/2] usb: ulpi: defer ulpi_register on ulpi_read_id timeout #forregzbot Thorsten Leemhuis
2022-12-05 20:15 ` Ferry Toth [this message]
2022-12-05 21:19 ` [PATCH v5 2/2] usb: dwc3: core: defer probe on ulpi_read_id timeout Thinh Nguyen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221205201527.13525-3-ftoth@exalondelft.nl \
--to=ftoth@exalondelft.nl \
--cc=Thinh.Nguyen@synopsys.com \
--cc=andrew.smirnov@gmail.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=fntoth@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=liushixin2@huawei.com \
--cc=sean.anderson@seco.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox