[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



On 2017-07-07, Jochen Sprickerhof wrote:
> 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.

Thanks!

Is this the only patch needed? Does it also need one of the patches
mentioned earlier in this bug? This is a single patch, with a v4.12 and
v4.11 variant, or two very similar looking patches?

I'd be happy to test on debian's 4.9 and 4.11 kernels, but it is a
little unclear to me exactly which patches are meant for what.

live well,
  vagrant

> 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: