On Thu, Nov 22, 2012 at 12:51 AM, Sebastian Andrzej Siewior <sebastian@xxxxxxxxxxxxx> wrote: > On Wed, Nov 21, 2012 at 10:36:37PM +0800, Ming Lei wrote: >> On Wed, Nov 21, 2012 at 10:09 PM, Felipe Balbi <balbi@xxxxxx> wrote: >> >> status = musb_platform_init(musb); >> >> - if (status < 0) >> >> + if (status < 0) { >> >> + /* try to defer probe if trasceiver is not ready */ >> >> + status = (status == -ENODEV ? -EPROBE_DEFER : status); >> > >> > still wrong, what you should do is that when you can't get the phy, you >> > set status to -EPROBE_DEFER, instead of -ENODEV. >> >> The above code does set status to to -EPROBE_DEFER when phy can't >> be got, doesn't it? > > What he meant was probably something like: In fact, there is not much side effect to defer probe for -ENODEV, and the other -ENODEV cases are seldom triggered. > > @@ -1059,25 +1059,25 @@ static int tusb_musb_start(struct musb *musb) > } > > static int tusb_musb_init(struct musb *musb) > { > struct platform_device *pdev; > struct resource *mem; > void __iomem *sync = NULL; > int ret; > > usb_nop_xceiv_register(); > musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); > if (IS_ERR_OR_NULL(musb->xceiv)) > return -ENODEV; > + return -EPROBE_DEFER; > > pdev = to_platform_device(musb->controller); > > /* dma address for async dma */ > mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > musb->async = mem->start; > > /* dma address for sync dma */ > mem = platform_get_resource(pdev, IORESOURCE_MEM, 1); > if (!mem) { > pr_debug("no sync dma resource?\n"); > ret = -ENODEV; Also I am not sure if it is a proper error code for this case, maybe EINVAL is better. > > As you see there is a second ENODEV error code which has nothing to do with the > missing PHY. That is what I meant by a larger patch. As far as this problem concerned, I will prepare one larger patch to fix all glue driver. Thanks, -- Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html