usb: musb: slower system resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Felipe,

On a custom built am335x based board, I am facing an issue with MUSB.

It is vanilla kernel v4.0, except for some ASoC patches and v5 of Dave's PM
series from kernel v3.19-rc5 rebased to it.

If a USB storage device is plugged in before suspend and keep is plugged in
during resume, the resume is taking ~15+ seconds. I noticed that it fails while
sending USB control messages in hub_port_init():

http://lxr.free-electrons.com/source/drivers/usb/core/hub.c#L4390

After the failure, the USB device is logically disconnected and rediscovered
again. So I can see the device mounted once the system is resumed, but it
takes more time during resume.

I observed that during system resume, there is a CONNECT interrupt received
by MUSB controller:

http://lxr.free-electrons.com/source/drivers/usb/musb/musb_core.c#L772

If the hub_port_init() is started before the CONNECT interrupt is
served, I am hitting
the issue. Almost every time the CONNECT interrupt is occurring ~150ms after
musb_start() is invoked from musb_resume(). If I add a wait of ~200ms
in musb_resume()
just to make sure that CONNECT interrupt is received, I never hit the issue.

I see that hub_port_init() is calling hub_port_reset before actually
sending the USB
control messages. The hub_port_reset() internally sets the RESET bit
in MUSB POWER
register, but I am not sure if that is a valid operation before
getting the CONNECT interrupt.

Any idea how to handle the resume operation in this case?

Thanks,
Vishal
--
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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux