13 #define NDEBUG_UHCI_TRACE 14 #define NDEBUG_UHCI_IMPLEMENT 69 DPRINT_UHCI(
"UhciFixDataToggle: UhciExtension - %p, UhciEndpoint - %p, DataToggle - %X\n",
76 TD->HwTD.Token.DataToggle = !TD->HwTD.Token.DataToggle;
77 DataToggle = !DataToggle;
82 UhciEndpoint->DataToggle = DataToggle;
94 UhciResources = UhciExtension->HcResourcesVA;
120 ULONG NewFrameNumber;
121 ULONG OldFrameNumber;
124 DPRINT_UHCI(
"UhciCleanupFrameList: [%p] All - %x\n",
125 UhciExtension, IsAllEntries);
130 OldFrameNumber = UhciExtension->FrameNumber;
133 IsAllEntries ==
FALSE)
150 UhciExtension->FrameNumber = NewFrameNumber;
166 DPRINT_UHCI(
"UhciUpdateCounter: UhciExtension->FrameHighPart - %lX\n",
167 UhciExtension->FrameHighPart);
176 DPRINT_UHCI(
"UhciSetNextQH: QH - %p, NextQH - %p\n", QH, NextQH);
179 QH->NextHcdQH = NextQH;
181 NextQH->PrevHcdQH = QH;
209 UhciEndpoint->
Flags = 0;
211 TransferType = EndpointProperties->TransferType;
213 DPRINT(
"UhciOpenEndpoint: UhciEndpoint - %p, TransferType - %x\n",
223 BufferVA = EndpointProperties->BufferVA;
224 BufferPA = EndpointProperties->BufferPA;
234 QH = UhciEndpoint->
QH;
251 UhciEndpoint->
MaxTDs = TdCount;
258 for (ix = 0; ix < UhciEndpoint->
MaxTDs; ix++)
260 TD = &UhciEndpoint->
FirstTD[ix];
290 DPRINT(
"UhciQueryEndpointRequirements: ... \n");
292 TransferType = EndpointProperties->TransferType;
294 switch (TransferType)
297 DPRINT(
"UhciQueryEndpointRequirements: IsoTransfer\n");
300 EndpointRequirements->HeaderBufferSize = 0 +
307 DPRINT(
"UhciQueryEndpointRequirements: ControlTransfer\n");
308 TdCount = EndpointProperties->MaxTransferSize /
309 EndpointProperties->TotalMaxPacketSize;
313 EndpointRequirements->HeaderBufferSize =
sizeof(
UHCI_HCD_QH) +
316 EndpointRequirements->MaxTransferSize = EndpointProperties->MaxTransferSize;
320 DPRINT(
"UhciQueryEndpointRequirements: BulkTransfer\n");
322 EndpointProperties->TotalMaxPacketSize;
324 EndpointRequirements->HeaderBufferSize =
sizeof(
UHCI_HCD_QH) +
331 DPRINT(
"UhciQueryEndpointRequirements: InterruptTransfer\n");
334 EndpointRequirements->HeaderBufferSize =
sizeof(
UHCI_HCD_QH) +
338 EndpointProperties->TotalMaxPacketSize;
342 DPRINT1(
"UhciQueryEndpointRequirements: Unknown TransferType - %x\n",
355 DPRINT_IMPL(
"UhciCloseEndpoint: UNIMPLEMENTED. FIXME\n");
365 ULONG ResourcesTypes;
374 DPRINT(
"UhciTakeControlHC: Resources->ResourcesTypes - %x\n",
377 ResourcesTypes =
Resources->ResourcesTypes;
382 DPRINT1(
"UhciTakeControlHC: MP_STATUS_ERROR\n");
386 BaseRegister = UhciExtension->BaseRegister;
409 DPRINT(
"UhciTakeControlHC: HcStatus.AsUSHORT - %04X\n", HcStatus.
AsUSHORT);
433 DPRINT(
"UhciTakeControlHC: LegacySupport.AsUSHORT - %04X\n",
463 DPRINT(
"UhciInitializeHardware: UhciExtension - %p\n", UhciExtension);
464 DPRINT(
"UhciInitializeHardware: VIA HW FIXME\n");
466 BaseRegister = UhciExtension->BaseRegister;
493 StatusMask = UhciExtension->StatusMask;
500 UhciExtension->StatusMask = StatusMask;
514 ULONG StaticControlHeadPA;
516 ULONG StaticBulkHeadPA;
518 ULONG StaticBulkTdPA;
528 DPRINT(
"UhciInitializeSchedule: Ext[%p], VA - %p, PA - %lx\n",
537 IntQH = &HcResourcesVA->StaticIntHead[FrameIdx];
545 UhciExtension->IntQH[FrameIdx] = IntQH;
550 UhciSetNextQH(IntQH, UhciExtension->IntQH[(FrameIdx - 1) / 2]);
554 StaticControlHead = &HcResourcesVA->StaticControlHead;
564 UhciExtension->ControlQH = StaticControlHead;
567 StaticBulkHead = &HcResourcesVA->StaticBulkHead;
579 UhciExtension->BulkQH = StaticBulkHead;
580 UhciExtension->BulkTailQH = StaticBulkHead;
583 StaticBulkTD = &HcResourcesVA->StaticBulkTD;
617 StaticTD = &HcResourcesVA->StaticTD;
631 UhciExtension->StaticTD = StaticTD;
634 UhciExtension->SOF_HcdTDs = &HcResourcesVA->StaticSofTD[0];
639 StaticSofTD = UhciExtension->SOF_HcdTDs + Idx;
671 DPRINT(
"UhciStartController: UhciExtension - %p, BaseRegister - %p\n", UhciExtension, BaseRegister);
733 DPRINT(
"UhciStopController: UhciExtension - %p\n", UhciExtension);
740 if (
Command.AsUSHORT == 0xFFFF)
742 DPRINT(
"UhciStopController: Command == -1\n");
746 DPRINT(
"UhciStopController: Command.AsUSHORT - %p\n",
Command.AsUSHORT);
768 DPRINT1(
"UhciStopController: Failed to reset\n");
779 DPRINT_IMPL(
"UhciSuspendController: UNIMPLEMENTED. FIXME\n");
786 DPRINT_IMPL(
"UhciResumeController: UNIMPLEMENTED. FIXME\n");
797 StatusReg = &UhciExtension->BaseRegister->HcStatus.
AsUSHORT;
801 DPRINT_UHCI(
"UhciHardwarePresent: HW not present\n");
829 DPRINT1(
"UhciInterruptService: return FALSE\n");
837 DPRINT1(
"UhciInterruptService: Error [%p] HcStatus %X\n",
852 DPRINT1(
"UhciInterruptService: HC ProcessError!\n");
853 DPRINT1(
"UhciExtension %p, frame %X\n", UhciExtension,
fn);
863 DPRINT_UHCI(
"UhciInterruptService: Hc Halted [%p] HcStatus %X\n",
876 DPRINT1(
"UhciInterruptService: HostSystemError! HcStatus - %X\n",
895 QH = UhciExtension->
BulkQH;
918 DPRINT1(
"UhciInterruptService: [%p] ScheduleError %X\n",
931 DPRINT1(
"UhciInterruptService: [%p] HcStatus %X\n",
950 DPRINT_UHCI(
"UhciInterruptDpc: [%p] EnableInt %x, HcStatus %X\n",
951 uhciExtension, IsDoEnableInterrupts, UhciExtension->
HcStatus);
961 if (IsDoEnableInterrupts)
980 DPRINT(
"UhciQueueTransfer: FirstTD - %p, LastTD - %p\n", FirstTD, LastTD);
982 TailTD = UhciEndpoint->TailTD;
983 QH = UhciEndpoint->QH;
985 if (UhciEndpoint->HeadTD)
1014 UhciEndpoint->HeadTD = FirstTD;
1018 UhciEndpoint->TailTD =
NULL;
1019 UhciEndpoint->HeadTD =
NULL;
1037 BulkTailQH = UhciExtension->BulkTailQH;
1041 UhciEndpoint->TailTD = LastTD;
1050 ULONG AllocTdCounter;
1055 AllocTdCounter = UhciEndpoint->AllocTdCounter;
1057 for (ix = 0; ix < UhciEndpoint->MaxTDs; ++ix)
1059 TD = &UhciEndpoint->FirstTD[AllocTdCounter];
1065 UhciEndpoint->AllocatedTDs++;
1066 UhciEndpoint->AllocTdCounter = AllocTdCounter;
1071 if (AllocTdCounter < UhciEndpoint->MaxTDs - 1)
1092 USHORT TotalMaxPacketSize;
1097 SIZE_T TransferLength = 0;
1109 TotalMaxPacketSize = UhciEndpoint->EndpointProperties.TotalMaxPacketSize;
1110 DeviceSpeed = UhciEndpoint->EndpointProperties.DeviceSpeed;
1112 DeviceAddress = UhciEndpoint->EndpointProperties.DeviceAddress;
1113 TransferType = UhciEndpoint->EndpointProperties.TransferType;
1116 ZeroLengthTransfer =
FALSE;
1120 if (UhciTransfer->TransferParameters->TransferFlags &
1139 DataToggle = UhciEndpoint->DataToggle;
1142 for (ix = 0; ix <
SgList->SgElementCount || ZeroLengthTransfer; ix++)
1144 BytesRemaining =
SgList->SgElement[ix].SgTransferLength;
1150 BytesRemaining -= TransferLength;
1156 while (BytesRemaining || ZeroLengthTransfer)
1158 ZeroLengthTransfer =
FALSE;
1160 if (BytesRemaining >= TotalMaxPacketSize)
1162 LengthThisTD = TotalMaxPacketSize;
1163 BytesRemaining -= TotalMaxPacketSize;
1167 if (ix >=
SgList->SgElementCount - 1)
1169 LengthThisTD = BytesRemaining;
1175 DPRINT1(
"UhciMapAsyncTransferToTds: IsLastTd = FALSE. FIXME\n");
1182 UhciTransfer->PendingTds++;
1201 if (LengthThisTD == 0)
1215 LengthMapped += LengthThisTD;
1233 UhciEndpoint->DataToggle = DataToggle;
1235 *OutLastTD = LastTD;
1256 DPRINT_UHCI(
"UhciControlTransfer: UhciTransfer - %p\n", UhciTransfer);
1258 if (UhciEndpoint->EndpointLock > 1)
1262 if (UhciEndpoint->EndpointProperties.TransferType ==
1268 DPRINT(
"UhciControlTransfer: end MP_STATUS_FAILURE\n");
1272 DeviceSpeed = UhciEndpoint->EndpointProperties.DeviceSpeed;
1274 DeviceAddress = UhciEndpoint->EndpointProperties.DeviceAddress;
1277 UhciTransfer->PendingTds++;
1280 DPRINT_UHCI(
"UhciControlTransfer: FirstTD - %p\n", FirstTD);
1300 &TransferParameters->SetupPacket,
1312 DPRINT_UHCI(
"UhciControlTransfer: LastTD - %p\n", LastTD);
1365 if (UhciTransfer->TransferParameters->TransferFlags &
1383 DPRINT_UHCI(
"UhciControlTransfer: end MP_STATUS_SUCCESS\n");
1397 ULONG TotalMaxPacketSize;
1399 ULONG TransferLength;
1403 DPRINT_UHCI(
"UhciBulkOrInterruptTransfer: ...\n");
1405 TotalMaxPacketSize = UhciEndpoint->EndpointProperties.TotalMaxPacketSize;
1407 SgCount =
SgList->SgElementCount;
1411 DPRINT(
"UhciBulkOrInterruptTransfer: SgCount == 0 \n");
1418 for (ix = 0; ix < SgCount; ++ix)
1420 TransferLength +=
SgList->SgElement[ix].SgTransferLength;
1423 DPRINT(
"UhciBulkOrInterruptTransfer: SgCount - %X, TransferLength - %X\n",
1429 TDs = TransferLength + (TotalMaxPacketSize - 1);
1430 TDs /= TotalMaxPacketSize;
1438 if ((UhciEndpoint->MaxTDs - UhciEndpoint->AllocatedTDs) < TDs)
1440 DPRINT1(
"UhciBulkOrInterruptTransfer: Not enough TDs \n");
1454 if (DataLastTD ==
NULL || DataFirstTD ==
NULL)
1456 DPRINT1(
"UhciBulkOrInterruptTransfer: !DataLastTD || !DataFirstTD\n");
1522 DPRINT1(
"UhciSubmitTransfer: Error TransferType - %x\n", TransferType);
1537 TdStatus = TD->HwTD.ControlStatus.Status;
1544 if (TD->HwTD.ControlStatus.ActualLength + 1 >=
1545 TD->HwTD.Token.MaximumLength + 1)
1550 if (TD->HwTD.ControlStatus.InterruptOnComplete == 1)
1559 DPRINT1(
"UhciGetErrorFromTD: USBD_STATUS_BUFFER_OVERRUN, TD - %p\n", TD);
1566 DPRINT1(
"UhciGetErrorFromTD: USBD_STATUS_DEV_NOT_RESPONDING, TD - %p\n", TD);
1574 DPRINT1(
"UhciGetErrorFromTD: USBD_STATUS_DEV_NOT_RESPONDING, TD - %p\n", TD);
1579 DPRINT1(
"UhciGetErrorFromTD: USBD_STATUS_CRC, TD - %p\n", TD);
1585 DPRINT1(
"UhciGetErrorFromTD: USBD_STATUS_DATA_OVERRUN, TD - %p\n", TD);
1590 DPRINT1(
"UhciGetErrorFromTD: USBD_STATUS_STALL_PID, TD - %p\n", TD);
1595 DPRINT1(
"UhciGetErrorFromTD: USBD_STATUS_INTERNAL_HC_ERROR, TD - %p\n", TD);
1613 DPRINT_UHCI(
"UhciProcessDoneNonIsoTD: TD - %p\n", TD);
1615 UhciTransfer = TD->UhciTransfer;
1633 TransferedLen = TD->HwTD.ControlStatus.ActualLength + 1;
1642 DPRINT_IMPL(
"UhciProcessDoneNonIsoTD: UNIMPLEMENTED. FIXME\n");
1650 DPRINT_IMPL(
"UhciProcessDoneNonIsoTD: UNIMPLEMENTED. FIXME\n");
1654 TD->HwTD.NextElement = 0;
1655 TD->UhciTransfer =
NULL;
1684 DPRINT_IMPL(
"UhciIsochTransfer: UNIMPLEMENTED. FIXME\n");
1694 DPRINT_IMPL(
"UhciAbortIsoTransfer: UNIMPLEMENTED. FIXME\n");
1710 DPRINT(
"UhciAbortNonIsoTransfer: UhciExtension - %p, QH - %p, UhciTransfer - %p\n",
1715 for (TD = UhciEndpoint->HeadTD;
1724 if (TD == UhciEndpoint->HeadTD)
1729 DPRINT_UHCI(
"UhciAbortNonIsoTransfer: TD - %p\n", TD);
1734 DPRINT_IMPL(
"UhciAbortNonIsoTransfer: UNIMPLEMENTED. FIXME\n");
1736 UhciEndpoint->AllocatedTDs--;
1738 DPRINT_UHCI(
"UhciAbortNonIsoTransfer: Active TD - %p\n", TD);
1761 UhciEndpoint->HeadTD = TD;
1765 UhciEndpoint->HeadTD =
NULL;
1766 UhciEndpoint->TailTD =
NULL;
1779 DPRINT_UHCI(
"UhciAbortNonIsoTransfer: TD - %p\n", TD);
1794 UhciEndpoint->TailTD = PrevTD;
1797 *CompletedLength = UhciTransfer->TransferLen;
1812 DPRINT(
"UhciAbortTransfer: ...\n");
1843 DPRINT_IMPL(
"UhciGetEndpointState: UNIMPLEMENTED. FIXME\n");
1855 DPRINT(
"UhciInsertQH: UhciExtension - %p, StaticQH - %p, QH - %p\n", UhciExtension, StaticQH, QH);
1857 QH->HwQH.NextQH = StaticQH->HwQH.NextQH;
1860 QH->PrevHcdQH = StaticQH;
1861 QH->NextHcdQH = NextHcdQH;
1866 UhciExtension->BulkTailQH = QH;
1869 StaticQH->NextHcdQH = QH;
1883 DPRINT(
"UhciUnlinkQH: ... \n");
1888 if (UhciExtension->BulkTailQH == QH)
1889 UhciExtension->BulkTailQH = PrevHcdQH;
1900 if (!(QH->UhciEndpoint->EndpointProperties.TransferType ==
1914 BulkQH = UhciExtension->BulkQH;
1948 QH = UhciEndpoint->
QH;
1950 DPRINT(
"UhciSetEndpointState: EndpointState - %x, TransferType - %x\n",
1961 DPRINT(
"UhciSetEndpointState: Unknown TransferType - %x\n",
1965 switch (EndpointState)
1972 switch (TransferType)
1991 UhciExtension->
IntQH[Idx - 1],
2018 ULONG EndpointStatus;
2027 return EndpointStatus;
2039 DPRINT(
"UhciSetEndpointStatus: uhciEndpoint - %p, EndpointStatus - %X\n",
2054 if (UhciEndpoint->
HeadTD)
2072 DPRINT_IMPL(
"UhciPollIsoEndpoint: UNIMPLEMENTED. FIXME\n");
2089 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: UhciExtension - %p, UhciEndpoint - %p\n",
2095 DPRINT(
"UhciPollNonIsoEndpoint: Ep->Flags & UHCI_ENDPOINT_FLAG_HALTED \n");
2099 QH = UhciEndpoint->QH;
2114 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: NextTD - %p, NextTdPA - %p\n",
2118 for (TD = UhciEndpoint->HeadTD; TD != NextTD && TD !=
NULL; TD = TD->
NextHcdTD)
2120 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: TD - %p, TD->NextHcdTD - %p\n",
2136 if (NextTdPA != TD->
NextHcdTD->PhysicalAddress)
2138 DPRINT(
"UhciPollNonIsoEndpoint: TD->NextHcdTD->PhysicalAddress - %p\n",
2147 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: TD->NextHcdTD == NULL\n");
2151 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: ControlStatus - %X\n",
2152 TD->
NextHcdTD->HwTD.ControlStatus.AsULONG);
2157 UhciEndpoint->HeadTD = NextTD;
2161 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: NextTD == NULL\n");
2163 UhciEndpoint->HeadTD =
NULL;
2164 UhciEndpoint->TailTD =
NULL;
2168 goto ProcessListTDs;
2171 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: NextTD - %p, NextTdPA - %p\n",
2179 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: UHCI_TD_STS_ACTIVE \n");
2180 goto ProcessListTDs;
2190 DPRINT(
"UhciPollNonIsoEndpoint: USBD_STATUS_DEV_NOT_RESPONDING\n");
2205 goto ProcessListTDs;
2215 DPRINT(
"UhciPollNonIsoEndpoint: NextTD UHCI_TD_STS_ - %02X, PIDCode - %02X\n",
2233 DPRINT(
"UhciPollNonIsoEndpoint: Bad TD - %p\n", TD);
2246 if (UhciEndpoint->EndpointProperties.TransferType !=
2267 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: NextTD - %p, TransferedLen - %X\n",
2277 UhciEndpoint->HeadTD = NextTD->
NextHcdTD;
2282 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: NextTD - %p, TD - %p\n",
2287 goto ProcessListTDs;
2290 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: ShortPacket. ControlStatus - %X\n",
2309 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: TD - %p\n", TD);
2321 (UhciEndpoint->EndpointProperties.TransferType !=
2327 NextTD->
NextHcdTD->HwTD.Token.DataToggle);
2341 UhciEndpoint->HeadTD = TD;
2345 UhciEndpoint->HeadTD =
NULL;
2346 UhciEndpoint->TailTD =
NULL;
2359 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: TD - %p\n", TD);
2366 ListTDs = &UhciEndpoint->ListTDs;
2386 DPRINT_UHCI(
"UhciPollNonIsoEndpoint: Halted periodic EP - %p\n",
2431 DPRINT1(
"UhciCheckController: INVALIDATE_CONTROLLER_SURPRISE_REMOVE !!!\n");
2443 ULONG Uhci32BitFrame;
2451 Uhci32BitFrame = Hp;
2453 Uhci32BitFrame |=
Fn;
2455 DPRINT_UHCI(
"UhciGet32BitFrameNumber: Uhci32BitFrame - %lX\n",
2458 return Uhci32BitFrame;
2479 NextFrame = CurrentFrame + 2;
2483 SofFrame = SOF_HcdTDs->
Frame;
2485 if (SofFrame == NextFrame)
2488 if (SofFrame < CurrentFrame)
2490 SOF_HcdTDs->
Frame = NextFrame;
2512 if (SOF_HcdTDs->
Frame &&
2513 (SOF_HcdTDs->
Frame < CurrentFrame ||
2516 SOF_HcdTDs->
Frame = 0;
2529 DPRINT(
"UhciEnableInterrupts: UhciExtension - %p\n", UhciExtension);
2560 DPRINT(
"UhciDisableInterrupts: UhciExtension - %p\n", UhciExtension);
2565 HcFlavor = UhciExtension->
HcFlavor;
2566 DPRINT(
"UhciDisableInterrupts: FIXME HcFlavor - %lx\n", HcFlavor);
2593 DPRINT_UHCI(
"UhciPollController: UhciExtension - %p\n", UhciExtension);
2621 DPRINT_IMPL(
"UhciSetEndpointDataToggle: UNIMPLEMENTED. FIXME\n");
2628 DPRINT_IMPL(
"UhciResetController: UNIMPLEMENTED. FIXME\n");
2642 DPRINT_IMPL(
"UhciStartSendOnePacket: UNIMPLEMENTED. FIXME\n");
2657 DPRINT_IMPL(
"UhciEndSendOnePacket: UNIMPLEMENTED. FIXME\n");
2668 DPRINT_IMPL(
"UhciPassThru: UNIMPLEMENTED. FIXME\n");
2676 DPRINT_IMPL(
"UhciFlushInterrupts: UNIMPLEMENTED. FIXME\n");
2683 DPRINT_IMPL(
"UhciUnload: UNIMPLEMENTED. FIXME\n");
#define USBPORT_ENDPOINT_ACTIVE
VOID NTAPI UhciSuspendController(IN PVOID uhciExtension)
#define KeQuerySystemTime(t)
PHCI_RH_GET_STATUS RH_GetStatus
#define UHCI_HCD_TD_FLAG_DONE
#define USB_MINIPORT_FLAGS_POLLING
PHCI_RH_GET_PORT_STATUS RH_GetPortStatus
MPSTATUS NTAPI UhciInitializeSchedule(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_HC_RESOURCES HcResourcesVA, IN ULONG hcResourcesPA)
PHCI_RH_CLEAR_FEATURE_PORT_POWER RH_ClearFeaturePortPower
#define USBPORT_TRANSFER_TYPE_BULK
MPSTATUS NTAPI UhciRHSetFeaturePortPower(IN PVOID uhciExtension, IN USHORT Port)
VOID NTAPI UhciDumpHcdTD(PUHCI_HCD_TD TD)
static BYTE StatusRegister
MPSTATUS NTAPI UhciStartSendOnePacket(IN PVOID uhciExtension, IN PVOID PacketParameters, IN PVOID Data, IN PULONG pDataLength, IN PVOID BufferVA, IN PVOID BufferPA, IN ULONG BufferLength, IN USBD_STATUS *pUSBDStatus)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
struct _UHCI_HCD_QH * NextHcdQH
VOID NTAPI UhciInsertQH(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_HCD_QH StaticQH, IN PUHCI_HCD_QH QH)
VOID NTAPI UhciSetEndpointState(IN PVOID uhciExtension, IN PVOID uhciEndpoint, IN ULONG EndpointState)
PHCI_SUBMIT_TRANSFER SubmitTransfer
MPSTATUS NTAPI UhciRHGetStatus(IN PVOID uhciExtension, IN PUSHORT Status)
PUHCI_HCD_TD NTAPI UhciAllocateTD(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint)
VOID NTAPI WRITE_PORT_USHORT(IN PUSHORT Port, IN USHORT Value)
#define UHCI_TD_STS_TIMEOUT_CRC_ERROR
#define UHCI_HCD_TD_FLAG_DATA_BUFFER
MPSTATUS NTAPI UhciRHSetFeaturePortSuspend(IN PVOID uhciExtension, IN USHORT Port)
PUHCI_ENDPOINT UhciEndpoint
VOID NTAPI UhciFixDataToggle(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint, IN PUHCI_HCD_TD TD, IN BOOL DataToggle)
PHCI_RH_SET_FEATURE_PORT_ENABLE RH_SetFeaturePortEnable
#define UHCI_FRNUM_FRAME_MASK
PUSBPORT_GET_MAPPED_VIRTUAL_ADDRESS UsbPortGetMappedVirtualAddress
#define READ_PORT_UCHAR(p)
#define USBPORT_ENDPOINT_RUN
static GLenum _GLUfuncptr fn
PHCI_RH_SET_FEATURE_PORT_POWER RH_SetFeaturePortPower
#define UHCI_HCD_QH_FLAG_REMOVE
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET SetupPacket
#define USBPORT_ENDPOINT_HALT
VOID NTAPI UhciCleanupFrameListEntry(IN PUHCI_EXTENSION UhciExtension, IN ULONG Index)
PHCI_DISABLE_INTERRUPTS DisableInterrupts
MPSTATUS NTAPI UhciIsochTransfer(IN PVOID ehciExtension, IN PVOID ehciEndpoint, IN PUSBPORT_TRANSFER_PARAMETERS TransferParameters, IN PVOID ehciTransfer, IN PVOID isoParameters)
PUSBPORT_INVALIDATE_ENDPOINT UsbPortInvalidateEndpoint
union _USB_DEFAULT_PIPE_SETUP_PACKET::_wIndex wIndex
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
PHCI_RESUME_CONTROLLER ResumeController
#define USBD_TRANSFER_DIRECTION_IN
#define UHCI_FRAME_LIST_MAX_ENTRIES
PUSBPORT_COMPLETE_TRANSFER UsbPortCompleteTransfer
#define UHCI_FRAME_LIST_INDEX_MASK
#define UHCI_TD_STS_DATA_BUFFER_ERROR
PUHCI_HW_REGISTERS BaseRegister
#define UHCI_HCD_TD_FLAG_GOOD_FRAME
#define UHCI_FRAME_LIST_POINTER_TD
PUHCI_ENDPOINT UhciEndpoint
PHCI_RH_SET_FEATURE_PORT_RESET RH_SetFeaturePortReset
#define UHCI_TD_LINK_PTR_TD
#define USBPORT_INVALIDATE_CONTROLLER_SURPRISE_REMOVE
#define USBPORT_TRANSFER_TYPE_CONTROL
PHCI_ENABLE_INTERRUPTS EnableInterrupts
MPSTATUS NTAPI UhciSubmitTransfer(IN PVOID uhciExtension, IN PVOID uhciEndpoint, IN PUSBPORT_TRANSFER_PARAMETERS TransferParameters, IN PVOID uhciTransfer, IN PUSBPORT_SCATTER_GATHER_LIST SgList)
VOID NTAPI UhciProcessDoneNonIsoTD(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_HCD_TD TD)
VOID NTAPI UhciPollController(IN PVOID uhciExtension)
PHCI_RH_GET_ROOT_HUB_DATA RH_GetRootHubData
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
#define USBD_STATUS_ERROR_SHORT_TRANSFER
#define UHCI_QH_ELEMENT_LINK_POINTER_MASK
ULONG NTAPI UhciGet32BitFrameNumber(IN PVOID uhciExtension)
#define UHCI_TD_STS_STALLED
struct _UHCI_HC_RESOURCES * PUHCI_HC_RESOURCES
PUSBPORT_READ_WRITE_CONFIG_SPACE UsbPortReadWriteConfigSpace
#define UHCI_QH_ELEMENT_LINK_PTR_QH
VOID NTAPI UhciDisableInterrupts(IN PVOID uhciExtension)
struct _UHCI_HCD_TD UHCI_HCD_TD
MPSTATUS NTAPI UhciPassThru(IN PVOID uhciExtension, IN PVOID passThruParameters, IN ULONG ParameterLength, IN PVOID pParameters)
struct _UHCI_HCD_QH UHCI_HCD_QH
VOID NTAPI WRITE_PORT_ULONG(IN PULONG Port, IN ULONG Value)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID NTAPI UhciQueryEndpointRequirements(IN PVOID uhciExtension, IN PUSBPORT_ENDPOINT_PROPERTIES EndpointProperties, IN PUSBPORT_ENDPOINT_REQUIREMENTS EndpointRequirements)
PHCI_SET_ENDPOINT_STATE SetEndpointState
PHCI_END_SEND_ONE_PACKET EndSendOnePacket
#define UHCI_QH_ELEMENT_LINK_PTR_TD
VOID NTAPI DbgBreakPoint(VOID)
_In_ PUSB_DEVICE_HANDLE _Out_ PUSHORT DeviceAddress
VOID NTAPI UhciEnableInterrupts(IN PVOID uhciExtension)
PHCI_CLOSE_ENDPOINT CloseEndpoint
PHCI_RH_CLEAR_FEATURE_PORT_ENABLE_CHANGE RH_ClearFeaturePortEnableChange
MPSTATUS NTAPI UhciReopenEndpoint(IN PVOID uhciExtension, IN PUSBPORT_ENDPOINT_PROPERTIES EndpointProperties, IN PVOID uhciEndpoint)
#define UHCI_TD_PID_SETUP
PHCI_RH_CLEAR_FEATURE_PORT_SUSPEND_CHANGE RH_ClearFeaturePortSuspendChange
MPSTATUS NTAPI UhciInitializeHardware(IN PUHCI_EXTENSION UhciExtension)
#define USB_MINIPORT_VERSION_UHCI
BOOLEAN NTAPI UhciHardwarePresent(IN PUHCI_EXTENSION UhciExtension)
MPSTATUS NTAPI UhciRHClearFeaturePortSuspendChange(IN PVOID uhciExtension, IN USHORT Port)
VOID NTAPI UhciPollNonIsoEndpoint(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint)
MPSTATUS NTAPI UhciRHSetFeaturePortReset(IN PVOID uhciExtension, IN USHORT Port)
#define USBPORT_ENDPOINT_PAUSED
PUHCI_HC_RESOURCES HcResourcesVA
struct _UHCI_HCD_TD * PUHCI_HCD_TD
PHCI_START_CONTROLLER StartController
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define UHCI_HCD_TD_FLAG_STALLED_SETUP
#define UHCI_HCD_TD_FLAG_PROCESSED
VOID NTAPI UhciPollEndpoint(IN PVOID uhciExtension, IN PVOID uhciEndpoint)
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
PHCI_RH_GET_HUB_STATUS RH_GetHubStatus
#define UHCI_TD_PID_DATA1
MPSTATUS NTAPI UhciRHClearFeaturePortEnableChange(IN PVOID uhciExtension, IN USHORT Port)
PHCI_SUBMIT_ISO_TRANSFER SubmitIsoTransfer
PHCI_POLL_CONTROLLER PollController
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
PHCI_RH_CLEAR_FEATURE_PORT_SUSPEND RH_ClearFeaturePortSuspend
PHCI_INTERRUPT_SERVICE InterruptService
MPSTATUS NTAPI UhciEndSendOnePacket(IN PVOID uhciExtension, IN PVOID PacketParameters, IN PVOID Data, IN PULONG pDataLength, IN PVOID BufferVA, IN PVOID BufferPA, IN ULONG BufferLength, IN USBD_STATUS *pUSBDStatus)
#define USBD_STATUS_BUFFER_OVERRUN
#define ENDPOINT_INTERRUPT_32ms
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
VOID NTAPI UhciInterruptNextSOF(IN PVOID uhciExtension)
PUHCI_HCD_QH IntQH[INTERRUPT_ENDPOINTs]
PHCI_OPEN_ENDPOINT OpenEndpoint
VOID NTAPI UhciAbortIsoTransfer(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint, IN PUHCI_TRANSFER UhciTransfer)
#define UHCI_HCD_QH_FLAG_ACTIVE
enum _USB_DEVICE_SPEED USB_DEVICE_SPEED
struct _UHCI_HCD_TD * NextHcdTD
NTSTATUS NTAPI DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
MPSTATUS NTAPI UhciControlTransfer(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint, IN PUSBPORT_TRANSFER_PARAMETERS TransferParameters, IN PUHCI_TRANSFER UhciTransfer, IN PUSBPORT_SCATTER_GATHER_LIST SgList)
#define MP_STATUS_FAILURE
PHCI_SET_ENDPOINT_STATUS SetEndpointStatus
struct _LIST_ENTRY * Flink
VOID NTAPI UhciCheckController(IN PVOID uhciExtension)
PHCI_GET_ENDPOINT_STATE GetEndpointState
USBPORT_ENDPOINT_PROPERTIES EndpointProperties
PHCI_RH_CLEAR_FEATURE_PORT_RESET_CHANGE RH_ClearFeaturePortResetChange
struct _UHCI_HCD_QH * PrevHcdQH
PUSBPORT_INVALIDATE_ROOT_HUB UsbPortInvalidateRootHub
#define UHCI_ENDPOINT_FLAG_CONTROL_OR_ISO
PHCI_ABORT_TRANSFER AbortTransfer
#define USBPORT_RESOURCES_INTERRUPT
#define USBPORT_ENDPOINT_REMOVE
#define USBPORT_RESOURCES_PORT
SIZE_T MiniPortExtensionSize
_In_ WDFCOLLECTION _In_ ULONG Index
enum _USB_CONTROLLER_FLAVOR USB_CONTROLLER_FLAVOR
#define UHCI_QH_HEAD_LINK_PTR_TERMINATE
UHCI_USB_STATUS StatusMask
VOID NTAPI UhciAbortTransfer(IN PVOID uhciExtension, IN PVOID uhciEndpoint, IN PVOID uhciTransfer, IN PULONG CompletedLength)
PHCI_RH_SET_FEATURE_PORT_SUSPEND RH_SetFeaturePortSuspend
#define USB_MINIPORT_FLAGS_PORT_IO
MPSTATUS NTAPI UhciOpenEndpoint(IN PVOID uhciExtension, IN PUSBPORT_ENDPOINT_PROPERTIES EndpointProperties, IN PVOID uhciEndpoint)
#define UHCI_QH_HEAD_LINK_PTR_QH
#define UHCI_TD_LINK_PTR_DEPTH_FIRST
#define UHCI_USB_STATUS_MASK
BOOLEAN NTAPI UhciInterruptService(IN PVOID uhciExtension)
struct _USB_DEFAULT_PIPE_SETUP_PACKET USB_DEFAULT_PIPE_SETUP_PACKET
VOID NTAPI UhciPollIsoEndpoint(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint)
#define UHCI_MAX_ISO_TD_COUNT
MPSTATUS NTAPI UhciBulkOrInterruptTransfer(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint, IN PUSBPORT_TRANSFER_PARAMETERS TransferParameters, IN PUHCI_TRANSFER UhciTransfer, IN PUSBPORT_SCATTER_GATHER_LIST SgList)
#define UHCI_TD_PID_DATA0
#define USBD_STATUS_SUCCESS
#define UHCI_TD_LINK_POINTER_MASK
VOID NTAPI UhciRHEnableIrq(IN PVOID uhciExtension)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
PUSBPORT_INVALIDATE_CONTROLLER UsbPortInvalidateController
#define TOTAL_USB11_BUS_BANDWIDTH
WDF_EXTERN_C_START typedef _In_ WDFDEVICE _In_ WDFCONTEXT _In_ WDF_DMA_DIRECTION _In_ PSCATTER_GATHER_LIST SgList
PHCI_CHECK_CONTROLLER CheckController
VOID NTAPI UhciQueueTransfer(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint, IN PUHCI_HCD_TD FirstTD, IN PUHCI_HCD_TD LastTD)
#define USBPORT_TRANSFER_TYPE_INTERRUPT
#define InterlockedDecrement
SIZE_T MiniPortEndpointSize
#define WRITE_PORT_UCHAR(p, d)
VOID NTAPI UhciResetController(IN PVOID uhciExtension)
SIZE_T MiniPortTransferSize
NTSTATUS NTAPI USBPORT_RegisterUSBPortDriver(IN PDRIVER_OBJECT DriverObject, IN ULONG Version, IN PUSBPORT_REGISTRATION_PACKET RegPacket)
MPSTATUS NTAPI UhciRHClearFeaturePortPower(IN PVOID uhciExtension, IN USHORT Port)
USBD_STATUS NTAPI UhciGetErrorFromTD(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_HCD_TD TD)
#define UHCI_TD_STS_BABBLE_DETECTED
PHCI_RH_DISABLE_IRQ RH_DisableIrq
MPSTATUS NTAPI UhciResumeController(IN PVOID uhciExtension)
struct _UHCI_TRANSFER UHCI_TRANSFER
_In_ ULONG ParameterLength
#define UHCI_TD_LENGTH_NULL
#define INTERRUPT_ENDPOINTs
#define UHCI_ENDPOINT_FLAG_HALTED
#define USBD_STATUS_STALL_PID
VOID NTAPI UhciRHDisableIrq(IN PVOID uhciExtension)
#define USBPORT_TRANSFER_TYPE_ISOCHRONOUS
#define InterlockedExchange
#define USBD_STATUS_DEV_NOT_RESPONDING
USB_DEFAULT_PIPE_SETUP_PACKET SetupPacket
#define UHCI_TD_STS_NAK_RECEIVED
PHCI_START_SEND_ONE_PACKET StartSendOnePacket
PHCI_POLL_ENDPOINT PollEndpoint
PHCI_SET_ENDPOINT_DATA_TOGGLE SetEndpointDataToggle
#define USBD_SHORT_TRANSFER_OK
VOID NTAPI UhciInterruptDpc(IN PVOID uhciExtension, IN BOOLEAN IsDoEnableInterrupts)
PHCI_STOP_CONTROLLER StopController
#define InterlockedIncrement
#define UHCI_HCD_TD_FLAG_CONTROLL
VOID NTAPI UhciCleanupFrameList(IN PUHCI_EXTENSION UhciExtension, IN BOOLEAN IsAllEntries)
UHCI_PORT_STATUS_CONTROL PortControl[UHCI_NUM_ROOT_HUB_PORTS]
PHCI_GET_ENDPOINT_STATUS GetEndpointStatus
VOID NTAPI UhciSetEndpointStatus(IN PVOID uhciExtension, IN PVOID uhciEndpoint, IN ULONG EndpointStatus)
ULONG InterruptOnComplete
PHCI_INTERRUPT_NEXT_SOF InterruptNextSOF
PHCI_RH_CLEAR_FEATURE_PORT_ENABLE RH_ClearFeaturePortEnable
BOOLEAN(* Fn)(ULONG Argc, PCHAR Argv[])
VOID NTAPI UhciFlushInterrupts(IN PVOID uhciExtension)
MPSTATUS NTAPI UhciTakeControlHC(IN PUHCI_EXTENSION UhciExtension, IN PUSBPORT_RESOURCES Resources)
ULONG NTAPI UhciGetEndpointState(IN PVOID uhciExtension, IN PVOID uhciEndpoint)
PHCI_SUSPEND_CONTROLLER SuspendController
#define InitializeListHead(ListHead)
MPSTATUS NTAPI UhciRHSetFeaturePortEnable(IN PVOID uhciExtension, IN USHORT Port)
#define UHCI_NUM_ROOT_HUB_PORTS
#define UHCI_TD_STS_BITSTUFF_ERROR
struct _UHCI_ENDPOINT UHCI_ENDPOINT
MPSTATUS NTAPI UhciRHClearFeaturePortResetChange(IN PVOID uhciExtension, IN USHORT Port)
struct _UHCI_HCD_QH * PUHCI_HCD_QH
#define FIELD_OFFSET(t, f)
PHCI_INTERRUPT_DPC InterruptDpc
VOID NTAPI UhciCloseEndpoint(IN PVOID uhciExtension, IN PVOID uhciEndpoint, IN BOOLEAN IsDoDisablePeriodic)
VOID NTAPI UhciDumpHcdQH(PUHCI_HCD_QH QH)
#define UHCI_MAX_STATIC_SOF_TDS
MPSTATUS NTAPI UhciStartController(IN PVOID uhciExtension, IN PUSBPORT_RESOURCES Resources)
#define MP_STATUS_SUCCESS
ULONG MiniPortBusBandwidth
VOID NTAPI UhciUnlinkQH(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_HCD_QH QH)
USHORT ConnectStatusChange
VOID NTAPI UhciAbortNonIsoTransfer(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint, IN PUHCI_TRANSFER UhciTransfer, IN PULONG CompletedLength)
#define UHCI_FRNUM_OVERFLOW_LIST
PHCI_RH_CLEAR_FEATURE_PORT_CONNECT_CHANGE RH_ClearFeaturePortConnectChange
VOID NTAPI UhciRHGetRootHubData(IN PVOID uhciExtension, IN PVOID rootHubData)
#define USB_MINIPORT_FLAGS_INTERRUPT
USB_CONTROLLER_FLAVOR HcFlavor
#define UHCI_FRAME_LIST_POINTER_QH
#define UHCI_MAX_ISO_TRANSFER_SIZE
MPSTATUS NTAPI UhciRHGetPortStatus(IN PVOID uhciExtension, IN USHORT Port, IN PUSB_PORT_STATUS_AND_CHANGE PortStatus)
#define UHCI_EXTENSION_FLAG_SUSPENDED
union _USB_DEFAULT_PIPE_SETUP_PACKET::_wValue wValue
UHCI_CONTROL_STATUS ControlStatus
#define USB_MINIPORT_FLAGS_NOT_LOCK_INT
UHCI_USB_COMMAND HcCommand
#define UHCI_TD_STS_ACTIVE
PHCI_QUERY_ENDPOINT_REQUIREMENTS QueryEndpointRequirements
struct _UHCI_HC_RESOURCES UHCI_HC_RESOURCES
#define USBD_STATUS_DATA_OVERRUN
PHCI_RH_ENABLE_IRQ RH_EnableIrq
PHCI_REOPEN_ENDPOINT ReopenEndpoint
#define RtlZeroMemory(Destination, Length)
#define UHCI_MAX_INTERRUPT_TD_COUNT
VOID NTAPI UhciSetNextQH(IN PUHCI_HCD_QH QH, IN PUHCI_HCD_QH NextQH)
#define RtlCopyMemory(Destination, Source, Length)
PUSBPORT_TRANSFER_PARAMETERS TransferParameters
#define UHCI_QH_ELEMENT_LINK_PTR_TERMINATE
#define USB_ENDPOINT_DIRECTION_OUT(x)
UHCI_INTERRUPT_ENABLE HcInterruptEnable
USHORT NTAPI READ_PORT_USHORT(IN PUSHORT Port)
VOID NTAPI UhciStopController(IN PVOID uhciExtension, IN BOOLEAN IsDoDisableInterrupts)
PUSBPORT_WAIT UsbPortWait
PHCI_GET_32BIT_FRAME_NUMBER Get32BitFrameNumber
SIZE_T MiniPortResourcesSize
MPSTATUS NTAPI UhciRHClearFeaturePortEnable(IN PVOID uhciExtension, IN USHORT Port)
#define USB_MINIPORT_FLAGS_WAKE_SUPPORT
VOID NTAPI UhciSetEndpointDataToggle(IN PVOID uhciExtension, IN PVOID uhciEndpoint, IN ULONG DataToggle)
MPSTATUS NTAPI UhciRHClearFeaturePortSuspend(IN PVOID uhciExtension, IN USHORT Port)
PUHCI_TRANSFER UhciTransfer
struct _UHCI_EXTENSION UHCI_EXTENSION
MPSTATUS NTAPI UhciRHClearFeaturePortConnectChange(IN PVOID uhciExtension, IN USHORT Port)
MPSTATUS NTAPI UhciRHClearFeaturePortOvercurrentChange(IN PVOID uhciExtension, IN USHORT Port)
BM_REQUEST_TYPE bmRequestType
USBPORT_REGISTRATION_PACKET RegPacket
#define USB10_MINIPORT_INTERFACE_VERSION
VOID NTAPI UhciMapAsyncTransferToTDs(IN PUHCI_EXTENSION UhciExtension, IN PUHCI_ENDPOINT UhciEndpoint, IN PUHCI_TRANSFER UhciTransfer, OUT PUHCI_HCD_TD *OutFirstTD, OUT PUHCI_HCD_TD *OutLastTD, IN PUSBPORT_SCATTER_GATHER_LIST SgList)
MPSTATUS NTAPI UhciUnload(IN PVOID uhciExtension)
#define UHCI_HCD_TD_FLAG_ALLOCATED
ULONG FrameList[UHCI_FRAME_LIST_MAX_ENTRIES]
PHCI_FLUSH_INTERRUPTS FlushInterrupts
ULONG NTAPI UhciGetEndpointStatus(IN PVOID uhciExtension, IN PVOID uhciEndpoint)
_In_ PUSBD_PIPE_INFORMATION _In_ USB_DEVICE_SPEED DeviceSpeed
#define UHCI_TD_LINK_PTR_QH
MPSTATUS NTAPI UhciRHGetHubStatus(IN PVOID uhciExtension, IN PUSB_HUB_STATUS_AND_CHANGE HubStatus)
#define UHCI_MAX_HC_SCHEDULE_ERRORS
#define USBD_STATUS_INTERNAL_HC_ERROR
PHCI_RH_CLEAR_FEATURE_PORT_OVERCURRENT_CHANGE RH_ClearFeaturePortOvercurrentChange
VOID NTAPI UhciUpdateCounter(IN PUHCI_EXTENSION UhciExtension)
#define UHCI_HCD_TD_FLAG_NOT_ACCESSED
#define UHCI_TD_LINK_PTR_TERMINATE
#define UHCI_MAX_BULK_TRANSFER_SIZE