]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Protocol/DeviceIo/DeviceIo.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / DeviceIo / DeviceIo.h
1 /*++
2
3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
4 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
8
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.
11
12 Module Name:
13
14 DeviceIo.h
15
16 Abstract:
17
18 Device IO protocol as defined in the EFI 1.0 specification.
19
20 Device IO is used to abstract hardware access to devices. It includes
21 memory mapped IO, IO, PCI Config space, and DMA.
22
23
24 --*/
25
26 #ifndef _DEVICE_IO_H_
27 #define _DEVICE_IO_H_
28
29 #define EFI_DEVICE_IO_PROTOCOL_GUID \
30 { \
31 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} \
32 }
33
34 EFI_FORWARD_DECLARATION (EFI_DEVICE_IO_PROTOCOL);
35
36 typedef enum {
37 IO_UINT8,
38 IO_UINT16,
39 IO_UINT32,
40 IO_UINT64,
41 MMIO_COPY_UINT8,
42 MMIO_COPY_UINT16,
43 MMIO_COPY_UINT32,
44 MMIO_COPY_UINT64
45 } EFI_IO_WIDTH;
46
47 typedef
48 EFI_STATUS
49 (EFIAPI *EFI_DEVICE_IO) (
50 IN EFI_DEVICE_IO_PROTOCOL * This,
51 IN EFI_IO_WIDTH Width,
52 IN UINT64 Address,
53 IN UINTN Count,
54 IN OUT VOID *Buffer
55 );
56
57 typedef struct {
58 EFI_DEVICE_IO Read;
59 EFI_DEVICE_IO Write;
60 } EFI_IO_ACCESS;
61
62 typedef
63 EFI_STATUS
64 (EFIAPI *EFI_PCI_DEVICE_PATH) (
65 IN EFI_DEVICE_IO_PROTOCOL * This,
66 IN UINT64 Address,
67 IN OUT EFI_DEVICE_PATH_PROTOCOL **PciDevicePath
68 );
69
70 typedef enum {
71 EfiBusMasterRead,
72 EfiBusMasterWrite,
73 EfiBusMasterCommonBuffer
74 } EFI_IO_OPERATION_TYPE;
75
76 typedef
77 EFI_STATUS
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,
84 OUT VOID **Mapping
85 );
86
87 typedef
88 EFI_STATUS
89 (EFIAPI *EFI_IO_UNMAP) (
90 IN EFI_DEVICE_IO_PROTOCOL * This,
91 IN VOID *Mapping
92 );
93
94 typedef
95 EFI_STATUS
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,
100 IN UINTN Pages,
101 IN OUT EFI_PHYSICAL_ADDRESS * HostAddress
102 );
103
104 typedef
105 EFI_STATUS
106 (EFIAPI *EFI_IO_FLUSH) (
107 IN EFI_DEVICE_IO_PROTOCOL * This
108 );
109
110 typedef
111 EFI_STATUS
112 (EFIAPI *EFI_IO_FREE_BUFFER) (
113 IN EFI_DEVICE_IO_PROTOCOL * This,
114 IN UINTN Pages,
115 IN EFI_PHYSICAL_ADDRESS HostAddress
116 );
117
118 struct _EFI_DEVICE_IO_PROTOCOL {
119 EFI_IO_ACCESS Mem;
120 EFI_IO_ACCESS Io;
121 EFI_IO_ACCESS Pci;
122 EFI_IO_MAP Map;
123 EFI_PCI_DEVICE_PATH PciDevicePath;
124 EFI_IO_UNMAP Unmap;
125 EFI_IO_ALLOCATE_BUFFER AllocateBuffer;
126 EFI_IO_FLUSH Flush;
127 EFI_IO_FREE_BUFFER FreeBuffer;
128 };
129
130 extern EFI_GUID gEfiDeviceIoProtocolGuid;
131
132 #endif