From patchwork Wed Feb 16 21:47:49 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rafael Wysocki X-Patchwork-Id: 569511 Received: from smtp1.linux-foundation.org (smtp1.linux-foundation.org [140.211.169.13]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p1H8EYYB028826 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Thu, 17 Feb 2011 08:15:00 GMT Received: from daredevil.linux-foundation.org (localhost [127.0.0.1]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id p1H8Cbog012298; Thu, 17 Feb 2011 00:12:37 -0800 Received: from ogre.sisk.pl (ogre.sisk.pl [217.79.144.158]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id p1GLmGke005236 for ; Wed, 16 Feb 2011 13:48:18 -0800 Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id BCD351A1DB3; Wed, 16 Feb 2011 22:43:25 +0100 (CET) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04946-04; Wed, 16 Feb 2011 22:43:03 +0100 (CET) Received: from ferrari.rjw.lan (220-bem-13.acn.waw.pl [82.210.184.220]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id C65481A212E; Wed, 16 Feb 2011 22:43:03 +0100 (CET) From: "Rafael J. Wysocki" To: Alan Stern Date: Wed, 16 Feb 2011 22:47:49 +0100 User-Agent: KMail/1.13.5 (Linux/2.6.38-rc5+; KDE/4.4.4; x86_64; ; ) References: In-Reply-To: MIME-Version: 1.0 Message-Id: <201102162247.49924.rjw@sisk.pl> X-Virus-Scanned: amavisd-new at ogre.sisk.pl using MkS_Vir for Linux Received-SPF: pass (localhost is always allowed.) X-Spam-Status: No, hits=-3.942 required=5 tests=AWL, BAYES_00, OSDL_HEADER_SUBJECT_BRACKETED X-Spam-Checker-Version: SpamAssassin 3.2.4-osdl_revision__1.47__ X-MIMEDefang-Filter: lf$Revision: 1.188 $ X-Scanned-By: MIMEDefang 2.63 on 140.211.169.21 Cc: Mark Brown , LKML , Grant Likely , Linux-pm mailing list Subject: Re: [linux-pm] [RFC][PATCH 2/2] PM: Make system-wide PM and runtime PM handle subsystems consistently X-BeenThere: linux-pm@lists.linux-foundation.org X-Mailman-Version: 2.1.9 Precedence: list List-Id: Linux power management List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Thu, 17 Feb 2011 08:15:00 +0000 (UTC) Index: linux-2.6/drivers/usb/core/driver.c =================================================================== --- linux-2.6.orig/drivers/usb/core/driver.c +++ linux-2.6/drivers/usb/core/driver.c @@ -1646,7 +1646,7 @@ static int autosuspend_check(struct usb_ return 0; } -static int usb_runtime_suspend(struct device *dev) +int usb_runtime_suspend(struct device *dev) { struct usb_device *udev = to_usb_device(dev); int status; @@ -1662,7 +1662,7 @@ static int usb_runtime_suspend(struct de return status; } -static int usb_runtime_resume(struct device *dev) +int usb_runtime_resume(struct device *dev) { struct usb_device *udev = to_usb_device(dev); int status; @@ -1674,7 +1674,7 @@ static int usb_runtime_resume(struct dev return status; } -static int usb_runtime_idle(struct device *dev) +int usb_runtime_idle(struct device *dev) { struct usb_device *udev = to_usb_device(dev); @@ -1686,19 +1686,10 @@ static int usb_runtime_idle(struct devic return 0; } -static const struct dev_pm_ops usb_bus_pm_ops = { - .runtime_suspend = usb_runtime_suspend, - .runtime_resume = usb_runtime_resume, - .runtime_idle = usb_runtime_idle, -}; - #endif /* CONFIG_USB_SUSPEND */ struct bus_type usb_bus_type = { .name = "usb", .match = usb_device_match, .uevent = usb_uevent, -#ifdef CONFIG_USB_SUSPEND - .pm = &usb_bus_pm_ops, -#endif }; Index: linux-2.6/drivers/usb/core/usb.h =================================================================== --- linux-2.6.orig/drivers/usb/core/usb.h +++ linux-2.6/drivers/usb/core/usb.h @@ -77,6 +77,9 @@ static inline int usb_port_resume(struct extern void usb_autosuspend_device(struct usb_device *udev); extern int usb_autoresume_device(struct usb_device *udev); extern int usb_remote_wakeup(struct usb_device *dev); +extern int usb_runtime_suspend(struct device *dev); +extern int usb_runtime_resume(struct device *dev); +extern int usb_runtime_idle(struct device *dev); #else @@ -90,6 +93,21 @@ static inline int usb_remote_wakeup(stru { return 0; } + +static inline int usb_runtime_suspend(struct device *dev) +{ + return 0; +} + +static inline int usb_runtime_resume(struct device *dev) +{ + return 0; +} + +static inline int usb_runtime_idle(struct device *dev) +{ + return 0; +} #endif Index: linux-2.6/drivers/usb/core/usb.c =================================================================== --- linux-2.6.orig/drivers/usb/core/usb.c +++ linux-2.6/drivers/usb/core/usb.c @@ -315,6 +315,11 @@ static const struct dev_pm_ops usb_devic .thaw = usb_dev_thaw, .poweroff = usb_dev_poweroff, .restore = usb_dev_restore, +#ifdef CONFIG_USB_SUSPEND + .runtime_suspend = usb_runtime_suspend, + .runtime_resume = usb_runtime_resume, + .runtime_idle = usb_runtime_idle, +#endif }; #endif /* CONFIG_PM */