+++ /dev/null
-/** @file\r
- Internal include file for the SMM CPU I/O Protocol.\r
-\r
-Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _CPU_IO2_SMM_H_\r
-#define _CPU_IO2_SMM_H_\r
-\r
-#include <PiSmm.h>\r
-\r
-#include <Protocol/SmmCpuIo2.h>\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/IoLib.h>\r
-#include <Library/MmServicesTableLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-\r
-#define MAX_IO_PORT_ADDRESS 0xFFFF\r
-\r
-/**\r
- Reads memory-mapped registers.\r
-\r
- The I/O operations are carried out exactly as requested. The caller is\r
- responsible for any alignment and I/O width issues that the bus, device,\r
- platform, or type of I/O might require.\r
-\r
- @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.\r
- @param[in] Width Signifies the width of the I/O operations.\r
- @param[in] Address The base address of the I/O operations. The caller is\r
- responsible for aligning the Address if required.\r
- @param[in] Count The number of I/O operations to perform.\r
- @param[out] Buffer For read operations, the destination buffer to store\r
- the results. For write operations, the source buffer\r
- from which to write data.\r
-\r
- @retval EFI_SUCCESS The data was read from or written to the device.\r
- @retval EFI_UNSUPPORTED The Address is not valid for this system.\r
- @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.\r
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a\r
- lack of resources\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CpuMemoryServiceRead (\r
- IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,\r
- IN EFI_SMM_IO_WIDTH Width,\r
- IN UINT64 Address,\r
- IN UINTN Count,\r
- OUT VOID *Buffer\r
- );\r
-\r
-/**\r
- Writes memory-mapped registers.\r
-\r
- The I/O operations are carried out exactly as requested. The caller is\r
- responsible for any alignment and I/O width issues that the bus, device,\r
- platform, or type of I/O might require.\r
-\r
- @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.\r
- @param[in] Width Signifies the width of the I/O operations.\r
- @param[in] Address The base address of the I/O operations. The caller is\r
- responsible for aligning the Address if required.\r
- @param[in] Count The number of I/O operations to perform.\r
- @param[in] Buffer For read operations, the destination buffer to store\r
- the results. For write operations, the source buffer\r
- from which to write data.\r
-\r
- @retval EFI_SUCCESS The data was read from or written to the device.\r
- @retval EFI_UNSUPPORTED The Address is not valid for this system.\r
- @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.\r
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a\r
- lack of resources\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CpuMemoryServiceWrite (\r
- IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,\r
- IN EFI_SMM_IO_WIDTH Width,\r
- IN UINT64 Address,\r
- IN UINTN Count,\r
- IN VOID *Buffer\r
- );\r
-\r
-/**\r
- Reads I/O registers.\r
-\r
- The I/O operations are carried out exactly as requested. The caller is\r
- responsible for any alignment and I/O width issues that the bus, device,\r
- platform, or type of I/O might require.\r
-\r
- @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.\r
- @param[in] Width Signifies the width of the I/O operations.\r
- @param[in] Address The base address of the I/O operations. The caller is\r
- responsible for aligning the Address if required.\r
- @param[in] Count The number of I/O operations to perform.\r
- @param[out] Buffer For read operations, the destination buffer to store\r
- the results. For write operations, the source buffer\r
- from which to write data.\r
-\r
- @retval EFI_SUCCESS The data was read from or written to the device.\r
- @retval EFI_UNSUPPORTED The Address is not valid for this system.\r
- @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.\r
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a\r
- lack of resources\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CpuIoServiceRead (\r
- IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,\r
- IN EFI_SMM_IO_WIDTH Width,\r
- IN UINT64 Address,\r
- IN UINTN Count,\r
- OUT VOID *Buffer\r
- );\r
-\r
-/**\r
- Write I/O registers.\r
-\r
- The I/O operations are carried out exactly as requested. The caller is\r
- responsible for any alignment and I/O width issues that the bus, device,\r
- platform, or type of I/O might require.\r
-\r
- @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.\r
- @param[in] Width Signifies the width of the I/O operations.\r
- @param[in] Address The base address of the I/O operations. The caller is\r
- responsible for aligning the Address if required.\r
- @param[in] Count The number of I/O operations to perform.\r
- @param[in] Buffer For read operations, the destination buffer to store\r
- the results. For write operations, the source buffer\r
- from which to write data.\r
-\r
- @retval EFI_SUCCESS The data was read from or written to the device.\r
- @retval EFI_UNSUPPORTED The Address is not valid for this system.\r
- @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.\r
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a\r
- lack of resources\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CpuIoServiceWrite (\r
- IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,\r
- IN EFI_SMM_IO_WIDTH Width,\r
- IN UINT64 Address,\r
- IN UINTN Count,\r
- IN VOID *Buffer\r
- );\r
-\r
-#endif\r