MFC: don't perform an endpoint stall clear every time a pipe is
opened. This should not be necessary, and it is known to confuse certain devices. Remove the UQ_NO_OPEN_CLEARSTALL quirk, as this is now the default behaviour for all devices. Approved by: re (scottl)
This commit is contained in:
parent
fc95fea574
commit
fa1b09ae80
@ -79,9 +79,6 @@ Static const struct usbd_quirk_entry {
|
||||
{ USB_VENDOR_TELEX, USB_PRODUCT_TELEX_MIC1, 0x009, { UQ_AU_NO_FRAC }},
|
||||
{ USB_VENDOR_SILICONPORTALS, USB_PRODUCT_SILICONPORTALS_YAPPHONE,
|
||||
0x100, { UQ_AU_INP_ASYNC }},
|
||||
{ USB_VENDOR_APPLE, USB_PRODUCT_APPLE_IPOD3G, ANY, { UQ_NO_OPEN_CLEARSTALL }},
|
||||
{ USB_VENDOR_APPLE, USB_PRODUCT_APPLE_IPODNANO, ANY, { UQ_NO_OPEN_CLEARSTALL }},
|
||||
{ USB_VENDOR_APPLE, USB_PRODUCT_APPLE_IPODVIDEO, ANY, { UQ_NO_OPEN_CLEARSTALL }},
|
||||
/* XXX These should have a revision number, but I don't know what they are. */
|
||||
{ USB_VENDOR_HP, USB_PRODUCT_HP_895C, ANY, { UQ_BROKEN_BIDIR }},
|
||||
{ USB_VENDOR_HP, USB_PRODUCT_HP_880C, ANY, { UQ_BROKEN_BIDIR }},
|
||||
|
@ -54,8 +54,6 @@ struct usbd_quirks {
|
||||
#define UQ_AU_INP_ASYNC 0x0800 /* input is async despite claim of adaptive */
|
||||
#define UQ_ASSUME_CM_OVER_DATA 0x1000 /* modem device breaks on cm over data */
|
||||
#define UQ_BROKEN_BIDIR 0x2000 /* printer has broken bidir mode */
|
||||
#define UQ_NO_OPEN_CLEARSTALL 0x4000 /* don't usbd_clear_endpoint_stall() */
|
||||
/* in usbd_setup_pipe() */
|
||||
#define UQ_HID_IGNORE 0x8000 /* device should be ignored by hid class */
|
||||
|
||||
};
|
||||
|
@ -779,23 +779,6 @@ usbd_setup_pipe(usbd_device_handle dev, usbd_interface_handle iface,
|
||||
return (err);
|
||||
}
|
||||
|
||||
if (!(dev->quirks->uq_flags & UQ_NO_OPEN_CLEARSTALL)) {
|
||||
/* Clear any stall and make sure DATA0 toggle will be used next. */
|
||||
if (UE_GET_ADDR(ep->edesc->bEndpointAddress) != USB_CONTROL_ENDPOINT) {
|
||||
err = usbd_clear_endpoint_stall(p);
|
||||
/*
|
||||
* Some devices reject this command, so ignore a STALL.
|
||||
* Some device just time out on this command, so ignore
|
||||
* that too.
|
||||
*/
|
||||
if (err && err != USBD_STALLED && err != USBD_TIMEOUT) {
|
||||
printf("usbd_setup_pipe: failed to start "
|
||||
"endpoint, %s\n", usbd_errstr(err));
|
||||
return (err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*pipe = p;
|
||||
return (USBD_NORMAL_COMPLETION);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user