1 1.1 jakllsch /* $NetBSD: efipciio.h,v 1.1.1.2 2018/08/16 18:17:47 jmcneill Exp $ */ 2 1.1 jakllsch 3 1.1 jakllsch #ifndef _EFI_PCI_IO_H 4 1.1 jakllsch #define _EFI_PCI_IO_H 5 1.1 jakllsch 6 1.1.1.2 jmcneill #define EFI_PCI_IO_PROTOCOL_GUID \ 7 1.1 jakllsch { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} } 8 1.1 jakllsch 9 1.1.1.2 jmcneill #define EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID \ 10 1.1.1.2 jmcneill { 0x2f707ebb, 0x4a1a, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 11 1.1.1.2 jmcneill 12 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_PCI_IO_PROTOCOL); 13 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL); 14 1.1 jakllsch 15 1.1 jakllsch typedef enum { 16 1.1 jakllsch EfiPciIoWidthUint8, 17 1.1 jakllsch EfiPciIoWidthUint16, 18 1.1 jakllsch EfiPciIoWidthUint32, 19 1.1 jakllsch EfiPciIoWidthUint64, 20 1.1 jakllsch EfiPciIoWidthFifoUint8, 21 1.1 jakllsch EfiPciIoWidthFifoUint16, 22 1.1 jakllsch EfiPciIoWidthFifoUint32, 23 1.1 jakllsch EfiPciIoWidthFifoUint64, 24 1.1 jakllsch EfiPciIoWidthFillUint8, 25 1.1 jakllsch EfiPciIoWidthFillUint16, 26 1.1 jakllsch EfiPciIoWidthFillUint32, 27 1.1 jakllsch EfiPciIoWidthFillUint64, 28 1.1 jakllsch EfiPciIoWidthMaximum 29 1.1.1.2 jmcneill } EFI_PCI_IO_PROTOCOL_WIDTH, EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH; 30 1.1 jakllsch 31 1.1 jakllsch #define EFI_PCI_IO_PASS_THROUGH_BAR 0xff 32 1.1 jakllsch 33 1.1 jakllsch typedef 34 1.1 jakllsch EFI_STATUS 35 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_POLL_IO_MEM) ( 36 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 37 1.1.1.2 jmcneill IN EFI_PCI_IO_PROTOCOL_WIDTH Width, 38 1.1.1.2 jmcneill IN UINT8 BarIndex, 39 1.1.1.2 jmcneill IN UINT64 Offset, 40 1.1.1.2 jmcneill IN UINT64 Mask, 41 1.1.1.2 jmcneill IN UINT64 Value, 42 1.1.1.2 jmcneill IN UINT64 Delay, 43 1.1.1.2 jmcneill OUT UINT64 *Result 44 1.1.1.2 jmcneill ); 45 1.1.1.2 jmcneill 46 1.1.1.2 jmcneill typedef 47 1.1.1.2 jmcneill EFI_STATUS 48 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM) ( 49 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 50 1.1.1.2 jmcneill IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width, 51 1.1.1.2 jmcneill IN UINT64 Address, 52 1.1.1.2 jmcneill IN UINT64 Mask, 53 1.1.1.2 jmcneill IN UINT64 Value, 54 1.1.1.2 jmcneill IN UINT64 Delay, 55 1.1.1.2 jmcneill OUT UINT64 *Result 56 1.1.1.2 jmcneill ); 57 1.1 jakllsch 58 1.1 jakllsch typedef 59 1.1 jakllsch EFI_STATUS 60 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_IO_MEM) ( 61 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 62 1.1.1.2 jmcneill IN EFI_PCI_IO_PROTOCOL_WIDTH Width, 63 1.1.1.2 jmcneill IN UINT8 BarIndex, 64 1.1.1.2 jmcneill IN UINT64 Offset, 65 1.1.1.2 jmcneill IN UINTN Count, 66 1.1.1.2 jmcneill IN OUT VOID *Buffer 67 1.1.1.2 jmcneill ); 68 1.1.1.2 jmcneill 69 1.1.1.2 jmcneill typedef 70 1.1.1.2 jmcneill EFI_STATUS 71 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM) ( 72 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 73 1.1.1.2 jmcneill IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width, 74 1.1.1.2 jmcneill IN UINT64 Address, 75 1.1.1.2 jmcneill IN UINTN Count, 76 1.1.1.2 jmcneill IN OUT VOID *Buffer 77 1.1 jakllsch ); 78 1.1 jakllsch 79 1.1 jakllsch typedef struct { 80 1.1 jakllsch EFI_PCI_IO_PROTOCOL_IO_MEM Read; 81 1.1 jakllsch EFI_PCI_IO_PROTOCOL_IO_MEM Write; 82 1.1 jakllsch } EFI_PCI_IO_PROTOCOL_ACCESS; 83 1.1 jakllsch 84 1.1.1.2 jmcneill typedef struct { 85 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM Read; 86 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM Write; 87 1.1.1.2 jmcneill } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS; 88 1.1.1.2 jmcneill 89 1.1 jakllsch typedef 90 1.1 jakllsch EFI_STATUS 91 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG) ( 92 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 93 1.1.1.2 jmcneill IN EFI_PCI_IO_PROTOCOL_WIDTH Width, 94 1.1.1.2 jmcneill IN UINT32 Offset, 95 1.1.1.2 jmcneill IN UINTN Count, 96 1.1.1.2 jmcneill IN OUT VOID *Buffer 97 1.1.1.2 jmcneill ); 98 1.1.1.2 jmcneill 99 1.1.1.2 jmcneill typedef 100 1.1.1.2 jmcneill EFI_STATUS 101 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION) ( 102 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 103 1.1.1.2 jmcneill OUT VOID **Resources 104 1.1 jakllsch ); 105 1.1 jakllsch 106 1.1 jakllsch typedef struct { 107 1.1 jakllsch EFI_PCI_IO_PROTOCOL_CONFIG Read; 108 1.1 jakllsch EFI_PCI_IO_PROTOCOL_CONFIG Write; 109 1.1 jakllsch } EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS; 110 1.1 jakllsch 111 1.1 jakllsch typedef 112 1.1 jakllsch EFI_STATUS 113 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_COPY_MEM) ( 114 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 115 1.1.1.2 jmcneill IN EFI_PCI_IO_PROTOCOL_WIDTH Width, 116 1.1.1.2 jmcneill IN UINT8 DestBarIndex, 117 1.1.1.2 jmcneill IN UINT64 DestOffset, 118 1.1.1.2 jmcneill IN UINT8 SrcBarIndex, 119 1.1.1.2 jmcneill IN UINT64 SrcOffset, 120 1.1.1.2 jmcneill IN UINTN Count 121 1.1.1.2 jmcneill ); 122 1.1.1.2 jmcneill 123 1.1.1.2 jmcneill typedef 124 1.1.1.2 jmcneill EFI_STATUS 125 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM) ( 126 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 127 1.1.1.2 jmcneill IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH Width, 128 1.1.1.2 jmcneill IN UINT64 DestAddress, 129 1.1.1.2 jmcneill IN UINT64 SrcAddress, 130 1.1.1.2 jmcneill IN UINTN Count 131 1.1.1.2 jmcneill ); 132 1.1 jakllsch 133 1.1 jakllsch typedef enum { 134 1.1 jakllsch EfiPciIoOperationBusMasterRead, 135 1.1 jakllsch EfiPciIoOperationBusMasterWrite, 136 1.1 jakllsch EfiPciIoOperationBusMasterCommonBuffer, 137 1.1 jakllsch EfiPciIoOperationMaximum 138 1.1 jakllsch } EFI_PCI_IO_PROTOCOL_OPERATION; 139 1.1 jakllsch 140 1.1.1.2 jmcneill typedef enum { 141 1.1.1.2 jmcneill EfiPciOperationBusMasterRead, 142 1.1.1.2 jmcneill EfiPciOperationBusMasterWrite, 143 1.1.1.2 jmcneill EfiPciOperationBusMasterCommonBuffer, 144 1.1.1.2 jmcneill EfiPciOperationBusMasterRead64, 145 1.1.1.2 jmcneill EfiPciOperationBusMasterWrite64, 146 1.1.1.2 jmcneill EfiPciOperationBusMasterCommonBuffer64, 147 1.1.1.2 jmcneill EfiPciOperationMaximum 148 1.1.1.2 jmcneill } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION; 149 1.1.1.2 jmcneill 150 1.1 jakllsch typedef 151 1.1 jakllsch EFI_STATUS 152 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_MAP) ( 153 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 154 1.1 jakllsch IN EFI_PCI_IO_PROTOCOL_OPERATION Operation, 155 1.1 jakllsch IN VOID *HostAddress, 156 1.1 jakllsch IN OUT UINTN *NumberOfBytes, 157 1.1 jakllsch OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, 158 1.1 jakllsch OUT VOID **Mapping 159 1.1.1.2 jmcneill ); 160 1.1.1.2 jmcneill 161 1.1.1.2 jmcneill typedef 162 1.1.1.2 jmcneill EFI_STATUS 163 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP) ( 164 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 165 1.1.1.2 jmcneill IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION Operation, 166 1.1.1.2 jmcneill IN VOID *HostAddress, 167 1.1.1.2 jmcneill IN OUT UINTN *NumberOfBytes, 168 1.1.1.2 jmcneill OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, 169 1.1.1.2 jmcneill OUT VOID **Mapping 170 1.1.1.2 jmcneill ); 171 1.1 jakllsch 172 1.1 jakllsch typedef 173 1.1 jakllsch EFI_STATUS 174 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_UNMAP) ( 175 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 176 1.1.1.2 jmcneill IN VOID *Mapping 177 1.1.1.2 jmcneill ); 178 1.1.1.2 jmcneill 179 1.1.1.2 jmcneill typedef 180 1.1.1.2 jmcneill EFI_STATUS 181 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP) ( 182 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 183 1.1.1.2 jmcneill IN VOID *Mapping 184 1.1 jakllsch ); 185 1.1 jakllsch 186 1.1 jakllsch typedef 187 1.1 jakllsch EFI_STATUS 188 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER) ( 189 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 190 1.1.1.2 jmcneill IN EFI_ALLOCATE_TYPE Type, 191 1.1.1.2 jmcneill IN EFI_MEMORY_TYPE MemoryType, 192 1.1.1.2 jmcneill IN UINTN Pages, 193 1.1.1.2 jmcneill OUT VOID **HostAddress, 194 1.1.1.2 jmcneill IN UINT64 Attributes 195 1.1.1.2 jmcneill ); 196 1.1.1.2 jmcneill 197 1.1.1.2 jmcneill typedef 198 1.1.1.2 jmcneill EFI_STATUS 199 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER) ( 200 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 201 1.1.1.2 jmcneill IN EFI_ALLOCATE_TYPE Type, 202 1.1.1.2 jmcneill IN EFI_MEMORY_TYPE MemoryType, 203 1.1.1.2 jmcneill IN UINTN Pages, 204 1.1.1.2 jmcneill IN OUT VOID **HostAddress, 205 1.1.1.2 jmcneill IN UINT64 Attributes 206 1.1.1.2 jmcneill ); 207 1.1 jakllsch 208 1.1 jakllsch typedef 209 1.1 jakllsch EFI_STATUS 210 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_FREE_BUFFER) ( 211 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 212 1.1.1.2 jmcneill IN UINTN Pages, 213 1.1.1.2 jmcneill IN VOID *HostAddress 214 1.1 jakllsch ); 215 1.1 jakllsch 216 1.1 jakllsch typedef 217 1.1 jakllsch EFI_STATUS 218 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER) ( 219 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 220 1.1.1.2 jmcneill IN UINTN Pages, 221 1.1.1.2 jmcneill IN VOID *HostAddress 222 1.1.1.2 jmcneill ); 223 1.1.1.2 jmcneill 224 1.1.1.2 jmcneill typedef 225 1.1.1.2 jmcneill EFI_STATUS 226 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_FLUSH) ( 227 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This 228 1.1.1.2 jmcneill ); 229 1.1.1.2 jmcneill 230 1.1.1.2 jmcneill typedef 231 1.1.1.2 jmcneill EFI_STATUS 232 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH) ( 233 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This 234 1.1.1.2 jmcneill ); 235 1.1 jakllsch 236 1.1 jakllsch typedef 237 1.1 jakllsch EFI_STATUS 238 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_GET_LOCATION) ( 239 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 240 1.1.1.2 jmcneill OUT UINTN *SegmentNumber, 241 1.1.1.2 jmcneill OUT UINTN *BusNumber, 242 1.1.1.2 jmcneill OUT UINTN *DeviceNumber, 243 1.1.1.2 jmcneill OUT UINTN *FunctionNumber 244 1.1.1.2 jmcneill ); 245 1.1.1.2 jmcneill 246 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO 0x0001 247 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_ISA_IO 0x0002 248 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO 0x0004 249 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_VGA_MEMORY 0x0008 250 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_VGA_IO 0x0010 251 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO 0x0020 252 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO 0x0040 253 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080 254 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_IO 0x0100 255 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_MEMORY 0x0200 256 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_BUS_MASTER 0x0400 257 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_MEMORY_CACHED 0x0800 258 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_MEMORY_DISABLE 0x1000 259 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_EMBEDDED_DEVICE 0x2000 260 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_EMBEDDED_ROM 0x4000 261 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000 262 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_ISA_IO_16 0x10000 263 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000 264 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_VGA_IO_16 0x40000 265 1.1.1.2 jmcneill 266 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO 267 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_ISA_IO EFI_PCI_ATTRIBUTE_ISA_IO 268 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO 269 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY EFI_PCI_ATTRIBUTE_VGA_MEMORY 270 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_VGA_IO EFI_PCI_ATTRIBUTE_VGA_IO 271 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO 272 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO 273 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE 274 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_IO EFI_PCI_ATTRIBUTE_IO 275 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_MEMORY EFI_PCI_ATTRIBUTE_MEMORY 276 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER EFI_PCI_ATTRIBUTE_BUS_MASTER 277 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED EFI_PCI_ATTRIBUTE_MEMORY_CACHED 278 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE EFI_PCI_ATTRIBUTE_MEMORY_DISABLE 279 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE EFI_PCI_ATTRIBUTE_EMBEDDED_DEVICE 280 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM EFI_PCI_ATTRIBUTE_EMBEDDED_ROM 281 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE 282 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 EFI_PCI_ATTRIBUTE_ISA_IO_16 283 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16 284 1.1.1.2 jmcneill #define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 EFI_PCI_ATTRIBUTE_VGA_IO_16 285 1.1 jakllsch 286 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER \ 287 1.1.1.2 jmcneill (EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_PCI_ATTRIBUTE_MEMORY_CACHED | EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE) 288 1.1.1.2 jmcneill 289 1.1.1.2 jmcneill #define EFI_PCI_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER \ 290 1.1.1.2 jmcneill (~EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER) 291 1.1.1.2 jmcneill 292 1.1.1.2 jmcneill typedef struct { 293 1.1.1.2 jmcneill UINT8 Register; 294 1.1.1.2 jmcneill UINT8 Function; 295 1.1.1.2 jmcneill UINT8 Device; 296 1.1.1.2 jmcneill UINT8 Bus; 297 1.1.1.2 jmcneill UINT32 ExtendedRegister; 298 1.1.1.2 jmcneill } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS; 299 1.1 jakllsch 300 1.1 jakllsch typedef enum { 301 1.1 jakllsch EfiPciIoAttributeOperationGet, 302 1.1 jakllsch EfiPciIoAttributeOperationSet, 303 1.1 jakllsch EfiPciIoAttributeOperationEnable, 304 1.1 jakllsch EfiPciIoAttributeOperationDisable, 305 1.1 jakllsch EfiPciIoAttributeOperationSupported, 306 1.1 jakllsch EfiPciIoAttributeOperationMaximum 307 1.1 jakllsch } EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION; 308 1.1 jakllsch 309 1.1 jakllsch typedef 310 1.1 jakllsch EFI_STATUS 311 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_ATTRIBUTES) ( 312 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 313 1.1 jakllsch IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation, 314 1.1 jakllsch IN UINT64 Attributes, 315 1.1 jakllsch OUT UINT64 *Result OPTIONAL 316 1.1.1.2 jmcneill ); 317 1.1 jakllsch 318 1.1 jakllsch typedef 319 1.1 jakllsch EFI_STATUS 320 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES) ( 321 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 322 1.1.1.2 jmcneill IN UINT8 BarIndex, 323 1.1.1.2 jmcneill OUT UINT64 *Supports OPTIONAL, 324 1.1.1.2 jmcneill OUT VOID **Resources OPTIONAL 325 1.1.1.2 jmcneill ); 326 1.1.1.2 jmcneill 327 1.1.1.2 jmcneill typedef 328 1.1.1.2 jmcneill EFI_STATUS 329 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES) ( 330 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 331 1.1.1.2 jmcneill OUT UINT64 *Supports, 332 1.1.1.2 jmcneill OUT UINT64 *Attributes 333 1.1.1.2 jmcneill ); 334 1.1 jakllsch 335 1.1 jakllsch typedef 336 1.1 jakllsch EFI_STATUS 337 1.1 jakllsch (EFIAPI *EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES) ( 338 1.1.1.2 jmcneill IN struct _EFI_PCI_IO_PROTOCOL *This, 339 1.1.1.2 jmcneill IN UINT64 Attributes, 340 1.1.1.2 jmcneill IN UINT8 BarIndex, 341 1.1.1.2 jmcneill IN OUT UINT64 *Offset, 342 1.1.1.2 jmcneill IN OUT UINT64 *Length 343 1.1.1.2 jmcneill ); 344 1.1 jakllsch 345 1.1.1.2 jmcneill typedef 346 1.1.1.2 jmcneill EFI_STATUS 347 1.1.1.2 jmcneill (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES) ( 348 1.1.1.2 jmcneill IN struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, 349 1.1.1.2 jmcneill IN UINT64 Attributes, 350 1.1.1.2 jmcneill IN OUT UINT64 *ResourceBase, 351 1.1.1.2 jmcneill IN OUT UINT64 *ResourceLength 352 1.1.1.2 jmcneill ); 353 1.1.1.2 jmcneill 354 1.1.1.2 jmcneill typedef struct _EFI_PCI_IO_PROTOCOL { 355 1.1 jakllsch EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollMem; 356 1.1 jakllsch EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollIo; 357 1.1 jakllsch EFI_PCI_IO_PROTOCOL_ACCESS Mem; 358 1.1 jakllsch EFI_PCI_IO_PROTOCOL_ACCESS Io; 359 1.1 jakllsch EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci; 360 1.1 jakllsch EFI_PCI_IO_PROTOCOL_COPY_MEM CopyMem; 361 1.1 jakllsch EFI_PCI_IO_PROTOCOL_MAP Map; 362 1.1 jakllsch EFI_PCI_IO_PROTOCOL_UNMAP Unmap; 363 1.1 jakllsch EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer; 364 1.1 jakllsch EFI_PCI_IO_PROTOCOL_FREE_BUFFER FreeBuffer; 365 1.1 jakllsch EFI_PCI_IO_PROTOCOL_FLUSH Flush; 366 1.1 jakllsch EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation; 367 1.1 jakllsch EFI_PCI_IO_PROTOCOL_ATTRIBUTES Attributes; 368 1.1 jakllsch EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes; 369 1.1 jakllsch EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes; 370 1.1 jakllsch UINT64 RomSize; 371 1.1 jakllsch VOID *RomImage; 372 1.1.1.2 jmcneill } EFI_PCI_IO_PROTOCOL; 373 1.1.1.2 jmcneill 374 1.1.1.2 jmcneill // Note: Because it conflicted with the EDK2 struct name, the 375 1.1.1.2 jmcneill // 'EFI_PCI_IO_PROTOCOL' GUID definition, from older versions 376 1.1.1.2 jmcneill // of gnu-efi, is now obsoleted. 377 1.1.1.2 jmcneill // Use 'EFI_PCI_IO_PROTOCOL_GUID' instead. 378 1.1.1.2 jmcneill 379 1.1.1.2 jmcneill typedef struct _EFI_PCI_IO_PROTOCOL _EFI_PCI_IO; 380 1.1.1.2 jmcneill typedef EFI_PCI_IO_PROTOCOL EFI_PCI_IO; 381 1.1.1.2 jmcneill 382 1.1.1.2 jmcneill typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL { 383 1.1.1.2 jmcneill EFI_HANDLE ParentHandle; 384 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM PollMem; 385 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM PollIo; 386 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Mem; 387 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Io; 388 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS Pci; 389 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM CopyMem; 390 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP Map; 391 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP Unmap; 392 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer; 393 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER FreeBuffer; 394 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH Flush; 395 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES GetAttributes; 396 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES SetAttributes; 397 1.1.1.2 jmcneill EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION Configuration; 398 1.1.1.2 jmcneill UINT32 SegmentNumber; 399 1.1.1.2 jmcneill } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL; 400 1.1 jakllsch 401 1.1 jakllsch #endif /* _EFI_PCI_IO_H */ 402