]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.h
MdeModulePkg/SdMmcPciHcDxe: Add V3 64b DMA Support
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / EhciDxe / EhciSched.h
index d8f266105953889e84fd55360e3f4258383e2f96..e0c430531fafdd8237bfc4c12346ba03b1c7e641 100644 (file)
@@ -1,7 +1,9 @@
 /** @file\r
 \r
-Copyright (c) 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
+  This file contains the definination for host controller schedule routines.\r
+\r
+Copyright (c) 2007 - 2018, 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
 http://opensource.org/licenses/bsd-license.php\r
@@ -9,59 +11,37 @@ http://opensource.org/licenses/bsd-license.php
 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
-Module Name:\r
-\r
-  EhciSched.h\r
-\r
-Abstract:\r
-\r
-  This file contains the definination for host controller schedule routines\r
-\r
-Revision History\r
-\r
 **/\r
 \r
 #ifndef _EFI_EHCI_SCHED_H_\r
 #define _EFI_EHCI_SCHED_H_\r
 \r
-EFI_STATUS\r
-EhcInitSched (\r
-  IN USB2_HC_DEV          *Ehc\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Initialize the schedule data structure such as frame list\r
 \r
-Arguments:\r
-\r
-  Ehc - The EHCI device to init schedule data for\r
-\r
-Returns:\r
+/**\r
+  Initialize the schedule data structure such as frame list.\r
 \r
-  EFI_OUT_OF_RESOURCES  - Failed to allocate resource to init schedule data\r
-  EFI_SUCCESS           - The schedule data is initialized\r
+  @param Ehc                    The EHCI device to init schedule data for.\r
 \r
---*/\r
-;\r
+  @retval EFI_OUT_OF_RESOURCES  Failed to allocate resource to init schedule data.\r
+  @retval EFI_SUCCESS           The schedule data is initialized.\r
 \r
+**/\r
+EFI_STATUS\r
+EhcInitSched (\r
+  IN USB2_HC_DEV          *Ehc\r
+  );\r
 \r
 \r
 /**\r
   Free the schedule data. It may be partially initialized.\r
 \r
-  @param  Ehc            The EHCI device\r
-\r
-  @return None\r
+  @param  Ehc            The EHCI device.\r
 \r
 **/\r
 VOID\r
 EhcFreeSched (\r
   IN USB2_HC_DEV          *Ehc\r
-  )\r
-;\r
-\r
+  );\r
 \r
 \r
 /**\r
@@ -71,36 +51,30 @@ EhcFreeSched (
   management: A reclamation header is always linked to\r
   the AsyncListAddr, the only active QH is appended to it.\r
 \r
-  @param  Ehc            The EHCI device\r
-  @param  Qh             The queue head to link\r
-\r
-  @return None\r
+  @param  Ehc            The EHCI device.\r
+  @param  Qh             The queue head to link.\r
 \r
 **/\r
 VOID\r
 EhcLinkQhToAsync (\r
   IN USB2_HC_DEV          *Ehc,\r
   IN EHC_QH               *Qh\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
   Unlink a queue head from the asynchronous schedule list.\r
-  Need to synchronize with hardware\r
+  Need to synchronize with hardware.\r
 \r
-  @param  Ehc            The EHCI device\r
-  @param  Qh             The queue head to unlink\r
-\r
-  @return None\r
+  @param  Ehc            The EHCI device.\r
+  @param  Qh             The queue head to unlink.\r
 \r
 **/\r
 VOID\r
 EhcUnlinkQhFromAsync (\r
   IN USB2_HC_DEV          *Ehc,\r
   IN EHC_QH               *Qh\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -108,49 +82,43 @@ EhcUnlinkQhFromAsync (
   schedule frame list. This code is very much the same as\r
   that in UHCI.\r
 \r
-  @param  Ehc            The EHCI device\r
-  @param  Qh             The queue head to link\r
-\r
-  @return None\r
+  @param  Ehc            The EHCI device.\r
+  @param  Qh             The queue head to link.\r
 \r
 **/\r
 VOID\r
 EhcLinkQhToPeriod (\r
   IN USB2_HC_DEV          *Ehc,\r
   IN EHC_QH               *Qh\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
   Unlink an interrupt queue head from the periodic\r
-  schedule frame list\r
+  schedule frame list.\r
 \r
-  @param  Ehc            The EHCI device\r
-  @param  Qh             The queue head to unlink\r
-\r
-  @return None\r
+  @param  Ehc            The EHCI device.\r
+  @param  Qh             The queue head to unlink.\r
 \r
 **/\r
 VOID\r
 EhcUnlinkQhFromPeriod (\r
   IN USB2_HC_DEV          *Ehc,\r
   IN EHC_QH               *Qh\r
-  )\r
-;\r
+  );\r
 \r
 \r
 \r
 /**\r
   Execute the transfer by polling the URB. This is a synchronous operation.\r
 \r
-  @param  Ehc            The EHCI device\r
-  @param  Urb            The URB to execute\r
-  @param  TimeOut        The time to wait before abort, in millisecond.\r
+  @param  Ehc               The EHCI device.\r
+  @param  Urb               The URB to execute.\r
+  @param  TimeOut           The time to wait before abort, in millisecond.\r
 \r
-  @return EFI_DEVICE_ERROR : The transfer failed due to transfer error\r
-  @return EFI_TIMEOUT      : The transfer failed due to time out\r
-  @return EFI_SUCCESS      : The transfer finished OK\r
+  @retval EFI_DEVICE_ERROR  The transfer failed due to transfer error.\r
+  @retval EFI_TIMEOUT       The transfer failed due to time out.\r
+  @retval EFI_SUCCESS       The transfer finished OK.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -158,21 +126,20 @@ EhcExecTransfer (
   IN  USB2_HC_DEV         *Ehc,\r
   IN  URB                 *Urb,\r
   IN  UINTN               TimeOut\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
   Delete a single asynchronous interrupt transfer for\r
-  the device and endpoint\r
+  the device and endpoint.\r
 \r
-  @param  Ehc            The EHCI device\r
-  @param  DevAddr        The address of the target device\r
-  @param  EpNum          The endpoint of the target\r
-  @param  DataToggle     Return the next data toggle to use\r
+  @param  Ehc            The EHCI device.\r
+  @param  DevAddr        The address of the target device.\r
+  @param  EpNum          The endpoint of the target.\r
+  @param  DataToggle     Return the next data toggle to use.\r
 \r
-  @retval EFI_SUCCESS    An asynchronous transfer is removed\r
-  @retval EFI_NOT_FOUND  No transfer for the device is found\r
+  @retval EFI_SUCCESS    An asynchronous transfer is removed.\r
+  @retval EFI_NOT_FOUND  No transfer for the device is found.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -181,40 +148,66 @@ EhciDelAsyncIntTransfer (
   IN  UINT8               DevAddr,\r
   IN  UINT8               EpNum,\r
   OUT UINT8               *DataToggle\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
-  Remove all the asynchronous interrutp transfers\r
-\r
-  @param  Ehc            The EHCI device\r
+  Remove all the asynchronous interrutp transfers.\r
 \r
-  @return None\r
+  @param  Ehc            The EHCI device.\r
 \r
 **/\r
 VOID\r
 EhciDelAllAsyncIntTransfers (\r
   IN USB2_HC_DEV          *Ehc\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  Insert a single asynchronous interrupt transfer for\r
+  the device and endpoint.\r
+\r
+  @param  Ehc               The EHCI device.\r
+  @param  DevAddr           The device address.\r
+  @param  EpAddr            Endpoint addrress & its direction.\r
+  @param  DevSpeed          The device speed.\r
+  @param  Toggle            Initial data toggle to use.\r
+  @param  MaxPacket         The max packet length of the endpoint.\r
+  @param  Hub               The transaction translator to use.\r
+  @param  DataLen           The length of data buffer.\r
+  @param  Callback          The function to call when data is transferred.\r
+  @param  Context           The context to the callback.\r
+  @param  Interval          The interval for interrupt transfer.\r
+\r
+  @return Created URB or NULL.\r
 \r
+**/\r
+URB *\r
+EhciInsertAsyncIntTransfer (\r
+  IN USB2_HC_DEV                        *Ehc,\r
+  IN UINT8                              DevAddr,\r
+  IN UINT8                              EpAddr,\r
+  IN UINT8                              DevSpeed,\r
+  IN UINT8                              Toggle,\r
+  IN UINTN                              MaxPacket,\r
+  IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Hub,\r
+  IN UINTN                              DataLen,\r
+  IN EFI_ASYNC_USB_TRANSFER_CALLBACK    Callback,\r
+  IN VOID                               *Context,\r
+  IN UINTN                              Interval\r
+  );\r
 \r
 /**\r
-  Interrupt transfer periodic check handler\r
-\r
-  @param  Event          Interrupt event\r
-  @param  Context        Pointer to USB2_HC_DEV\r
+  Interrupt transfer periodic check handler.\r
 \r
-  @return None\r
+  @param  Event          Interrupt event.\r
+  @param  Context        Pointer to USB2_HC_DEV.\r
 \r
 **/\r
 VOID\r
-EhcMoniteAsyncRequests (\r
+EFIAPI\r
+EhcMonitorAsyncRequests (\r
   IN EFI_EVENT            Event,\r
   IN VOID                 *Context\r
-  )\r
-;\r
+  );\r
 \r
 #endif\r