]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Include/Library/DmaLib.h
EmbeddedPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / EmbeddedPkg / Include / Library / DmaLib.h
old mode 100755 (executable)
new mode 100644 (file)
index badaf21..9f6e7a9
@@ -1,45 +1,39 @@
-/** @file
-  DMA abstraction library APIs. Based on UEFI PCI IO protocol DMA abstractions.
-  At some point these functions will probably end up in a non PCI protocol 
-  for embedded systems.
-
+/** @file\r
+  DMA abstraction library APIs. Based on UEFI PCI IO protocol DMA abstractions.\r
+  At some point these functions will probably end up in a non PCI protocol\r
+  for embedded systems.\r
+\r
   DMA Bus Master Read Operation:\r
-    Call DmaMap() for MapOperationBusMasterRead. 
-    Program the DMA Bus Master with the DeviceAddress returned by DmaMap(). 
-    Start the DMA Bus Master. 
-    Wait for DMA Bus Master to complete the read operation. 
-    Call DmaUnmap().
-
-  DMA Bus Master Write Operation:
+    Call DmaMap() for MapOperationBusMasterRead.\r
+    Program the DMA Bus Master with the DeviceAddress returned by DmaMap().\r
+    Start the DMA Bus Master.\r
+    Wait for DMA Bus Master to complete the read operation.\r
+    Call DmaUnmap().\r
+\r
+  DMA Bus Master Write Operation:\r
     Call DmaMap() for MapOperationBusMasterWrite.\r
     Program the DMA Bus Master with the DeviceAddress returned by DmaMap().\r
     Start the DMA Bus Master.\r
     Wait for DMA Bus Master to complete the write operation.\r
-    Call DmaUnmap().
-
-  DMA Bus Master Common Buffer Operation:
-    Call DmaAllocateBuffer() to allocate a common buffer. 
-    Call DmaMap() for MapOperationBusMasterCommonBuffer. 
-    Program the DMA Bus Master with the DeviceAddress returned by DmaMap(). 
-    The common buffer can now be accessed equally by the processor and the DMA bus master. 
-    Call DmaUnmap(). 
-    Call DmaFreeBuffer().
-
-  Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
-
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef __DMA_LIB_H__
-#define __DMA_LIB_H__
-
+    Call DmaUnmap().\r
+\r
+  DMA Bus Master Common Buffer Operation:\r
+    Call DmaAllocateBuffer() to allocate a common buffer.\r
+    Call DmaMap() for MapOperationBusMasterCommonBuffer.\r
+    Program the DMA Bus Master with the DeviceAddress returned by DmaMap().\r
+    The common buffer can now be accessed equally by the processor and the DMA bus master.\r
+    Call DmaUnmap().\r
+    Call DmaFreeBuffer().\r
+\r
+  Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>\r
+\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef __DMA_LIB_H__\r
+#define __DMA_LIB_H__\r
+\r
 typedef enum {\r
   ///\r
   /// A read operation from system memory by a bus master.\r
@@ -56,104 +50,132 @@ typedef enum {
   MapOperationBusMasterCommonBuffer,\r
   MapOperationMaximum\r
 } DMA_MAP_OPERATION;\r
-
-
-
-
-/**                                                                 \r
+\r
+\r
+\r
+\r
+/**\r
   Provides the DMA controller-specific addresses needed to access system memory.\r
-  \r
+\r
   Operation is relative to the DMA bus master.\r
-            \r
+\r
   @param  Operation             Indicates if the bus master is going to read or write to system memory.\r
   @param  HostAddress           The system memory address to map to the DMA controller.\r
   @param  NumberOfBytes         On input the number of bytes to map. On output the number of bytes\r
-                                that were mapped.                                                 \r
+                                that were mapped.\r
   @param  DeviceAddress         The resulting map address for the bus master controller to use to\r
-                                access the hosts HostAddress.                                        \r
+                                access the hosts HostAddress.\r
   @param  Mapping               A resulting value to pass to DmaUnmap().\r
-                                  \r
+\r
   @retval EFI_SUCCESS           The range was mapped for the returned NumberOfBytes.\r
-  @retval EFI_UNSUPPORTED       The HostAddress cannot be mapped as a common buffer.                                \r
+  @retval EFI_UNSUPPORTED       The HostAddress cannot be mapped as a common buffer.\r
   @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
   @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
   @retval EFI_DEVICE_ERROR      The system hardware could not map the requested address.\r
-                                   \r
-**/
-EFI_STATUS
-EFIAPI
-DmaMap (
-  IN     DMA_MAP_OPERATION              Operation,
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+DmaMap (\r
+  IN     DMA_MAP_OPERATION              Operation,\r
   IN     VOID                           *HostAddress,\r
   IN OUT UINTN                          *NumberOfBytes,\r
   OUT    PHYSICAL_ADDRESS               *DeviceAddress,\r
   OUT    VOID                           **Mapping\r
-  );
-
-
-
-
-/**                                                                 \r
+  );\r
+\r
+\r
+\r
+\r
+/**\r
   Completes the DmaMapBusMasterRead, DmaMapBusMasterWrite, or DmaMapBusMasterCommonBuffer\r
   operation and releases any corresponding resources.\r
-            \r
+\r
   @param  Mapping               The mapping value returned from DmaMap().\r
-                                  \r
+\r
   @retval EFI_SUCCESS           The range was unmapped.\r
   @retval EFI_DEVICE_ERROR      The data was not committed to the target system memory.\r
-                                   \r
-**/
-EFI_STATUS
-EFIAPI
-DmaUnmap (
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+DmaUnmap (\r
   IN  VOID                         *Mapping\r
-  );
-
-
-/**                                                                 \r
+  );\r
+\r
+\r
+/**\r
   Allocates pages that are suitable for an DmaMap() of type MapOperationBusMasterCommonBuffer.\r
-  mapping.                                                                       \r
-            \r
+  mapping.\r
+\r
   @param  MemoryType            The type of memory to allocate, EfiBootServicesData or\r
-                                EfiRuntimeServicesData.                               \r
-  @param  Pages                 The number of pages to allocate.                                \r
+                                EfiRuntimeServicesData.\r
+  @param  Pages                 The number of pages to allocate.\r
   @param  HostAddress           A pointer to store the base system memory address of the\r
-                                allocated range.                                        \r
+                                allocated range.\r
 \r
                                 @retval EFI_SUCCESS           The requested memory pages were allocated.\r
   @retval EFI_UNSUPPORTED       Attributes is unsupported. The only legal attribute bits are\r
-                                MEMORY_WRITE_COMBINE and MEMORY_CACHED.                     \r
+                                MEMORY_WRITE_COMBINE and MEMORY_CACHED.\r
   @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
-  @retval EFI_OUT_OF_RESOURCES  The memory pages could not be allocated.  \r
-                                   \r
-**/
-EFI_STATUS
-EFIAPI
-DmaAllocateBuffer (
-  IN  EFI_MEMORY_TYPE              MemoryType,
+  @retval EFI_OUT_OF_RESOURCES  The memory pages could not be allocated.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+DmaAllocateBuffer (\r
+  IN  EFI_MEMORY_TYPE              MemoryType,\r
   IN  UINTN                        Pages,\r
   OUT VOID                         **HostAddress\r
   );\r
-
-
-/**                                                                 \r
+\r
+\r
+/**\r
   Frees memory that was allocated with DmaAllocateBuffer().\r
-            \r
-  @param  Pages                 The number of pages to free.                                \r
-  @param  HostAddress           The base system memory address of the allocated range.                                    \r
-                                  \r
+\r
+  @param  Pages                 The number of pages to free.\r
+  @param  HostAddress           The base system memory address of the allocated range.\r
+\r
   @retval EFI_SUCCESS           The requested memory pages were freed.\r
   @retval EFI_INVALID_PARAMETER The memory range specified by HostAddress and Pages\r
                                 was not allocated with DmaAllocateBuffer().\r
-                                     \r
+\r
 **/\r
-EFI_STATUS
-EFIAPI
-DmaFreeBuffer (
+EFI_STATUS\r
+EFIAPI\r
+DmaFreeBuffer (\r
   IN  UINTN                        Pages,\r
   IN  VOID                         *HostAddress\r
   );\r
-
-
-#endif 
-
+\r
+\r
+/**\r
+  Allocates pages that are suitable for an DmaMap() of type\r
+  MapOperationBusMasterCommonBuffer mapping, at the requested alignment.\r
+\r
+  @param  MemoryType            The type of memory to allocate, EfiBootServicesData or\r
+                                EfiRuntimeServicesData.\r
+  @param  Pages                 The number of pages to allocate.\r
+  @param  Alignment             Alignment in bytes of the base of the returned\r
+                                buffer (must be a power of 2)\r
+  @param  HostAddress           A pointer to store the base system memory address of the\r
+                                allocated range.\r
+\r
+  @retval EFI_SUCCESS           The requested memory pages were allocated.\r
+  @retval EFI_UNSUPPORTED       Attributes is unsupported. The only legal attribute bits are\r
+                                MEMORY_WRITE_COMBINE and MEMORY_CACHED.\r
+  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
+  @retval EFI_OUT_OF_RESOURCES  The memory pages could not be allocated.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+DmaAllocateAlignedBuffer (\r
+  IN  EFI_MEMORY_TYPE              MemoryType,\r
+  IN  UINTN                        Pages,\r
+  IN  UINTN                        Alignment,\r
+  OUT VOID                         **HostAddress\r
+  );\r
+\r
+\r
+#endif\r