]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkPkg/Include/Protocol/CpuIo.h
Update to BSD license header.
[mirror_edk2.git] / IntelFrameworkPkg / Include / Protocol / CpuIo.h
1 /** @file
2 This code abstracts the CPU IO Protocol
3
4 Copyright (c) 2007, 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 Module Name: CpuIO.h
14
15 @par Revision Reference:
16 CPU IO Protocol is defined in Framework of EFI CPU IO Protocol Spec
17 Version 0.9
18
19 **/
20
21 #ifndef _CPUIO_H_
22 #define _CPUIO_H_
23
24 #include <PiDxe.h>
25
26 #define EFI_CPU_IO_PROTOCOL_GUID \
27 { \
28 0xB0732526, 0x38C8, 0x4b40, {0x88, 0x77, 0x61, 0xC7, 0xB0, 0x6A, 0xAC, 0x45 } \
29 }
30
31 typedef struct _EFI_CPU_IO_PROTOCOL EFI_CPU_IO_PROTOCOL;
32
33 //
34 // *******************************************************
35 // EFI_CPU_IO_PROTOCOL_WIDTH
36 // *******************************************************
37 //
38 typedef enum {
39 EfiCpuIoWidthUint8,
40 EfiCpuIoWidthUint16,
41 EfiCpuIoWidthUint32,
42 EfiCpuIoWidthUint64,
43 EfiCpuIoWidthFifoUint8,
44 EfiCpuIoWidthFifoUint16,
45 EfiCpuIoWidthFifoUint32,
46 EfiCpuIoWidthFifoUint64,
47 EfiCpuIoWidthFillUint8,
48 EfiCpuIoWidthFillUint16,
49 EfiCpuIoWidthFillUint32,
50 EfiCpuIoWidthFillUint64,
51 EfiCpuIoWidthMaximum
52 } EFI_CPU_IO_PROTOCOL_WIDTH;
53
54 //
55 // *******************************************************
56 // EFI_CPU_IO_PROTOCOL_IO_MEM
57 // *******************************************************
58 //
59 /**
60 Enables a driver to access memory-mapped registers in the EFI system memory space.
61 Or, Enables a driver to access registers in the EFI CPU I/O space.
62
63 @param This A pointer to the EFI_CPU_IO_PROTOCOL instance.
64 @param Width Signifies the width of the I/O or Memory operation.
65 @param Address The base address of the I/O or Memoryoperation.
66 @param Count The number of I/O or Memory operations to perform.
67 The number of bytes moved is Width size * Count, starting at Address.
68 @param Buffer For read operations, the destination buffer to store the results.
69 For write operations, the source buffer from which to write data.
70
71 @retval EFI_SUCCESS The data was read from or written to the EFI system.
72 @retval EFI_INVALID_PARAMETER Width is invalid for this EFI system.Or Buffer is NULL.
73 @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width.
74 Or,The address range specified by Address, Width, and Count is not valid for this EFI system.
75
76 **/
77 typedef
78 EFI_STATUS
79 (EFIAPI *EFI_CPU_IO_PROTOCOL_IO_MEM) (
80 IN EFI_CPU_IO_PROTOCOL *This,
81 IN EFI_CPU_IO_PROTOCOL_WIDTH Width,
82 IN UINT64 Address,
83 IN UINTN Count,
84 IN OUT VOID *Buffer
85 );
86
87 //
88 // *******************************************************
89 // EFI_CPU_IO_PROTOCOL_ACCESS
90 // *******************************************************
91 //
92 typedef struct {
93 EFI_CPU_IO_PROTOCOL_IO_MEM Read;
94 EFI_CPU_IO_PROTOCOL_IO_MEM Write;
95 } EFI_CPU_IO_PROTOCOL_ACCESS;
96
97 //
98 // *******************************************************
99 // EFI_CPU_IO_PROTOCOL
100 // *******************************************************
101 //
102 /**
103 @par Protocol Description:
104 Provides the basic memory and I/O interfaces that are used to abstract
105 accesses to devices in a system.
106
107 @param Mem.Read
108 Allows reads from memory-mapped I/O space.
109
110 @param Mem.Write
111 Allows writes to memory-mapped I/O space.
112
113 @param Io.Read
114 Allows reads from I/O space.
115
116 @param Io.Write
117 Allows writes to I/O space.
118
119 **/
120 struct _EFI_CPU_IO_PROTOCOL {
121 EFI_CPU_IO_PROTOCOL_ACCESS Mem;
122 EFI_CPU_IO_PROTOCOL_ACCESS Io;
123 };
124
125 extern EFI_GUID gEfiCpuIoProtocolGuid;
126
127 #endif