]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Compatibility/CpuIo2OnCpuIoThunk/CpuIo2OnCpuIoThunk.h
5c8760e9fa795b9926d1ea1a7dd02c4e530a7539
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / CpuIo2OnCpuIoThunk / CpuIo2OnCpuIoThunk.h
1 /** @file
2 Internal include file for the CPU I/O 2 Protocol thunk driver.
3
4 Copyright (c) 2009, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef __CPU_IO2_ON_CPU_IO_H__
16 #define __CPU_IO2_ON_CPU_IO_H__
17
18 #include <Protocol/CpuIo2.h>
19 #include <Protocol/CpuIo.h>
20
21 #include <Library/DebugLib.h>
22 #include <Library/UefiBootServicesTableLib.h>
23
24 /**
25 Enables a driver to read memory-mapped registers in the PI System memory space.
26
27 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance.
28 @param[in] Width Signifies the width of the memory operation.
29 @param[in] Address The base address of the memory operation.
30 @param[in] Count The number of memory operations to perform. The number of bytes moved
31 is Width size * Count, starting at Address.
32 @param[out] Buffer The destination buffer to store the results.
33
34 @retval EFI_SUCCESS The data was read from or written to the EFI system.
35 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system. Or Buffer is NULL.
36 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
37 Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
38
39 **/
40 EFI_STATUS
41 EFIAPI
42 CpuMemoryServiceRead (
43 IN EFI_CPU_IO2_PROTOCOL *This,
44 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
45 IN UINT64 Address,
46 IN UINTN Count,
47 IN OUT VOID *Buffer
48 );
49
50 /**
51 Enables a driver to write memory-mapped registers in the PI System memory space.
52
53 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance.
54 @param[in] Width Signifies the width of the memory operation.
55 @param[in] Address The base address of the memory operation.
56 @param[in] Count The number of memory operations to perform. The number of bytes moved
57 is Width size * Count, starting at Address.
58 @param[in] Buffer The source buffer from which to write data.
59
60 @retval EFI_SUCCESS The data was read from or written to the EFI system.
61 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system. Or Buffer is NULL.
62 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
63 Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
64
65 **/
66 EFI_STATUS
67 EFIAPI
68 CpuMemoryServiceWrite (
69 IN EFI_CPU_IO2_PROTOCOL *This,
70 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
71 IN UINT64 Address,
72 IN UINTN Count,
73 IN OUT VOID *Buffer
74 );
75
76 /**
77 Enables a driver to read registers in the PI CPU I/O space.
78
79 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance.
80 @param[in] Width Signifies the width of the I/O operation.
81 @param[in] Address The base address of the I/O operation. The caller is responsible
82 for aligning the Address if required.
83 @param[in] Count The number of I/O operations to perform. The number of bytes moved
84 is Width size * Count, starting at Address.
85 @param[out] Buffer The destination buffer to store the results.
86
87 @retval EFI_SUCCESS The data was read from or written to the EFI system.
88 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system. Or Buffer is NULL.
89 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
90 Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
91
92 **/
93 EFI_STATUS
94 EFIAPI
95 CpuIoServiceRead (
96 IN EFI_CPU_IO2_PROTOCOL *This,
97 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
98 IN UINT64 Address,
99 IN UINTN Count,
100 IN OUT VOID *Buffer
101 );
102
103 /**
104 Enables a driver to write registers in the PI CPU I/O space.
105
106 @param[in] This A pointer to the EFI_CPU_IO2_PROTOCOL instance.
107 @param[in] Width Signifies the width of the I/O operation.
108 @param[in] Address The base address of the I/O operation. The caller is responsible
109 for aligning the Address if required.
110 @param[in] Count The number of I/O operations to perform. The number of bytes moved
111 is Width size * Count, starting at Address.
112 @param[in] Buffer The source buffer from which to write data.
113
114 @retval EFI_SUCCESS The data was read from or written to the EFI system.
115 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system. Or Buffer is NULL.
116 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
117 Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
118
119 **/
120 EFI_STATUS
121 EFIAPI
122 CpuIoServiceWrite (
123 IN EFI_CPU_IO2_PROTOCOL *This,
124 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
125 IN UINT64 Address,
126 IN UINTN Count,
127 IN OUT VOID *Buffer
128 );
129
130 #endif