Author: thompsa
Date: Tue Jan 13 19:01:35 2009
New Revision: 187164
URL: http://svn.freebsd.org/changeset/base/187164

Log:
  MFp4: //depot/projects/u...@155750
  
        Patch to resolve problems with power mode off.
        Reported by Alexander Best.
  
  Submitted by: Hans Petter Selasky

Modified:
  head/sys/dev/usb2/core/usb2_generic.c
  head/sys/dev/usb2/core/usb2_hub.c

Modified: head/sys/dev/usb2/core/usb2_generic.c
==============================================================================
--- head/sys/dev/usb2/core/usb2_generic.c       Tue Jan 13 19:01:25 2009        
(r187163)
+++ head/sys/dev/usb2/core/usb2_generic.c       Tue Jan 13 19:01:35 2009        
(r187164)
@@ -1699,11 +1699,12 @@ ugen_set_power_mode(struct usb2_fifo *f,
        }
        switch (mode) {
        case USB_POWER_MODE_OFF:
-               /* clear suspend */
-               err = usb2_req_clear_port_feature(udev->parent_hub,
-                   NULL, udev->port_no, UHF_PORT_SUSPEND);
-               if (err)
-                       break;
+               /* get the device unconfigured */
+               err = ugen_set_config(f, USB_UNCONFIG_INDEX);
+               if (err) {
+                       DPRINTFN(0, "Could not unconfigure "
+                           "device (ignored)\n");
+               }
 
                /* clear port enable */
                err = usb2_req_clear_port_feature(udev->parent_hub,

Modified: head/sys/dev/usb2/core/usb2_hub.c
==============================================================================
--- head/sys/dev/usb2/core/usb2_hub.c   Tue Jan 13 19:01:25 2009        
(r187163)
+++ head/sys/dev/usb2/core/usb2_hub.c   Tue Jan 13 19:01:35 2009        
(r187164)
@@ -1823,7 +1823,8 @@ void
 usb2_set_power_mode(struct usb2_device *udev, uint8_t power_mode)
 {
        /* filter input argument */
-       if (power_mode != USB_POWER_MODE_ON) {
+       if ((power_mode != USB_POWER_MODE_ON) &&
+           (power_mode != USB_POWER_MODE_OFF)) {
                power_mode = USB_POWER_MODE_SAVE;
        }
        udev->power_mode = power_mode;  /* update copy of power mode */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to