Send Stall in response to USB SET FEATURE or CLEAR FEATURE requests. Speeds up device enumeration on linux by 10s.
This commit is contained in:
15
common/usb.c
15
common/usb.c
@@ -259,6 +259,19 @@ static void UsbSendZeroLength(void)
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void UsbSendStall(void)
|
||||||
|
{
|
||||||
|
UDP_ENDPOINT_CSR(0) |= UDP_CSR_FORCE_STALL;
|
||||||
|
|
||||||
|
while(!(UDP_ENDPOINT_CSR(0) & UDP_CSR_STALL_SENT))
|
||||||
|
;
|
||||||
|
|
||||||
|
UDP_ENDPOINT_CSR(0) &= ~UDP_CSR_STALL_SENT;
|
||||||
|
|
||||||
|
while(UDP_ENDPOINT_CSR(0) & UDP_CSR_STALL_SENT)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
static void HandleRxdSetupData(void)
|
static void HandleRxdSetupData(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -346,6 +359,8 @@ static void HandleRxdSetupData(void)
|
|||||||
|
|
||||||
case USB_REQUEST_CLEAR_FEATURE:
|
case USB_REQUEST_CLEAR_FEATURE:
|
||||||
case USB_REQUEST_SET_FEATURE:
|
case USB_REQUEST_SET_FEATURE:
|
||||||
|
UsbSendStall();
|
||||||
|
break;
|
||||||
case USB_REQUEST_SET_DESCRIPTOR:
|
case USB_REQUEST_SET_DESCRIPTOR:
|
||||||
case USB_REQUEST_SYNC_FRAME:
|
case USB_REQUEST_SYNC_FRAME:
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user