VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.h@ 51614

Last change on this file since 51614 was 48674, checked in by vboxsync, 12 years ago

EFI: Export newly imported tinaocore UEFI sources to OSE.

  • Property svn:eol-style set to native
File size: 6.6 KB
Line 
1/** @file
2 Internal include file for the SMM CPU I/O Protocol.
3
4Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
5This program and the accompanying materials
6are licensed and made available under the terms and conditions of the BSD License
7which accompanies this distribution. The full text of the license may be found at
8http://opensource.org/licenses/bsd-license.php
9
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef _CPU_IO2_SMM_H_
16#define _CPU_IO2_SMM_H_
17
18#include <PiSmm.h>
19
20#include <Protocol/SmmCpuIo2.h>
21
22#include <Library/BaseLib.h>
23#include <Library/DebugLib.h>
24#include <Library/IoLib.h>
25#include <Library/SmmServicesTableLib.h>
26#include <Library/BaseMemoryLib.h>
27
28#define MAX_IO_PORT_ADDRESS 0xFFFF
29
30/**
31 Reads memory-mapped registers.
32
33 The I/O operations are carried out exactly as requested. The caller is
34 responsible for any alignment and I/O width issues that the bus, device,
35 platform, or type of I/O might require.
36
37 @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.
38 @param[in] Width Signifies the width of the I/O operations.
39 @param[in] Address The base address of the I/O operations. The caller is
40 responsible for aligning the Address if required.
41 @param[in] Count The number of I/O operations to perform.
42 @param[out] Buffer For read operations, the destination buffer to store
43 the results. For write operations, the source buffer
44 from which to write data.
45
46 @retval EFI_SUCCESS The data was read from or written to the device.
47 @retval EFI_UNSUPPORTED The Address is not valid for this system.
48 @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
49 @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a
50 lack of resources
51
52**/
53EFI_STATUS
54EFIAPI
55CpuMemoryServiceRead (
56 IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,
57 IN EFI_SMM_IO_WIDTH Width,
58 IN UINT64 Address,
59 IN UINTN Count,
60 OUT VOID *Buffer
61 );
62
63/**
64 Writes memory-mapped registers.
65
66 The I/O operations are carried out exactly as requested. The caller is
67 responsible for any alignment and I/O width issues that the bus, device,
68 platform, or type of I/O might require.
69
70 @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.
71 @param[in] Width Signifies the width of the I/O operations.
72 @param[in] Address The base address of the I/O operations. The caller is
73 responsible for aligning the Address if required.
74 @param[in] Count The number of I/O operations to perform.
75 @param[in] Buffer For read operations, the destination buffer to store
76 the results. For write operations, the source buffer
77 from which to write data.
78
79 @retval EFI_SUCCESS The data was read from or written to the device.
80 @retval EFI_UNSUPPORTED The Address is not valid for this system.
81 @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
82 @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a
83 lack of resources
84
85**/
86EFI_STATUS
87EFIAPI
88CpuMemoryServiceWrite (
89 IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,
90 IN EFI_SMM_IO_WIDTH Width,
91 IN UINT64 Address,
92 IN UINTN Count,
93 IN VOID *Buffer
94 );
95
96/**
97 Reads I/O registers.
98
99 The I/O operations are carried out exactly as requested. The caller is
100 responsible for any alignment and I/O width issues that the bus, device,
101 platform, or type of I/O might require.
102
103 @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.
104 @param[in] Width Signifies the width of the I/O operations.
105 @param[in] Address The base address of the I/O operations. The caller is
106 responsible for aligning the Address if required.
107 @param[in] Count The number of I/O operations to perform.
108 @param[out] Buffer For read operations, the destination buffer to store
109 the results. For write operations, the source buffer
110 from which to write data.
111
112 @retval EFI_SUCCESS The data was read from or written to the device.
113 @retval EFI_UNSUPPORTED The Address is not valid for this system.
114 @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
115 @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a
116 lack of resources
117
118**/
119EFI_STATUS
120EFIAPI
121CpuIoServiceRead (
122 IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,
123 IN EFI_SMM_IO_WIDTH Width,
124 IN UINT64 Address,
125 IN UINTN Count,
126 OUT VOID *Buffer
127 );
128
129/**
130 Write I/O registers.
131
132 The I/O operations are carried out exactly as requested. The caller is
133 responsible for any alignment and I/O width issues that the bus, device,
134 platform, or type of I/O might require.
135
136 @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance.
137 @param[in] Width Signifies the width of the I/O operations.
138 @param[in] Address The base address of the I/O operations. The caller is
139 responsible for aligning the Address if required.
140 @param[in] Count The number of I/O operations to perform.
141 @param[in] Buffer For read operations, the destination buffer to store
142 the results. For write operations, the source buffer
143 from which to write data.
144
145 @retval EFI_SUCCESS The data was read from or written to the device.
146 @retval EFI_UNSUPPORTED The Address is not valid for this system.
147 @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
148 @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a
149 lack of resources
150
151**/
152EFI_STATUS
153EFIAPI
154CpuIoServiceWrite (
155 IN CONST EFI_SMM_CPU_IO2_PROTOCOL *This,
156 IN EFI_SMM_IO_WIDTH Width,
157 IN UINT64 Address,
158 IN UINTN Count,
159 IN VOID *Buffer
160 );
161
162#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette