]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/EhciDxe/Ehci.h
Save original PCI attributes in start() function and restore it in Stop() for those...
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / EhciDxe / Ehci.h
index 57c0c00084afad61c566fd39f4650e668e07cfcf..50a3f1c69893d7eae0601a1b1a39ede248d531cc 100644 (file)
@@ -23,18 +23,12 @@ Revision History
 #ifndef _EFI_EHCI_H_\r
 #define _EFI_EHCI_H_\r
 \r
-//\r
-// The package level header files this module uses\r
-//\r
+\r
 #include <PiDxe.h>\r
-//\r
-// The protocols, PPI and GUID defintions for this module\r
-//\r
+\r
 #include <Protocol/Usb2HostController.h>\r
 #include <Protocol/PciIo.h>\r
-//\r
-// The Library classes this module consumes\r
-//\r
+\r
 #include <Library/DebugLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
@@ -55,18 +49,35 @@ typedef struct _USB2_HC_DEV  USB2_HC_DEV;
 #include "EhciDebug.h"\r
 \r
 enum {\r
-  USB2_HC_DEV_SIGNATURE     = EFI_SIGNATURE_32 ('e', 'h', 'c', 'i'),\r
-  EHC_STALL_1_MICROSECOND   = 1,\r
-  EHC_STALL_1_MILLISECOND   = 1000 * EHC_STALL_1_MICROSECOND,\r
-  EHC_STALL_1_SECOND        = 1000 * EHC_STALL_1_MILLISECOND,\r
-\r
-  EHC_SET_PORT_RESET_TIME   = 50 * EHC_STALL_1_MILLISECOND,\r
-  EHC_CLEAR_PORT_RESET_TIME = EHC_STALL_1_MILLISECOND,\r
-  EHC_GENERIC_TIME          = 10 * EHC_STALL_1_MILLISECOND,\r
-  EHC_SYNC_POLL_TIME        = 20 * EHC_STALL_1_MICROSECOND,\r
-  EHC_ASYNC_POLL_TIME       = 50 * 10000UL,                 // The unit of time is 100us\r
-\r
-  EHC_TPL                   = TPL_NOTIFY,\r
+  EHC_1_MICROSECOND            = 1,\r
+  EHC_1_MILLISECOND            = 1000 * EHC_1_MICROSECOND,\r
+  EHC_1_SECOND                 = 1000 * EHC_1_MILLISECOND,\r
+\r
+  //\r
+  // EHCI register operation timeout, set by experience\r
+  //\r
+  EHC_RESET_TIMEOUT            = 1 * EHC_1_SECOND,\r
+  EHC_GENERIC_TIMEOUT          = 10 * EHC_1_MILLISECOND,\r
+\r
+  //\r
+  // Wait for roothub port power stable, refers to Spec[EHCI1.0-2.3.9]\r
+  //\r
+  EHC_ROOT_PORT_RECOVERY_STALL = 20 * EHC_1_MILLISECOND,\r
+\r
+  //\r
+  // Sync and Async transfer polling interval, set by experience,\r
+  // and the unit of Async is 100us, means 50ms as interval.\r
+  //\r
+  EHC_SYNC_POLL_INTERVAL       = 20 * EHC_1_MICROSECOND,\r
+  EHC_ASYNC_POLL_INTERVAL      = 50 * 10000U,\r
+\r
+  //\r
+  // EHC raises TPL to TPL_NOTIFY to serialize all its operations\r
+  // to protect shared data structures.\r
+  //\r
+  EHC_TPL                      = TPL_NOTIFY,\r
+\r
+  USB2_HC_DEV_SIGNATURE        = EFI_SIGNATURE_32 ('e', 'h', 'c', 'i')\r
 };\r
 \r
 //\r
@@ -95,11 +106,12 @@ enum {
 \r
 #define EHC_FROM_THIS(a)   CR(a, USB2_HC_DEV, Usb2Hc, USB2_HC_DEV_SIGNATURE)\r
 \r
-typedef struct _USB2_HC_DEV {\r
+struct _USB2_HC_DEV {\r
   UINTN                     Signature;\r
   EFI_USB2_HC_PROTOCOL      Usb2Hc;\r
 \r
   EFI_PCI_IO_PROTOCOL       *PciIo;\r
+  UINT64                    OriginalPciAttributes;\r
   USBHC_MEM_POOL            *MemPool;\r
 \r
   //\r
@@ -143,10 +155,11 @@ typedef struct _USB2_HC_DEV {
   // Misc\r
   //\r
   EFI_UNICODE_STRING_TABLE  *ControllerNameTable;\r
-} USB2_HC_DEV;\r
+};\r
 \r
 \r
-extern EFI_DRIVER_BINDING_PROTOCOL     gEhciDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL     gEhciComponentName;\r
+extern EFI_DRIVER_BINDING_PROTOCOL      gEhciDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL      gEhciComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL     gEhciComponentName2;\r
 \r
 #endif\r