Hi,

On Mon, Nov 28, 2011 at 04:56:30PM -0800, Kevin Hilman wrote:
> The MUSB driver does not currently implment suspend/resume callbacks,

this is not entirelly true, actually. Such methods are missing for
omap2430 glue layer, not for MUSB itself. And the fact is that it's only
missing because we failed to use UNIVERSAL_DEV_PM_OPS for declaring
dev_pm_ops structure.

Can you see if this patch helps:

diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
index fd5dd46..d89caec 100644
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -525,10 +525,8 @@ static int omap2430_runtime_resume(struct device *dev)
        return 0;
 }
 
-static struct dev_pm_ops omap2430_pm_ops = {
-       .runtime_suspend = omap2430_runtime_suspend,
-       .runtime_resume = omap2430_runtime_resume,
-};
+static UNIVERSAL_DEV_PM_OPS(omap2430_pm_ops, omap2430_runtime_suspend,
+               omap2430_runtime_resume, NULL);
 
 #define DEV_PM_OPS     (&omap2430_pm_ops)
 #else

You also have to remember that for host side PM to work, you depend on
your class driver supporting autosuspend feature. If it doesn't, then
its interface will never call usb_autopm_put_interface() and thus pm
counter will never decrease. Be sure to use a device whose driver
supports autosuspend feature.

-- 
balbi

Attachment: signature.asc
Description: Digital signature

Reply via email to