Commit ceb6c9c8 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

USB / PM: Drop CONFIG_PM_RUNTIME from the USB core

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