/** @file | |
I/O and MMIO Library Services that do I/O and also enable the I/O operation | |
to be replayed during an S3 resume. This library class maps directly on top | |
of the IoLib class. | |
Copyright (c) 2006 - 2012, Intel Corporation. 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 __S3_IO_LIB_H__ | |
#define __S3_IO_LIB_H__ | |
/** | |
Reads an 8-bit I/O port and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 8-bit I/O port specified by Port. The 8-bit read value is returned. | |
This function must guarantee that all I/O read and write operations are | |
serialized. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to read. | |
@return The value read. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoRead8 ( | |
IN UINTN Port | |
); | |
/** | |
Writes an 8-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Writes the 8-bit I/O port specified by Port with the value specified by Value | |
and returns Value. This function must guarantee that all I/O read and write | |
operations are serialized. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] Value The value to write to the I/O port. | |
@return The value written the I/O port. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoWrite8 ( | |
IN UINTN Port, | |
IN UINT8 Value | |
); | |
/** | |
Reads an 8-bit I/O port, performs a bitwise OR, writes the | |
result back to the 8-bit I/O port, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the 8-bit I/O port specified by Port, performs a bitwise OR | |
between the read result and the value specified by OrData, and writes the | |
result to the 8-bit I/O port specified by Port. The value written to the I/O | |
port is returned. This function must guarantee that all I/O read and write | |
operations are serialized. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] OrData The value to OR with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoOr8 ( | |
IN UINTN Port, | |
IN UINT8 OrData | |
); | |
/** | |
Reads an 8-bit I/O port, performs a bitwise AND, writes the result back | |
to the 8-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 8-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, and writes the result to | |
the 8-bit I/O port specified by Port. The value written to the I/O port is | |
returned. This function must guarantee that all I/O read and write operations | |
are serialized. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoAnd8 ( | |
IN UINTN Port, | |
IN UINT8 AndData | |
); | |
/** | |
Reads an 8-bit I/O port, performs a bitwise AND followed by a bitwise | |
inclusive OR, writes the result back to the 8-bit I/O port, and saves | |
the value in the S3 script to be replayed on S3 resume. | |
Reads the 8-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, performs a bitwise OR | |
between the result of the AND operation and the value specified by OrData, | |
and writes the result to the 8-bit I/O port specified by Port. The value | |
written to the I/O port is returned. This function must guarantee that all | |
I/O read and write operations are serialized. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the I/O port. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoAndThenOr8 ( | |
IN UINTN Port, | |
IN UINT8 AndData, | |
IN UINT8 OrData | |
); | |
/** | |
Reads a bit field of an I/O register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the bit field in an 8-bit I/O register. The bit field is specified by | |
the StartBit and the EndBit. The value of the bit field is returned. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
@param[in] Port The I/O port to read. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@return The value read. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoBitFieldRead8 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit | |
); | |
/** | |
Writes a bit field to an I/O register and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Writes Value to the bit field of the I/O register. The bit field is specified | |
by the StartBit and the EndBit. All other bits in the destination I/O | |
register are preserved. The value written to the I/O port is returned. | |
Remaining bits in Value are stripped. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@param[in] Value New value of the bit field. | |
@return The value written back to the I/O port. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoBitFieldWrite8 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT8 Value | |
); | |
/** | |
Reads a bit field in an 8-bit port, performs a bitwise OR, writes the | |
result back to the bit field in the 8-bit port, and saves the value in the | |
S3 script to be replayed on S3 resume. | |
Reads the 8-bit I/O port specified by Port, performs a bitwise OR | |
between the read result and the value specified by OrData, and writes the | |
result to the 8-bit I/O port specified by Port. The value written to the I/O | |
port is returned. This function must guarantee that all I/O read and write | |
operations are serialized. Extra left bits in OrData are stripped. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@param[in] OrData The value to OR with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoBitFieldOr8 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT8 OrData | |
); | |
/** | |
Reads a bit field in an 8-bit port, performs a bitwise AND, writes the | |
result back to the bit field in the 8-bit port, and saves the value in the | |
S3 script to be replayed on S3 resume. | |
Reads the 8-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, and writes the result to | |
the 8-bit I/O port specified by Port. The value written to the I/O port is | |
returned. This function must guarantee that all I/O read and write operations | |
are serialized. Extra left bits in AndData are stripped. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoBitFieldAnd8 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT8 AndData | |
); | |
/** | |
Reads a bit field in an 8-bit port, performs a bitwise AND followed by a | |
bitwise OR, writes the result back to the bit field in the | |
8-bit port, and saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 8-bit I/O port specified by Port, performs a bitwise AND followed | |
by a bitwise OR between the read result and the value specified by | |
AndData, and writes the result to the 8-bit I/O port specified by Port. The | |
value written to the I/O port is returned. This function must guarantee that | |
all I/O read and write operations are serialized. Extra left bits in both | |
AndData and OrData are stripped. | |
If 8-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the I/O port. | |
**/ | |
UINT8 | |
EFIAPI | |
S3IoBitFieldAndThenOr8 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT8 AndData, | |
IN UINT8 OrData | |
); | |
/** | |
Reads a 16-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 16-bit I/O port specified by Port. The 16-bit read value is returned. | |
This function must guarantee that all I/O read and write operations are | |
serialized. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to read. | |
@return The value read. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoRead16 ( | |
IN UINTN Port | |
); | |
/** | |
Writes a 16-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Writes the 16-bit I/O port specified by Port with the value specified by Value | |
and returns Value. This function must guarantee that all I/O read and write | |
operations are serialized. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] Value The value to write to the I/O port. | |
@return The value written the I/O port. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoWrite16 ( | |
IN UINTN Port, | |
IN UINT16 Value | |
); | |
/** | |
Reads a 16-bit I/O port, performs a bitwise OR, writes the | |
result back to the 16-bit I/O port, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the 16-bit I/O port specified by Port, performs a bitwise OR | |
between the read result and the value specified by OrData, and writes the | |
result to the 16-bit I/O port specified by Port. The value written to the I/O | |
port is returned. This function must guarantee that all I/O read and write | |
operations are serialized. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] OrData The value to OR with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoOr16 ( | |
IN UINTN Port, | |
IN UINT16 OrData | |
); | |
/** | |
Reads a 16-bit I/O port, performs a bitwise AND, writes the result back | |
to the 16-bit I/O port , and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 16-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, and writes the result to | |
the 16-bit I/O port specified by Port. The value written to the I/O port is | |
returned. This function must guarantee that all I/O read and write operations | |
are serialized. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoAnd16 ( | |
IN UINTN Port, | |
IN UINT16 AndData | |
); | |
/** | |
Reads a 16-bit I/O port, performs a bitwise AND followed by a bitwise | |
inclusive OR, writes the result back to the 16-bit I/O port, and saves | |
the value in the S3 script to be replayed on S3 resume. | |
Reads the 16-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, performs a bitwise OR | |
between the result of the AND operation and the value specified by OrData, | |
and writes the result to the 16-bit I/O port specified by Port. The value | |
written to the I/O port is returned. This function must guarantee that all | |
I/O read and write operations are serialized. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the I/O port. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoAndThenOr16 ( | |
IN UINTN Port, | |
IN UINT16 AndData, | |
IN UINT16 OrData | |
); | |
/** | |
Reads a bit field of an I/O register saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the bit field in a 16-bit I/O register. The bit field is specified by | |
the StartBit and the EndBit. The value of the bit field is returned. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
@param[in] Port The I/O port to read. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@return The value read. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoBitFieldRead16 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit | |
); | |
/** | |
Writes a bit field to an I/O register, and saves the value in the S3 script | |
to be replayed on S3 resume. | |
Writes Value to the bit field of the I/O register. The bit field is specified | |
by the StartBit and the EndBit. All other bits in the destination I/O | |
register are preserved. The value written to the I/O port is returned. Extra | |
left bits in Value are stripped. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@param[in] Value New value of the bit field. | |
@return The value written back to the I/O port. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoBitFieldWrite16 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT16 Value | |
); | |
/** | |
Reads a bit field in a 16-bit port, performs a bitwise OR, writes the | |
result back to the bit field in the 16-bit port, and saves the value in the | |
S3 script to be replayed on S3 resume. | |
Reads the 16-bit I/O port specified by Port, performs a bitwise OR | |
between the read result and the value specified by OrData, and writes the | |
result to the 16-bit I/O port specified by Port. The value written to the I/O | |
port is returned. This function must guarantee that all I/O read and write | |
operations are serialized. Extra left bits in OrData are stripped. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@param[in] OrData The value to OR with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoBitFieldOr16 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT16 OrData | |
); | |
/** | |
Reads a bit field in a 16-bit port, performs a bitwise AND, writes the | |
result back to the bit field in the 16-bit port, and saves the value in the | |
S3 script to be replayed on S3 resume. | |
Reads the 16-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, and writes the result to | |
the 16-bit I/O port specified by Port. The value written to the I/O port is | |
returned. This function must guarantee that all I/O read and write operations | |
are serialized. Extra left bits in AndData are stripped. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoBitFieldAnd16 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT16 AndData | |
); | |
/** | |
Reads a bit field in a 16-bit port, performs a bitwise AND followed by a | |
bitwise OR, writes the result back to the bit field in the | |
16-bit port, and saves the value in the S3 script to be replayed on S3 | |
resume. | |
Reads the 16-bit I/O port specified by Port, performs a bitwise AND followed | |
by a bitwise OR between the read result and the value specified by | |
AndData, and writes the result to the 16-bit I/O port specified by Port. The | |
value written to the I/O port is returned. This function must guarantee that | |
all I/O read and write operations are serialized. Extra left bits in both | |
AndData and OrData are stripped. | |
If 16-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the I/O port. | |
**/ | |
UINT16 | |
EFIAPI | |
S3IoBitFieldAndThenOr16 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT16 AndData, | |
IN UINT16 OrData | |
); | |
/** | |
Reads a 32-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 32-bit I/O port specified by Port. The 32-bit read value is returned. | |
This function must guarantee that all I/O read and write operations are | |
serialized. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to read. | |
@return The value read. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoRead32 ( | |
IN UINTN Port | |
); | |
/** | |
Writes a 32-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Writes the 32-bit I/O port specified by Port with the value specified by Value | |
and returns Value. This function must guarantee that all I/O read and write | |
operations are serialized. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] Value The value to write to the I/O port. | |
@return The value written the I/O port. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoWrite32 ( | |
IN UINTN Port, | |
IN UINT32 Value | |
); | |
/** | |
Reads a 32-bit I/O port, performs a bitwise OR, writes the | |
result back to the 32-bit I/O port, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the 32-bit I/O port specified by Port, performs a bitwise OR | |
between the read result and the value specified by OrData, and writes the | |
result to the 32-bit I/O port specified by Port. The value written to the I/O | |
port is returned. This function must guarantee that all I/O read and write | |
operations are serialized. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] OrData The value to OR with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoOr32 ( | |
IN UINTN Port, | |
IN UINT32 OrData | |
); | |
/** | |
Reads a 32-bit I/O port, performs a bitwise AND, writes the result back | |
to the 32-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 32-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, and writes the result to | |
the 32-bit I/O port specified by Port. The value written to the I/O port is | |
returned. This function must guarantee that all I/O read and write operations | |
are serialized. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoAnd32 ( | |
IN UINTN Port, | |
IN UINT32 AndData | |
); | |
/** | |
Reads a 32-bit I/O port, performs a bitwise AND followed by a bitwise | |
inclusive OR, writes the result back to the 32-bit I/O port, and saves | |
the value in the S3 script to be replayed on S3 resume. | |
Reads the 32-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, performs a bitwise OR | |
between the result of the AND operation and the value specified by OrData, | |
and writes the result to the 32-bit I/O port specified by Port. The value | |
written to the I/O port is returned. This function must guarantee that all | |
I/O read and write operations are serialized. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the I/O port. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoAndThenOr32 ( | |
IN UINTN Port, | |
IN UINT32 AndData, | |
IN UINT32 OrData | |
); | |
/** | |
Reads a bit field of an I/O register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the bit field in a 32-bit I/O register. The bit field is specified by | |
the StartBit and the EndBit. The value of the bit field is returned. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
@param[in] Port The I/O port to read. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@return The value read. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoBitFieldRead32 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit | |
); | |
/** | |
Writes a bit field to an I/O register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Writes Value to the bit field of the I/O register. The bit field is specified | |
by the StartBit and the EndBit. All other bits in the destination I/O | |
register are preserved. The value written to the I/O port is returned. Extra | |
left bits in Value are stripped. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@param[in] Value New value of the bit field. | |
@return The value written back to the I/O port. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoBitFieldWrite32 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT32 Value | |
); | |
/** | |
Reads a bit field in a 32-bit port, performs a bitwise OR, writes the | |
result back to the bit field in the 32-bit port, and saves the value in the | |
S3 script to be replayed on S3 resume. | |
Reads the 32-bit I/O port specified by Port, performs a bitwise OR | |
between the read result and the value specified by OrData, and writes the | |
result to the 32-bit I/O port specified by Port. The value written to the I/O | |
port is returned. This function must guarantee that all I/O read and write | |
operations are serialized. Extra left bits in OrData are stripped. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@param[in] OrData The value to OR with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoBitFieldOr32 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT32 OrData | |
); | |
/** | |
Reads a bit field in a 32-bit port, performs a bitwise AND, writes the | |
result back to the bit field in the 32-bit port, and saves the value in the | |
S3 script to be replayed on S3 resume. | |
Reads the 32-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, and writes the result to | |
the 32-bit I/O port specified by Port. The value written to the I/O port is | |
returned. This function must guarantee that all I/O read and write operations | |
are serialized. Extra left bits in AndData are stripped. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoBitFieldAnd32 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT32 AndData | |
); | |
/** | |
Reads a bit field in a 32-bit port, performs a bitwise AND followed by a | |
bitwise OR, writes the result back to the bit field in the | |
32-bit port, and saves the value in the S3 script to be replayed on S3 | |
resume. | |
Reads the 32-bit I/O port specified by Port, performs a bitwise AND followed | |
by a bitwise OR between the read result and the value specified by | |
AndData, and writes the result to the 32-bit I/O port specified by Port. The | |
value written to the I/O port is returned. This function must guarantee that | |
all I/O read and write operations are serialized. Extra left bits in both | |
AndData and OrData are stripped. | |
If 32-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the I/O port. | |
**/ | |
UINT32 | |
EFIAPI | |
S3IoBitFieldAndThenOr32 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT32 AndData, | |
IN UINT32 OrData | |
); | |
/** | |
Reads a 64-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 64-bit I/O port specified by Port. The 64-bit read value is returned. | |
This function must guarantee that all I/O read and write operations are | |
serialized. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to read. | |
@return The value read. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoRead64 ( | |
IN UINTN Port | |
); | |
/** | |
Writes a 64-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Writes the 64-bit I/O port specified by Port with the value specified by Value | |
and returns Value. This function must guarantee that all I/O read and write | |
operations are serialized. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] Value The value to write to the I/O port. | |
@return The value written to the I/O port. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoWrite64 ( | |
IN UINTN Port, | |
IN UINT64 Value | |
); | |
/** | |
Reads a 64-bit I/O port, performs a bitwise OR, writes the | |
result back to the 64-bit I/O port, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the 64-bit I/O port specified by Port, performs a bitwise OR | |
between the read result and the value specified by OrData, and writes the | |
result to the 64-bit I/O port specified by Port. The value written to the I/O | |
port is returned. This function must guarantee that all I/O read and write | |
operations are serialized. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] OrData The value to OR with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoOr64 ( | |
IN UINTN Port, | |
IN UINT64 OrData | |
); | |
/** | |
Reads a 64-bit I/O port, performs a bitwise AND, writes the result back | |
to the 64-bit I/O port, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 64-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, and writes the result to | |
the 64-bit I/O port specified by Port. The value written to the I/O port is | |
returned. This function must guarantee that all I/O read and write operations | |
are serialized. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoAnd64 ( | |
IN UINTN Port, | |
IN UINT64 AndData | |
); | |
/** | |
Reads a 64-bit I/O port, performs a bitwise AND followed by a bitwise | |
inclusive OR, writes the result back to the 64-bit I/O port, and saves | |
the value in the S3 script to be replayed on S3 resume. | |
Reads the 64-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, performs a bitwise OR | |
between the result of the AND operation and the value specified by OrData, | |
and writes the result to the 64-bit I/O port specified by Port. The value | |
written to the I/O port is returned. This function must guarantee that all | |
I/O read and write operations are serialized. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the I/O port. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoAndThenOr64 ( | |
IN UINTN Port, | |
IN UINT64 AndData, | |
IN UINT64 OrData | |
); | |
/** | |
Reads a bit field of an I/O register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the bit field in a 64-bit I/O register. The bit field is specified by | |
the StartBit and the EndBit. The value of the bit field is returned. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
@param[in] Port The I/O port to read. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@return The value read. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoBitFieldRead64 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit | |
); | |
/** | |
Writes a bit field to an I/O register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Writes Value to the bit field of the I/O register. The bit field is specified | |
by the StartBit and the EndBit. All other bits in the destination I/O | |
register are preserved. The value written to the I/O port is returned. Extra | |
left bits in Value are stripped. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@param[in] Value New value of the bit field. | |
@return The value written back to the I/O port. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoBitFieldWrite64 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT64 Value | |
); | |
/** | |
Reads a bit field in a 64-bit port, performs a bitwise OR, writes the | |
result back to the bit field in the 64-bit port, and saves the value in the | |
S3 script to be replayed on S3 resume. | |
Reads the 64-bit I/O port specified by Port, performs a bitwise OR | |
between the read result and the value specified by OrData, and writes the | |
result to the 64-bit I/O port specified by Port. The value written to the I/O | |
port is returned. This function must guarantee that all I/O read and write | |
operations are serialized. Extra left bits in OrData are stripped. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@param[in] OrData The value to OR with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoBitFieldOr64 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT64 OrData | |
); | |
/** | |
Reads a bit field in a 64-bit port, performs a bitwise AND, writes the | |
result back to the bit field in the 64-bit port, and saves the value in the | |
S3 script to be replayed on S3 resume. | |
Reads the 64-bit I/O port specified by Port, performs a bitwise AND between | |
the read result and the value specified by AndData, and writes the result to | |
the 64-bit I/O port specified by Port. The value written to the I/O port is | |
returned. This function must guarantee that all I/O read and write operations | |
are serialized. Extra left bits in AndData are stripped. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@return The value written back to the I/O port. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoBitFieldAnd64 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT64 AndData | |
); | |
/** | |
Reads a bit field in a 64-bit port, performs a bitwise AND followed by a | |
bitwise OR, writes the result back to the bit field in the | |
64-bit port, and saves the value in the S3 script to be replayed on S3 | |
resume. | |
Reads the 64-bit I/O port specified by Port, performs a bitwise AND followed | |
by a bitwise OR between the read result and the value specified by | |
AndData, and writes the result to the 64-bit I/O port specified by Port. The | |
value written to the I/O port is returned. This function must guarantee that | |
all I/O read and write operations are serialized. Extra left bits in both | |
AndData and OrData are stripped. | |
If 64-bit I/O port operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Port The I/O port to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@param[in] AndData The value to AND with the read value from the I/O port. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the I/O port. | |
**/ | |
UINT64 | |
EFIAPI | |
S3IoBitFieldAndThenOr64 ( | |
IN UINTN Port, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT64 AndData, | |
IN UINT64 OrData | |
); | |
/** | |
Reads an 8-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the 8-bit MMIO register specified by Address. The 8-bit read value is | |
returned. This function must guarantee that all MMIO read and write | |
operations are serialized. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to read. | |
@return The value read. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioRead8 ( | |
IN UINTN Address | |
); | |
/** | |
Writes an 8-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Writes the 8-bit MMIO register specified by Address with the value specified | |
by Value and returns Value. This function must guarantee that all MMIO read | |
and write operations are serialized. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] Value The value to write to the MMIO register. | |
@return The value written the MMIO register. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioWrite8 ( | |
IN UINTN Address, | |
IN UINT8 Value | |
); | |
/** | |
Reads an 8-bit MMIO register, performs a bitwise OR, writes the | |
result back to the 8-bit MMIO register, and saves the value in the S3 script | |
to be replayed on S3 resume. | |
Reads the 8-bit MMIO register specified by Address, performs a bitwise | |
inclusive OR between the read result and the value specified by OrData, and | |
writes the result to the 8-bit MMIO register specified by Address. The value | |
written to the MMIO register is returned. This function must guarantee that | |
all MMIO read and write operations are serialized. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] OrData The value to OR with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioOr8 ( | |
IN UINTN Address, | |
IN UINT8 OrData | |
); | |
/** | |
Reads an 8-bit MMIO register, performs a bitwise AND, writes the result | |
back to the 8-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the 8-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, and writes the | |
result to the 8-bit MMIO register specified by Address. The value written to | |
the MMIO register is returned. This function must guarantee that all MMIO | |
read and write operations are serialized. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioAnd8 ( | |
IN UINTN Address, | |
IN UINT8 AndData | |
); | |
/** | |
Reads an 8-bit MMIO register, performs a bitwise AND followed by a bitwise | |
inclusive OR, writes the result back to the 8-bit MMIO register, and saves | |
the value in the S3 script to be replayed on S3 resume. | |
Reads the 8-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, performs a | |
bitwise OR between the result of the AND operation and the value specified by | |
OrData, and writes the result to the 8-bit MMIO register specified by | |
Address. The value written to the MMIO register is returned. This function | |
must guarantee that all MMIO read and write operations are serialized. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioAndThenOr8 ( | |
IN UINTN Address, | |
IN UINT8 AndData, | |
IN UINT8 OrData | |
); | |
/** | |
Reads a bit field of a MMIO register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the bit field in an 8-bit MMIO register. The bit field is specified by | |
the StartBit and the EndBit. The value of the bit field is returned. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
@param[in] Address MMIO register to read. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@return The value read. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioBitFieldRead8 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit | |
); | |
/** | |
Writes a bit field to an MMIO register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Writes Value to the bit field of the MMIO register. The bit field is | |
specified by the StartBit and the EndBit. All other bits in the destination | |
MMIO register are preserved. The new value of the 8-bit register is returned. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@param[in] Value New value of the bit field. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioBitFieldWrite8 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT8 Value | |
); | |
/** | |
Reads a bit field in an 8-bit MMIO register, performs a bitwise OR, | |
writes the result back to the bit field in the 8-bit MMIO register, and saves | |
the value in the S3 script to be replayed on S3 resume. | |
Reads the 8-bit MMIO register specified by Address, performs a bitwise | |
inclusive OR between the read result and the value specified by OrData, and | |
writes the result to the 8-bit MMIO register specified by Address. The value | |
written to the MMIO register is returned. This function must guarantee that | |
all MMIO read and write operations are serialized. Extra left bits in OrData | |
are stripped. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@param[in] OrData The value to OR with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioBitFieldOr8 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT8 OrData | |
); | |
/** | |
Reads a bit field in an 8-bit MMIO register, performs a bitwise AND, and | |
writes the result back to the bit field in the 8-bit MMIO register, and saves | |
the value in the S3 script to be replayed on S3 resume. | |
Reads the 8-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, and writes the | |
result to the 8-bit MMIO register specified by Address. The value written to | |
the MMIO register is returned. This function must guarantee that all MMIO | |
read and write operations are serialized. Extra left bits in AndData are | |
stripped. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioBitFieldAnd8 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT8 AndData | |
); | |
/** | |
Reads a bit field in an 8-bit MMIO register, performs a bitwise AND followed | |
by a bitwise OR, writes the result back to the bit field in the | |
8-bit MMIO register, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 8-bit MMIO register specified by Address, performs a bitwise AND | |
followed by a bitwise OR between the read result and the value | |
specified by AndData, and writes the result to the 8-bit MMIO register | |
specified by Address. The value written to the MMIO register is returned. | |
This function must guarantee that all MMIO read and write operations are | |
serialized. Extra left bits in both AndData and OrData are stripped. | |
If 8-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 7, then ASSERT(). | |
If EndBit is greater than 7, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..7. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..7. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT8 | |
EFIAPI | |
S3MmioBitFieldAndThenOr8 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT8 AndData, | |
IN UINT8 OrData | |
); | |
/** | |
Reads a 16-bit MMIO register, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 16-bit MMIO register specified by Address. The 16-bit read value is | |
returned. This function must guarantee that all MMIO read and write | |
operations are serialized. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to read. | |
@return The value read. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioRead16 ( | |
IN UINTN Address | |
); | |
/** | |
Writes a 16-bit MMIO register, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Writes the 16-bit MMIO register specified by Address with the value specified | |
by Value and returns Value. This function must guarantee that all MMIO read | |
and write operations are serialized, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] Value The value to write to the MMIO register. | |
@return The value written the MMIO register. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioWrite16 ( | |
IN UINTN Address, | |
IN UINT16 Value | |
); | |
/** | |
Reads a 16-bit MMIO register, performs a bitwise OR, writes the | |
result back to the 16-bit MMIO register, and saves the value in the S3 script | |
to be replayed on S3 resume. | |
Reads the 16-bit MMIO register specified by Address, performs a bitwise | |
inclusive OR between the read result and the value specified by OrData, and | |
writes the result to the 16-bit MMIO register specified by Address. The value | |
written to the MMIO register is returned. This function must guarantee that | |
all MMIO read and write operations are serialized. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] OrData The value to OR with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioOr16 ( | |
IN UINTN Address, | |
IN UINT16 OrData | |
); | |
/** | |
Reads a 16-bit MMIO register, performs a bitwise AND, writes the result | |
back to the 16-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the 16-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, and writes the | |
result to the 16-bit MMIO register specified by Address. The value written to | |
the MMIO register is returned. This function must guarantee that all MMIO | |
read and write operations are serialized. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioAnd16 ( | |
IN UINTN Address, | |
IN UINT16 AndData | |
); | |
/** | |
Reads a 16-bit MMIO register, performs a bitwise AND followed by a bitwise | |
inclusive OR, writes the result back to the 16-bit MMIO register, and | |
saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 16-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, performs a | |
bitwise OR between the result of the AND operation and the value specified by | |
OrData, and writes the result to the 16-bit MMIO register specified by | |
Address. The value written to the MMIO register is returned. This function | |
must guarantee that all MMIO read and write operations are serialized. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioAndThenOr16 ( | |
IN UINTN Address, | |
IN UINT16 AndData, | |
IN UINT16 OrData | |
); | |
/** | |
Reads a bit field of a MMIO register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the bit field in a 16-bit MMIO register. The bit field is specified by | |
the StartBit and the EndBit. The value of the bit field is returned. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
@param[in] Address MMIO register to read. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@return The value read. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioBitFieldRead16 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit | |
); | |
/** | |
Writes a bit field to a MMIO register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Writes Value to the bit field of the MMIO register. The bit field is | |
specified by the StartBit and the EndBit. All other bits in the destination | |
MMIO register are preserved. The new value of the 16-bit register is returned. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@param[in] Value New value of the bit field. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioBitFieldWrite16 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT16 Value | |
); | |
/** | |
Reads a bit field in a 16-bit MMIO register, performs a bitwise OR, | |
writes the result back to the bit field in the 16-bit MMIO register, and | |
saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 16-bit MMIO register specified by Address, performs a bitwise | |
inclusive OR between the read result and the value specified by OrData, and | |
writes the result to the 16-bit MMIO register specified by Address. The value | |
written to the MMIO register is returned. This function must guarantee that | |
all MMIO read and write operations are serialized. Extra left bits in OrData | |
are stripped. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@param[in] OrData The value to OR with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioBitFieldOr16 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT16 OrData | |
); | |
/** | |
Reads a bit field in a 16-bit MMIO register, performs a bitwise AND, and | |
writes the result back to the bit field in the 16-bit MMIO register and | |
saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 16-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, and writes the | |
result to the 16-bit MMIO register specified by Address. The value written to | |
the MMIO register is returned. This function must guarantee that all MMIO | |
read and write operations are serialized. Extra left bits in AndData are | |
stripped. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioBitFieldAnd16 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT16 AndData | |
); | |
/** | |
Reads a bit field in a 16-bit MMIO register, performs a bitwise AND followed | |
by a bitwise OR, writes the result back to the bit field in the | |
16-bit MMIO register, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 16-bit MMIO register specified by Address, performs a bitwise AND | |
followed by a bitwise OR between the read result and the value | |
specified by AndData, and writes the result to the 16-bit MMIO register | |
specified by Address. The value written to the MMIO register is returned. | |
This function must guarantee that all MMIO read and write operations are | |
serialized. Extra left bits in both AndData and OrData are stripped. | |
If 16-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 15, then ASSERT(). | |
If EndBit is greater than 15, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..15. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..15. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT16 | |
EFIAPI | |
S3MmioBitFieldAndThenOr16 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT16 AndData, | |
IN UINT16 OrData | |
); | |
/** | |
Reads a 32-bit MMIO register saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the 32-bit MMIO register specified by Address. The 32-bit read value is | |
returned. This function must guarantee that all MMIO read and write | |
operations are serialized. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to read. | |
@return The value read. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioRead32 ( | |
IN UINTN Address | |
); | |
/** | |
Writes a 32-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Writes the 32-bit MMIO register specified by Address with the value specified | |
by Value and returns Value. This function must guarantee that all MMIO read | |
and write operations are serialized. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] Value The value to write to the MMIO register. | |
@return The value written the MMIO register. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioWrite32 ( | |
IN UINTN Address, | |
IN UINT32 Value | |
); | |
/** | |
Reads a 32-bit MMIO register, performs a bitwise OR, writes the | |
result back to the 32-bit MMIO register, and saves the value in the S3 script | |
to be replayed on S3 resume. | |
Reads the 32-bit MMIO register specified by Address, performs a bitwise | |
inclusive OR between the read result and the value specified by OrData, and | |
writes the result to the 32-bit MMIO register specified by Address. The value | |
written to the MMIO register is returned. This function must guarantee that | |
all MMIO read and write operations are serialized. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] OrData The value to OR with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioOr32 ( | |
IN UINTN Address, | |
IN UINT32 OrData | |
); | |
/** | |
Reads a 32-bit MMIO register, performs a bitwise AND, writes the result | |
back to the 32-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the 32-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, and writes the | |
result to the 32-bit MMIO register specified by Address. The value written to | |
the MMIO register is returned. This function must guarantee that all MMIO | |
read and write operations are serialized. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioAnd32 ( | |
IN UINTN Address, | |
IN UINT32 AndData | |
); | |
/** | |
Reads a 32-bit MMIO register, performs a bitwise AND followed by a bitwise | |
inclusive OR, writes the result back to the 32-bit MMIO register, and | |
saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 32-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, performs a | |
bitwise OR between the result of the AND operation and the value specified by | |
OrData, and writes the result to the 32-bit MMIO register specified by | |
Address. The value written to the MMIO register is returned. This function | |
must guarantee that all MMIO read and write operations are serialized. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioAndThenOr32 ( | |
IN UINTN Address, | |
IN UINT32 AndData, | |
IN UINT32 OrData | |
); | |
/** | |
Reads a bit field of a MMIO register, and saves the value in the S3 script | |
to be replayed on S3 resume. | |
Reads the bit field in a 32-bit MMIO register. The bit field is specified by | |
the StartBit and the EndBit. The value of the bit field is returned. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
@param[in] Address MMIO register to read. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@return The value read. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioBitFieldRead32 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit | |
); | |
/** | |
Writes a bit field to a MMIO register, and saves the value in the S3 script | |
to be replayed on S3 resume. | |
Writes Value to the bit field of the MMIO register. The bit field is | |
specified by the StartBit and the EndBit. All other bits in the destination | |
MMIO register are preserved. The new value of the 32-bit register is returned. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@param[in] Value New value of the bit field. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioBitFieldWrite32 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT32 Value | |
); | |
/** | |
Reads a bit field in a 32-bit MMIO register, performs a bitwise OR, | |
writes the result back to the bit field in the 32-bit MMIO register, and | |
saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 32-bit MMIO register specified by Address, performs a bitwise | |
inclusive OR between the read result and the value specified by OrData, and | |
writes the result to the 32-bit MMIO register specified by Address. The value | |
written to the MMIO register is returned. This function must guarantee that | |
all MMIO read and write operations are serialized. Extra left bits in OrData | |
are stripped. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@param[in] OrData The value to OR with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioBitFieldOr32 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT32 OrData | |
); | |
/** | |
Reads a bit field in a 32-bit MMIO register, performs a bitwise AND, and | |
writes the result back to the bit field in the 32-bit MMIO register and | |
saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 32-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, and writes the | |
result to the 32-bit MMIO register specified by Address. The value written to | |
the MMIO register is returned. This function must guarantee that all MMIO | |
read and write operations are serialized. Extra left bits in AndData are | |
stripped. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioBitFieldAnd32 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT32 AndData | |
); | |
/** | |
Reads a bit field in a 32-bit MMIO register, performs a bitwise AND followed | |
by a bitwise OR, writes the result back to the bit field in the | |
32-bit MMIO register, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 32-bit MMIO register specified by Address, performs a bitwise AND | |
followed by a bitwise OR between the read result and the value | |
specified by AndData, and writes the result to the 32-bit MMIO register | |
specified by Address. The value written to the MMIO register is returned. | |
This function must guarantee that all MMIO read and write operations are | |
serialized. Extra left bits in both AndData and OrData are stripped. | |
If 32-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 31, then ASSERT(). | |
If EndBit is greater than 31, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..31. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..31. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT32 | |
EFIAPI | |
S3MmioBitFieldAndThenOr32 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT32 AndData, | |
IN UINT32 OrData | |
); | |
/** | |
Reads a 64-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the 64-bit MMIO register specified by Address. The 64-bit read value is | |
returned. This function must guarantee that all MMIO read and write | |
operations are serialized. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to read. | |
@return The value read. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioRead64 ( | |
IN UINTN Address | |
); | |
/** | |
Writes a 64-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Writes the 64-bit MMIO register specified by Address with the value specified | |
by Value and returns Value. This function must guarantee that all MMIO read | |
and write operations are serialized. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] Value The value to write to the MMIO register. | |
@return The value written the MMIO register. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioWrite64 ( | |
IN UINTN Address, | |
IN UINT64 Value | |
); | |
/** | |
Reads a 64-bit MMIO register, performs a bitwise OR, writes the | |
result back to the 64-bit MMIO register, and saves the value in the S3 script | |
to be replayed on S3 resume. | |
Reads the 64-bit MMIO register specified by Address, performs a bitwise | |
inclusive OR between the read result and the value specified by OrData, and | |
writes the result to the 64-bit MMIO register specified by Address. The value | |
written to the MMIO register is returned. This function must guarantee that | |
all MMIO read and write operations are serialized. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] OrData The value to OR with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioOr64 ( | |
IN UINTN Address, | |
IN UINT64 OrData | |
); | |
/** | |
Reads a 64-bit MMIO register, performs a bitwise AND, writes the result | |
back to the 64-bit MMIO register, and saves the value in the S3 script to be | |
replayed on S3 resume. | |
Reads the 64-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, and writes the | |
result to the 64-bit MMIO register specified by Address. The value written to | |
the MMIO register is returned. This function must guarantee that all MMIO | |
read and write operations are serialized. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioAnd64 ( | |
IN UINTN Address, | |
IN UINT64 AndData | |
); | |
/** | |
Reads a 64-bit MMIO register, performs a bitwise AND followed by a bitwise | |
inclusive OR, writes the result back to the 64-bit MMIO register, and | |
saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 64-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, performs a | |
bitwise OR between the result of the AND operation and the value specified by | |
OrData, and writes the result to the 64-bit MMIO register specified by | |
Address. The value written to the MMIO register is returned. This function | |
must guarantee that all MMIO read and write operations are serialized. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioAndThenOr64 ( | |
IN UINTN Address, | |
IN UINT64 AndData, | |
IN UINT64 OrData | |
); | |
/** | |
Reads a bit field of a MMIO register saves the value in the S3 script to | |
be replayed on S3 resume. | |
Reads the bit field in a 64-bit MMIO register. The bit field is specified by | |
the StartBit and the EndBit. The value of the bit field is returned. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
@param[in] Address MMIO register to read. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@return The value read. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioBitFieldRead64 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit | |
); | |
/** | |
Writes a bit field to a MMIO register, and saves the value in the S3 script to | |
be replayed on S3 resume. | |
Writes Value to the bit field of the MMIO register. The bit field is | |
specified by the StartBit and the EndBit. All other bits in the destination | |
MMIO register are preserved. The new value of the 64-bit register is returned. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@param[in] Value New value of the bit field. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioBitFieldWrite64 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT64 Value | |
); | |
/** | |
Reads a bit field in a 64-bit MMIO register, performs a bitwise OR, | |
writes the result back to the bit field in the 64-bit MMIO register, and | |
saves the value in the S3 script to be replayed on S3 resume. | |
Reads the 64-bit MMIO register specified by Address, performs a bitwise | |
inclusive OR between the read result and the value specified by OrData, and | |
writes the result to the 64-bit MMIO register specified by Address. The value | |
written to the MMIO register is returned. This function must guarantee that | |
all MMIO read and write operations are serialized. Extra left bits in OrData | |
are stripped. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@param[in] OrData The value to OR with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioBitFieldOr64 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT64 OrData | |
); | |
/** | |
Reads a bit field in a 64-bit MMIO register, performs a bitwise AND, and | |
writes the result back to the bit field in the 64-bit MMIO register, and saves | |
the value in the S3 script to be replayed on S3 resume. | |
Reads the 64-bit MMIO register specified by Address, performs a bitwise AND | |
between the read result and the value specified by AndData, and writes the | |
result to the 64-bit MMIO register specified by Address. The value written to | |
the MMIO register is returned. This function must guarantee that all MMIO | |
read and write operations are serialized. Extra left bits in AndData are | |
stripped. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioBitFieldAnd64 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT64 AndData | |
); | |
/** | |
Reads a bit field in a 64-bit MMIO register, performs a bitwise AND followed | |
by a bitwise OR, writes the result back to the bit field in the | |
64-bit MMIO register, and saves the value in the S3 script to be replayed | |
on S3 resume. | |
Reads the 64-bit MMIO register specified by Address, performs a bitwise AND | |
followed by a bitwise OR between the read result and the value | |
specified by AndData, and writes the result to the 64-bit MMIO register | |
specified by Address. The value written to the MMIO register is returned. | |
This function must guarantee that all MMIO read and write operations are | |
serialized. Extra left bits in both AndData and OrData are stripped. | |
If 64-bit MMIO register operations are not supported, then ASSERT(). | |
If StartBit is greater than 63, then ASSERT(). | |
If EndBit is greater than 63, then ASSERT(). | |
If EndBit is less than StartBit, then ASSERT(). | |
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). | |
@param[in] Address The MMIO register to write. | |
@param[in] StartBit The ordinal of the least significant bit in the bit field. | |
Range 0..63. | |
@param[in] EndBit The ordinal of the most significant bit in the bit field. | |
Range 0..63. | |
@param[in] AndData The value to AND with the read value from the MMIO register. | |
@param[in] OrData The value to OR with the result of the AND operation. | |
@return The value written back to the MMIO register. | |
**/ | |
UINT64 | |
EFIAPI | |
S3MmioBitFieldAndThenOr64 ( | |
IN UINTN Address, | |
IN UINTN StartBit, | |
IN UINTN EndBit, | |
IN UINT64 AndData, | |
IN UINT64 OrData | |
); | |
/** | |
Copies data from MMIO region to system memory by using 8-bit access, | |
and saves the value in the S3 script to be replayed on S3 resume. | |
Copy data from MMIO region specified by starting address StartAddress | |
to system memory specified by Buffer by using 8-bit access. The total | |
number of bytes to be copied is specified by Length. Buffer is returned. | |
If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). | |
@param[in] StartAddress Starting address for the MMIO region to be copied from. | |
@param[in] Length Size in bytes of the copy. | |
@param[out] Buffer Pointer to a system memory buffer receiving the data read. | |
@return Buffer. | |
**/ | |
UINT8 * | |
EFIAPI | |
S3MmioReadBuffer8 ( | |
IN UINTN StartAddress, | |
IN UINTN Length, | |
OUT UINT8 *Buffer | |
); | |
/** | |
Copies data from MMIO region to system memory by using 16-bit access, | |
and saves the value in the S3 script to be replayed on S3 resume. | |
Copy data from MMIO region specified by starting address StartAddress | |
to system memory specified by Buffer by using 16-bit access. The total | |
number of bytes to be copied is specified by Length. Buffer is returned. | |
If StartAddress is not aligned on a 16-bit boundary, then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). | |
If Length is not aligned on a 16-bit boundary, then ASSERT(). | |
If Buffer is not aligned on a 16-bit boundary, then ASSERT(). | |
@param[in] StartAddress Starting address for the MMIO region to be copied from. | |
@param[in] Length Size in bytes of the copy. | |
@param[out] Buffer Pointer to a system memory buffer receiving the data read. | |
@return Buffer. | |
**/ | |
UINT16 * | |
EFIAPI | |
S3MmioReadBuffer16 ( | |
IN UINTN StartAddress, | |
IN UINTN Length, | |
OUT UINT16 *Buffer | |
); | |
/** | |
Copies data from MMIO region to system memory by using 32-bit access, | |
and saves the value in the S3 script to be replayed on S3 resume. | |
Copy data from MMIO region specified by starting address StartAddress | |
to system memory specified by Buffer by using 32-bit access. The total | |
number of byte to be copied is specified by Length. Buffer is returned. | |
If StartAddress is not aligned on a 32-bit boundary, then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). | |
If Length is not aligned on a 32-bit boundary, then ASSERT(). | |
If Buffer is not aligned on a 32-bit boundary, then ASSERT(). | |
@param[in] StartAddress Starting address for the MMIO region to be copied from. | |
@param[in] Length Size in bytes of the copy. | |
@param[out] Buffer Pointer to a system memory buffer receiving the data read. | |
@return Buffer. | |
**/ | |
UINT32 * | |
EFIAPI | |
S3MmioReadBuffer32 ( | |
IN UINTN StartAddress, | |
IN UINTN Length, | |
OUT UINT32 *Buffer | |
); | |
/** | |
Copies data from MMIO region to system memory by using 64-bit access, | |
and saves the value in the S3 script to be replayed on S3 resume. | |
Copy data from MMIO region specified by starting address StartAddress | |
to system memory specified by Buffer by using 64-bit access. The total | |
number of byte to be copied is specified by Length. Buffer is returned. | |
If StartAddress is not aligned on a 64-bit boundary, then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). | |
If Length is not aligned on a 64-bit boundary, then ASSERT(). | |
If Buffer is not aligned on a 64-bit boundary, then ASSERT(). | |
@param[in] StartAddress Starting address for the MMIO region to be copied from. | |
@param[in] Length Size in bytes of the copy. | |
@param[out] Buffer Pointer to a system memory buffer receiving the data read. | |
@return Buffer. | |
**/ | |
UINT64 * | |
EFIAPI | |
S3MmioReadBuffer64 ( | |
IN UINTN StartAddress, | |
IN UINTN Length, | |
OUT UINT64 *Buffer | |
); | |
/** | |
Copies data from system memory to MMIO region by using 8-bit access, | |
and saves the value in the S3 script to be replayed on S3 resume. | |
Copy data from system memory specified by Buffer to MMIO region specified | |
by starting address StartAddress by using 8-bit access. The total number | |
of byte to be copied is specified by Length. Buffer is returned. | |
If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT(). | |
If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT(). | |
@param[in] StartAddress Starting address for the MMIO region to be copied to. | |
@param[in] Length Size in bytes of the copy. | |
@param[in] Buffer Pointer to a system memory buffer containing the data to write. | |
@return Buffer. | |
**/ | |
UINT8 * | |
EFIAPI | |
S3MmioWriteBuffer8 ( | |
IN UINTN StartAddress, | |
IN UINTN Length, | |
IN CONST UINT8 *Buffer | |
); | |
/** | |
Copies data from system memory to MMIO region by using 16-bit access, | |
and saves the value in the S3 script to be replayed on S3 resume. | |
Copy data from system memory specified by Buffer to MMIO region specified | |
by starting address StartAddress by using 16-bit access. The total number | |
of bytes to be copied is specified by Length. Buffer is returned. | |
If StartAddress is not aligned on a 16-bit boundary, then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT(). | |
If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT(). | |
If Length is not aligned on a 16-bit boundary, then ASSERT(). | |
If Buffer is not aligned on a 16-bit boundary, then ASSERT(). | |
@param[in] StartAddress Starting address for the MMIO region to be copied to. | |
@param[in] Length Size in bytes of the copy. | |
@param[in] Buffer Pointer to a system memory buffer containing the data to write. | |
@return Buffer. | |
**/ | |
UINT16 * | |
EFIAPI | |
S3MmioWriteBuffer16 ( | |
IN UINTN StartAddress, | |
IN UINTN Length, | |
IN CONST UINT16 *Buffer | |
); | |
/** | |
Copies data from system memory to MMIO region by using 32-bit access, | |
and saves the value in the S3 script to be replayed on S3 resume. | |
Copy data from system memory specified by Buffer to MMIO region specified | |
by starting address StartAddress by using 32-bit access. The total number | |
of bytes to be copied is specified by Length. Buffer is returned. | |
If StartAddress is not aligned on a 32-bit boundary, then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT(). | |
If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT(). | |
If Length is not aligned on a 32-bit boundary, then ASSERT(). | |
If Buffer is not aligned on a 32-bit boundary, then ASSERT(). | |
@param[in] StartAddress Starting address for the MMIO region to be copied to. | |
@param[in] Length Size in bytes of the copy. | |
@param[in] Buffer Pointer to a system memory buffer containing the data to write. | |
@return Buffer. | |
**/ | |
UINT32 * | |
EFIAPI | |
S3MmioWriteBuffer32 ( | |
IN UINTN StartAddress, | |
IN UINTN Length, | |
IN CONST UINT32 *Buffer | |
); | |
/** | |
Copies data from system memory to MMIO region by using 64-bit access, | |
and saves the value in the S3 script to be replayed on S3 resume. | |
Copy data from system memory specified by Buffer to MMIO region specified | |
by starting address StartAddress by using 64-bit access. The total number | |
of bytes to be copied is specified by Length. Buffer is returned. | |
If StartAddress is not aligned on a 64-bit boundary, then ASSERT(). | |
If Length is greater than (MAX_ADDRESS - StartAddress + 1), then ASSERT(). | |
If Length is greater than (MAX_ADDRESS -Buffer + 1), then ASSERT(). | |
If Length is not aligned on a 64-bit boundary, then ASSERT(). | |
If Buffer is not aligned on a 64-bit boundary, then ASSERT(). | |
@param[in] StartAddress Starting address for the MMIO region to be copied to. | |
@param[in] Length Size in bytes of the copy. | |
@param[in] Buffer Pointer to a system memory buffer containing the data to write. | |
@return Buffer. | |
**/ | |
UINT64 * | |
EFIAPI | |
S3MmioWriteBuffer64 ( | |
IN UINTN StartAddress, | |
IN UINTN Length, | |
IN CONST UINT64 *Buffer | |
); | |
#endif |