CpuIo.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
/** @file
The perspective of the services is that of the processor, not the bus or system.
Copyright (c) 2006 - 2010, 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 that accompanies this distribution.
The full text of the license may be found at
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
@par Revision Reference:
This PPI is introduced in PI Version 1.0.
**/
#ifndef __PEI_CPUIO_PPI_H__
#define __PEI_CPUIO_PPI_H__
#define EFI_PEI_CPU_IO_PPI_INSTALLED_GUID \
{ 0xe6af1f7b, 0xfc3f, 0x46da, {0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82 } }
typedef struct _EFI_PEI_CPU_IO_PPI EFI_PEI_CPU_IO_PPI;
///
/// EFI_PEI_CPU_IO_PPI_WIDTH.
///
typedef enum {
/**
@param[in] PeiServices An indirect pointer to the PEI Services Table
published by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Width The width of the access. Enumerated in bytes.
@param[in] Address The physical address of the access.
@param[in] Count The number of accesses to perform.
@param[in, out] Buffer A pointer to the buffer of data.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_NOT_YET_AVAILABLE The service has not been installed.
**/
typedef
);
///
/// EFI_PEI_CPU_IO_PPI_ACCESS
///
typedef struct {
///
/// This service provides the various modalities of memory and I/O read.
///
///
/// This service provides the various modalities of memory and I/O write.
///
/**
8-bit I/O read operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@return An 8-bit value returned from the I/O space.
**/
typedef
);
/**
16-bit I/O read operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@return A 16-bit value returned from the I/O space.
**/
typedef
);
/**
32-bit I/O read operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@return A 32-bit value returned from the I/O space.
**/
typedef
);
/**
64-bit I/O read operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@return A 64-bit value returned from the I/O space.
**/
typedef
);
/**
8-bit I/O write operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@param[in] Data The data to write.
**/
typedef
);
/**
16-bit I/O write operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@param[in] Data The data to write.
**/
typedef
);
/**
32-bit I/O write operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@param[in] Data The data to write.
**/
typedef
);
/**
64-bit I/O write operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@param[in] Data The data to write.
**/
typedef
);
/**
8-bit memory read operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@return An 8-bit value returned from the memory space.
**/
typedef
);
/**
16-bit memory read operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@return A 16-bit value returned from the memory space.
**/
typedef
);
/**
32-bit memory read operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@return A 32-bit value returned from the memory space.
**/
typedef
);
/**
64-bit memory read operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@return A 64-bit value returned from the memory space.
**/
typedef
);
/**
8-bit memory write operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@param[in] Data The data to write.
**/
typedef
);
/**
16-bit memory write operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@param[in] Data The data to write.
**/
typedef
);
/**
32-bit memory write operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@param[in] Data The data to write.
**/
typedef
);
/**
64-bit memory write operations.
@param[in] PeiServices An indirect pointer to the PEI Services Table published
by the PEI Foundation.
@param[in] This The pointer to local data for the interface.
@param[in] Address The physical address of the access.
@param[in] Data The data to write.
**/
typedef
);
///
/// The perspective of the services is that of the processor, not that of the
/// bus or system.
///
struct _EFI_PEI_CPU_IO_PPI {
///
/// Collection of memory-access services.
///
///
///
};
extern EFI_GUID gEfiPeiCpuIoPpiInstalledGuid;
#endif