]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Protocol/IsaIo/IsaIo.h
remove reference to the obsolete EFI_LIGHT_ISA_IO_PROTOCOL. This protocol is introduc...
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Protocol / IsaIo / IsaIo.h
CommitLineData
3eb9473e 1/*++\r
2\r
da3ce3d0 3Copyright (c) 2004 - 2008, Intel Corporation \r
3eb9473e 4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 IsaIo.h\r
15 \r
16Abstract:\r
17\r
da3ce3d0 18 EFI_ISA_IO_PROTOCOL\r
3eb9473e 19\r
20Revision History\r
21\r
22--*/\r
23\r
24#ifndef _EFI_ISA_IO_H\r
25#define _EFI_ISA_IO_H\r
26\r
27//\r
28// Common definitions for Light ISA I/O Protocol and ISA I/O Protocol\r
29//\r
30\r
31#include EFI_PROTOCOL_DEFINITION(IsaAcpi)\r
32\r
33typedef enum {\r
34 EfiIsaIoWidthUint8,\r
35 EfiIsaIoWidthUint16,\r
36 EfiIsaIoWidthUint32,\r
37 EfiIsaIoWidthReserved,\r
38 EfiIsaIoWidthFifoUint8,\r
39 EfiIsaIoWidthFifoUint16,\r
40 EfiIsaIoWidthFifoUint32,\r
41 EfiIsaIoWidthFifoReserved,\r
42 EfiIsaIoWidthFillUint8,\r
43 EfiIsaIoWidthFillUint16,\r
44 EfiIsaIoWidthFillUint32,\r
45 EfiIsaIoWidthFillReserved,\r
46 EfiIsaIoWidthMaximum\r
47} EFI_ISA_IO_PROTOCOL_WIDTH;\r
48\r
49//\r
50// Attributes for common buffer allocations\r
51//\r
52#define EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x080 // Map a memory range so write are combined\r
53#define EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED 0x800 // Map a memory range so all r/w accesses are cached\r
54#define EFI_ISA_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 // Disable a memory range \r
55\r
56//\r
57// Channel attribute for DMA operations\r
58//\r
59#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE 0x001\r
60#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A 0x002\r
61#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B 0x004\r
62#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C 0x008\r
63#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 0x010\r
64#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16 0x020\r
65#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE 0x040\r
66#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE 0x080\r
67#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE 0x100\r
68\r
69typedef enum {\r
70 EfiIsaIoOperationBusMasterRead,\r
71 EfiIsaIoOperationBusMasterWrite,\r
72 EfiIsaIoOperationBusMasterCommonBuffer,\r
73 EfiIsaIoOperationSlaveRead,\r
74 EfiIsaIoOperationSlaveWrite,\r
75 EfiIsaIoOperationMaximum\r
76} EFI_ISA_IO_PROTOCOL_OPERATION;\r
77\r
3eb9473e 78//\r
79// Specific for ISA I/O Protocol\r
80//\r
81\r
82#define EFI_INTERFACE_DEFINITION_FOR_ISA_IO EFI_ISA_IO_PROTOCOL\r
83#define EFI_ISA_IO_PROTOCOL_VERSION &gEfiIsaIoProtocolGuid\r
84#define EFI_ISA_IO_OPERATION_TOKEN EfiIsaIoOperationBusMasterWrite\r
85\r
86\r
87//\r
88// Global ID for the ISA I/O Protocol\r
89//\r
90\r
91#define EFI_ISA_IO_PROTOCOL_GUID \\r
7ccf38a3 92 { 0x7ee2bd44, 0x3da0, 0x11d4, {0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }\r
3eb9473e 93\r
94EFI_FORWARD_DECLARATION (EFI_ISA_IO_PROTOCOL);\r
95\r
96typedef\r
97EFI_STATUS\r
98(EFIAPI *EFI_ISA_IO_PROTOCOL_IO_MEM) (\r
99 IN EFI_ISA_IO_PROTOCOL *This,\r
100 IN EFI_ISA_IO_PROTOCOL_WIDTH Width,\r
101 IN UINT32 Offset,\r
102 IN UINTN Count,\r
103 IN OUT VOID *Buffer\r
104 );\r
105\r
106typedef struct {\r
107 EFI_ISA_IO_PROTOCOL_IO_MEM Read;\r
108 EFI_ISA_IO_PROTOCOL_IO_MEM Write;\r
109} EFI_ISA_IO_PROTOCOL_ACCESS;\r
110\r
111typedef\r
112EFI_STATUS\r
113(EFIAPI *EFI_ISA_IO_PROTOCOL_COPY_MEM) (\r
114 IN EFI_ISA_IO_PROTOCOL *This,\r
115 IN EFI_ISA_IO_PROTOCOL_WIDTH Width,\r
116 IN UINT32 DestOffset,\r
117 IN UINT32 SrcOffset,\r
118 IN UINTN Count\r
119 );\r
120\r
121typedef\r
122EFI_STATUS\r
123(EFIAPI *EFI_ISA_IO_PROTOCOL_MAP) (\r
124 IN EFI_ISA_IO_PROTOCOL *This,\r
125 IN EFI_ISA_IO_PROTOCOL_OPERATION Operation,\r
126 IN UINT8 ChannelNumber OPTIONAL,\r
127 IN UINT32 ChannelAttributes,\r
128 IN VOID *HostAddress,\r
129 IN OUT UINTN *NumberOfBytes,\r
130 OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,\r
131 OUT VOID **Mapping\r
132 );\r
133\r
134typedef\r
135EFI_STATUS\r
136(EFIAPI *EFI_ISA_IO_PROTOCOL_UNMAP) (\r
137 IN EFI_ISA_IO_PROTOCOL *This,\r
138 IN VOID *Mapping\r
139 );\r
140\r
141typedef\r
142EFI_STATUS\r
143(EFIAPI *EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER) (\r
144 IN EFI_ISA_IO_PROTOCOL *This,\r
145 IN EFI_ALLOCATE_TYPE Type,\r
146 IN EFI_MEMORY_TYPE MemoryType,\r
147 IN UINTN Pages,\r
148 OUT VOID **HostAddress,\r
149 IN UINT64 Attributes\r
150 );\r
151\r
152typedef\r
153EFI_STATUS\r
154(EFIAPI *EFI_ISA_IO_PROTOCOL_FREE_BUFFER) (\r
155 IN EFI_ISA_IO_PROTOCOL *This,\r
156 IN UINTN Pages,\r
157 IN VOID *HostAddress\r
158 );\r
159\r
160typedef\r
161EFI_STATUS\r
162(EFIAPI *EFI_ISA_IO_PROTOCOL_FLUSH) (\r
163 IN EFI_ISA_IO_PROTOCOL *This\r
164 );\r
165\r
166//\r
167// Interface structure for the ISA I/O Protocol\r
168//\r
9c092841 169struct _EFI_ISA_IO_PROTOCOL {\r
3eb9473e 170 EFI_ISA_IO_PROTOCOL_ACCESS Mem;\r
171 EFI_ISA_IO_PROTOCOL_ACCESS Io;\r
172 EFI_ISA_IO_PROTOCOL_COPY_MEM CopyMem;\r
173 EFI_ISA_IO_PROTOCOL_MAP Map;\r
174 EFI_ISA_IO_PROTOCOL_UNMAP Unmap;\r
175 EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;\r
176 EFI_ISA_IO_PROTOCOL_FREE_BUFFER FreeBuffer;\r
177 EFI_ISA_IO_PROTOCOL_FLUSH Flush;\r
178 EFI_ISA_ACPI_RESOURCE_LIST *ResourceList;\r
179 UINT32 RomSize;\r
180 VOID *RomImage;\r
9c092841 181};\r
3eb9473e 182\r
183extern EFI_GUID gEfiIsaIoProtocolGuid;\r
184\r
3eb9473e 185\r
186#endif\r