+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- IsaIo.h\r
- \r
-Abstract:\r
-\r
- EFI_ISA_IO_PROTOCOL\r
-\r
-Revision History\r
-\r
---*/\r
-\r
-#ifndef _EFI_ISA_IO_H\r
-#define _EFI_ISA_IO_H\r
-\r
-//\r
-// Common definitions for Light ISA I/O Protocol and ISA I/O Protocol\r
-//\r
-\r
-#include EFI_PROTOCOL_DEFINITION(IsaAcpi)\r
-\r
-typedef enum {\r
- EfiIsaIoWidthUint8,\r
- EfiIsaIoWidthUint16,\r
- EfiIsaIoWidthUint32,\r
- EfiIsaIoWidthReserved,\r
- EfiIsaIoWidthFifoUint8,\r
- EfiIsaIoWidthFifoUint16,\r
- EfiIsaIoWidthFifoUint32,\r
- EfiIsaIoWidthFifoReserved,\r
- EfiIsaIoWidthFillUint8,\r
- EfiIsaIoWidthFillUint16,\r
- EfiIsaIoWidthFillUint32,\r
- EfiIsaIoWidthFillReserved,\r
- EfiIsaIoWidthMaximum\r
-} EFI_ISA_IO_PROTOCOL_WIDTH;\r
-\r
-//\r
-// Attributes for common buffer allocations\r
-//\r
-#define EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x080 // Map a memory range so write are combined\r
-#define EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED 0x800 // Map a memory range so all r/w accesses are cached\r
-#define EFI_ISA_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 // Disable a memory range \r
-\r
-//\r
-// Channel attribute for DMA operations\r
-//\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE 0x001\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A 0x002\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B 0x004\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C 0x008\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 0x010\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16 0x020\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE 0x040\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE 0x080\r
-#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE 0x100\r
-\r
-typedef enum {\r
- EfiIsaIoOperationBusMasterRead,\r
- EfiIsaIoOperationBusMasterWrite,\r
- EfiIsaIoOperationBusMasterCommonBuffer,\r
- EfiIsaIoOperationSlaveRead,\r
- EfiIsaIoOperationSlaveWrite,\r
- EfiIsaIoOperationMaximum\r
-} EFI_ISA_IO_PROTOCOL_OPERATION;\r
-\r
-//\r
-// Specific for ISA I/O Protocol\r
-//\r
-\r
-#define EFI_INTERFACE_DEFINITION_FOR_ISA_IO EFI_ISA_IO_PROTOCOL\r
-#define EFI_ISA_IO_PROTOCOL_VERSION &gEfiIsaIoProtocolGuid\r
-#define EFI_ISA_IO_OPERATION_TOKEN EfiIsaIoOperationBusMasterWrite\r
-\r
-\r
-//\r
-// Global ID for the ISA I/O Protocol\r
-//\r
-\r
-#define EFI_ISA_IO_PROTOCOL_GUID \\r
- { 0x7ee2bd44, 0x3da0, 0x11d4, {0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }\r
-\r
-EFI_FORWARD_DECLARATION (EFI_ISA_IO_PROTOCOL);\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ISA_IO_PROTOCOL_IO_MEM) (\r
- IN EFI_ISA_IO_PROTOCOL *This,\r
- IN EFI_ISA_IO_PROTOCOL_WIDTH Width,\r
- IN UINT32 Offset,\r
- IN UINTN Count,\r
- IN OUT VOID *Buffer\r
- );\r
-\r
-typedef struct {\r
- EFI_ISA_IO_PROTOCOL_IO_MEM Read;\r
- EFI_ISA_IO_PROTOCOL_IO_MEM Write;\r
-} EFI_ISA_IO_PROTOCOL_ACCESS;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ISA_IO_PROTOCOL_COPY_MEM) (\r
- IN EFI_ISA_IO_PROTOCOL *This,\r
- IN EFI_ISA_IO_PROTOCOL_WIDTH Width,\r
- IN UINT32 DestOffset,\r
- IN UINT32 SrcOffset,\r
- IN UINTN Count\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ISA_IO_PROTOCOL_MAP) (\r
- IN EFI_ISA_IO_PROTOCOL *This,\r
- IN EFI_ISA_IO_PROTOCOL_OPERATION Operation,\r
- IN UINT8 ChannelNumber OPTIONAL,\r
- IN UINT32 ChannelAttributes,\r
- IN VOID *HostAddress,\r
- IN OUT UINTN *NumberOfBytes,\r
- OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,\r
- OUT VOID **Mapping\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ISA_IO_PROTOCOL_UNMAP) (\r
- IN EFI_ISA_IO_PROTOCOL *This,\r
- IN VOID *Mapping\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER) (\r
- IN EFI_ISA_IO_PROTOCOL *This,\r
- IN EFI_ALLOCATE_TYPE Type,\r
- IN EFI_MEMORY_TYPE MemoryType,\r
- IN UINTN Pages,\r
- OUT VOID **HostAddress,\r
- IN UINT64 Attributes\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ISA_IO_PROTOCOL_FREE_BUFFER) (\r
- IN EFI_ISA_IO_PROTOCOL *This,\r
- IN UINTN Pages,\r
- IN VOID *HostAddress\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ISA_IO_PROTOCOL_FLUSH) (\r
- IN EFI_ISA_IO_PROTOCOL *This\r
- );\r
-\r
-//\r
-// Interface structure for the ISA I/O Protocol\r
-//\r
-struct _EFI_ISA_IO_PROTOCOL {\r
- EFI_ISA_IO_PROTOCOL_ACCESS Mem;\r
- EFI_ISA_IO_PROTOCOL_ACCESS Io;\r
- EFI_ISA_IO_PROTOCOL_COPY_MEM CopyMem;\r
- EFI_ISA_IO_PROTOCOL_MAP Map;\r
- EFI_ISA_IO_PROTOCOL_UNMAP Unmap;\r
- EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;\r
- EFI_ISA_IO_PROTOCOL_FREE_BUFFER FreeBuffer;\r
- EFI_ISA_IO_PROTOCOL_FLUSH Flush;\r
- EFI_ISA_ACPI_RESOURCE_LIST *ResourceList;\r
- UINT32 RomSize;\r
- VOID *RomImage;\r
-};\r
-\r
-extern EFI_GUID gEfiIsaIoProtocolGuid;\r
-\r
-\r
-#endif\r