X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/f4710f6f8653219b432f3a843ce117d4f4c136fd..f78b3eb4eff89dbd11adee37ca015712be2f332f:/LUFA/Drivers/USB/LowLevel/Host.c diff --git a/LUFA/Drivers/USB/LowLevel/Host.c b/LUFA/Drivers/USB/LowLevel/Host.c index f00e6dd4e..1d7faa197 100644 --- a/LUFA/Drivers/USB/LowLevel/Host.c +++ b/LUFA/Drivers/USB/LowLevel/Host.c @@ -199,6 +199,11 @@ uint8_t USB_Host_WaitMS(uint8_t MS) USB_Host_ResumeBus(); + bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI); + + USB_INT_Disable(USB_INT_HSOFI); + USB_INT_Clear(USB_INT_HSOFI); + while (MS) { if (USB_INT_HasOccurred(USB_INT_HSOFI)) @@ -231,6 +236,9 @@ uint8_t USB_Host_WaitMS(uint8_t MS) } } + if (HSOFIEnabled) + USB_INT_Enable(USB_INT_HSOFI); + if (BusSuspended) USB_Host_SuspendBus(); @@ -245,11 +253,13 @@ static void USB_Host_ResetDevice(void) USB_Host_ResetBus(); while (!(USB_Host_IsBusResetComplete())); - USB_Host_ResumeBus(); - USB_INT_Clear(USB_INT_HSOFI); + bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI); + USB_INT_Disable(USB_INT_HSOFI); + USB_INT_Clear(USB_INT_HSOFI); + for (uint8_t MSRem = 10; MSRem != 0; MSRem--) { /* Workaround for powerless-pull-up devices. After a USB bus reset, @@ -267,6 +277,9 @@ static void USB_Host_ResetDevice(void) _delay_ms(1); } + if (HSOFIEnabled) + USB_INT_Enable(USB_INT_HSOFI); + if (BusSuspended) USB_Host_SuspendBus(); @@ -305,7 +318,9 @@ uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr) return USB_Host_SendControlRequest(DeviceDescriptorPtr); } -uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, void* const Buffer, const uint8_t BufferLength) +uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, + void* const Buffer, + const uint8_t BufferLength) { USB_ControlRequest = (USB_Request_Header_t) { @@ -323,9 +338,6 @@ uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, void* const Buff uint8_t USB_Host_ClearPipeStall(uint8_t EndpointNum) { - if (Pipe_GetPipeToken() == PIPE_TOKEN_IN) - EndpointNum |= ENDPOINT_DESCRIPTOR_DIR_IN; - USB_ControlRequest = (USB_Request_Header_t) { .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_ENDPOINT),