2019-01-21 14:49:16

by Jochen Sprickerhof

[permalink] [raw]
Subject: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4

Note that it only works with USB_XHCI_PLATFORM=y. Also it needs a hard
reset when coming from an unpatched kernel.

This was included in the original patch in
https://patchwork.kernel.org/patch/9992809/ but got dropped when
accepted in d8c80bb3b55b phy: exynos5-usbdrd: Calibrate LOS levels for
exynos5420/5800.

Old behaviour:

$ lsusb -t
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 480M

New behaviour:

$ lsusb -t
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
|__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M

Tested on Debian unstable using u-boot-exynos (2018.11+dfsg-2) and Linux
4.19.14.

Signed-off-by: Jochen Sprickerhof <[email protected]>
---

Hi,

I'm not sure why this it only works with the driver compiled into the
kernel nor why it needs a hard reset or why it was the line was dropped
when the patch was accepted. Would be great to get some feedback of the
authors.

Cheers Jochen

drivers/usb/dwc3/core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index a1b126f90261..0008bccc30aa 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1169,7 +1169,8 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
dev_err(dev, "failed to initialize host\n");
return ret;
}
- phy_calibrate(dwc->usb2_generic_phy);
+ if (dwc->usb2_generic_phy)
+ phy_calibrate(dwc->usb2_generic_phy);
break;
case USB_DR_MODE_OTG:
INIT_WORK(&dwc->drd_work, __dwc3_set_mode);
--
2.20.1


Attachments:
(No filename) (1.73 kB)
signature.asc (849.00 B)
Download all attachments

2019-02-06 06:59:32

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4


hi,

Jochen Sprickerhof <[email protected]> writes:
> Note that it only works with USB_XHCI_PLATFORM=y. Also it needs a hard
> reset when coming from an unpatched kernel.
>
> This was included in the original patch in
> https://patchwork.kernel.org/patch/9992809/ but got dropped when
> accepted in d8c80bb3b55b phy: exynos5-usbdrd: Calibrate LOS levels for
> exynos5420/5800.
>
> Old behaviour:
>
> $ lsusb -t
> /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
> /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
> |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
>
> New behaviour:
>
> $ lsusb -t
> /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
> |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
>
> Tested on Debian unstable using u-boot-exynos (2018.11+dfsg-2) and Linux
> 4.19.14.
>
> Signed-off-by: Jochen Sprickerhof <[email protected]>
> ---
>
> Hi,
>
> I'm not sure why this it only works with the driver compiled into the
> kernel nor why it needs a hard reset or why it was the line was dropped
> when the patch was accepted. Would be great to get some feedback of the
> authors.
>
> Cheers Jochen
>
> drivers/usb/dwc3/core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index a1b126f90261..0008bccc30aa 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1169,7 +1169,8 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
> dev_err(dev, "failed to initialize host\n");
> return ret;
> }
> - phy_calibrate(dwc->usb2_generic_phy);
> + if (dwc->usb2_generic_phy)
> + phy_calibrate(dwc->usb2_generic_phy);

I can't see why this is necessary. What's really going on? Why is this
branch helping?

--
balbi


Attachments:
signature.asc (847.00 B)

2019-02-06 08:44:20

by Roger Quadros

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4

Hi,

On 21/01/19 16:02, Jochen Sprickerhof wrote:
> Note that it only works with USB_XHCI_PLATFORM=y. Also it needs a hard
> reset when coming from an unpatched kernel.
>
> This was included in the original patch in
> https://patchwork.kernel.org/patch/9992809/ but got dropped when
> accepted in d8c80bb3b55b phy: exynos5-usbdrd: Calibrate LOS levels for
> exynos5420/5800.
>
> Old behaviour:
>
> $ lsusb -t
> /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
> /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
> |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
>
> New behaviour:
>
> $ lsusb -t
> /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
> |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
>
> Tested on Debian unstable using u-boot-exynos (2018.11+dfsg-2) and Linux
> 4.19.14.
>
> Signed-off-by: Jochen Sprickerhof <[email protected]>
> ---
>
> Hi,
>
> I'm not sure why this it only works with the driver compiled into the
> kernel nor why it needs a hard reset or why it was the line was dropped
> when the patch was accepted. Would be great to get some feedback of the
> authors.

When XHCI driver is compiled into the kernel are the relevant PHY drivers
compiled in as well?

cheers,
-roger

>
> Cheers Jochen
>
> drivers/usb/dwc3/core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index a1b126f90261..0008bccc30aa 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1169,7 +1169,8 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
> dev_err(dev, "failed to initialize host\n");
> return ret;
> }
> - phy_calibrate(dwc->usb2_generic_phy);
> + if (dwc->usb2_generic_phy)
> + phy_calibrate(dwc->usb2_generic_phy);
> break;
> case USB_DR_MODE_OTG:
> INIT_WORK(&dwc->drd_work, __dwc3_set_mode);

--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

2019-02-06 10:18:49

by Roger Quadros

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4

+Marek

As Vivek's and Andrzej's Samsung IDs bounced back.

On 06/02/19 11:38, Jochen Sprickerhof wrote:
> * Roger Quadros <[email protected]> [2019-02-06 10:41]:
>> Hi,
>>
>> On 21/01/19 16:02, Jochen Sprickerhof wrote:
> [..]
>>> I'm not sure why this it only works with the driver compiled into the
>>> kernel nor why it needs a hard reset or why it was the line was dropped
>>> when the patch was accepted. Would be great to get some feedback of the
>>> authors.
>>
>> When XHCI driver is compiled into the kernel are the relevant PHY drivers
>> compiled in as well?
>
> Only CONFIG_USB_PHY=y (I took the config from the linux-image-4.19.0-1-armmp_4.19.13-1_armhf.deb Debian package as a basis where this is the default).
>


--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

2019-02-06 11:04:08

by Jochen Sprickerhof

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4

* Roger Quadros <[email protected]> [2019-02-06 10:41]:
>Hi,
>
>On 21/01/19 16:02, Jochen Sprickerhof wrote:
[..]
>> I'm not sure why this it only works with the driver compiled into the
>> kernel nor why it needs a hard reset or why it was the line was dropped
>> when the patch was accepted. Would be great to get some feedback of the
>> authors.
>
>When XHCI driver is compiled into the kernel are the relevant PHY drivers
>compiled in as well?

Only CONFIG_USB_PHY=y (I took the config from the
linux-image-4.19.0-1-armmp_4.19.13-1_armhf.deb Debian package as a
basis where this is the default).

Cheers Jochen


Attachments:
(No filename) (631.00 B)
signature.asc (849.00 B)
Download all attachments

2019-02-08 12:37:12

by Marek Szyprowski

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4

Hi Roger,

On 2019-02-06 11:17, Roger Quadros wrote:
> +Marek
>
> As Vivek's and Andrzej's Samsung IDs bounced back.
>
> On 06/02/19 11:38, Jochen Sprickerhof wrote:
>> * Roger Quadros <[email protected]> [2019-02-06 10:41]:
>>> Hi,
>>>
>>> On 21/01/19 16:02, Jochen Sprickerhof wrote:
>> [..]
>>>> I'm not sure why this it only works with the driver compiled into the
>>>> kernel nor why it needs a hard reset or why it was the line was dropped
>>>> when the patch was accepted. Would be great to get some feedback of the
>>>> authors.
>>> When XHCI driver is compiled into the kernel are the relevant PHY drivers
>>> compiled in as well?
>> Only CONFIG_USB_PHY=y (I took the config from the linux-image-4.19.0-1-armmp_4.19.13-1_armhf.deb Debian package as a basis where this is the default).

I confirm that on Odroid XU4 USB 3.0 works only when all related drivers
(dwc3, xhci and exynos5 drd phy) are compiled into the kernel. If they
are compiled as modules, USB 3.0 calibration doesn't work. The mentioned
patch doesn't fix anything.

Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland


2019-02-08 12:55:24

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4


Hi,

Marek Szyprowski <[email protected]> writes:
>>>> On 21/01/19 16:02, Jochen Sprickerhof wrote:
>>> [..]
>>>>> I'm not sure why this it only works with the driver compiled into the
>>>>> kernel nor why it needs a hard reset or why it was the line was dropped
>>>>> when the patch was accepted. Would be great to get some feedback of the
>>>>> authors.
>>>> When XHCI driver is compiled into the kernel are the relevant PHY drivers
>>>> compiled in as well?
>>> Only CONFIG_USB_PHY=y (I took the config from the linux-image-4.19.0-1-armmp_4.19.13-1_armhf.deb Debian package as a basis where this is the default).
>
> I confirm that on Odroid XU4 USB 3.0 works only when all related drivers
> (dwc3, xhci and exynos5 drd phy) are compiled into the kernel. If they
> are compiled as modules, USB 3.0 calibration doesn't work. The mentioned
> patch doesn't fix anything.

cool, thanks. So the problem is elsewhere.

--
balbi


Attachments:
signature.asc (847.00 B)

2019-02-08 19:46:45

by Jochen Sprickerhof

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4

Hi Marek,

* Marek Szyprowski <[email protected]> [2019-02-08 13:36]:
>>>> On 21/01/19 16:02, Jochen Sprickerhof wrote:
>>> [..]
>>>>> I'm not sure why this it only works with the driver compiled into the
>>>>> kernel nor why it needs a hard reset or why it was the line was dropped
>>>>> when the patch was accepted. Would be great to get some feedback of the
>>>>> authors.
>>>> When XHCI driver is compiled into the kernel are the relevant PHY drivers
>>>> compiled in as well?
>>> Only CONFIG_USB_PHY=y (I took the config from the linux-image-4.19.0-1-armmp_4.19.13-1_armhf.deb Debian package as a basis where this is the default).
>
>I confirm that on Odroid XU4 USB 3.0 works only when all related drivers
>(dwc3, xhci and exynos5 drd phy) are compiled into the kernel. If they
>are compiled as modules, USB 3.0 calibration doesn't work. The mentioned
>patch doesn't fix anything.

I've just tried Linux v5.0-rc5 with the Debian config and
USB_XHCI_PLATFORM=y and it works, thanks!

Is there a way to make it work with xhci compiled as a module, so it
would work in Debian out of the box?

Cheers Jochen


Attachments:
(No filename) (1.12 kB)
signature.asc (849.00 B)
Download all attachments

2019-03-11 11:14:19

by Marek Szyprowski

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4

Hi Jochen,

On 2019-02-08 20:35, Jochen Sprickerhof wrote:
> Hi Marek,
>
> * Marek Szyprowski <[email protected]> [2019-02-08 13:36]:
>>>>> On 21/01/19 16:02, Jochen Sprickerhof wrote:
>>>> [..]
>>>>>> I'm not sure why this it only works with the driver compiled into
>>>>>> the
>>>>>> kernel nor why it needs a hard reset or why it was the line was
>>>>>> dropped
>>>>>> when the patch was accepted. Would be great to get some feedback
>>>>>> of the
>>>>>> authors.
>>>>> When XHCI driver is compiled into the kernel are the relevant PHY
>>>>> drivers
>>>>> compiled in as well?
>>>> Only CONFIG_USB_PHY=y (I took the config from the
>>>> linux-image-4.19.0-1-armmp_4.19.13-1_armhf.deb Debian package as a
>>>> basis where this is the default).
>>
>> I confirm that on Odroid XU4 USB 3.0 works only when all related drivers
>> (dwc3, xhci and exynos5 drd phy) are compiled into the kernel. If they
>> are compiled as modules, USB 3.0 calibration doesn't work. The mentioned
>> patch doesn't fix anything.
>
> I've just tried Linux v5.0-rc5 with the Debian config and
> USB_XHCI_PLATFORM=y and it works, thanks!
>
> Is there a way to make it work with xhci compiled as a module, so it
> would work in Debian out of the box?

One more comment - 5000M mode will also work with everything compiled as
modules (dwc3, exynos5 drd phy and xhci-plat) too. Just make sure that
xhci-plat is loaded before dwc3. This would require some manual
configuration, because autoloading will load xhci-plat after dwc3 probe
and switch to host mode.

Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland


2019-03-21 00:07:25

by Jochen Sprickerhof

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: Enable GBit Ethernet on Odroid XU4

Hi Marek,

* Marek Szyprowski <[email protected]> [2019-03-11 12:11]:
>Hi Jochen,
>
>On 2019-02-08 20:35, Jochen Sprickerhof wrote:
>> Hi Marek,
>>
>> * Marek Szyprowski <[email protected]> [2019-02-08 13:36]:
>>>>>> On 21/01/19 16:02, Jochen Sprickerhof wrote:
>>>>> [..]
>>>>>>> I'm not sure why this it only works with the driver compiled into
>>>>>>> the
>>>>>>> kernel nor why it needs a hard reset or why it was the line was
>>>>>>> dropped
>>>>>>> when the patch was accepted. Would be great to get some feedback
>>>>>>> of the
>>>>>>> authors.
>>>>>> When XHCI driver is compiled into the kernel are the relevant PHY
>>>>>> drivers
>>>>>> compiled in as well?
>>>>> Only CONFIG_USB_PHY=y (I took the config from the
>>>>> linux-image-4.19.0-1-armmp_4.19.13-1_armhf.deb Debian package as a
>>>>> basis where this is the default).
>>>
>>> I confirm that on Odroid XU4 USB 3.0 works only when all related drivers
>>> (dwc3, xhci and exynos5 drd phy) are compiled into the kernel. If they
>>> are compiled as modules, USB 3.0 calibration doesn't work. The mentioned
>>> patch doesn't fix anything.
>>
>> I've just tried Linux v5.0-rc5 with the Debian config and
>> USB_XHCI_PLATFORM=y and it works, thanks!
>>
>> Is there a way to make it work with xhci compiled as a module, so it
>> would work in Debian out of the box?
>
>One more comment - 5000M mode will also work with everything compiled as
>modules (dwc3, exynos5 drd phy and xhci-plat) too. Just make sure that
>xhci-plat is loaded before dwc3. This would require some manual
>configuration, because autoloading will load xhci-plat after dwc3 probe
>and switch to host mode.

Thanks so much for the hint, this made it working :). I opened a bug
with Debian:

https://bugs.debian.org/925167

Cheers Jochen


Attachments:
(No filename) (1.79 kB)
signature.asc (849.00 B)
Download all attachments