]> git.proxmox.com Git - mirror_edk2.git/blobdiff - QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Dxe/OhciUrb.h
QuarkSocPkg: Add new package for Quark SoC X1000
[mirror_edk2.git] / QuarkSocPkg / QuarkSouthCluster / Usb / Ohci / Dxe / OhciUrb.h
diff --git a/QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Dxe/OhciUrb.h b/QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Dxe/OhciUrb.h
new file mode 100644 (file)
index 0000000..47851fd
--- /dev/null
@@ -0,0 +1,393 @@
+/** @file\r
+Provides some data struct used by OHCI controller driver.\r
+\r
+Copyright (c) 2013-2015 Intel Corporation.\r
+\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
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+\r
+#ifndef _OHCI_URB_H\r
+#define _OHCI_URB_H\r
+\r
+#include "Descriptor.h"\r
+\r
+\r
+//\r
+// Func List\r
+//\r
+\r
+\r
+/**\r
+\r
+  Create a TD\r
+\r
+  @Param  Ohc                   UHC private data\r
+\r
+  @retval                       TD structure pointer\r
+\r
+**/\r
+TD_DESCRIPTOR *\r
+OhciCreateTD (\r
+  IN USB_OHCI_HC_DEV      *Ohc\r
+  );\r
+\r
+/**\r
+\r
+  Free a TD\r
+\r
+  @Param  Ohc                   UHC private data\r
+  @Param  Td                    Pointer to a TD to free\r
+\r
+  @retval  EFI_SUCCESS          TD freed\r
+\r
+**/\r
+EFI_STATUS\r
+OhciFreeTD (\r
+  IN USB_OHCI_HC_DEV      *Ohc,\r
+  IN TD_DESCRIPTOR        *Td\r
+  );\r
+\r
+/**\r
+\r
+  Create a ED\r
+\r
+  @Param   Ohc                  Device private data\r
+\r
+  @retval  ED                   descriptor pointer\r
+\r
+**/\r
+ED_DESCRIPTOR *\r
+OhciCreateED (\r
+  USB_OHCI_HC_DEV          *Ohc\r
+  );\r
+\r
+\r
+/**\r
+\r
+  Free a ED\r
+\r
+  @Param  Ohc                   UHC private data\r
+  @Param  Ed                    Pointer to a ED to free\r
+\r
+  @retval  EFI_SUCCESS          ED freed\r
+\r
+**/\r
+\r
+EFI_STATUS\r
+OhciFreeED (\r
+  IN USB_OHCI_HC_DEV      *Ohc,\r
+  IN ED_DESCRIPTOR        *Ed\r
+  );\r
+\r
+/**\r
+\r
+  Free  ED\r
+\r
+  @Param  Ohc                    Device private data\r
+  @Param  Ed                     Pointer to a ED to free\r
+\r
+  @retval  EFI_SUCCESS           ED freed\r
+\r
+**/\r
+EFI_STATUS\r
+OhciFreeAllTDFromED (\r
+  IN USB_OHCI_HC_DEV      *Ohc,\r
+  IN ED_DESCRIPTOR        *Ed\r
+  );\r
+\r
+/**\r
+\r
+  Find a working ED match the requirement\r
+\r
+  @Param  EdHead                Head of the ED list\r
+  @Param  DeviceAddress         Device address to search\r
+  @Param  EndPointNum           End point num to search\r
+  @Param  EdDir                 ED Direction to search\r
+\r
+  @retval   ED descriptor searched\r
+\r
+**/\r
+\r
+ED_DESCRIPTOR *\r
+OhciFindWorkingEd (\r
+  IN ED_DESCRIPTOR       *EdHead,\r
+  IN UINT8               DeviceAddress,\r
+  IN UINT8               EndPointNum,\r
+  IN UINT8               EdDir\r
+  );\r
+\r
+\r
+/**\r
+\r
+  Initialize interrupt list.\r
+\r
+  @Param Ohc                    Device private data\r
+\r
+  @retval  EFI_SUCCESS          Initialization done\r
+\r
+**/\r
+EFI_STATUS\r
+OhciInitializeInterruptList (\r
+  USB_OHCI_HC_DEV          *Ohc\r
+  );\r
+\r
+/**\r
+\r
+  Attach an ED\r
+\r
+  @Param  Ed                    Ed to be attached\r
+  @Param  NewEd                 Ed to attach\r
+\r
+  @retval EFI_SUCCESS           NewEd attached to Ed\r
+  @retval EFI_INVALID_PARAMETER Ed is NULL\r
+\r
+**/\r
+EFI_STATUS\r
+OhciAttachED (\r
+  IN ED_DESCRIPTOR        *Ed,\r
+  IN ED_DESCRIPTOR        *NewEd\r
+  );\r
+\r
+/**\r
+\r
+  Count ED number on a ED chain\r
+\r
+  @Param  Ed                    Head of the ED chain\r
+\r
+  @retval                       ED number on the chain\r
+\r
+**/\r
+\r
+UINTN\r
+CountEdNum (\r
+  IN ED_DESCRIPTOR      *Ed\r
+  );\r
+\r
+/**\r
+\r
+  Find the minimal burn ED list on a specific depth level\r
+\r
+  @Param  Ohc                   Device private data\r
+  @Param  Depth                 Depth level\r
+\r
+  @retval                       ED list found\r
+\r
+**/\r
+\r
+ED_DESCRIPTOR *\r
+OhciFindMinInterruptEDList (\r
+  IN USB_OHCI_HC_DEV      *Ohc,\r
+  IN UINT32               Depth\r
+  );\r
+\r
+/**\r
+\r
+  Attach an ED to an ED list\r
+\r
+  @Param  OHC                   UHC private data\r
+  @Param  ListType              Type of the ED list\r
+  @Param  Ed                    ED to attach\r
+  @Param  EdList                ED list to be attached\r
+\r
+  @retval  EFI_SUCCESS          ED attached to ED list\r
+\r
+**/\r
+ED_DESCRIPTOR *\r
+OhciAttachEDToList (\r
+  IN USB_OHCI_HC_DEV       *Ohc,\r
+  IN DESCRIPTOR_LIST_TYPE  ListType,\r
+  IN ED_DESCRIPTOR         *Ed,\r
+  IN ED_DESCRIPTOR         *EdList\r
+  );\r
+\r
+/**\r
+\r
+  Remove interrupt EDs that match requirement\r
+\r
+  @Param  Ohc                   UHC private data\r
+  @Param  IntEd                 The address of Interrupt endpoint\r
+\r
+  @retval  EFI_SUCCESS          EDs match requirement removed\r
+\r
+**/\r
+\r
+EFI_STATUS\r
+OhciFreeInterruptEdByEd (\r
+  IN USB_OHCI_HC_DEV      *Ohc,\r
+  IN ED_DESCRIPTOR        *IntEd\r
+  );\r
+\r
+/**\r
+\r
+  Remove interrupt EDs that match requirement\r
+\r
+  @Param  Ohc                   UHC private data\r
+  @Param  FunctionAddress       Requirement on function address\r
+  @Param  EndPointNum           Requirement on end point number\r
+\r
+  @retval  EFI_SUCCESS          EDs match requirement removed\r
+\r
+**/\r
+EFI_STATUS\r
+OhciFreeInterruptEdByAddr (\r
+  IN USB_OHCI_HC_DEV      *Ohc,\r
+  IN UINT8                FunctionAddress,\r
+  IN UINT8                EndPointNum\r
+  );\r
+\r
+\r
+/**\r
+\r
+  Link Td2 to the end of Td1\r
+\r
+  @Param Td1                    TD to be linked\r
+  @Param Td2                    TD to link\r
+\r
+  @retval EFI_SUCCESS           TD successfully linked\r
+  @retval EFI_INVALID_PARAMETER Td1 is NULL\r
+\r
+**/\r
+EFI_STATUS\r
+OhciLinkTD (\r
+  IN TD_DESCRIPTOR        *Td1,\r
+  IN TD_DESCRIPTOR        *Td2\r
+  );\r
+\r
+\r
+/**\r
+\r
+  Attach TD list to ED\r
+\r
+  @Param  Ed                    ED which TD list attach on\r
+  @Param  HeadTd                Head of the TD list to attach\r
+\r
+  @retval  EFI_SUCCESS          TD list attached on the ED\r
+\r
+**/\r
+EFI_STATUS\r
+OhciAttachTDListToED (\r
+  IN ED_DESCRIPTOR        *Ed,\r
+  IN TD_DESCRIPTOR        *HeadTd\r
+  );\r
+\r
+\r
+/**\r
+\r
+  Set value to ED specific field\r
+\r
+  @Param  Ed                    ED to be set\r
+  @Param  Field                 Field to be set\r
+  @Param  Value                 Value to set\r
+\r
+  @retval  EFI_SUCCESS          Value set\r
+\r
+**/\r
+EFI_STATUS\r
+OhciSetEDField (\r
+  IN ED_DESCRIPTOR        *Ed,\r
+  IN UINT32               Field,\r
+  IN UINT32               Value\r
+  );\r
+\r
+\r
+/**\r
+\r
+  Get value from an ED's specific field\r
+\r
+  @Param  Ed                    ED pointer\r
+  @Param  Field                 Field to get value from\r
+\r
+  @retval                       Value of the field\r
+\r
+**/\r
+UINT32\r
+OhciGetEDField (\r
+  IN ED_DESCRIPTOR        *Ed,\r
+  IN UINT32               Field\r
+  );\r
+\r
+\r
+/**\r
+\r
+  Set value to TD specific field\r
+\r
+  @Param  Td                    TD to be set\r
+  @Param  Field                 Field to be set\r
+  @Param  Value                 Value to set\r
+\r
+  @retval  EFI_SUCCESS          Value set\r
+\r
+**/\r
+EFI_STATUS\r
+OhciSetTDField (\r
+  IN TD_DESCRIPTOR        *Td,\r
+  IN UINT32               Field,\r
+  IN UINT32               Value\r
+  );\r
+\r
+\r
+/**\r
+\r
+  Get value from ED specific field\r
+\r
+  @Param  Td                    TD pointer\r
+  @Param  Field                 Field to get value from\r
+\r
+  @retval                       Value of the field\r
+\r
+**/\r
+\r
+UINT32\r
+OhciGetTDField (\r
+  IN TD_DESCRIPTOR      *Td,\r
+  IN UINT32             Field\r
+  );\r
+/**\r
+\r
+  Free the Ed,Td,buffer that were created during transferring\r
+\r
+  @Param  Ohc                   Device private data\r
+**/\r
+\r
+VOID\r
+OhciFreeDynamicIntMemory(\r
+  IN USB_OHCI_HC_DEV      *Ohc\r
+  );\r
+\r
+/**\r
+\r
+  Free the Ed that were initilized during driver was starting,\r
+  those memory were used as interrupt ED head\r
+\r
+  @Param  Ohc                   Device private data\r
+\r
+\r
+**/\r
+VOID\r
+OhciFreeFixedIntMemory (\r
+  IN USB_OHCI_HC_DEV      *Ohc\r
+  );\r
+/**\r
+\r
+  Release all OHCI used memory when OHCI going to quit\r
+\r
+  @Param  Ohc                   Device private data\r
+\r
+  @retval EFI_SUCCESS          Memory released\r
+\r
+**/\r
+\r
+EFI_STATUS\r
+OhciFreeIntTransferMemory (\r
+  IN USB_OHCI_HC_DEV           *Ohc\r
+  );\r
+\r
+#endif\r