]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/IoLib.h
MdePkg: Expand BaseIoLibIntrinsic (IoLib class) library
[mirror_edk2.git] / MdePkg / Include / Library / IoLib.h
index 5f544d04fba2538360017c2d5660207b61a666f6..b6df4c10b92938c349f3dbfadbf21b6fd479b50a 100644 (file)
@@ -1,8 +1,10 @@
 /** @file\r
   Provide services to access I/O Ports and MMIO registers.\r
 \r
-Copyright (c) 2006 - 2008, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\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
@@ -76,10 +78,60 @@ IoWrite8 (
   );\r
 \r
 /**\r
-  Reads an 8-bit I/O port, performs a bitwise inclusive OR, and writes the\r
+  Reads an 8-bit I/O port fifo into a block of memory.\r
+\r
+  Reads the 8-bit I/O fifo port specified by Port.\r
+  The port is read Count times, and the read data is\r
+  stored in the provided Buffer.\r
+\r
+  This function must guarantee that all I/O read and write operations are\r
+  serialized.\r
+\r
+  If 8-bit I/O port operations are not supported, then ASSERT().\r
+\r
+  @param  Port    The I/O port to read.\r
+  @param  Count   The number of times to read I/O port.\r
+  @param  Buffer  The buffer to store the read data into.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+IoReadFifo8 (\r
+  IN      UINTN                     Port,\r
+  IN      UINTN                     Count,\r
+  OUT     VOID                      *Buffer\r
+  );\r
+\r
+/**\r
+  Writes a block of memory into an 8-bit I/O port fifo.\r
+\r
+  Writes the 8-bit I/O fifo port specified by Port.\r
+  The port is written Count times, and the write data is\r
+  retrieved from the provided Buffer.\r
+\r
+  This function must guarantee that all I/O write and write operations are\r
+  serialized.\r
+\r
+  If 8-bit I/O port operations are not supported, then ASSERT().\r
+\r
+  @param  Port    The I/O port to write.\r
+  @param  Count   The number of times to write I/O port.\r
+  @param  Buffer  The buffer to retrieve the write data from.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+IoWriteFifo8 (\r
+  IN      UINTN                     Port,\r
+  IN      UINTN                     Count,\r
+  IN      VOID                      *Buffer\r
+  );\r
+\r
+/**\r
+  Reads an 8-bit I/O port, performs a bitwise OR, and writes the\r
   result back to the 8-bit I/O port.\r
 \r
-  Reads the 8-bit I/O port specified by Port, performs a bitwise inclusive OR\r
+  Reads the 8-bit I/O port specified by Port, performs a bitwise OR\r
   between the read result and the value specified by OrData, and writes the\r
   result to the 8-bit I/O port specified by Port. The value written to the I/O\r
   port is returned. This function must guarantee that all I/O read and write\r
@@ -126,8 +178,8 @@ IoAnd8 (
   );\r
 \r
 /**\r
-  Reads an 8-bit I/O port, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 8-bit I/O port.\r
+  Reads an 8-bit I/O port, performs a bitwise AND followed by a bitwise \r
+  OR, and writes the result back to the 8-bit I/O port.\r
 \r
   Reads the 8-bit I/O port specified by Port, performs a bitwise AND between\r
   the read result and the value specified by AndData, performs a bitwise OR\r
@@ -186,13 +238,13 @@ IoBitFieldRead8 (
 \r
   Writes Value to the bit field of the I/O register. The bit field is specified\r
   by the StartBit and the EndBit. All other bits in the destination I/O\r
-  register are preserved. The value written to the I/O port is returned. Extra\r
-  left bits in Value are stripped.\r
+  register are preserved. The value written to the I/O port is returned. \r
 \r
   If 8-bit I/O port operations are not supported, then ASSERT().\r
   If StartBit is greater than 7, then ASSERT().\r
   If EndBit is greater than 7, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -217,7 +269,7 @@ IoBitFieldWrite8 (
   Reads a bit field in an 8-bit port, performs a bitwise OR, and writes the\r
   result back to the bit field in the 8-bit port.\r
 \r
-  Reads the 8-bit I/O port specified by Port, performs a bitwise inclusive OR\r
+  Reads the 8-bit I/O port specified by Port, performs a bitwise OR\r
   between the read result and the value specified by OrData, and writes the\r
   result to the 8-bit I/O port specified by Port. The value written to the I/O\r
   port is returned. This function must guarantee that all I/O read and write\r
@@ -227,6 +279,7 @@ IoBitFieldWrite8 (
   If StartBit is greater than 7, then ASSERT().\r
   If EndBit is greater than 7, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -261,6 +314,7 @@ IoBitFieldOr8 (
   If StartBit is greater than 7, then ASSERT().\r
   If EndBit is greater than 7, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -283,11 +337,11 @@ IoBitFieldAnd8 (
 \r
 /**\r
   Reads a bit field in an 8-bit port, performs a bitwise AND followed by a\r
-  bitwise inclusive OR, and writes the result back to the bit field in the\r
+  bitwise OR, and writes the result back to the bit field in the\r
   8-bit port.\r
 \r
   Reads the 8-bit I/O port specified by Port, performs a bitwise AND followed\r
-  by a bitwise inclusive OR between the read result and the value specified by\r
+  by a bitwise OR between the read result and the value specified by\r
   AndData, and writes the result to the 8-bit I/O port specified by Port. The\r
   value written to the I/O port is returned. This function must guarantee that\r
   all I/O read and write operations are serialized. Extra left bits in both\r
@@ -297,6 +351,8 @@ IoBitFieldAnd8 (
   If StartBit is greater than 7, then ASSERT().\r
   If EndBit is greater than 7, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -364,10 +420,60 @@ IoWrite16 (
   );\r
 \r
 /**\r
-  Reads a 16-bit I/O port, performs a bitwise inclusive OR, and writes the\r
+  Reads a 16-bit I/O port fifo into a block of memory.\r
+\r
+  Reads the 16-bit I/O fifo port specified by Port.\r
+  The port is read Count times, and the read data is\r
+  stored in the provided Buffer.\r
+\r
+  This function must guarantee that all I/O read and write operations are\r
+  serialized.\r
+\r
+  If 16-bit I/O port operations are not supported, then ASSERT().\r
+\r
+  @param  Port    The I/O port to read.\r
+  @param  Count   The number of times to read I/O port.\r
+  @param  Buffer  The buffer to store the read data into.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+IoReadFifo16 (\r
+  IN      UINTN                     Port,\r
+  IN      UINTN                     Count,\r
+  OUT     VOID                      *Buffer\r
+  );\r
+\r
+/**\r
+  Writes a block of memory into a 16-bit I/O port fifo.\r
+\r
+  Writes the 16-bit I/O fifo port specified by Port.\r
+  The port is written Count times, and the write data is\r
+  retrieved from the provided Buffer.\r
+\r
+  This function must guarantee that all I/O write and write operations are\r
+  serialized.\r
+\r
+  If 16-bit I/O port operations are not supported, then ASSERT().\r
+\r
+  @param  Port    The I/O port to write.\r
+  @param  Count   The number of times to write I/O port.\r
+  @param  Buffer  The buffer to retrieve the write data from.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+IoWriteFifo16 (\r
+  IN      UINTN                     Port,\r
+  IN      UINTN                     Count,\r
+  IN      VOID                      *Buffer\r
+  );\r
+\r
+/**\r
+  Reads a 16-bit I/O port, performs a bitwise OR, and writes the\r
   result back to the 16-bit I/O port.\r
 \r
-  Reads the 16-bit I/O port specified by Port, performs a bitwise inclusive OR\r
+  Reads the 16-bit I/O port specified by Port, performs a bitwise OR\r
   between the read result and the value specified by OrData, and writes the\r
   result to the 16-bit I/O port specified by Port. The value written to the I/O\r
   port is returned. This function must guarantee that all I/O read and write\r
@@ -416,8 +522,8 @@ IoAnd16 (
   );\r
 \r
 /**\r
-  Reads a 16-bit I/O port, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 16-bit I/O port.\r
+  Reads a 16-bit I/O port, performs a bitwise AND followed by a bitwise \r
+  OR, and writes the result back to the 16-bit I/O port.\r
 \r
   Reads the 16-bit I/O port specified by Port, performs a bitwise AND between\r
   the read result and the value specified by AndData, performs a bitwise OR\r
@@ -486,6 +592,7 @@ IoBitFieldRead16 (
   If StartBit is greater than 15, then ASSERT().\r
   If EndBit is greater than 15, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -510,7 +617,7 @@ IoBitFieldWrite16 (
   Reads a bit field in a 16-bit port, performs a bitwise OR, and writes the\r
   result back to the bit field in the 16-bit port.\r
 \r
-  Reads the 16-bit I/O port specified by Port, performs a bitwise inclusive OR\r
+  Reads the 16-bit I/O port specified by Port, performs a bitwise OR\r
   between the read result and the value specified by OrData, and writes the\r
   result to the 16-bit I/O port specified by Port. The value written to the I/O\r
   port is returned. This function must guarantee that all I/O read and write\r
@@ -521,6 +628,7 @@ IoBitFieldWrite16 (
   If StartBit is greater than 15, then ASSERT().\r
   If EndBit is greater than 15, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -556,6 +664,7 @@ IoBitFieldOr16 (
   If StartBit is greater than 15, then ASSERT().\r
   If EndBit is greater than 15, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -578,11 +687,11 @@ IoBitFieldAnd16 (
 \r
 /**\r
   Reads a bit field in a 16-bit port, performs a bitwise AND followed by a\r
-  bitwise inclusive OR, and writes the result back to the bit field in the\r
+  bitwise OR, and writes the result back to the bit field in the\r
   16-bit port.\r
 \r
   Reads the 16-bit I/O port specified by Port, performs a bitwise AND followed\r
-  by a bitwise inclusive OR between the read result and the value specified by\r
+  by a bitwise OR between the read result and the value specified by\r
   AndData, and writes the result to the 16-bit I/O port specified by Port. The\r
   value written to the I/O port is returned. This function must guarantee that\r
   all I/O read and write operations are serialized. Extra left bits in both\r
@@ -593,6 +702,8 @@ IoBitFieldAnd16 (
   If StartBit is greater than 15, then ASSERT().\r
   If EndBit is greater than 15, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -660,10 +771,60 @@ IoWrite32 (
   );\r
 \r
 /**\r
-  Reads a 32-bit I/O port, performs a bitwise inclusive OR, and writes the\r
+  Reads a 32-bit I/O port fifo into a block of memory.\r
+\r
+  Reads the 32-bit I/O fifo port specified by Port.\r
+  The port is read Count times, and the read data is\r
+  stored in the provided Buffer.\r
+\r
+  This function must guarantee that all I/O read and write operations are\r
+  serialized.\r
+\r
+  If 32-bit I/O port operations are not supported, then ASSERT().\r
+\r
+  @param  Port    The I/O port to read.\r
+  @param  Count   The number of times to read I/O port.\r
+  @param  Buffer  The buffer to store the read data into.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+IoReadFifo32 (\r
+  IN      UINTN                     Port,\r
+  IN      UINTN                     Count,\r
+  OUT     VOID                      *Buffer\r
+  );\r
+\r
+/**\r
+  Writes a block of memory into a 32-bit I/O port fifo.\r
+\r
+  Writes the 32-bit I/O fifo port specified by Port.\r
+  The port is written Count times, and the write data is\r
+  retrieved from the provided Buffer.\r
+\r
+  This function must guarantee that all I/O write and write operations are\r
+  serialized.\r
+\r
+  If 32-bit I/O port operations are not supported, then ASSERT().\r
+\r
+  @param  Port    The I/O port to write.\r
+  @param  Count   The number of times to write I/O port.\r
+  @param  Buffer  The buffer to retrieve the write data from.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+IoWriteFifo32 (\r
+  IN      UINTN                     Port,\r
+  IN      UINTN                     Count,\r
+  IN      VOID                      *Buffer\r
+  );\r
+\r
+/**\r
+  Reads a 32-bit I/O port, performs a bitwise OR, and writes the\r
   result back to the 32-bit I/O port.\r
 \r
-  Reads the 32-bit I/O port specified by Port, performs a bitwise inclusive OR\r
+  Reads the 32-bit I/O port specified by Port, performs a bitwise OR\r
   between the read result and the value specified by OrData, and writes the\r
   result to the 32-bit I/O port specified by Port. The value written to the I/O\r
   port is returned. This function must guarantee that all I/O read and write\r
@@ -712,8 +873,8 @@ IoAnd32 (
   );\r
 \r
 /**\r
-  Reads a 32-bit I/O port, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 32-bit I/O port.\r
+  Reads a 32-bit I/O port, performs a bitwise AND followed by a bitwise \r
+  OR, and writes the result back to the 32-bit I/O port.\r
 \r
   Reads the 32-bit I/O port specified by Port, performs a bitwise AND between\r
   the read result and the value specified by AndData, performs a bitwise OR\r
@@ -782,6 +943,7 @@ IoBitFieldRead32 (
   If StartBit is greater than 31, then ASSERT().\r
   If EndBit is greater than 31, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -806,7 +968,7 @@ IoBitFieldWrite32 (
   Reads a bit field in a 32-bit port, performs a bitwise OR, and writes the\r
   result back to the bit field in the 32-bit port.\r
 \r
-  Reads the 32-bit I/O port specified by Port, performs a bitwise inclusive OR\r
+  Reads the 32-bit I/O port specified by Port, performs a bitwise OR\r
   between the read result and the value specified by OrData, and writes the\r
   result to the 32-bit I/O port specified by Port. The value written to the I/O\r
   port is returned. This function must guarantee that all I/O read and write\r
@@ -817,6 +979,7 @@ IoBitFieldWrite32 (
   If StartBit is greater than 31, then ASSERT().\r
   If EndBit is greater than 31, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -852,6 +1015,7 @@ IoBitFieldOr32 (
   If StartBit is greater than 31, then ASSERT().\r
   If EndBit is greater than 31, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -874,11 +1038,11 @@ IoBitFieldAnd32 (
 \r
 /**\r
   Reads a bit field in a 32-bit port, performs a bitwise AND followed by a\r
-  bitwise inclusive OR, and writes the result back to the bit field in the\r
+  bitwise OR, and writes the result back to the bit field in the\r
   32-bit port.\r
 \r
   Reads the 32-bit I/O port specified by Port, performs a bitwise AND followed\r
-  by a bitwise inclusive OR between the read result and the value specified by\r
+  by a bitwise OR between the read result and the value specified by\r
   AndData, and writes the result to the 32-bit I/O port specified by Port. The\r
   value written to the I/O port is returned. This function must guarantee that\r
   all I/O read and write operations are serialized. Extra left bits in both\r
@@ -889,6 +1053,8 @@ IoBitFieldAnd32 (
   If StartBit is greater than 31, then ASSERT().\r
   If EndBit is greater than 31, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -956,10 +1122,10 @@ IoWrite64 (
   );\r
 \r
 /**\r
-  Reads a 64-bit I/O port, performs a bitwise inclusive OR, and writes the\r
+  Reads a 64-bit I/O port, performs a bitwise OR, and writes the\r
   result back to the 64-bit I/O port.\r
 \r
-  Reads the 64-bit I/O port specified by Port, performs a bitwise inclusive OR\r
+  Reads the 64-bit I/O port specified by Port, performs a bitwise OR\r
   between the read result and the value specified by OrData, and writes the\r
   result to the 64-bit I/O port specified by Port. The value written to the I/O\r
   port is returned. This function must guarantee that all I/O read and write\r
@@ -1008,8 +1174,8 @@ IoAnd64 (
   );\r
 \r
 /**\r
-  Reads a 64-bit I/O port, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 64-bit I/O port.\r
+  Reads a 64-bit I/O port, performs a bitwise AND followed by a bitwise \r
+  OR, and writes the result back to the 64-bit I/O port.\r
 \r
   Reads the 64-bit I/O port specified by Port, performs a bitwise AND between\r
   the read result and the value specified by AndData, performs a bitwise OR\r
@@ -1078,6 +1244,7 @@ IoBitFieldRead64 (
   If StartBit is greater than 63, then ASSERT().\r
   If EndBit is greater than 63, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1102,7 +1269,7 @@ IoBitFieldWrite64 (
   Reads a bit field in a 64-bit port, performs a bitwise OR, and writes the\r
   result back to the bit field in the 64-bit port.\r
 \r
-  Reads the 64-bit I/O port specified by Port, performs a bitwise inclusive OR\r
+  Reads the 64-bit I/O port specified by Port, performs a bitwise OR\r
   between the read result and the value specified by OrData, and writes the\r
   result to the 64-bit I/O port specified by Port. The value written to the I/O\r
   port is returned. This function must guarantee that all I/O read and write\r
@@ -1113,6 +1280,7 @@ IoBitFieldWrite64 (
   If StartBit is greater than 63, then ASSERT().\r
   If EndBit is greater than 63, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1148,6 +1316,7 @@ IoBitFieldOr64 (
   If StartBit is greater than 63, then ASSERT().\r
   If EndBit is greater than 63, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1170,11 +1339,11 @@ IoBitFieldAnd64 (
 \r
 /**\r
   Reads a bit field in a 64-bit port, performs a bitwise AND followed by a\r
-  bitwise inclusive OR, and writes the result back to the bit field in the\r
+  bitwise OR, and writes the result back to the bit field in the\r
   64-bit port.\r
 \r
   Reads the 64-bit I/O port specified by Port, performs a bitwise AND followed\r
-  by a bitwise inclusive OR between the read result and the value specified by\r
+  by a bitwise OR between the read result and the value specified by\r
   AndData, and writes the result to the 64-bit I/O port specified by Port. The\r
   value written to the I/O port is returned. This function must guarantee that\r
   all I/O read and write operations are serialized. Extra left bits in both\r
@@ -1185,6 +1354,8 @@ IoBitFieldAnd64 (
   If StartBit is greater than 63, then ASSERT().\r
   If EndBit is greater than 63, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Port      The I/O port to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1238,6 +1409,8 @@ MmioRead8 (
 \r
   @param  Address The MMIO register to write.\r
   @param  Value   The value to write to the MMIO register.\r
+  \r
+  @return Value.\r
 \r
 **/\r
 UINT8\r
@@ -1248,11 +1421,11 @@ MmioWrite8 (
   );\r
 \r
 /**\r
-  Reads an 8-bit MMIO register, performs a bitwise inclusive OR, and writes the\r
+  Reads an 8-bit MMIO register, performs a bitwise OR, and writes the\r
   result back to the 8-bit MMIO register.\r
 \r
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
+  Reads the 8-bit MMIO register specified by Address, performs a bitwise \r
+  OR between the read result and the value specified by OrData, and\r
   writes the result to the 8-bit MMIO register specified by Address. The value\r
   written to the MMIO register is returned. This function must guarantee that\r
   all MMIO read and write operations are serialized.\r
@@ -1298,8 +1471,8 @@ MmioAnd8 (
   );\r
 \r
 /**\r
-  Reads an 8-bit MMIO register, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 8-bit MMIO register.\r
+  Reads an 8-bit MMIO register, performs a bitwise AND followed by a bitwise \r
+  OR, and writes the result back to the 8-bit MMIO register.\r
 \r
   Reads the 8-bit MMIO register specified by Address, performs a bitwise AND\r
   between the read result and the value specified by AndData, performs a\r
@@ -1365,6 +1538,7 @@ MmioBitFieldRead8 (
   If StartBit is greater than 7, then ASSERT().\r
   If EndBit is greater than 7, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1389,8 +1563,8 @@ MmioBitFieldWrite8 (
   Reads a bit field in an 8-bit MMIO register, performs a bitwise OR, and\r
   writes the result back to the bit field in the 8-bit MMIO register.\r
 \r
-  Reads the 8-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
+  Reads the 8-bit MMIO register specified by Address, performs a bitwise \r
+  OR between the read result and the value specified by OrData, and\r
   writes the result to the 8-bit MMIO register specified by Address. The value\r
   written to the MMIO register is returned. This function must guarantee that\r
   all MMIO read and write operations are serialized. Extra left bits in OrData\r
@@ -1400,6 +1574,7 @@ MmioBitFieldWrite8 (
   If StartBit is greater than 7, then ASSERT().\r
   If EndBit is greater than 7, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1435,6 +1610,7 @@ MmioBitFieldOr8 (
   If StartBit is greater than 7, then ASSERT().\r
   If EndBit is greater than 7, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1457,11 +1633,11 @@ MmioBitFieldAnd8 (
 \r
 /**\r
   Reads a bit field in an 8-bit MMIO register, performs a bitwise AND followed\r
-  by a bitwise inclusive OR, and writes the result back to the bit field in the\r
+  by a bitwise OR, and writes the result back to the bit field in the\r
   8-bit MMIO register.\r
 \r
   Reads the 8-bit MMIO register specified by Address, performs a bitwise AND\r
-  followed by a bitwise inclusive OR between the read result and the value\r
+  followed by a bitwise OR between the read result and the value\r
   specified by AndData, and writes the result to the 8-bit MMIO register\r
   specified by Address. The value written to the MMIO register is returned.\r
   This function must guarantee that all MMIO read and write operations are\r
@@ -1471,6 +1647,8 @@ MmioBitFieldAnd8 (
   If StartBit is greater than 7, then ASSERT().\r
   If EndBit is greater than 7, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1526,6 +1704,8 @@ MmioRead16 (
 \r
   @param  Address The MMIO register to write.\r
   @param  Value   The value to write to the MMIO register.\r
+  \r
+  @return Value.\r
 \r
 **/\r
 UINT16\r
@@ -1536,11 +1716,11 @@ MmioWrite16 (
   );\r
 \r
 /**\r
-  Reads a 16-bit MMIO register, performs a bitwise inclusive OR, and writes the\r
+  Reads a 16-bit MMIO register, performs a bitwise OR, and writes the\r
   result back to the 16-bit MMIO register.\r
 \r
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
+  Reads the 16-bit MMIO register specified by Address, performs a bitwise \r
+  OR between the read result and the value specified by OrData, and\r
   writes the result to the 16-bit MMIO register specified by Address. The value\r
   written to the MMIO register is returned. This function must guarantee that\r
   all MMIO read and write operations are serialized.\r
@@ -1588,8 +1768,8 @@ MmioAnd16 (
   );\r
 \r
 /**\r
-  Reads a 16-bit MMIO register, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 16-bit MMIO register.\r
+  Reads a 16-bit MMIO register, performs a bitwise AND followed by a bitwise \r
+  OR, and writes the result back to the 16-bit MMIO register.\r
 \r
   Reads the 16-bit MMIO register specified by Address, performs a bitwise AND\r
   between the read result and the value specified by AndData, performs a\r
@@ -1657,6 +1837,7 @@ MmioBitFieldRead16 (
   If StartBit is greater than 15, then ASSERT().\r
   If EndBit is greater than 15, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1681,8 +1862,8 @@ MmioBitFieldWrite16 (
   Reads a bit field in a 16-bit MMIO register, performs a bitwise OR, and\r
   writes the result back to the bit field in the 16-bit MMIO register.\r
 \r
-  Reads the 16-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
+  Reads the 16-bit MMIO register specified by Address, performs a bitwise \r
+  OR between the read result and the value specified by OrData, and\r
   writes the result to the 16-bit MMIO register specified by Address. The value\r
   written to the MMIO register is returned. This function must guarantee that\r
   all MMIO read and write operations are serialized. Extra left bits in OrData\r
@@ -1693,6 +1874,7 @@ MmioBitFieldWrite16 (
   If StartBit is greater than 15, then ASSERT().\r
   If EndBit is greater than 15, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1729,6 +1911,7 @@ MmioBitFieldOr16 (
   If StartBit is greater than 15, then ASSERT().\r
   If EndBit is greater than 15, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1751,11 +1934,11 @@ MmioBitFieldAnd16 (
 \r
 /**\r
   Reads a bit field in a 16-bit MMIO register, performs a bitwise AND followed\r
-  by a bitwise inclusive OR, and writes the result back to the bit field in the\r
+  by a bitwise OR, and writes the result back to the bit field in the\r
   16-bit MMIO register.\r
 \r
   Reads the 16-bit MMIO register specified by Address, performs a bitwise AND\r
-  followed by a bitwise inclusive OR between the read result and the value\r
+  followed by a bitwise OR between the read result and the value\r
   specified by AndData, and writes the result to the 16-bit MMIO register\r
   specified by Address. The value written to the MMIO register is returned.\r
   This function must guarantee that all MMIO read and write operations are\r
@@ -1766,6 +1949,8 @@ MmioBitFieldAnd16 (
   If StartBit is greater than 15, then ASSERT().\r
   If EndBit is greater than 15, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1821,6 +2006,8 @@ MmioRead32 (
 \r
   @param  Address The MMIO register to write.\r
   @param  Value   The value to write to the MMIO register.\r
+  \r
+  @return Value.\r
 \r
 **/\r
 UINT32\r
@@ -1831,11 +2018,11 @@ MmioWrite32 (
   );\r
 \r
 /**\r
-  Reads a 32-bit MMIO register, performs a bitwise inclusive OR, and writes the\r
+  Reads a 32-bit MMIO register, performs a bitwise OR, and writes the\r
   result back to the 32-bit MMIO register.\r
 \r
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
+  Reads the 32-bit MMIO register specified by Address, performs a bitwise \r
+  OR between the read result and the value specified by OrData, and\r
   writes the result to the 32-bit MMIO register specified by Address. The value\r
   written to the MMIO register is returned. This function must guarantee that\r
   all MMIO read and write operations are serialized.\r
@@ -1883,8 +2070,8 @@ MmioAnd32 (
   );\r
 \r
 /**\r
-  Reads a 32-bit MMIO register, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 32-bit MMIO register.\r
+  Reads a 32-bit MMIO register, performs a bitwise AND followed by a bitwise \r
+  OR, and writes the result back to the 32-bit MMIO register.\r
 \r
   Reads the 32-bit MMIO register specified by Address, performs a bitwise AND\r
   between the read result and the value specified by AndData, performs a\r
@@ -1952,6 +2139,7 @@ MmioBitFieldRead32 (
   If StartBit is greater than 31, then ASSERT().\r
   If EndBit is greater than 31, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -1976,8 +2164,8 @@ MmioBitFieldWrite32 (
   Reads a bit field in a 32-bit MMIO register, performs a bitwise OR, and\r
   writes the result back to the bit field in the 32-bit MMIO register.\r
 \r
-  Reads the 32-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
+  Reads the 32-bit MMIO register specified by Address, performs a bitwise \r
+  OR between the read result and the value specified by OrData, and\r
   writes the result to the 32-bit MMIO register specified by Address. The value\r
   written to the MMIO register is returned. This function must guarantee that\r
   all MMIO read and write operations are serialized. Extra left bits in OrData\r
@@ -1988,6 +2176,7 @@ MmioBitFieldWrite32 (
   If StartBit is greater than 31, then ASSERT().\r
   If EndBit is greater than 31, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -2024,6 +2213,7 @@ MmioBitFieldOr32 (
   If StartBit is greater than 31, then ASSERT().\r
   If EndBit is greater than 31, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -2046,11 +2236,11 @@ MmioBitFieldAnd32 (
 \r
 /**\r
   Reads a bit field in a 32-bit MMIO register, performs a bitwise AND followed\r
-  by a bitwise inclusive OR, and writes the result back to the bit field in the\r
+  by a bitwise OR, and writes the result back to the bit field in the\r
   32-bit MMIO register.\r
 \r
   Reads the 32-bit MMIO register specified by Address, performs a bitwise AND\r
-  followed by a bitwise inclusive OR between the read result and the value\r
+  followed by a bitwise OR between the read result and the value\r
   specified by AndData, and writes the result to the 32-bit MMIO register\r
   specified by Address. The value written to the MMIO register is returned.\r
   This function must guarantee that all MMIO read and write operations are\r
@@ -2061,6 +2251,8 @@ MmioBitFieldAnd32 (
   If StartBit is greater than 31, then ASSERT().\r
   If EndBit is greater than 31, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -2126,11 +2318,11 @@ MmioWrite64 (
   );\r
 \r
 /**\r
-  Reads a 64-bit MMIO register, performs a bitwise inclusive OR, and writes the\r
+  Reads a 64-bit MMIO register, performs a bitwise OR, and writes the\r
   result back to the 64-bit MMIO register.\r
 \r
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
+  Reads the 64-bit MMIO register specified by Address, performs a bitwise \r
+  OR between the read result and the value specified by OrData, and\r
   writes the result to the 64-bit MMIO register specified by Address. The value\r
   written to the MMIO register is returned. This function must guarantee that\r
   all MMIO read and write operations are serialized.\r
@@ -2178,8 +2370,8 @@ MmioAnd64 (
   );\r
 \r
 /**\r
-  Reads a 64-bit MMIO register, performs a bitwise AND followed by a bitwise\r
-  inclusive OR, and writes the result back to the 64-bit MMIO register.\r
+  Reads a 64-bit MMIO register, performs a bitwise AND followed by a bitwise \r
+  OR, and writes the result back to the 64-bit MMIO register.\r
 \r
   Reads the 64-bit MMIO register specified by Address, performs a bitwise AND\r
   between the read result and the value specified by AndData, performs a\r
@@ -2247,6 +2439,7 @@ MmioBitFieldRead64 (
   If StartBit is greater than 63, then ASSERT().\r
   If EndBit is greater than 63, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -2271,8 +2464,8 @@ MmioBitFieldWrite64 (
   Reads a bit field in a 64-bit MMIO register, performs a bitwise OR, and\r
   writes the result back to the bit field in the 64-bit MMIO register.\r
 \r
-  Reads the 64-bit MMIO register specified by Address, performs a bitwise\r
-  inclusive OR between the read result and the value specified by OrData, and\r
+  Reads the 64-bit MMIO register specified by Address, performs a bitwise \r
+  OR between the read result and the value specified by OrData, and\r
   writes the result to the 64-bit MMIO register specified by Address. The value\r
   written to the MMIO register is returned. This function must guarantee that\r
   all MMIO read and write operations are serialized. Extra left bits in OrData\r
@@ -2283,6 +2476,7 @@ MmioBitFieldWrite64 (
   If StartBit is greater than 63, then ASSERT().\r
   If EndBit is greater than 63, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -2319,6 +2513,7 @@ MmioBitFieldOr64 (
   If StartBit is greater than 63, then ASSERT().\r
   If EndBit is greater than 63, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -2341,11 +2536,11 @@ MmioBitFieldAnd64 (
 \r
 /**\r
   Reads a bit field in a 64-bit MMIO register, performs a bitwise AND followed\r
-  by a bitwise inclusive OR, and writes the result back to the bit field in the\r
+  by a bitwise OR, and writes the result back to the bit field in the\r
   64-bit MMIO register.\r
 \r
   Reads the 64-bit MMIO register specified by Address, performs a bitwise AND\r
-  followed by a bitwise inclusive OR between the read result and the value\r
+  followed by a bitwise OR between the read result and the value\r
   specified by AndData, and writes the result to the 64-bit MMIO register\r
   specified by Address. The value written to the MMIO register is returned.\r
   This function must guarantee that all MMIO read and write operations are\r
@@ -2356,6 +2551,8 @@ MmioBitFieldAnd64 (
   If StartBit is greater than 63, then ASSERT().\r
   If EndBit is greater than 63, then ASSERT().\r
   If EndBit is less than StartBit, then ASSERT().\r
+  If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
+  If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().\r
 \r
   @param  Address   MMIO register to write.\r
   @param  StartBit  The ordinal of the least significant bit in the bit field.\r
@@ -2509,7 +2706,7 @@ MmioReadBuffer64 (
   @param  Length          The size, in bytes, of Buffer.\r
   @param  Buffer          Pointer to a system memory buffer containing the data to write.\r
 \r
-  @return Size in bytes of the copy.\r
+  @return Buffer\r
 \r
 **/\r
 UINT8 *\r
@@ -2525,7 +2722,7 @@ MmioWriteBuffer8 (
 \r
   Copy data from system memory specified by Buffer to MMIO region specified \r
   by starting address StartAddress by using 16-bit access. The total number \r
-  of byte to be copied is specified by Length. Length is returned.\r
+  of byte to be copied is specified by Length. Buffer is returned.\r
   \r
   If StartAddress is not aligned on a 16-bit boundary, then ASSERT().\r
 \r
@@ -2540,7 +2737,7 @@ MmioWriteBuffer8 (
   @param  Length          The size, in bytes, of Buffer.\r
   @param  Buffer          Pointer to a system memory buffer containing the data to write.\r
 \r
-  @return Size in bytes of the copy.\r
+  @return Buffer\r
 \r
 **/\r
 UINT16 *\r
@@ -2556,7 +2753,7 @@ MmioWriteBuffer16 (
 \r
   Copy data from system memory specified by Buffer to MMIO region specified \r
   by starting address StartAddress by using 32-bit access. The total number \r
-  of byte to be copied is specified by Length. Length is returned.\r
+  of byte to be copied is specified by Length. Buffer is returned.\r
   \r
   If StartAddress is not aligned on a 32-bit boundary, then ASSERT().\r
 \r
@@ -2571,7 +2768,7 @@ MmioWriteBuffer16 (
   @param  Length          The size, in bytes, of Buffer.\r
   @param  Buffer          Pointer to a system memory buffer containing the data to write.\r
 \r
-  @return Size in bytes of the copy.\r
+  @return Buffer\r
 \r
 **/\r
 UINT32 *\r
@@ -2587,7 +2784,7 @@ MmioWriteBuffer32 (
 \r
   Copy data from system memory specified by Buffer to MMIO region specified \r
   by starting address StartAddress by using 64-bit access. The total number \r
-  of byte to be copied is specified by Length. Length is returned.\r
+  of byte to be copied is specified by Length. Buffer is returned.\r
   \r
   If StartAddress is not aligned on a 64-bit boundary, then ASSERT().\r
 \r
@@ -2602,7 +2799,7 @@ MmioWriteBuffer32 (
   @param  Length          The size, in bytes, of Buffer.\r
   @param  Buffer          Pointer to a system memory buffer containing the data to write.\r
 \r
-  @return Size in bytes of the copy.\r
+  @return Buffer\r
 \r
 **/\r
 UINT64 *\r