1 /*++
2
3 Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 Io.c
15
16 Abstract:
17
18 Light weight lib functions that wrape IoRead (), IoWrite, MemRead (),
19 and MemWrite ().
20
21 --*/
22
23 #include "Tiano.h"
24 #include "EfiRuntimeLib.h"
25
26 UINT8
IoRead8(IN UINT64 Address)27 IoRead8 (
28 IN UINT64 Address
29 )
30 /*++
31
32 Routine Description:
33 Do a one byte IO read
34
35 Arguments:
36 Address - IO address to read
37
38 Returns:
39 Data read
40
41 --*/
42 {
43 UINT8 Buffer;
44
45 Buffer = 0;
46 EfiIoRead (EfiCpuIoWidthUint8, Address, 1, &Buffer);
47 return Buffer;
48 }
49
50 UINT16
IoRead16(IN UINT64 Address)51 IoRead16 (
52 IN UINT64 Address
53 )
54 /*++
55
56 Routine Description:
57 Do a two byte IO read
58
59 Arguments:
60 Address - IO address to read
61
62 Returns:
63 Data read
64
65 --*/
66 {
67 UINT16 Buffer;
68
69 Buffer = 0;
70 EfiIoRead (EfiCpuIoWidthUint16, Address, 1, &Buffer);
71 return Buffer;
72 }
73
74 UINT32
IoRead32(IN UINT64 Address)75 IoRead32 (
76 IN UINT64 Address
77 )
78 /*++
79
80 Routine Description:
81 Do a four byte IO read
82
83 Arguments:
84 Address - IO address to read
85
86 Returns:
87 Data read
88
89 --*/
90 {
91 UINT32 Buffer;
92
93 Buffer = 0;
94 EfiIoRead (EfiCpuIoWidthUint32, Address, 1, &Buffer);
95 return Buffer;
96 }
97
98 VOID
IoWrite8(IN UINT64 Address,IN UINT8 Data)99 IoWrite8 (
100 IN UINT64 Address,
101 IN UINT8 Data
102 )
103 /*++
104
105 Routine Description:
106 Do a one byte IO write
107
108 Arguments:
109 Address - IO address to write
110 Data - Data to write to Address
111
112 Returns:
113 NONE
114
115 --*/
116 {
117 EfiIoWrite (EfiCpuIoWidthUint8, Address, 1, &Data);
118 }
119
120 VOID
IoWrite16(IN UINT64 Address,IN UINT16 Data)121 IoWrite16 (
122 IN UINT64 Address,
123 IN UINT16 Data
124 )
125 /*++
126
127 Routine Description:
128 Do a two byte IO write
129
130 Arguments:
131 Address - IO address to write
132 Data - Data to write to Address
133
134 Returns:
135 NONE
136
137 --*/
138 {
139 EfiIoWrite (EfiCpuIoWidthUint16, Address, 1, &Data);
140 }
141
142 VOID
IoWrite32(IN UINT64 Address,IN UINT32 Data)143 IoWrite32 (
144 IN UINT64 Address,
145 IN UINT32 Data
146 )
147 /*++
148
149 Routine Description:
150 Do a four byte IO write
151
152 Arguments:
153 Address - IO address to write
154 Data - Data to write to Address
155
156 Returns:
157 NONE
158
159 --*/
160 {
161 EfiIoWrite (EfiCpuIoWidthUint32, Address, 1, &Data);
162 }
163
164 UINT8
MemRead8(IN UINT64 Address)165 MemRead8 (
166 IN UINT64 Address
167 )
168 /*++
169
170 Routine Description:
171 Do a one byte Memory mapped IO read
172
173 Arguments:
174 Address - Memory mapped IO address to read
175
176 Returns:
177 Data read
178
179 --*/
180 {
181 UINT8 Buffer;
182
183 Buffer = 0;
184 EfiMemRead (EfiCpuIoWidthUint8, Address, 1, &Buffer);
185 return Buffer;
186 }
187
188 UINT16
MemRead16(IN UINT64 Address)189 MemRead16 (
190 IN UINT64 Address
191 )
192 /*++
193
194 Routine Description:
195 Do a two byte Memory mapped IO read
196
197 Arguments:
198 Address - Memory mapped IO address to read
199
200 Returns:
201 Data read
202
203 --*/
204 {
205 UINT16 Buffer;
206
207 Buffer = 0;
208 EfiMemRead (EfiCpuIoWidthUint16, Address, 1, &Buffer);
209 return Buffer;
210 }
211
212 UINT32
MemRead32(IN UINT64 Address)213 MemRead32 (
214 IN UINT64 Address
215 )
216 /*++
217
218 Routine Description:
219 Do a four byte Memory mapped IO read
220
221 Arguments:
222 Address - Memory mapped IO address to read
223
224 Returns:
225 Data read
226
227 --*/
228 {
229 UINT32 Buffer;
230
231 Buffer = 0;
232 EfiMemRead (EfiCpuIoWidthUint32, Address, 1, &Buffer);
233 return Buffer;
234 }
235
236 UINT64
MemRead64(IN UINT64 Address)237 MemRead64 (
238 IN UINT64 Address
239 )
240 /*++
241
242 Routine Description:
243 Do a eight byte Memory mapped IO read
244
245 Arguments:
246 Address - Memory mapped IO address to read
247
248 Returns:
249 Data read
250
251 --*/
252 {
253 UINT64 Buffer;
254
255 Buffer = 0;
256 EfiMemRead (EfiCpuIoWidthUint64, Address, 1, &Buffer);
257 return Buffer;
258 }
259
260 VOID
MemWrite8(IN UINT64 Address,IN UINT8 Data)261 MemWrite8 (
262 IN UINT64 Address,
263 IN UINT8 Data
264 )
265 /*++
266
267 Routine Description:
268 Do a one byte Memory mapped IO write
269
270 Arguments:
271 Address - Memory mapped IO address to write
272 Data - Data to write to Address
273
274 Returns:
275 NONE
276
277 --*/
278 {
279 EfiMemWrite (EfiCpuIoWidthUint8, Address, 1, &Data);
280 }
281
282 VOID
MemWrite16(IN UINT64 Address,IN UINT16 Data)283 MemWrite16 (
284 IN UINT64 Address,
285 IN UINT16 Data
286 )
287 /*++
288
289 Routine Description:
290 Do a two byte Memory mapped IO write
291
292 Arguments:
293 Address - Memory mapped IO address to write
294 Data - Data to write to Address
295
296 Returns:
297 NONE
298
299 --*/
300 {
301 EfiMemWrite (EfiCpuIoWidthUint16, Address, 1, &Data);
302 }
303
304 VOID
MemWrite32(IN UINT64 Address,IN UINT32 Data)305 MemWrite32 (
306 IN UINT64 Address,
307 IN UINT32 Data
308 )
309 /*++
310
311 Routine Description:
312 Do a four byte Memory mapped IO write
313
314 Arguments:
315 Address - Memory mapped IO address to write
316 Data - Data to write to Address
317
318 Returns:
319 NONE
320
321 --*/
322 {
323 EfiMemWrite (EfiCpuIoWidthUint32, Address, 1, &Data);
324 }
325
326 VOID
MemWrite64(IN UINT64 Address,IN UINT64 Data)327 MemWrite64 (
328 IN UINT64 Address,
329 IN UINT64 Data
330 )
331 /*++
332
333 Routine Description:
334 Do a eight byte Memory mapped IO write
335
336 Arguments:
337 Address - Memory mapped IO address to write
338 Data - Data to write to Address
339
340 Returns:
341 NONE
342
343 --*/
344 {
345 EfiMemWrite (EfiCpuIoWidthUint64, Address, 1, &Data);
346 }
347