[USBPORT] Add support for transaction translators in USBPORT_OpenPipe().
[reactos.git] / drivers / usb / usbport / usbport.h
index b838baf..2f37634 100644 (file)
@@ -153,6 +153,11 @@ typedef struct _USBPORT_COMMON_BUFFER_HEADER {
 
 typedef struct _USBPORT_ENDPOINT *PUSBPORT_ENDPOINT;
 
+typedef struct _USB2_HC_EXTENSION *PUSB2_HC_EXTENSION;
+typedef struct _USB2_TT_EXTENSION *PUSB2_TT_EXTENSION;
+typedef struct _USB2_TT *PUSB2_TT;
+typedef struct _USB2_TT_ENDPOINT *PUSB2_TT_ENDPOINT;
+
 typedef struct _USBPORT_PIPE_HANDLE {
   ULONG Flags;
   ULONG PipeFlags;
@@ -191,6 +196,8 @@ typedef struct _USBPORT_DEVICE_HANDLE {
   LIST_ENTRY DeviceHandleLink;
   LONG DeviceHandleLock;
   ULONG TtCount;
+  PUSB2_TT_EXTENSION TtExtension; // Transaction Translator
+  LIST_ENTRY TtList;
 } USBPORT_DEVICE_HANDLE, *PUSBPORT_DEVICE_HANDLE;
 
 typedef struct _USBPORT_ENDPOINT {
@@ -198,6 +205,8 @@ typedef struct _USBPORT_ENDPOINT {
   PDEVICE_OBJECT FdoDevice;
   PUSBPORT_COMMON_BUFFER_HEADER HeaderBuffer;
   PUSBPORT_DEVICE_HANDLE DeviceHandle;
+  PUSB2_TT_EXTENSION TtExtension; // Transaction Translator
+  PUSB2_TT_ENDPOINT TtEndpoint;
   USBPORT_ENDPOINT_PROPERTIES EndpointProperties;
   ULONG EndpointWorker;
   ULONG FrameNumber;
@@ -226,6 +235,7 @@ typedef struct _USBPORT_ENDPOINT {
   LIST_ENTRY FlushLink;
   LIST_ENTRY FlushControllerLink;
   LIST_ENTRY FlushAbortLink;
+  LIST_ENTRY TtLink;
 } USBPORT_ENDPOINT, *PUSBPORT_ENDPOINT;
 
 typedef struct _USBPORT_ISO_BLOCK *PUSBPORT_ISO_BLOCK;
@@ -374,10 +384,14 @@ typedef struct _USBPORT_DEVICE_EXTENSION {
   KSPIN_LOCK SetPowerD0SpinLock;
   KDPC WorkerRequestDpc;
   KDPC HcWakeDpc;
+  /* Usb 2.0 HC Extension */
+  PUSB2_HC_EXTENSION Usb2Extension;
+  ULONG Bandwidth[32];
+  KSPIN_LOCK TtSpinLock;
 
   /* Miniport extension should be aligned on 0x100 */
 #if !defined(_M_X64)
-  ULONG Padded[34];
+  ULONG Padded[64];
 #else
   ULONG Padded[0];
 #endif
@@ -385,7 +399,7 @@ typedef struct _USBPORT_DEVICE_EXTENSION {
 } USBPORT_DEVICE_EXTENSION, *PUSBPORT_DEVICE_EXTENSION;
 
 #if !defined(_M_X64)
-C_ASSERT(sizeof(USBPORT_DEVICE_EXTENSION) == 0x400);
+C_ASSERT(sizeof(USBPORT_DEVICE_EXTENSION) == 0x500);
 #else
 C_ASSERT(sizeof(USBPORT_DEVICE_EXTENSION) == 0x600);
 #endif
@@ -1289,4 +1303,20 @@ USBPORT_FreeBandwidthUSB2(
   IN PDEVICE_OBJECT FdoDevice,
   IN PUSBPORT_ENDPOINT Endpoint);
 
+VOID
+NTAPI
+USBPORT_UpdateAllocatedBwTt(
+  IN PUSB2_TT_EXTENSION TtExtension);
+
+VOID
+NTAPI
+USB2_InitTT(
+  IN PUSB2_HC_EXTENSION HcExtension,
+  IN PUSB2_TT Tt);
+
+VOID
+NTAPI
+USB2_InitController(
+  IN PUSB2_HC_EXTENSION HcExtension);
+
 #endif /* USBPORT_H__ */