|
@@ -1033,7 +1033,7 @@ static int autosuspend_check(struct usb_device *udev)
|
|
*
|
|
*
|
|
* This routine can run only in process context.
|
|
* This routine can run only in process context.
|
|
*/
|
|
*/
|
|
-int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
|
|
|
|
|
|
+static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
|
|
{
|
|
{
|
|
int status = 0;
|
|
int status = 0;
|
|
int i = 0;
|
|
int i = 0;
|
|
@@ -1109,7 +1109,7 @@ int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
|
|
*
|
|
*
|
|
* This routine can run only in process context.
|
|
* This routine can run only in process context.
|
|
*/
|
|
*/
|
|
-int usb_resume_both(struct usb_device *udev)
|
|
|
|
|
|
+static int usb_resume_both(struct usb_device *udev)
|
|
{
|
|
{
|
|
int status = 0;
|
|
int status = 0;
|
|
int i;
|
|
int i;
|
|
@@ -1173,6 +1173,18 @@ int usb_resume_both(struct usb_device *udev)
|
|
|
|
|
|
#ifdef CONFIG_USB_SUSPEND
|
|
#ifdef CONFIG_USB_SUSPEND
|
|
|
|
|
|
|
|
+/* usb_autosuspend_work - callback routine to autosuspend a USB device */
|
|
|
|
+void usb_autosuspend_work(struct work_struct *work)
|
|
|
|
+{
|
|
|
|
+ struct usb_device *udev =
|
|
|
|
+ container_of(work, struct usb_device, autosuspend.work);
|
|
|
|
+
|
|
|
|
+ usb_pm_lock(udev);
|
|
|
|
+ udev->auto_pm = 1;
|
|
|
|
+ usb_suspend_both(udev, PMSG_SUSPEND);
|
|
|
|
+ usb_pm_unlock(udev);
|
|
|
|
+}
|
|
|
|
+
|
|
/* Internal routine to adjust a device's usage counter and change
|
|
/* Internal routine to adjust a device's usage counter and change
|
|
* its autosuspend state.
|
|
* its autosuspend state.
|
|
*/
|
|
*/
|
|
@@ -1405,6 +1417,11 @@ int usb_autopm_set_interface(struct usb_interface *intf)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(usb_autopm_set_interface);
|
|
EXPORT_SYMBOL_GPL(usb_autopm_set_interface);
|
|
|
|
|
|
|
|
+#else
|
|
|
|
+
|
|
|
|
+void usb_autosuspend_work(struct work_struct *work)
|
|
|
|
+{}
|
|
|
|
+
|
|
#endif /* CONFIG_USB_SUSPEND */
|
|
#endif /* CONFIG_USB_SUSPEND */
|
|
|
|
|
|
static int usb_suspend(struct device *dev, pm_message_t message)
|
|
static int usb_suspend(struct device *dev, pm_message_t message)
|