[Resend -- the original message stated that this patch was 08/11 but it is
really 09/11]
Greg:
Since usb_generic can be unbound from a USB device, we need to be able to
handle the possibility that a suspend or resume request arrives for a
device with no driver. This patch (as735) arranges things so that resume
requests will fail and suspend requests will use the standard USB
port-suspend code. Attempts to suspend or resume an unbound interface are
handled similarly (although the error caused by trying to resume an
unbound interface is dropped by the calling routine).
Alan Stern
Signed-off-by: Alan Stern <[EMAIL PROTECTED]>
---
Index: usb-2.6/drivers/usb/core/driver.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/driver.c
+++ usb-2.6/drivers/usb/core/driver.c
@@ -765,8 +765,12 @@ static int suspend_device(struct usb_dev
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);
@@ -786,8 +790,12 @@ static int resume_device(struct usb_devi
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);
@@ -808,7 +816,7 @@ static int suspend_interface(struct usb_
!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);
@@ -842,8 +850,11 @@ static int resume_interface(struct usb_i
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) {
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel