3 Copyright (c) 2006 - 2007, Intel Corporation
4 All rights reserved. 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
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.
28 #include <Protocol/IsaAcpi.h>
31 // Global ID for the ISA I/O Protocol
34 #define EFI_ISA_IO_PROTOCOL_GUID \
35 { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
37 typedef struct _EFI_ISA_IO_PROTOCOL EFI_ISA_IO_PROTOCOL
;
40 // Prototypes for the ISA I/O Protocol
47 EfiIsaIoWidthReserved
,
48 EfiIsaIoWidthFifoUint8
,
49 EfiIsaIoWidthFifoUint16
,
50 EfiIsaIoWidthFifoUint32
,
51 EfiIsaIoWidthFifoReserved
,
52 EfiIsaIoWidthFillUint8
,
53 EfiIsaIoWidthFillUint16
,
54 EfiIsaIoWidthFillUint32
,
55 EfiIsaIoWidthFillReserved
,
57 } EFI_ISA_IO_PROTOCOL_WIDTH
;
60 // Attributes for common buffer allocations
62 #define EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x080 // Map a memory range so write are combined
63 #define EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED 0x800 // Map a memory range so all r/w accesses are cached
64 #define EFI_ISA_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 // Disable a memory range
67 // Channel attribute for DMA operations
69 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE 0x001
70 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A 0x002
71 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B 0x004
72 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C 0x008
73 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 0x010
74 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16 0x020
75 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE 0x040
76 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE 0x080
77 #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE 0x100
80 EfiIsaIoOperationBusMasterRead
,
81 EfiIsaIoOperationBusMasterWrite
,
82 EfiIsaIoOperationBusMasterCommonBuffer
,
83 EfiIsaIoOperationSlaveRead
,
84 EfiIsaIoOperationSlaveWrite
,
85 EfiIsaIoOperationMaximum
86 } EFI_ISA_IO_PROTOCOL_OPERATION
;
90 (EFIAPI
*EFI_ISA_IO_PROTOCOL_IO_MEM
) (
91 IN EFI_ISA_IO_PROTOCOL
*This
,
92 IN EFI_ISA_IO_PROTOCOL_WIDTH Width
,
99 EFI_ISA_IO_PROTOCOL_IO_MEM Read
;
100 EFI_ISA_IO_PROTOCOL_IO_MEM Write
;
101 } EFI_ISA_IO_PROTOCOL_ACCESS
;
105 (EFIAPI
*EFI_ISA_IO_PROTOCOL_COPY_MEM
) (
106 IN EFI_ISA_IO_PROTOCOL
*This
,
107 IN EFI_ISA_IO_PROTOCOL_WIDTH Width
,
108 IN UINT32 DestOffset
,
115 (EFIAPI
*EFI_ISA_IO_PROTOCOL_MAP
) (
116 IN EFI_ISA_IO_PROTOCOL
*This
,
117 IN EFI_ISA_IO_PROTOCOL_OPERATION Operation
,
118 IN UINT8 ChannelNumber OPTIONAL
,
119 IN UINT32 ChannelAttributes
,
120 IN VOID
*HostAddress
,
121 IN OUT UINTN
*NumberOfBytes
,
122 OUT EFI_PHYSICAL_ADDRESS
*DeviceAddress
,
128 (EFIAPI
*EFI_ISA_IO_PROTOCOL_UNMAP
) (
129 IN EFI_ISA_IO_PROTOCOL
*This
,
135 (EFIAPI
*EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER
) (
136 IN EFI_ISA_IO_PROTOCOL
*This
,
137 IN EFI_ALLOCATE_TYPE Type
,
138 IN EFI_MEMORY_TYPE MemoryType
,
140 OUT VOID
**HostAddress
,
146 (EFIAPI
*EFI_ISA_IO_PROTOCOL_FREE_BUFFER
) (
147 IN EFI_ISA_IO_PROTOCOL
*This
,
154 (EFIAPI
*EFI_ISA_IO_PROTOCOL_FLUSH
) (
155 IN EFI_ISA_IO_PROTOCOL
*This
159 // Interface structure for the ISA I/O Protocol
161 struct _EFI_ISA_IO_PROTOCOL
{
162 EFI_ISA_IO_PROTOCOL_ACCESS Mem
;
163 EFI_ISA_IO_PROTOCOL_ACCESS Io
;
164 EFI_ISA_IO_PROTOCOL_COPY_MEM CopyMem
;
165 EFI_ISA_IO_PROTOCOL_MAP Map
;
166 EFI_ISA_IO_PROTOCOL_UNMAP Unmap
;
167 EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer
;
168 EFI_ISA_IO_PROTOCOL_FREE_BUFFER FreeBuffer
;
169 EFI_ISA_IO_PROTOCOL_FLUSH Flush
;
170 EFI_ISA_ACPI_RESOURCE_LIST
*ResourceList
;
175 extern EFI_GUID gEfiIsaIoProtocolGuid
;