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