On Wed, Nov 21, 2012 at 11:22:57PM +0300, Sergei Shtylyov wrote: > Hello. > > On 11/21/2012 04:48 PM, Ming Lei wrote: > > > 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 error 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: Sebastian Andrzej Siewior <sebastian@xxxxxxxxxxxxx> > > Cc: Felipe Balbi <balbi@xxxxxx> > > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxxxxx> > > --- > > V1: > > - return -EPROBE_DEFER only for -ENODEV case as pointed by > > Sebastian > > --- > > 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..00aad8f 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 = (status == -ENODEV ? -EPROBE_DEFER : status); > > This looks somewhat inelegant to my eye, I would propose longer: > > if (status == -ENODEV) > status = -EPROBE_DEFER; NAK, see other subthread -- balbi
Attachment:
signature.asc
Description: Digital signature