Hi Neil.
2018-04-25 17:37 GMT+09:00 Neil Armstrong <narmstr...@baylibre.com>: > Hi, > > On 25/04/2018 06:21, Masahiro Yamada wrote: >> Hi. >> >> >> I found DWC3 usb driver on UniPhier SoC family >> not working. >> >> >> I did git-bisect, and the first bad commit is >> >> >> 7c839ea70c4991e8d4c322e074359ac5e155d59d is the first bad commit >> commit 7c839ea70c4991e8d4c322e074359ac5e155d59d >> Author: Neil Armstrong <narmstr...@baylibre.com> >> Date: Wed Apr 11 17:08:01 2018 +0200 >> >> usb: host: dwc3: Add support for multiple PHYs >> >> DWC3 Ips can have more than 1 PHY for USB2 and 1 PHY for USB3, add >> support >> for a generic number of PHYs and adapt the code to handle a generic >> number of PHYs. >> >> Signed-off-by: Neil Armstrong <narmstr...@baylibre.com> >> >> >> >> >> If I revert this commit, I can get the USB on my board working. >> >> Any insight about the cause of the problem? >> >> >> > > Can you test this ? > > ====><============================= > > diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c > index c100735..4e6bf5a 100644 > --- a/drivers/usb/host/xhci-dwc3.c > +++ b/drivers/usb/host/xhci-dwc3.c > @@ -113,11 +113,15 @@ void dwc3_set_fladj(struct dwc3 *dwc3_reg, u32 val) > } > > #ifdef CONFIG_DM_USB > -static int xhci_dwc3_setup_phy(struct udevice *dev, int count) > +static int xhci_dwc3_setup_phy(struct udevice *dev) > { > struct xhci_dwc3_platdata *plat = dev_get_platdata(dev); > - int i, ret; > + int i, ret, count; > + > + if (!dev_read_prop(dev, "phys", NULL)) > + return 0; > > + count = dev_count_phandle_with_args(dev, "phys", "#phy-cells"); > if (!count) > return 0; > > @@ -136,7 +140,7 @@ static int xhci_dwc3_setup_phy(struct udevice *dev, int > count) > > ++plat->num_phys; > } > - > + > for (i = 0; i < plat->num_phys; i++) { > ret = generic_phy_init(&plat->usb_phys[i]); > if (ret) { > @@ -145,7 +149,7 @@ static int xhci_dwc3_setup_phy(struct udevice *dev, int > count) > goto phys_init_err; > } > } > - > + > for (i = 0; i < plat->num_phys; i++) { > ret = generic_phy_power_on(&plat->usb_phys[i]); > if (ret) { > @@ -206,8 +210,7 @@ static int xhci_dwc3_probe(struct udevice *dev) > hcor = (struct xhci_hcor *)((uintptr_t)hccr + > HC_LENGTH(xhci_readl(&(hccr)->cr_capbase))); > > - ret = xhci_dwc3_setup_phy(dev, dev_count_phandle_with_args( > - dev, "phys", "#phy-cells")); > + ret = xhci_dwc3_setup_phy(dev); > if (ret) > return ret; > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot Yeah, it fixed the problem. In my case, the "phy" property is missing in the DWC3 node, so dev_count_phandle_with_args() returns a negative error code. Thanks. -- Best Regards Masahiro Yamada _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot