From 54410b31a336887655259fc149acc763202a8764 Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Sat, 1 Jul 2006 22:13:50 -0400 Subject: [PATCH] --- yaml --- r: 36380 b: refs/heads/master c: 1c5df7e705671f11a71112eb3a1f9765cd1719f9 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/core/driver.c | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 14706a8debec..e54202258e3f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 114b368c07964caa3f4e1fa575b16e87fa11936c +refs/heads/master: 1c5df7e705671f11a71112eb3a1f9765cd1719f9 diff --git a/trunk/drivers/usb/core/driver.c b/trunk/drivers/usb/core/driver.c index affbfb53eb5e..a5d11461f5a9 100644 --- a/trunk/drivers/usb/core/driver.c +++ b/trunk/drivers/usb/core/driver.c @@ -761,8 +761,12 @@ static int suspend_device(struct usb_device *udev, pm_message_t msg) udev->state == USB_STATE_SUSPENDED) goto done; - if (udev->dev.driver == NULL) + /* For devices that don't have a driver, we do a standard suspend. */ + if (udev->dev.driver == NULL) { + status = usb_port_suspend(udev); goto done; + } + udriver = to_usb_device_driver(udev->dev.driver); status = udriver->suspend(udev, msg); @@ -782,8 +786,12 @@ static int resume_device(struct usb_device *udev) udev->state != USB_STATE_SUSPENDED) goto done; - if (udev->dev.driver == NULL) + /* Can't resume it if it doesn't have a driver. */ + if (udev->dev.driver == NULL) { + status = -ENOTCONN; goto done; + } + udriver = to_usb_device_driver(udev->dev.driver); status = udriver->resume(udev); @@ -804,7 +812,7 @@ static int suspend_interface(struct usb_interface *intf, pm_message_t msg) !is_active(intf)) goto done; - if (intf->dev.driver == NULL) + if (intf->dev.driver == NULL) /* This can't happen */ goto done; driver = to_usb_driver(intf->dev.driver); @@ -838,8 +846,11 @@ static int resume_interface(struct usb_interface *intf) is_active(intf)) goto done; - if (intf->dev.driver == NULL) + /* Can't resume it if it doesn't have a driver. */ + if (intf->dev.driver == NULL) { + status = -ENOTCONN; goto done; + } driver = to_usb_driver(intf->dev.driver); if (driver->resume) {