diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index 5a7fa6f099584206536c40b21dde9117b79cd5e1..e935be7eb468b7b70b08bbb4a16f9a7b5fb6546d 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -1070,7 +1070,8 @@ static int autosuspend_check(struct usb_device *udev, int reschedule)
 				struct usb_driver *driver;
 
 				driver = to_usb_driver(intf->dev.driver);
-				if (!driver->reset_resume)
+				if (!driver->reset_resume ||
+				    intf->needs_remote_wakeup)
 					return -EOPNOTSUPP;
 			}
 		}