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 <git@xxxxxxxxxxxxxxxxxxxxx> --- 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
Attachment:
signature.asc
Description: PGP signature