3 Copyright (c) 2004, 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.
18 Device IO protocol as defined in the EFI 1.0 specification.
20 Device IO is used to abstract hardware access to devices. It includes
21 memory mapped IO, IO, PCI Config space, and DMA.
29 #define EFI_DEVICE_IO_PROTOCOL_GUID \
31 0xaf6ac311, 0x84c3, 0x11d2, 0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b \
34 EFI_FORWARD_DECLARATION (EFI_DEVICE_IO_PROTOCOL
);
49 (EFIAPI
*EFI_DEVICE_IO
) (
50 IN EFI_DEVICE_IO_PROTOCOL
* This
,
51 IN EFI_IO_WIDTH Width
,
64 (EFIAPI
*EFI_PCI_DEVICE_PATH
) (
65 IN EFI_DEVICE_IO_PROTOCOL
* This
,
67 IN OUT EFI_DEVICE_PATH_PROTOCOL
**PciDevicePath
73 EfiBusMasterCommonBuffer
74 } EFI_IO_OPERATION_TYPE
;
78 (EFIAPI
*EFI_IO_MAP
) (
79 IN EFI_DEVICE_IO_PROTOCOL
* This
,
80 IN EFI_IO_OPERATION_TYPE Operation
,
81 IN EFI_PHYSICAL_ADDRESS
* HostAddress
,
82 IN OUT UINTN
*NumberOfBytes
,
83 OUT EFI_PHYSICAL_ADDRESS
* DeviceAddress
,
89 (EFIAPI
*EFI_IO_UNMAP
) (
90 IN EFI_DEVICE_IO_PROTOCOL
* This
,
96 (EFIAPI
*EFI_IO_ALLOCATE_BUFFER
) (
97 IN EFI_DEVICE_IO_PROTOCOL
* This
,
98 IN EFI_ALLOCATE_TYPE Type
,
99 IN EFI_MEMORY_TYPE MemoryType
,
101 IN OUT EFI_PHYSICAL_ADDRESS
* HostAddress
106 (EFIAPI
*EFI_IO_FLUSH
) (
107 IN EFI_DEVICE_IO_PROTOCOL
* This
112 (EFIAPI
*EFI_IO_FREE_BUFFER
) (
113 IN EFI_DEVICE_IO_PROTOCOL
* This
,
115 IN EFI_PHYSICAL_ADDRESS HostAddress
118 typedef struct _EFI_DEVICE_IO_PROTOCOL
{
123 EFI_PCI_DEVICE_PATH PciDevicePath
;
125 EFI_IO_ALLOCATE_BUFFER AllocateBuffer
;
127 EFI_IO_FREE_BUFFER FreeBuffer
;
128 } EFI_DEVICE_IO_PROTOCOL
;
130 extern EFI_GUID gEfiDeviceIoProtocolGuid
;