usb: chipidea: imx: properly check for usbmisc
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Thu, 6 Aug 2015 13:09:54 +0000 (15:09 +0200)
committerPeter Chen <peter.chen@freescale.com>
Fri, 14 Aug 2015 01:13:13 +0000 (09:13 +0800)
If usbmisc hasn't probed yet, defer the probe.

It's not enough to check if the platform device for the OF node of the
usbmisc has been registered, but it also needs to have been probed
already before we can call imx_usbmisc_init().

This can happen if the order in which devices are probed change due to
async probing or on-demand probing of dependencies.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
drivers/usb/chipidea/ci_hdrc_imx.c

index 6d2a85a8bdcf18462fd225b388aa2082d1f29b15..9ccae5a33147ca27b09bbe6407f5681a93ea4a43 100644 (file)
@@ -104,7 +104,7 @@ static struct imx_usbmisc_data *usbmisc_get_init_data(struct device *dev)
        misc_pdev = of_find_device_by_node(args.np);
        of_node_put(args.np);
 
-       if (!misc_pdev)
+       if (!misc_pdev || !platform_get_drvdata(misc_pdev))
                return ERR_PTR(-EPROBE_DEFER);
 
        data->dev = &misc_pdev->dev;