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