mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-28 00:04:17 +00:00 
			
		
		
		
	 3db510989e
			
		
	
	
		3db510989e
		
	
	
	
	
		
			
			git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3401 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			169 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**@file
 | |
|   EFI ISA I/O Protocol
 | |
| 
 | |
| Copyright (c) 2006 - 2007, Intel Corporation                                                         
 | |
| All rights reserved. This program and the accompanying materials                          
 | |
| are licensed and made available under the terms and conditions of the BSD License         
 | |
| which accompanies this distribution.  The full text of the license may be found at        
 | |
| http://opensource.org/licenses/bsd-license.php                                            
 | |
|                                                                                           
 | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
 | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _EFI_ISA_IO_H
 | |
| #define _EFI_ISA_IO_H
 | |
| 
 | |
| 
 | |
| #include <Protocol/IsaAcpi.h>
 | |
| 
 | |
| //
 | |
| // Global ID for the ISA I/O Protocol
 | |
| //
 | |
| 
 | |
| #define EFI_ISA_IO_PROTOCOL_GUID \
 | |
|   { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
 | |
| 
 | |
| typedef struct _EFI_ISA_IO_PROTOCOL EFI_ISA_IO_PROTOCOL;
 | |
| 
 | |
| //
 | |
| // Prototypes for the ISA I/O Protocol
 | |
| //
 | |
| 
 | |
| typedef enum {
 | |
|   EfiIsaIoWidthUint8,
 | |
|   EfiIsaIoWidthUint16,
 | |
|   EfiIsaIoWidthUint32,
 | |
|   EfiIsaIoWidthReserved,
 | |
|   EfiIsaIoWidthFifoUint8,
 | |
|   EfiIsaIoWidthFifoUint16,
 | |
|   EfiIsaIoWidthFifoUint32,
 | |
|   EfiIsaIoWidthFifoReserved,
 | |
|   EfiIsaIoWidthFillUint8,
 | |
|   EfiIsaIoWidthFillUint16,
 | |
|   EfiIsaIoWidthFillUint32,
 | |
|   EfiIsaIoWidthFillReserved,
 | |
|   EfiIsaIoWidthMaximum
 | |
| } EFI_ISA_IO_PROTOCOL_WIDTH;
 | |
| 
 | |
| //
 | |
| // Attributes for common buffer allocations
 | |
| //
 | |
| #define EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE  0x080    // Map a memory range so write are combined
 | |
| #define EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED         0x800    // Map a memory range so all r/w accesses are cached
 | |
| #define EFI_ISA_IO_ATTRIBUTE_MEMORY_DISABLE        0x1000   // Disable a memory range 
 | |
| 
 | |
| //
 | |
| // Channel attribute for DMA operations
 | |
| //
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE  0x001
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A           0x002
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B           0x004
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C           0x008
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8           0x010
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16          0x020
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE       0x040
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE       0x080
 | |
| #define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE   0x100
 | |
| 
 | |
| typedef enum {
 | |
|   EfiIsaIoOperationBusMasterRead,
 | |
|   EfiIsaIoOperationBusMasterWrite,
 | |
|   EfiIsaIoOperationBusMasterCommonBuffer,
 | |
|   EfiIsaIoOperationSlaveRead,
 | |
|   EfiIsaIoOperationSlaveWrite,
 | |
|   EfiIsaIoOperationMaximum
 | |
| } EFI_ISA_IO_PROTOCOL_OPERATION;
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ISA_IO_PROTOCOL_IO_MEM) (
 | |
|   IN     EFI_ISA_IO_PROTOCOL          *This,
 | |
|   IN     EFI_ISA_IO_PROTOCOL_WIDTH    Width,
 | |
|   IN     UINT32                       Offset,
 | |
|   IN     UINTN                        Count,
 | |
|   IN OUT VOID                         *Buffer
 | |
|   );
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_ISA_IO_PROTOCOL_IO_MEM  Read;
 | |
|   EFI_ISA_IO_PROTOCOL_IO_MEM  Write;
 | |
| } EFI_ISA_IO_PROTOCOL_ACCESS;
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ISA_IO_PROTOCOL_COPY_MEM) (
 | |
|   IN     EFI_ISA_IO_PROTOCOL          *This,
 | |
|   IN     EFI_ISA_IO_PROTOCOL_WIDTH    Width,
 | |
|   IN     UINT32                       DestOffset,
 | |
|   IN     UINT32                       SrcOffset,
 | |
|   IN     UINTN                        Count
 | |
|   );
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ISA_IO_PROTOCOL_MAP) (
 | |
|   IN     EFI_ISA_IO_PROTOCOL            *This,
 | |
|   IN     EFI_ISA_IO_PROTOCOL_OPERATION  Operation,
 | |
|   IN     UINT8                          ChannelNumber      OPTIONAL,
 | |
|   IN     UINT32                         ChannelAttributes,
 | |
|   IN     VOID                           *HostAddress,
 | |
|   IN OUT UINTN                          *NumberOfBytes,
 | |
|   OUT    EFI_PHYSICAL_ADDRESS           *DeviceAddress,
 | |
|   OUT    VOID                           **Mapping
 | |
|   );
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ISA_IO_PROTOCOL_UNMAP) (
 | |
|   IN  EFI_ISA_IO_PROTOCOL          *This,
 | |
|   IN  VOID                         *Mapping
 | |
|   );
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER) (
 | |
|   IN  EFI_ISA_IO_PROTOCOL          *This,
 | |
|   IN  EFI_ALLOCATE_TYPE            Type,
 | |
|   IN  EFI_MEMORY_TYPE              MemoryType,
 | |
|   IN  UINTN                        Pages,
 | |
|   OUT VOID                         **HostAddress,
 | |
|   IN  UINT64                       Attributes
 | |
|   );
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ISA_IO_PROTOCOL_FREE_BUFFER) (
 | |
|   IN  EFI_ISA_IO_PROTOCOL          *This,
 | |
|   IN  UINTN                        Pages,
 | |
|   IN  VOID                         *HostAddress
 | |
|   );
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ISA_IO_PROTOCOL_FLUSH) (
 | |
|   IN EFI_ISA_IO_PROTOCOL                  *This
 | |
|   );
 | |
| 
 | |
| //
 | |
| // Interface structure for the ISA I/O Protocol
 | |
| //
 | |
| struct _EFI_ISA_IO_PROTOCOL {
 | |
|   EFI_ISA_IO_PROTOCOL_ACCESS           Mem;
 | |
|   EFI_ISA_IO_PROTOCOL_ACCESS           Io;
 | |
|   EFI_ISA_IO_PROTOCOL_COPY_MEM         CopyMem;
 | |
|   EFI_ISA_IO_PROTOCOL_MAP              Map;
 | |
|   EFI_ISA_IO_PROTOCOL_UNMAP            Unmap;
 | |
|   EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER  AllocateBuffer;
 | |
|   EFI_ISA_IO_PROTOCOL_FREE_BUFFER      FreeBuffer;
 | |
|   EFI_ISA_IO_PROTOCOL_FLUSH            Flush;
 | |
|   EFI_ISA_ACPI_RESOURCE_LIST           *ResourceList;
 | |
|   UINT32                               RomSize;
 | |
|   VOID                                 *RomImage;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gEfiIsaIoProtocolGuid;
 | |
| 
 | |
| #endif
 |