X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=IntelFrameworkModulePkg%2FBus%2FIsa%2FIsaBusDxe%2FInternalIsaIo.h;h=25427b4329903aad4d756136ae6e2b19896cc020;hp=36bb6655c6b47c4951e456b5316482fcb12c1f6f;hb=10c1a4ca0c7190e724b5850d7d2e98605618e32a;hpb=c55fa8cc3c2dbce4ea60ba9eef33a71ac587cb34 diff --git a/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaIo.h b/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaIo.h index 36bb6655c6..25427b4329 100644 --- a/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaIo.h +++ b/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaIo.h @@ -1,158 +1,343 @@ -/*++ - - 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. - -Module Name: - - IsaIo.h - -Abstract: - +/** @file The header file for EFI_ISA_IO protocol implementation. ---*/ +Copyright (c) 2006 - 2009, 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_LOCAL_H -#define _EFI_ISA_IO_LOCAL_H +#ifndef _INTERNAL_ISA_IO_H_ +#define _INTERNAL_ISA_IO_H_ #include "InternalIsaBus.h" +// +// Bits definition of PcdIsaBusSupportedFeatures +// +#define PCD_ISA_BUS_SUPPORT_DMA BIT0 +#define PCD_ISA_BUS_ONLY_SUPPORT_SLAVE_DMA BIT1 +#define PCD_ISA_BUS_SUPPORT_ISA_MEMORY BIT2 + // // ISA I/O Support Function Prototypes // +/** + Verifies access to an ISA device + + @param[in] IsaIoDevice The ISA device to be verified. + @param[in] Type The Access type. The input must be either IsaAccessTypeMem or IsaAccessTypeIo. + @param[in] Width The width of the memory operation. + @param[in] Count The number of memory operations to perform. + @param[in] Offset The offset in ISA memory space to start the memory operation. + + @retval EFI_SUCCESS Verify success. + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. + @retval EFI_UNSUPPORTED The device ont support the access type. +**/ EFI_STATUS IsaIoVerifyAccess ( - IN ISA_IO_DEVICE *IsaIoDevice, - IN ISA_ACCESS_TYPE Type, - IN EFI_ISA_IO_PROTOCOL_WIDTH Width, - IN UINTN Count, - IN OUT UINT32 *Offset + IN ISA_IO_DEVICE *IsaIoDevice, + IN ISA_ACCESS_TYPE Type, + IN EFI_ISA_IO_PROTOCOL_WIDTH Width, + IN UINTN Count, + IN UINT32 Offset ); +/** + Performs an ISA I/O Read Cycle + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Width Specifies the width of the I/O operation. + @param[in] Offset The offset in ISA I/O space to start the I/O operation. + @param[in] Count The number of I/O operations to perform. + @param[out] Buffer The destination buffer to store the results + + @retval EFI_SUCCESS The data was read from the device sucessfully. + @retval EFI_UNSUPPORTED The Offset is not valid for this device. + @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. +**/ EFI_STATUS EFIAPI IsaIoIoRead ( - IN EFI_ISA_IO_PROTOCOL *This, - IN EFI_ISA_IO_PROTOCOL_WIDTH Width, - IN UINT32 Offset, - IN UINTN Count, - IN OUT VOID *Buffer + IN EFI_ISA_IO_PROTOCOL *This, + IN EFI_ISA_IO_PROTOCOL_WIDTH Width, + IN UINT32 Offset, + IN UINTN Count, + OUT VOID *Buffer ); +/** + Performs an ISA I/O Write Cycle + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Width Specifies the width of the I/O operation. + @param[in] Offset The offset in ISA I/O space to start the I/O operation. + @param[in] Count The number of I/O operations to perform. + @param[in] Buffer The source buffer to write data from + + @retval EFI_SUCCESS The data was writen to the device sucessfully. + @retval EFI_UNSUPPORTED The Offset is not valid for this device. + @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. +**/ EFI_STATUS EFIAPI IsaIoIoWrite ( - IN EFI_ISA_IO_PROTOCOL *This, - IN EFI_ISA_IO_PROTOCOL_WIDTH Width, - IN UINT32 Offset, - IN UINTN Count, - IN OUT VOID *Buffer + IN EFI_ISA_IO_PROTOCOL *This, + IN EFI_ISA_IO_PROTOCOL_WIDTH Width, + IN UINT32 Offset, + IN UINTN Count, + IN VOID *Buffer ); +/** + Maps a memory region for DMA + + @param This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param Operation Indicates the type of DMA (slave or bus master), and if + the DMA operation is going to read or write to system memory. + @param ChannelNumber The slave channel number to use for this DMA operation. + If Operation and ChannelAttributes shows that this device + performs bus mastering DMA, then this field is ignored. + The legal range for this field is 0..7. + @param ChannelAttributes The attributes of the DMA channel to use for this DMA operation + @param HostAddress The system memory address to map to the device. + @param NumberOfBytes On input the number of bytes to map. On output the number + of bytes that were mapped. + @param DeviceAddress The resulting map address for the bus master device to use + to access the hosts HostAddress. + @param Mapping A resulting value to pass to EFI_ISA_IO.Unmap(). + + @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes. + @retval EFI_INVALID_PARAMETER The Operation or HostAddress is undefined. + @retval EFI_UNSUPPORTED The HostAddress can not be mapped as a common buffer. + @retval EFI_DEVICE_ERROR The system hardware could not map the requested address. + @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. +**/ EFI_STATUS EFIAPI IsaIoMap ( - 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 + 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 ); +/** + Unmaps a memory region for DMA + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Mapping The mapping value returned from EFI_ISA_IO.Map(). + + @retval EFI_SUCCESS The range was unmapped. + @retval EFI_DEVICE_ERROR The data was not committed to the target system memory. +**/ EFI_STATUS EFIAPI IsaIoUnmap ( - IN EFI_ISA_IO_PROTOCOL *This, - IN VOID *Mapping + IN EFI_ISA_IO_PROTOCOL *This, + IN VOID *Mapping ); +/** + Flushes any posted write data to the system memory. + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + + @retval EFI_SUCCESS The buffers were flushed. + @retval EFI_DEVICE_ERROR The buffers were not flushed due to a hardware error. +**/ EFI_STATUS EFIAPI IsaIoFlush ( - IN EFI_ISA_IO_PROTOCOL *This + IN EFI_ISA_IO_PROTOCOL *This ); +/** + report a error Status code + + @param Code The error status code. + + @return EFI_SUCCESS Success to report status code. +**/ EFI_STATUS ReportErrorStatusCode ( - EFI_STATUS_CODE_VALUE code + EFI_STATUS_CODE_VALUE Code ); +/** + Writes I/O operation base address and count number to a 8 bit I/O Port. + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] AddrOffset The address' offset. + @param[in] PageOffset The page's offest. + @param[in] CountOffset The count's offset. + @param[in] BaseAddress The base address. + @param[in] Count The number of I/O operations to perform. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Parameter is invalid. + @retval EFI_UNSUPPORTED The address range specified by these Offsets and Count is not valid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. +**/ EFI_STATUS WriteDmaPort ( - IN EFI_ISA_IO_PROTOCOL *This, - IN UINT32 AddrOffset, - IN UINT32 PageOffset, - IN UINT32 CountOffset, - IN UINT32 BaseAddress, - IN UINT16 Count + IN EFI_ISA_IO_PROTOCOL *This, + IN UINT32 AddrOffset, + IN UINT32 PageOffset, + IN UINT32 CountOffset, + IN UINT32 BaseAddress, + IN UINT16 Count ); +/** + Writes an 8-bit I/O Port + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Offset The offset in ISA IO space to start the IO operation. + @param[in] Value The data to write port. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Parameter is invalid. + @retval EFI_UNSUPPORTED The address range specified by Offset is not valid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. +**/ EFI_STATUS WritePort ( - IN EFI_ISA_IO_PROTOCOL *This, - IN UINT32 Offset, - IN UINT8 Value + IN EFI_ISA_IO_PROTOCOL *This, + IN UINT32 Offset, + IN UINT8 Value ); +/** + Performs an ISA Memory Read Cycle + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Width Specifies the width of the memory operation. + @param[in] Offset The offset in ISA memory space to start the memory operation. + @param[in] Count The number of memory operations to perform. + @param[out] Buffer The destination buffer to store the results + + @retval EFI_SUCCESS The data was read from the device successfully. + @retval EFI_UNSUPPORTED The Offset is not valid for this device. + @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. +**/ EFI_STATUS EFIAPI IsaIoMemRead ( - IN EFI_ISA_IO_PROTOCOL *This, - IN EFI_ISA_IO_PROTOCOL_WIDTH Width, - IN UINT32 Offset, - IN UINTN Count, - IN OUT VOID *Buffer + IN EFI_ISA_IO_PROTOCOL *This, + IN EFI_ISA_IO_PROTOCOL_WIDTH Width, + IN UINT32 Offset, + IN UINTN Count, + OUT VOID *Buffer ); +/** + Performs an ISA Memory Write Cycle + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Width Specifies the width of the memory operation. + @param[in] Offset The offset in ISA memory space to start the memory operation. + @param[in] Count The number of memory operations to perform. + @param[in] Buffer The source buffer to write data from + + @retval EFI_SUCCESS The data was written to the device sucessfully. + @retval EFI_UNSUPPORTED The Offset is not valid for this device. + @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. +**/ EFI_STATUS EFIAPI IsaIoMemWrite ( - IN EFI_ISA_IO_PROTOCOL *This, - IN EFI_ISA_IO_PROTOCOL_WIDTH Width, - IN UINT32 Offset, - IN UINTN Count, - IN OUT VOID *Buffer + IN EFI_ISA_IO_PROTOCOL *This, + IN EFI_ISA_IO_PROTOCOL_WIDTH Width, + IN UINT32 Offset, + IN UINTN Count, + IN VOID *Buffer ); +/** + Copy one region of ISA memory space to another region of ISA memory space on the ISA controller. + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Width Specifies the width of the memory copy operation. + @param[in] DestOffset The offset of the destination + @param[in] SrcOffset The offset of the source + @param[in] Count The number of memory copy operations to perform + + @retval EFI_SUCCESS The data was copied sucessfully. + @retval EFI_UNSUPPORTED The DestOffset or SrcOffset is not valid for this device. + @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. +**/ EFI_STATUS EFIAPI IsaIoCopyMem ( - IN EFI_ISA_IO_PROTOCOL *This, - IN EFI_ISA_IO_PROTOCOL_WIDTH Width, - IN UINT32 DestOffset, - IN UINT32 SrcOffset, - IN UINTN Count + IN EFI_ISA_IO_PROTOCOL *This, + IN EFI_ISA_IO_PROTOCOL_WIDTH Width, + IN UINT32 DestOffset, + IN UINT32 SrcOffset, + IN UINTN Count ); +/** + Allocates pages that are suitable for an EfiIsaIoOperationBusMasterCommonBuffer mapping. + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Type The type allocation to perform. + @param[in] MemoryType The type of memory to allocate. + @param[in] Pages The number of pages to allocate. + @param[out] HostAddress A pointer to store the base address of the allocated range. + @param[in] Attributes The requested bit mask of attributes for the allocated range. + + @retval EFI_SUCCESS The requested memory pages were allocated. + @retval EFI_INVALID_PARAMETER Type is invalid or MemoryType is invalid or HostAddress is NULL + @retval EFI_UNSUPPORTED Attributes is unsupported or the memory range specified + by HostAddress, Pages, and Type is not available for common buffer use. + @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. +**/ EFI_STATUS EFIAPI IsaIoAllocateBuffer ( - 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 + 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 ); +/** + Frees memory that was allocated with EFI_ISA_IO.AllocateBuffer(). + + @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance. + @param[in] Pages The number of pages to free. + @param[in] HostAddress The base address of the allocated range. + + @retval EFI_SUCCESS The requested memory pages were freed. + @retval EFI_INVALID_PARAMETER The memory was not allocated with EFI_ISA_IO.AllocateBufer(). +**/ EFI_STATUS EFIAPI IsaIoFreeBuffer ( - IN EFI_ISA_IO_PROTOCOL *This, - IN UINTN Pages, - IN VOID *HostAddress + IN EFI_ISA_IO_PROTOCOL *This, + IN UINTN Pages, + IN VOID *HostAddress ); #endif +