Hello.
On 11/11/2015 10:36 PM, John Youn wrote:
When searching for PHYs, any error was treated as if the PHY did not
exist or was not specified (-ENODEV). Thus the probe function did not
correctly return error conditions such as -EPROBE_DEFER.
Fixed so that only -ENODEV is ignored and any other error is returned.
Reported-by: Alexander Aring <[email protected]>
Signed-off-by: John Youn <[email protected]>
---
drivers/usb/dwc2/platform.c | 31 ++++++++++++++++++++++++++-----
1 file changed, 26 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
index b129c52..0a0e44e 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -214,14 +214,35 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg)
*/
hsotg->phy = devm_phy_get(hsotg->dev, "usb2-phy");
if (IS_ERR(hsotg->phy)) {
- hsotg->phy = NULL;
+ ret = PTR_ERR(hsotg->phy);
+ if (ret == -ENODEV) {
+ hsotg->phy = NULL;
+ } else if (ret == -EPROBE_DEFER) {
+ return ret;
+ } else {
+ dev_err(hsotg->dev, "error getting phy %d\n", ret);
+ return ret;
+ }
This is asking to be a *switch* statement.
+ }
+
+ if (!hsotg->phy) {
hsotg->uphy = devm_usb_get_phy(hsotg->dev, USB_PHY_TYPE_USB2);
- if (IS_ERR(hsotg->uphy))
- hsotg->uphy = NULL;
- else
- hsotg->plat = dev_get_platdata(hsotg->dev);
+ if (IS_ERR(hsotg->uphy)) {
+ ret = PTR_ERR(hsotg->uphy);
+ if (ret == -ENODEV) {
+ hsotg->uphy = NULL;
+ } else if (ret == -EPROBE_DEFER) {
+ return ret;
+ } else {
+ dev_err(hsotg->dev, "error getting "
+ "usb phy %d\n", ret);
+ return ret;
+ }
This too.
[...]
MBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html