USB / PM: Drop CONFIG_PM_RUNTIME from the USB core
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sat, 29 Nov 2014 22:47:05 +0000 (23:47 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 3 Dec 2014 23:51:54 +0000 (00:51 +0100)
After commit b2b49ccbdd54 (PM: Kconfig: Set PM_RUNTIME if PM_SLEEP is
selected) PM_RUNTIME is always set if PM is set, so quite a few
depend on CONFIG_PM (or even dropped in some cases).

Replace CONFIG_PM_RUNTIME with CONFIG_PM in the USB core code
and documentation.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19 files changed:
Documentation/ABI/stable/sysfs-bus-usb
Documentation/ABI/testing/sysfs-bus-usb
Documentation/usb/power-management.txt
drivers/usb/core/driver.c
drivers/usb/core/hcd-pci.c
drivers/usb/core/hcd.c
drivers/usb/core/hub.c
drivers/usb/core/port.c
drivers/usb/core/sysfs.c
drivers/usb/core/usb.c
drivers/usb/core/usb.h
drivers/usb/host/ehci-pci.c
drivers/usb/host/sl811-hcd.c
drivers/usb/host/u132-hcd.c
drivers/usb/host/xhci-hub.c
drivers/usb/host/xhci.c
drivers/usb/phy/phy-msm-usb.c
include/linux/usb.h
include/linux/usb/hcd.h

index e2bc700a6f9ccbc666c4183b6cc6b4ef2ac5210f..831f15d9672f29e90cca5650356d2f69599e14b8 100644 (file)
@@ -32,10 +32,9 @@ Date:                January 2008
 KernelVersion: 2.6.25
 Contact:       Sarah Sharp <sarah.a.sharp@intel.com>
 Description:
-               If CONFIG_PM_RUNTIME is enabled then this file
-               is present.  When read, it returns the total time (in msec)
-               that the USB device has been connected to the machine.  This
-               file is read-only.
+               If CONFIG_PM is enabled, then this file is present.  When read,
+               it returns the total time (in msec) that the USB device has been
+               connected to the machine.  This file is read-only.
 Users:
                PowerTOP <powertop@lists.01.org>
                https://01.org/powertop/
@@ -45,10 +44,9 @@ Date:                January 2008
 KernelVersion: 2.6.25
 Contact:       Sarah Sharp <sarah.a.sharp@intel.com>
 Description:
-               If CONFIG_PM_RUNTIME is enabled then this file
-               is present.  When read, it returns the total time (in msec)
-               that the USB device has been active, i.e. not in a suspended
-               state.  This file is read-only.
+               If CONFIG_PM is enabled, then this file is present.  When read,
+               it returns the total time (in msec) that the USB device has been
+               active, i.e. not in a suspended state.  This file is read-only.
 
                Tools can use this file and the connected_duration file to
                compute the percentage of time that a device has been active.
index 614d451cee41978dc8eabec3fc4ad0956dc11fbc..e5cc7633d0131db82951d489b311195967db2db8 100644 (file)
@@ -104,16 +104,15 @@ What:             /sys/bus/usb/devices/.../power/usb2_hardware_lpm
 Date:          September 2011
 Contact:       Andiry Xu <andiry.xu@amd.com>
 Description:
-               If CONFIG_PM_RUNTIME is set and a USB 2.0 lpm-capable device
-               is plugged in to a xHCI host which support link PM, it will
-               perform a LPM test; if the test is passed and host supports
-               USB2 hardware LPM (xHCI 1.0 feature), USB2 hardware LPM will
-               be enabled for the device and the USB device directory will
-               contain a file named power/usb2_hardware_lpm.  The file holds
-               a string value (enable or disable) indicating whether or not
-               USB2 hardware LPM is enabled for the device. Developer can
-               write y/Y/1 or n/N/0 to the file to enable/disable the
-               feature.
+               If CONFIG_PM is set and a USB 2.0 lpm-capable device is plugged
+               in to a xHCI host which support link PM, it will perform a LPM
+               test; if the test is passed and host supports USB2 hardware LPM
+               (xHCI 1.0 feature), USB2 hardware LPM will be enabled for the
+               device and the USB device directory will contain a file named
+               power/usb2_hardware_lpm.  The file holds a string value (enable
+               or disable) indicating whether or not USB2 hardware LPM is
+               enabled for the device. Developer can write y/Y/1 or n/N/0 to
+               the file to enable/disable the feature.
 
 What:          /sys/bus/usb/devices/.../removable
 Date:          February 2012
index 7b90fe034c4b5701383e4c757c441484c9bbec9b..b5f83911732a4a2af39873db9a851bf6d296dd07 100644 (file)
@@ -47,14 +47,15 @@ dynamic PM is implemented in the USB subsystem, although system PM is
 covered to some extent (see Documentation/power/*.txt for more
 information about system PM).
 
-Note: Dynamic PM support for USB is present only if the kernel was
-built with CONFIG_USB_SUSPEND enabled (which depends on
-CONFIG_PM_RUNTIME).  System PM support is present only if the kernel
-was built with CONFIG_SUSPEND or CONFIG_HIBERNATION enabled.
-
-(Starting with the 3.10 kernel release, dynamic PM support for USB is
-present whenever the kernel was built with CONFIG_PM_RUNTIME enabled.
-The CONFIG_USB_SUSPEND option has been eliminated.)
+System PM support is present only if the kernel was built with CONFIG_SUSPEND
+or CONFIG_HIBERNATION enabled.  Dynamic PM support for USB is present whenever
+the kernel was built with CONFIG_PM enabled.
+
+[Historically, dynamic PM support for USB was present only if the
+kernel had been built with CONFIG_USB_SUSPEND enabled (which depended on
+CONFIG_PM_RUNTIME).  Starting with the 3.10 kernel release, dynamic PM support
+for USB was present whenever the kernel was built with CONFIG_PM_RUNTIME
+enabled.  The CONFIG_USB_SUSPEND option had been eliminated.]
 
 
        What is Remote Wakeup?
index 9bffd26cea053c162e1b26abf9afd268d39d7967..874dec31a11195ff9108acdd7af2a8b6996d6829 100644 (file)
@@ -1493,10 +1493,6 @@ int usb_resume(struct device *dev, pm_message_t msg)
        return status;
 }
 
-#endif /* CONFIG_PM */
-
-#ifdef CONFIG_PM_RUNTIME
-
 /**
  * usb_enable_autosuspend - allow a USB device to be autosuspended
  * @udev: the USB device which may be autosuspended
@@ -1876,7 +1872,7 @@ int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable)
        return ret;
 }
 
-#endif /* CONFIG_PM_RUNTIME */
+#endif /* CONFIG_PM */
 
 struct bus_type usb_bus_type = {
        .name =         "usb",
index efc953119ce2ffb8882ef0cc7e55bc0b10aff6e7..9eb1cff28bd4b2499e4dfd9ed8b91e53901df184 100644 (file)
@@ -429,7 +429,6 @@ static int check_root_hub_suspended(struct device *dev)
        return 0;
 }
 
-#if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM_RUNTIME)
 static int suspend_common(struct device *dev, bool do_wakeup)
 {
        struct pci_dev          *pci_dev = to_pci_dev(dev);
@@ -528,7 +527,6 @@ static int resume_common(struct device *dev, int event)
        }
        return retval;
 }
-#endif /* SLEEP || RUNTIME */
 
 #ifdef CONFIG_PM_SLEEP
 
@@ -607,8 +605,6 @@ static int hcd_pci_restore(struct device *dev)
 
 #endif /* CONFIG_PM_SLEEP */
 
-#ifdef CONFIG_PM_RUNTIME
-
 static int hcd_pci_runtime_suspend(struct device *dev)
 {
        int     retval;
@@ -630,13 +626,6 @@ static int hcd_pci_runtime_resume(struct device *dev)
        return retval;
 }
 
-#else
-
-#define hcd_pci_runtime_suspend        NULL
-#define hcd_pci_runtime_resume NULL
-
-#endif /* CONFIG_PM_RUNTIME */
-
 const struct dev_pm_ops usb_hcd_pci_pm_ops = {
        .suspend        = hcd_pci_suspend,
        .suspend_noirq  = hcd_pci_suspend_noirq,
index a6efb4184f2b4cf0a021b457b8e1d4fcccb30d56..278be0515e8e05315cdd73ccf427b9bd7b1db0b8 100644 (file)
@@ -2258,10 +2258,6 @@ int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg)
        return status;
 }
 
-#endif /* CONFIG_PM */
-
-#ifdef CONFIG_PM_RUNTIME
-
 /* Workqueue routine for root-hub remote wakeup */
 static void hcd_resume_work(struct work_struct *work)
 {
@@ -2293,7 +2289,7 @@ void usb_hcd_resume_root_hub (struct usb_hcd *hcd)
 }
 EXPORT_SYMBOL_GPL(usb_hcd_resume_root_hub);
 
-#endif /* CONFIG_PM_RUNTIME */
+#endif /* CONFIG_PM */
 
 /*-------------------------------------------------------------------------*/
 
@@ -2476,7 +2472,7 @@ struct usb_hcd *usb_create_shared_hcd(const struct hc_driver *driver,
        init_timer(&hcd->rh_timer);
        hcd->rh_timer.function = rh_timer_func;
        hcd->rh_timer.data = (unsigned long) hcd;
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
        INIT_WORK(&hcd->wakeup_work, hcd_resume_work);
 #endif
 
@@ -2790,7 +2786,7 @@ error_create_attr_group:
        hcd->rh_registered = 0;
        spin_unlock_irq(&hcd_root_hub_lock);
 
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
        cancel_work_sync(&hcd->wakeup_work);
 #endif
        mutex_lock(&usb_bus_list_lock);
@@ -2858,7 +2854,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
        hcd->rh_registered = 0;
        spin_unlock_irq (&hcd_root_hub_lock);
 
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
        cancel_work_sync(&hcd->wakeup_work);
 #endif
 
index b649fef2e35d4af1e9e8a206e73c0ed799049a1b..c9596525ba8c92f2df9b8c146cf5cbce92dfc94b 100644 (file)
@@ -1737,7 +1737,7 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
         * - If user has indicated to prevent autosuspend by passing
         *   usbcore.autosuspend = -1 then keep autosuspend disabled.
         */
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
        if (hdev->dev.power.autosuspend_delay >= 0)
                pm_runtime_set_autosuspend_delay(&hdev->dev, 0);
 #endif
@@ -3449,7 +3449,7 @@ int usb_port_resume(struct usb_device *udev, pm_message_t msg)
        return status;
 }
 
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
 
 int usb_remote_wakeup(struct usb_device *udev)
 {
@@ -4856,7 +4856,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
                        udev->state != USB_STATE_NOTATTACHED) {
                if (portstatus & USB_PORT_STAT_ENABLE) {
                        status = 0;             /* Nothing to do */
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
                } else if (udev->state == USB_STATE_SUSPENDED &&
                                udev->persist_enabled) {
                        /* For a suspended device, treat this as a
index cd3f9dc24a06a960415134199596a75f5c6d9547..210618319f10a4110bc53191fc8a06a860992c3a 100644 (file)
@@ -72,7 +72,7 @@ static void usb_port_device_release(struct device *dev)
        kfree(port_dev);
 }
 
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
 static int usb_port_runtime_resume(struct device *dev)
 {
        struct usb_port *port_dev = to_usb_port(dev);
@@ -171,7 +171,7 @@ static int usb_port_runtime_suspend(struct device *dev)
 #endif
 
 static const struct dev_pm_ops usb_port_pm_ops = {
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
        .runtime_suspend =      usb_port_runtime_suspend,
        .runtime_resume =       usb_port_runtime_resume,
 #endif
index 1236c6011c70eddd805df9d035d8839507b15574..d26973844a4dea0186f759de848c3baf2442088f 100644 (file)
@@ -334,14 +334,6 @@ static void remove_persist_attributes(struct device *dev)
                        &dev_attr_persist.attr,
                        power_group_name);
 }
-#else
-
-#define add_persist_attributes(dev)    0
-#define remove_persist_attributes(dev) do {} while (0)
-
-#endif /* CONFIG_PM */
-
-#ifdef CONFIG_PM_RUNTIME
 
 static ssize_t connected_duration_show(struct device *dev,
                                       struct device_attribute *attr, char *buf)
@@ -585,10 +577,13 @@ static void remove_power_attributes(struct device *dev)
 
 #else
 
+#define add_persist_attributes(dev)    0
+#define remove_persist_attributes(dev) do {} while (0)
+
 #define add_power_attributes(dev)      0
 #define remove_power_attributes(dev)   do {} while (0)
 
-#endif /* CONFIG_PM_RUNTIME */
+#endif /* CONFIG_PM */
 
 
 /* Descriptor fields */
index 2dd2362198d2b5d55b631116dae23b757ced9ffa..2a92b97f01440d240f294085705def24d617d32b 100644 (file)
@@ -49,7 +49,7 @@ const char *usbcore_name = "usbcore";
 
 static bool nousb;     /* Disable USB when built into kernel image */
 
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
 static int usb_autosuspend_delay = 2;          /* Default delay value,
                                                 * in seconds */
 module_param_named(autosuspend, usb_autosuspend_delay, int, 0644);
@@ -348,11 +348,9 @@ static const struct dev_pm_ops usb_device_pm_ops = {
        .thaw =         usb_dev_thaw,
        .poweroff =     usb_dev_poweroff,
        .restore =      usb_dev_restore,
-#ifdef CONFIG_PM_RUNTIME
        .runtime_suspend =      usb_runtime_suspend,
        .runtime_resume =       usb_runtime_resume,
        .runtime_idle =         usb_runtime_idle,
-#endif
 };
 
 #endif /* CONFIG_PM */
index b1b34d0557c91b3068d1b473885adf05d3b9f4d6..7eb1e26798e5f293a3f2bc508dd268bbecdb63f1 100644 (file)
@@ -75,6 +75,14 @@ extern int usb_resume_complete(struct device *dev);
 extern int usb_port_suspend(struct usb_device *dev, pm_message_t msg);
 extern int usb_port_resume(struct usb_device *dev, pm_message_t msg);
 
+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);
+extern int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable);
+
 #else
 
 static inline int usb_port_suspend(struct usb_device *udev, pm_message_t msg)
@@ -87,20 +95,6 @@ static inline int usb_port_resume(struct usb_device *udev, pm_message_t msg)
        return 0;
 }
 
-#endif
-
-#ifdef CONFIG_PM_RUNTIME
-
-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);
-extern int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable);
-
-#else
-
 #define usb_autosuspend_device(udev)           do {} while (0)
 static inline int usb_autoresume_device(struct usb_device *udev)
 {
@@ -111,6 +105,7 @@ static inline int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable)
 {
        return 0;
 }
+
 #endif
 
 extern struct bus_type usb_bus_type;
index ca7b964124af1fcdedc72bb46b9f17ae719eaf83..851006a0d97b8707dabffcf8ea79981d97e775b2 100644 (file)
@@ -305,7 +305,7 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
                }
        }
 
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
        if (ehci->no_selective_suspend && device_can_wakeup(&pdev->dev))
                ehci_warn(ehci, "selective suspend/wakeup unavailable\n");
 #endif
index ad0c348e68e98ee27b0ba0d6fabd4a1eb610e348..25fb1da8d3d7d0415bcdc0b422508bbe565c177c 100644 (file)
@@ -22,7 +22,7 @@
  * and usb-storage.
  *
  * TODO:
- * - usb suspend/resume triggered by sl811 (with PM_RUNTIME)
+ * - usb suspend/resume triggered by sl811
  * - various issues noted in the code
  * - performance work; use both register banks; ...
  * - use urb->iso_frame_desc[] with ISO transfers
@@ -1752,8 +1752,7 @@ sl811h_probe(struct platform_device *dev)
 #ifdef CONFIG_PM
 
 /* for this device there's no useful distinction between the controller
- * and its root hub, except that the root hub only gets direct PM calls
- * when CONFIG_PM_RUNTIME is enabled.
+ * and its root hub.
  */
 
 static int
index c0671750671ff0577a3a101383de4ce17f6167d4..bf86630b3cea6dec4af4f921786cfdb61aa17b18 100644 (file)
@@ -3144,8 +3144,7 @@ static int u132_probe(struct platform_device *pdev)
 #ifdef CONFIG_PM
 /*
  * for this device there's no useful distinction between the controller
- * and its root hub, except that the root hub only gets direct PM calls
- * when CONFIG_PM_RUNTIME is enabled.
+ * and its root hub.
  */
 static int u132_suspend(struct platform_device *pdev, pm_message_t state)
 {
index 696160d48ae8521651f4f313ee9998288c245ab4..f674abd76865905f28ed3636f2d45312cf0157a7 100644 (file)
@@ -1146,7 +1146,7 @@ int xhci_bus_suspend(struct usb_hcd *hcd)
                        set_bit(port_index, &bus_state->bus_suspended);
                }
                /* USB core sets remote wake mask for USB 3.0 hubs,
-                * including the USB 3.0 roothub, but only if CONFIG_PM_RUNTIME
+                * including the USB 3.0 roothub, but only if CONFIG_PM
                 * is enabled, so also enable remote wake here.
                 */
                if (hcd->self.root_hub->do_remote_wakeup
index 2a5d45b4cb15ef30d82294de6c5d8e015449a383..61173ca9cb8f4be93df963055a3cbc44957ae420 100644 (file)
@@ -4024,7 +4024,7 @@ static int __maybe_unused xhci_change_max_exit_latency(struct xhci_hcd *xhci,
        return ret;
 }
 
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
 
 /* BESL to HIRD Encoding array for USB2 LPM */
 static int xhci_besl_encoding[16] = {125, 150, 200, 300, 400, 500, 1000, 2000,
@@ -4239,24 +4239,8 @@ int xhci_update_device(struct usb_hcd *hcd, struct usb_device *udev)
        return 0;
 }
 
-#else
-
-int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd,
-                               struct usb_device *udev, int enable)
-{
-       return 0;
-}
-
-int xhci_update_device(struct usb_hcd *hcd, struct usb_device *udev)
-{
-       return 0;
-}
-
-#endif /* CONFIG_PM_RUNTIME */
-
 /*---------------------- USB 3.0 Link PM functions ------------------------*/
 
-#ifdef CONFIG_PM
 /* Service interval in nanoseconds = 2^(bInterval - 1) * 125us * 1000ns / 1us */
 static unsigned long long xhci_service_interval_to_ns(
                struct usb_endpoint_descriptor *desc)
@@ -4687,6 +4671,17 @@ int xhci_disable_usb3_lpm_timeout(struct usb_hcd *hcd,
 }
 #else /* CONFIG_PM */
 
+int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd,
+                               struct usb_device *udev, int enable)
+{
+       return 0;
+}
+
+int xhci_update_device(struct usb_hcd *hcd, struct usb_device *udev)
+{
+       return 0;
+}
+
 int xhci_enable_usb3_lpm_timeout(struct usb_hcd *hcd,
                        struct usb_device *udev, enum usb3_link_state state)
 {
index 7843ef7dd0ff9512846e6f4b599d5ea1b2286dc3..29be0e654ecce7749d2c921a486a2b0b295722a1 100644 (file)
@@ -1761,7 +1761,7 @@ static int msm_otg_remove(struct platform_device *pdev)
        return 0;
 }
 
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
 static int msm_otg_runtime_idle(struct device *dev)
 {
        struct msm_otg *motg = dev_get_drvdata(dev);
index 447a7e2fc19bacfd92b2f11182e4dbf8863bf400..f89c24a03bd9e82d2845deca47a70e9a671804a4 100644 (file)
@@ -637,7 +637,7 @@ static inline bool usb_acpi_power_manageable(struct usb_device *hdev, int index)
 #endif
 
 /* USB autosuspend and autoresume */
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
 extern void usb_enable_autosuspend(struct usb_device *udev);
 extern void usb_disable_autosuspend(struct usb_device *udev);
 
index cd96a2bc3388973f59b221f13187a30c4177b2d3..668898e29d0ef3cd21301eebf4e8c2a1070525dc 100644 (file)
@@ -93,7 +93,7 @@ struct usb_hcd {
 
        struct timer_list       rh_timer;       /* drives root-hub polling */
        struct urb              *status_urb;    /* the current status urb */
-#ifdef CONFIG_PM_RUNTIME
+#ifdef CONFIG_PM
        struct work_struct      wakeup_work;    /* for remote wakeup */
 #endif
 
@@ -625,16 +625,13 @@ extern int usb_find_interface_driver(struct usb_device *dev,
 extern void usb_root_hub_lost_power(struct usb_device *rhdev);
 extern int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg);
 extern int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg);
-#endif /* CONFIG_PM */
-
-#ifdef CONFIG_PM_RUNTIME
 extern void usb_hcd_resume_root_hub(struct usb_hcd *hcd);
 #else
 static inline void usb_hcd_resume_root_hub(struct usb_hcd *hcd)
 {
        return;
 }
-#endif /* CONFIG_PM_RUNTIME */
+#endif /* CONFIG_PM */
 
 /*-------------------------------------------------------------------------*/