On Fri, Dec 20, 2019 at 07:31:08AM +0300, Dmitry Osipenko wrote: > 20.12.2019 06:56, Peter Chen пишет: > > On 19-12-20 04:52:38, Dmitry Osipenko wrote: [...] > >> --- a/drivers/usb/chipidea/ci_hdrc_tegra.c > >> +++ b/drivers/usb/chipidea/ci_hdrc_tegra.c > >> @@ -53,6 +53,12 @@ static int tegra_udc_probe(struct platform_device *pdev) > >> struct tegra_udc *udc; > >> int err; > >> > >> + if (IS_MODULE(CONFIG_USB_TEGRA_PHY)) { > >> + err = request_module("phy_tegra_usb"); > >> + if (err) > >> + return err; > >> + } > >> + > > > > Why you do this dependency, if this controller driver can't > > get USB PHY, it should return error. What's the return value > > after calling below: > > > > udc->phy = devm_usb_get_phy_by_phandle(&pdev->dev, "nvidia,phy", 0); > > It returns -EPROBE_DEFER when phy_tegra_usb isn't loaded. How are other driver modules autoloaded? Isn't there an appropriate MODALIAS or MODULE_DEVICE_TABLE in there? Best Regards, Michał Mirosław