]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/XhciDxe/Xhci.h
MdeModulePkg/Bus: Fix typos in comments
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / XhciDxe / Xhci.h
index 3793d9c1c25cbca4c7497cce74d5b83f1258298e..06cc73c7cbbe01476b2c0bb74a81ddd9d8ff46d7 100644 (file)
@@ -2,7 +2,7 @@
 \r
   Provides some data structure definitions used by the XHCI host controller driver.\r
 \r
-Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -30,6 +30,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiLib.h>\r
 #include <Library/DebugLib.h>\r
+#include <Library/ReportStatusCodeLib.h>\r
 \r
 #include <IndustryStandard/Pci.h>\r
 \r
@@ -39,31 +40,31 @@ typedef struct _USB_DEV_CONTEXT      USB_DEV_CONTEXT;
 #include "XhciReg.h"\r
 #include "XhciSched.h"\r
 #include "ComponentName.h"\r
+#include "UsbHcMem.h"\r
 \r
 //\r
-// Convert millisecond to microsecond.\r
+// The unit is microsecond, setting it as 1us.\r
+//\r
+#define XHC_1_MICROSECOND            (1)\r
+//\r
+// The unit is microsecond, setting it as 1ms.\r
 //\r
 #define XHC_1_MILLISECOND            (1000)\r
 //\r
 // XHC generic timeout experience values.\r
-// The unit is microsecond, setting it as 10ms.\r
+// The unit is millisecond, setting it as 10s.\r
 //\r
 #define XHC_GENERIC_TIMEOUT          (10 * 1000)\r
 //\r
 // XHC reset timeout experience values.\r
-// The unit is microsecond, setting it as 1s.\r
-//\r
-#define XHC_RESET_TIMEOUT            (1000 * 1000)\r
+// The unit is millisecond, setting it as 1s.\r
 //\r
-// XHC delay experience value for polling operation.\r
-// The unit is microsecond, set it as 1ms.\r
-//\r
-#define XHC_POLL_DELAY               (1000)\r
+#define XHC_RESET_TIMEOUT            (1000)\r
 //\r
 // XHC async transfer timer interval, set by experience.\r
-// The unit is 100us, takes 50ms as interval.\r
+// The unit is 100us, takes 1ms as interval.\r
 //\r
-#define XHC_ASYNC_TIMER_INTERVAL     EFI_TIMER_PERIOD_MILLISECONDS(50)\r
+#define XHC_ASYNC_TIMER_INTERVAL     EFI_TIMER_PERIOD_MILLISECONDS(1)\r
 \r
 //\r
 // XHC raises TPL to TPL_NOTIFY to serialize all its operations\r
@@ -71,10 +72,10 @@ typedef struct _USB_DEV_CONTEXT      USB_DEV_CONTEXT;
 //\r
 #define XHC_TPL                      TPL_NOTIFY\r
 \r
-#define CMD_RING_TRB_NUMBER          0x40\r
-#define TR_RING_TRB_NUMBER           0x40\r
+#define CMD_RING_TRB_NUMBER          0x100\r
+#define TR_RING_TRB_NUMBER           0x100\r
 #define ERST_NUMBER                  0x01\r
-#define EVENT_RING_TRB_NUMBER        0x80\r
+#define EVENT_RING_TRB_NUMBER        0x200\r
 \r
 #define CMD_INTER                    0\r
 #define CTRL_INTER                   1\r
@@ -83,7 +84,7 @@ typedef struct _USB_DEV_CONTEXT      USB_DEV_CONTEXT;
 #define INT_INTER_ASYNC              4\r
 \r
 //\r
-// Iterate through the doule linked list. This is delete-safe.\r
+// Iterate through the double linked list. This is delete-safe.\r
 // Don't touch NextEntry\r
 //\r
 #define EFI_LIST_FOR_EACH_SAFE(Entry, NextEntry, ListHead) \\r
@@ -93,7 +94,7 @@ typedef struct _USB_DEV_CONTEXT      USB_DEV_CONTEXT;
 #define EFI_LIST_CONTAINER(Entry, Type, Field) BASE_CR(Entry, Type, Field)\r
 \r
 #define XHC_LOW_32BIT(Addr64)          ((UINT32)(((UINTN)(Addr64)) & 0xFFFFFFFF))\r
-#define XHC_HIGH_32BIT(Addr64)         ((UINT32)(RShiftU64((UINTN)(Addr64), 32) & 0xFFFFFFFF))\r
+#define XHC_HIGH_32BIT(Addr64)         ((UINT32)(RShiftU64((UINT64)(UINTN)(Addr64), 32) & 0xFFFFFFFF))\r
 #define XHC_BIT_IS_SET(Data, Bit)      ((BOOLEAN)(((Data) & (Bit)) == (Bit)))\r
 \r
 #define XHC_REG_BIT_IS_SET(Xhc, Offset, Bit) \\r
@@ -190,12 +191,21 @@ struct _USB_DEV_CONTEXT {
   // These information is used to support XHCI's Config_Endpoint cmd.\r
   //\r
   EFI_USB_CONFIG_DESCRIPTOR **ConfDesc;\r
+  //\r
+  // A device has an active Configuration.\r
+  //\r
+  UINT8                     ActiveConfiguration;\r
+  //\r
+  // Every interface has an active AlternateSetting.\r
+  //\r
+  UINT8                     *ActiveAlternateSetting;\r
 };\r
 \r
 struct _USB_XHCI_INSTANCE {\r
   UINT32                    Signature;\r
   EFI_PCI_IO_PROTOCOL       *PciIo;\r
   UINT64                    OriginalPciAttributes;\r
+  USBHC_MEM_POOL            *MemPool;\r
 \r
   EFI_USB2_HC_PROTOCOL      Usb2Hc;\r
 \r
@@ -218,35 +228,24 @@ struct _USB_XHCI_INSTANCE {
   UINT16                    MaxInterrupt;\r
   UINT32                    PageSize;\r
   UINT64                    *ScratchBuf;\r
+  VOID                      *ScratchMap;\r
   UINT32                    MaxScratchpadBufs;\r
+  UINT64                    *ScratchEntry;\r
+  UINTN                     *ScratchEntryMap;\r
   UINT32                    ExtCapRegBase;\r
   UINT32                    UsbLegSupOffset;\r
+  UINT32                    DebugCapSupOffset;\r
   UINT64                    *DCBAA;\r
+  VOID                      *DCBAAMap;\r
   UINT32                    MaxSlotsEn;\r
   //\r
   // Cmd Transfer Ring\r
   //\r
   TRANSFER_RING             CmdRing;\r
   //\r
-  // CmdEventRing\r
-  //\r
-  EVENT_RING                CmdEventRing;\r
+  // EventRing\r
   //\r
-  // ControlTREventRing\r
-  //\r
-  EVENT_RING                CtrlTrEventRing;\r
-  //\r
-  // BulkTREventRing\r
-  //\r
-  EVENT_RING                BulkTrEventRing;\r
-  //\r
-  // IntTREventRing\r
-  //\r
-  EVENT_RING                IntTrEventRing;\r
-  //\r
-  // AsyncIntTREventRing\r
-  //\r
-  EVENT_RING                AsynIntTrEventRing;\r
+  EVENT_RING                EventRing;\r
   //\r
   // Misc\r
   //\r
@@ -257,6 +256,8 @@ struct _USB_XHCI_INSTANCE {
   // The array supports up to 255 devices, entry 0 is reserved and should not be used.\r
   //\r
   USB_DEV_CONTEXT           UsbDevContext[256];\r
+\r
+  BOOLEAN                   Support64BitDma; // Whether 64 bit DMA may be used with this device\r
 };\r
 \r
 \r
@@ -307,7 +308,7 @@ XhcDriverBindingStart (
   );\r
 \r
 /**\r
-  Stop this driver on ControllerHandle. Support stoping any child handles\r
+  Stop this driver on ControllerHandle. Support stopping any child handles\r
   created by this driver.\r
 \r
   @param  This                 Protocol instance pointer.\r