/** @file | |
This PPI opens or closes an I/O aperture in a ISA HOST controller. | |
Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
@par Revision Reference: | |
This PPI is from PI Version 1.2.1. | |
**/ | |
#ifndef __ISA_HC_PPI_H__ | |
#define __ISA_HC_PPI_H__ | |
#define EFI_ISA_HC_PPI_GUID \ | |
{ \ | |
0x8d48bd70, 0xc8a3, 0x4c06, {0x90, 0x1b, 0x74, 0x79, 0x46, 0xaa, 0xc3, 0x58} \ | |
} | |
typedef struct _EFI_ISA_HC_PPI EFI_ISA_HC_PPI; | |
typedef struct _EFI_ISA_HC_PPI *PEFI_ISA_HC_PPI; | |
/** | |
Open I/O aperture. | |
This function opens an I/O aperture in a ISA Host Controller for the I/O | |
addresses specified by IoAddress to IoAddress + IoLength - 1. It is possible | |
that more than one caller may be assigned to the same aperture. | |
It may be possible that a single hardware aperture may be used for more than | |
one device. This function tracks the number of times that each aperture is | |
referenced, and does not close the hardware aperture (via CloseIoAperture()) | |
until there are no more references to it. | |
@param This A pointer to this instance of the EFI_ISA_HC_PPI. | |
@param IoAddress An unsigned integer that specifies the first byte of | |
the I/O space required. | |
@param IoLength An unsigned integer that specifies the number of | |
bytes of the I/O space required. | |
@param IoApertureHandle A pointer to the returned I/O aperture handle. | |
This value can be used on subsequent calls to CloseIoAperture(). | |
@retval EFI_SUCCESS The I/O aperture was opened successfully. | |
@retval EFI_UNSUPPORTED The ISA Host Controller is a subtractive-decode controller. | |
@retval EFI_OUT_OF_RESOURCES There is no available I/O aperture. | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_PEI_ISA_HC_OPEN_IO) ( | |
IN CONST EFI_ISA_HC_PPI *This, | |
IN UINT16 IoAddress, | |
IN UINT16 IoLength, | |
OUT UINT64 *IoApertureHandle | |
); | |
/** | |
Close I/O aperture. | |
This function closes a previously opened I/O aperture handle. If there are no | |
more I/O aperture handles that refer to the hardware I/O aperture resource, | |
then the hardware I/O aperture is closed. | |
It may be possible that a single hardware aperture may be used for more than | |
one device. This function tracks the number of times that each aperture is | |
referenced, and does not close the hardware aperture (via CloseIoAperture()) | |
until there are no more references to it. | |
@param This A pointer to this instance of the EFI_ISA_HC_PPI. | |
@param IoApertureHandle The I/O aperture handle previously returned from a | |
call to OpenIoAperture(). | |
@retval EFI_SUCCESS The I/O aperture was closed successfully. | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_PEI_ISA_HC_CLOSE_IO) ( | |
IN CONST EFI_ISA_HC_PPI *This, | |
IN UINT64 IoApertureHandle | |
); | |
/// | |
/// This PPI provides functions for opening or closing an I/O aperture. | |
/// | |
struct _EFI_ISA_HC_PPI { | |
/// | |
/// An unsigned integer that specifies the version of the PPI structure. | |
/// | |
UINT32 Version; | |
/// | |
/// The address of the ISA/LPC Bridge device. | |
/// For PCI, this is the segment, bus, device and function of the a ISA/LPC | |
/// Bridge device. | |
/// | |
/// If bits 24-31 are 0, then the definition is: | |
/// Bits 0:2 - Function | |
/// Bits 3-7 - Device | |
/// Bits 8:15 - Bus | |
/// Bits 16-23 - Segment | |
/// Bits 24-31 - Bus Type | |
/// If bits 24-31 are 0xff, then the definition is platform-specific. | |
/// | |
UINT32 Address; | |
/// | |
/// Opens an aperture on a positive-decode ISA Host Controller. | |
/// | |
EFI_PEI_ISA_HC_OPEN_IO OpenIoAperture; | |
/// | |
/// Closes an aperture on a positive-decode ISA Host Controller. | |
/// | |
EFI_PEI_ISA_HC_CLOSE_IO CloseIoAperture; | |
}; | |
extern EFI_GUID gEfiIsaHcPpiGuid; | |
#endif |