--- usb_subr.c 2007-06-30 22:18:44.000000000 +0200 +++ usb_subr.c-patched 2008-04-23 00:39:29.000000000 +0200 @@ -526,6 +526,19 @@ } static usbd_status +usbd_set_feature(usbd_device_handle dev, int feature) +{ + usb_device_request_t req; + + req.bmRequestType = UT_WRITE; + req.bRequest = UR_SET_FEATURE; + USETW(req.wValue, 1); + USETW(req.wIndex, feature); + USETW(req.wLength, 0); + return (usbd_do_request(dev, &req, 0)); +} + +static usbd_status usbd_set_config(usbd_device_handle dev, int conf) { usb_device_request_t req; @@ -995,7 +1008,14 @@ * We just did not find any drivers, that's all. The device is * fully operational and not harming anyone. */ + DPRINTF(("usbd_probe_and_attach: generic attach failed\n")); + + if (dev->quirks->uq_flags & UQ_FEATURE2) { + printf("%s: Enabling feature UHF_PORT_SUSPEND\n", device_get_nameunit(parent)); + usbd_set_feature(dev, UHF_PORT_SUSPEND); + } + return (USBD_NORMAL_COMPLETION); }