From d9f4f1b411020cebe0b73102d512b9758c9b94f8 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Fri, 24 Feb 2012 17:58:55 +0000 Subject: [PATCH] [USBUHCI] - Invert data toggle svn path=/trunk/; revision=55843 --- reactos/drivers/usb/usbuhci/usb_request.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/reactos/drivers/usb/usbuhci/usb_request.cpp b/reactos/drivers/usb/usbuhci/usb_request.cpp index 6876a2163cc..aa1e07f24ca 100644 --- a/reactos/drivers/usb/usbuhci/usb_request.cpp +++ b/reactos/drivers/usb/usbuhci/usb_request.cpp @@ -1247,6 +1247,7 @@ CUSBRequest::FreeEndpointDescriptor( { PUHCI_TRANSFER_DESCRIPTOR Descriptor, NextDescriptor; ULONG ErrorCount; + UCHAR DataToggle = 0; // // grab first transfer descriptor @@ -1254,6 +1255,9 @@ CUSBRequest::FreeEndpointDescriptor( Descriptor = (PUHCI_TRANSFER_DESCRIPTOR)OutDescriptor->NextElementDescriptor; while(Descriptor) { + // get data toggle + DataToggle = (Descriptor->Token >> TD_TOKEN_DATA_TOGGLE_SHIFT) & 0x01; + if (Descriptor->Status & TD_ERROR_MASK) { // @@ -1344,6 +1348,12 @@ CUSBRequest::FreeEndpointDescriptor( // m_DmaManager->Release(OutDescriptor, sizeof(UHCI_QUEUE_HEAD)); + // is there an endpoint descriptor + if (m_EndpointDescriptor) + { + // invert last data toggle + m_EndpointDescriptor->DataToggle = (DataToggle == 0); + } } VOID