If transceiver driver is built as module, the transceiver device
may be added very late, so cause musb_init_controller() failed.

This patch fixes the below failure on 3.7-rcX:

[   19.052490] unable to find transceiver of type USB2 PHY
[   19.072052] HS USB OTG: no transceiver configured
[   19.076995] musb-hdrc musb-hdrc.0.auto: musb_init_controller failed with 
status -19
[   19.089355] musb-hdrc: probe of musb-hdrc.0.auto rejects match -19
[   19.096771] driver: 'musb-omap2430': driver_bound: bound to device 
'musb-omap2430'
[   19.105194] bus: 'platform': really_probe: bound device musb-omap2430 to 
driver musb-omap2430
[   19.174407] bus: 'platform': add driver twl4030_usb
[   19.179656] bus: 'platform': driver_probe_device: matched device twl4030_usb 
with driver twl4030_usb
[   19.202270] bus: 'platform': really_probe: probing driver twl4030_usb with 
device twl4030_usb
[   19.214172] twl4030_usb twl4030_usb: HW_CONDITIONS 0xc0/192; link 3
[   19.239624] musb-omap2430 musb-omap2430: musb core is not yet ready
[   19.246765] twl4030_usb twl4030_usb: Initialized TWL4030 USB module
[   19.254516] driver: 'twl4030_usb': driver_bound: bound to device 
'twl4030_usb'
[   19.263580] bus: 'platform': really_probe: bound device twl4030_usb to 
driver twl4030_usb

Cc: Felipe Balbi <ba...@ti.com>
Signed-off-by: Ming Lei <ming....@canonical.com>
---
 drivers/usb/musb/musb_core.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 774d815..ef57a60 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -1881,8 +1881,11 @@ musb_init_controller(struct device *dev, int nIrq, void 
__iomem *ctrl)
         * isp1504, non-OTG, etc) mostly hooking up through ULPI.
         */
        status = musb_platform_init(musb);
-       if (status < 0)
+       if (status < 0) {
+               /* try to defer probe if trasceiver is not ready */
+               status = -EPROBE_DEFER;
                goto fail1;
+       }
 
        if (!musb->isr) {
                status = -ENODEV;
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to