#ifndef __IO_LIB_H__\r
#define __IO_LIB_H__\r
\r
+/**\r
+ Macro that converts PCI Segment and I/O Port to an address that can be\r
+ passed to the I/O Library functions.\r
+ \r
+ Computes an address that is compatible with the I/O Library functions. \r
+ The unused upper bits of Segment, and Port are stripped prior to the \r
+ generation of the address.\r
+ \r
+ @param Segment PCI Segment number. Range 0..65535.\r
+ @param Port I/O Port number. Range 0..65535.\r
+ \r
+ @return An address that the I/o Library functions need.\r
+\r
+**/\r
+\r
#define IO_LIB_ADDRESS(Segment,Port) \\r
( ((Port) & 0xffff) | (((Segment) & 0xffff) << 16) )\r
\r
serialized.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to read.\r
\r
operations are serialized.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
+ \r
@param Port The I/O port to write.\r
@param Value The value to write to the I/O port.\r
\r
operations are serialized.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to write.\r
@param OrData The value to OR with the read value from the I/O port.\r
are serialized.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
+ \r
@param Port The I/O port to write.\r
@param AndData The value to AND with the read value from the I/O port.\r
\r
I/O read and write operations are serialized.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
-\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
+ \r
@param Port The I/O port to write.\r
@param AndData The value to AND with the read value from the I/O port.\r
@param OrData The value to OR with the result of the AND operation.\r
the StartBit and the EndBit. The value of the bit field is returned.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
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
left bits in Value are stripped.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
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
operations are serialized. Extra left bits in OrData are stripped.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
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
are serialized. Extra left bits in AndData are stripped.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
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
AndData and OrData are stripped.\r
\r
If 16-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 16-bit boundary, then ASSERT().\r
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
serialized.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
+ \r
@param Port The I/O port to read.\r
\r
@return The value read.\r
operations are serialized.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
-\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
+ \r
@param Port The I/O port to write.\r
@param Value The value to write to the I/O port.\r
\r
operations are serialized.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to write.\r
@param OrData The value to OR with the read value from the I/O port.\r
are serialized.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to write.\r
@param AndData The value to AND with the read value from the I/O port.\r
I/O read and write operations are serialized.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to write.\r
@param AndData The value to AND with the read value from the I/O port.\r
the StartBit and the EndBit. The value of the bit field is returned.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
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
left bits in Value are stripped.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
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
operations are serialized. Extra left bits in OrData are stripped.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
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
are serialized. Extra left bits in AndData are stripped.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
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
AndData and OrData are stripped.\r
\r
If 32-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 32-bit boundary, then ASSERT().\r
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
serialized.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to read.\r
\r
operations are serialized.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to write.\r
@param Value The value to write to the I/O port.\r
operations are serialized.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to write.\r
@param OrData The value to OR with the read value from the I/O port.\r
are serialized.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to write.\r
@param AndData The value to AND with the read value from the I/O port.\r
I/O read and write operations are serialized.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Port The I/O port to write.\r
@param AndData The value to AND with the read value from the I/O port.\r
the StartBit and the EndBit. The value of the bit field is returned.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
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
left bits in Value are stripped.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
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
operations are serialized. Extra left bits in OrData are stripped.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
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
are serialized. Extra left bits in AndData are stripped.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
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
AndData and OrData are stripped.\r
\r
If 64-bit I/O port operations are not supported, then ASSERT().\r
+ If Port is not aligned on a 64-bit boundary, then ASSERT().\r
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
operations are serialized.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to read.\r
\r
and write operations are serialized.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param Value The value to write to the MMIO register.\r
all MMIO read and write operations are serialized.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param OrData The value to OR with the read value from the MMIO register.\r
read and write operations are serialized.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param AndData The value to AND with the read value from the MMIO register.\r
must guarantee that all MMIO read and write operations are serialized.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
-\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param AndData The value to AND with the read value from the MMIO register.\r
the StartBit and the EndBit. The value of the bit field is returned.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
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
MMIO register are preserved. The new value of the 16-bit register is returned.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
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
are stripped.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
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
stripped.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
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
serialized. Extra left bits in both AndData and OrData are stripped.\r
\r
If 16-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 16-bit boundary, then ASSERT().\r
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
operations are serialized.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to read.\r
\r
and write operations are serialized.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param Value The value to write to the MMIO register.\r
all MMIO read and write operations are serialized.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param OrData The value to OR with the read value from the MMIO register.\r
read and write operations are serialized.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param AndData The value to AND with the read value from the MMIO register.\r
must guarantee that all MMIO read and write operations are serialized.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
-\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param AndData The value to AND with the read value from the MMIO register.\r
the StartBit and the EndBit. The value of the bit field is returned.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
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
MMIO register are preserved. The new value of the 32-bit register is returned.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
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
are stripped.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
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
stripped.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
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
serialized. Extra left bits in both AndData and OrData are stripped.\r
\r
If 32-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 32-bit boundary, then ASSERT().\r
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
operations are serialized.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to read.\r
\r
and write operations are serialized.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param Value The value to write to the MMIO register.\r
all MMIO read and write operations are serialized.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param OrData The value to OR with the read value from the MMIO register.\r
read and write operations are serialized.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param AndData The value to AND with the read value from the MMIO register.\r
must guarantee that all MMIO read and write operations are serialized.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
-\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param Address The MMIO register to write.\r
@param AndData The value to AND with the read value from the MMIO register.\r
the StartBit and the EndBit. The value of the bit field is returned.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
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
MMIO register are preserved. The new value of the 64-bit register is returned.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
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
are stripped.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
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
stripped.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
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
serialized. Extra left bits in both AndData and OrData are stripped.\r
\r
If 64-bit MMIO register operations are not supported, then ASSERT().\r
+ If Address is not aligned on a 64-bit boundary, then ASSERT().\r
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
\r
\r
@param StartAddress Starting address for the MMIO region to be copied from.\r
- @param Length Size in bytes of the copy.\r
+ @param Length The size, in bytes, of Buffer.\r
@param Buffer Pointer to a system memory buffer receiving the data read.\r
\r
@return Buffer\r
If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param StartAddress Starting address for the MMIO region to be copied from.\r
- @param Length Size in bytes of the copy.\r
+ @param Length The size, in bytes, of Buffer.\r
@param Buffer Pointer to a system memory buffer receiving the data read.\r
\r
@return Buffer\r
If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param StartAddress Starting address for the MMIO region to be copied from.\r
- @param Length Size in bytes of the copy.\r
+ @param Length The size, in bytes, of Buffer.\r
@param Buffer Pointer to a system memory buffer receiving the data read.\r
\r
@return Buffer\r
If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param StartAddress Starting address for the MMIO region to be copied from.\r
- @param Length Size in bytes of the copy.\r
+ @param Length The size, in bytes, of Buffer.\r
@param Buffer Pointer to a system memory buffer receiving the data read.\r
\r
@return Buffer\r
\r
\r
@param StartAddress Starting address for the MMIO region to be copied to.\r
- @param Length Size in bytes of the copy.\r
+ @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
If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
\r
@param StartAddress Starting address for the MMIO region to be copied to.\r
- @param Length Size in bytes of the copy.\r
+ @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
If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
\r
@param StartAddress Starting address for the MMIO region to be copied to.\r
- @param Length Size in bytes of the copy.\r
+ @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
If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
\r
@param StartAddress Starting address for the MMIO region to be copied to.\r
- @param Length Size in bytes of the copy.\r
+ @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