[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#843448: linux-image-4.8.0-1-armmp-lpae: fails to boot on Odroid-Xu4 with rootfs on USB



Control: tags -1 patch

Hi,

I've created patches for v4.12 (applies to v4.11 as well) and git
master and send them to the subsystem maintainers. Would be great to see
them included in the Debian kernel as well.

Cheers Jochen
From 7b12187f59ff43571e664b9f6987534ee622700f Mon Sep 17 00:00:00 2001
From: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Date: Fri, 7 Jul 2017 19:38:03 +0200
Subject: [PATCH] v4.12: usb: dwc3: core: Setup phy before trying to read from
 it

Commit c499ff71ff2a ("usb: dwc3: core: re-factor init and exit paths")
moved the call to dwc3_phy_setup() from dwc3_probe() to dwc3_core_init()
and after the dwc3_readl() (now in dwc3_core_is_valid). This broke USB
and Ethernet on Odroid XU4, because dwc3_readl() needs dwc3_phy_setup()
to be run before.

Fix this by moving the call to dwc3_phy_setup() before
dwc3_core_is_valid().

This fixes USB and Ethernet on Odroid XU4.

Also see https://bugs.debian.org/843448

Signed-off-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Fixes: c499ff71ff2a ("usb: dwc3: core: re-factor init and exit paths")
---
 drivers/usb/dwc3/core.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 455d89a1cd6d..2418979a883a 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -732,6 +732,10 @@ static int dwc3_core_init(struct dwc3 *dwc)
 	u32			reg;
 	int			ret;
 
+	ret = dwc3_phy_setup(dwc);
+	if (ret)
+		goto err0;
+
 	if (!dwc3_core_is_valid(dwc)) {
 		dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n");
 		ret = -ENODEV;
@@ -755,10 +759,6 @@ static int dwc3_core_init(struct dwc3 *dwc)
 	if (ret)
 		goto err0;
 
-	ret = dwc3_phy_setup(dwc);
-	if (ret)
-		goto err0;
-
 	dwc3_core_setup_global_control(dwc);
 	dwc3_core_num_eps(dwc);
 
-- 
2.13.2

From 6b7d33243a364c668530a5ae11ed5a57cecd42d9 Mon Sep 17 00:00:00 2001
From: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Date: Fri, 7 Jul 2017 19:38:03 +0200
Subject: [PATCH] usb: dwc3: core: Setup phy before trying to read from it

Commit c499ff71ff2a ("usb: dwc3: core: re-factor init and exit paths")
moved the call to dwc3_phy_setup() from dwc3_probe() to dwc3_core_init()
and after the dwc3_readl() (now in dwc3_core_is_valid). This broke USB
and Ethernet on Odroid XU4, because dwc3_readl() needs dwc3_phy_setup()
to be run before.

Fix this by moving the call to dwc3_phy_setup() before
dwc3_core_is_valid().

This fixes USB and Ethernet on Odroid XU4.

This needs and is supposed to be applied on top of
https://patchwork.kernel.org/patch/9815981/

Also see https://bugs.debian.org/843448

Signed-off-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Fixes: c499ff71ff2a ("usb: dwc3: core: re-factor init and exit paths")
---
 drivers/usb/dwc3/core.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 03474d3575ab..3c6faddc1394 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -747,6 +747,10 @@ static int dwc3_core_init(struct dwc3 *dwc)
 	u32			reg;
 	int			ret;
 
+	ret = dwc3_phy_setup(dwc);
+	if (ret)
+		goto err0;
+
 	if (!dwc3_core_is_valid(dwc)) {
 		dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n");
 		ret = -ENODEV;
@@ -774,10 +778,6 @@ static int dwc3_core_init(struct dwc3 *dwc)
 	if (ret)
 		goto err0;
 
-	ret = dwc3_phy_setup(dwc);
-	if (ret)
-		goto err0;
-
 	dwc3_core_setup_global_control(dwc);
 	dwc3_core_num_eps(dwc);
 
-- 
2.13.2

Attachment: signature.asc
Description: PGP signature


Reply to: