2010-07-26 21:07:04 +00:00
|
|
|
From 4547a096f10ea8b2164f895a10f2dbe9e1269c22 Mon Sep 17 00:00:00 2001
|
2010-07-26 19:05:41 +00:00
|
|
|
From: Peter Jones <pjones@redhat.com>
|
|
|
|
Date: Mon, 26 Jul 2010 14:25:47 -0400
|
2010-07-26 21:07:04 +00:00
|
|
|
Subject: [PATCH] Add headers for PciIo .
|
2010-07-26 19:05:41 +00:00
|
|
|
|
|
|
|
---
|
|
|
|
inc/efi.h | 1 +
|
2010-07-26 21:07:04 +00:00
|
|
|
inc/efilib.h | 1 +
|
2010-07-26 19:05:41 +00:00
|
|
|
inc/efipciio.h | 219 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
2010-07-26 21:07:04 +00:00
|
|
|
lib/data.c | 1 +
|
|
|
|
4 files changed, 222 insertions(+), 0 deletions(-)
|
2010-07-26 19:05:41 +00:00
|
|
|
create mode 100644 inc/efipciio.h
|
|
|
|
|
|
|
|
diff --git a/inc/efi.h b/inc/efi.h
|
|
|
|
index 4cdb12b..e9de37b 100644
|
|
|
|
--- a/inc/efi.h
|
|
|
|
+++ b/inc/efi.h
|
|
|
|
@@ -35,6 +35,7 @@ Revision History
|
|
|
|
#include "efibind.h"
|
|
|
|
#include "efidef.h"
|
|
|
|
#include "efidevp.h"
|
|
|
|
+#include "efipciio.h"
|
|
|
|
#include "efiprot.h"
|
|
|
|
#include "eficon.h"
|
|
|
|
#include "efiser.h"
|
2010-07-26 21:07:04 +00:00
|
|
|
diff --git a/inc/efilib.h b/inc/efilib.h
|
|
|
|
index 82c332a..740c2ff 100644
|
|
|
|
--- a/inc/efilib.h
|
|
|
|
+++ b/inc/efilib.h
|
|
|
|
@@ -58,6 +58,7 @@ extern EFI_GUID PxeCallbackProtocol;
|
|
|
|
extern EFI_GUID NetworkInterfaceIdentifierProtocol;
|
|
|
|
extern EFI_GUID UiProtocol;
|
|
|
|
extern EFI_GUID InternalShellProtocol;
|
|
|
|
+extern EFI_GUID PciIoProtocol;
|
|
|
|
|
|
|
|
extern EFI_GUID EfiGlobalVariable;
|
|
|
|
extern EFI_GUID GenericFileInfo;
|
2010-07-26 19:05:41 +00:00
|
|
|
diff --git a/inc/efipciio.h b/inc/efipciio.h
|
|
|
|
new file mode 100644
|
2010-07-26 21:07:04 +00:00
|
|
|
index 0000000..0724f95
|
2010-07-26 19:05:41 +00:00
|
|
|
--- /dev/null
|
|
|
|
+++ b/inc/efipciio.h
|
|
|
|
@@ -0,0 +1,219 @@
|
|
|
|
+#ifndef _EFI_PCI_IO_H
|
|
|
|
+#define _EFI_PCI_IO_H
|
|
|
|
+
|
2010-07-26 21:07:04 +00:00
|
|
|
+#define EFI_PCI_IO_PROTOCOL \
|
2010-07-26 19:05:41 +00:00
|
|
|
+ { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} }
|
|
|
|
+
|
|
|
|
+INTERFACE_DECL(_EFI_PCI_IO);
|
|
|
|
+
|
|
|
|
+typedef enum {
|
|
|
|
+ EfiPciIoWidthUint8,
|
|
|
|
+ EfiPciIoWidthUint16,
|
|
|
|
+ EfiPciIoWidthUint32,
|
|
|
|
+ EfiPciIoWidthUint64,
|
|
|
|
+ EfiPciIoWidthFifoUint8,
|
|
|
|
+ EfiPciIoWidthFifoUint16,
|
|
|
|
+ EfiPciIoWidthFifoUint32,
|
|
|
|
+ EfiPciIoWidthFifoUint64,
|
|
|
|
+ EfiPciIoWidthFillUint8,
|
|
|
|
+ EfiPciIoWidthFillUint16,
|
|
|
|
+ EfiPciIoWidthFillUint32,
|
|
|
|
+ EfiPciIoWidthFillUint64,
|
|
|
|
+ EfiPciIoWidthMaximum
|
|
|
|
+} EFI_PCI_IO_PROTOCOL_WIDTH;
|
|
|
|
+
|
|
|
|
+#define EFI_PCI_IO_PASS_THROUGH_BAR 0xff
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_POLL_IO_MEM) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
|
|
|
|
+ IN UINT8 BarIndex,
|
|
|
|
+ IN UINT64 Offset,
|
|
|
|
+ IN UINT64 Mask,
|
|
|
|
+ IN UINT64 Value,
|
|
|
|
+ IN UINT64 Delay,
|
|
|
|
+ OUT UINT64 *Result
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_IO_MEM) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
|
|
|
|
+ IN UINT8 BarIndex,
|
|
|
|
+ IN UINT64 Offset,
|
|
|
|
+ IN UINTN Count,
|
|
|
|
+ IN OUT VOID *Buffer
|
|
|
|
+);
|
|
|
|
+
|
|
|
|
+typedef struct {
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_IO_MEM Read;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_IO_MEM Write;
|
|
|
|
+} EFI_PCI_IO_PROTOCOL_ACCESS;
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
|
|
|
|
+ IN UINT32 Offset,
|
|
|
|
+ IN UINTN Count,
|
|
|
|
+ IN OUT VOID *Buffer
|
|
|
|
+);
|
|
|
|
+
|
|
|
|
+typedef struct {
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_CONFIG Read;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_CONFIG Write;
|
|
|
|
+} EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_COPY_MEM) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
|
|
|
|
+ IN UINT8 DestBarIndex,
|
|
|
|
+ IN UINT64 DestOffset,
|
|
|
|
+ IN UINT8 SrcBarIndex,
|
|
|
|
+ IN UINT64 SrcOffset,
|
|
|
|
+ IN UINTN Count
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+typedef enum {
|
|
|
|
+ EfiPciIoOperationBusMasterRead,
|
|
|
|
+ EfiPciIoOperationBusMasterWrite,
|
|
|
|
+ EfiPciIoOperationBusMasterCommonBuffer,
|
|
|
|
+ EfiPciIoOperationMaximum
|
|
|
|
+} EFI_PCI_IO_PROTOCOL_OPERATION;
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_MAP) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN EFI_PCI_IO_PROTOCOL_OPERATION Operation,
|
|
|
|
+ IN VOID *HostAddress,
|
|
|
|
+ IN OUT UINTN *NumberOfBytes,
|
|
|
|
+ OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
|
|
|
|
+ OUT VOID **Mapping
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_UNMAP) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN VOID *Mapping
|
|
|
|
+);
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN EFI_ALLOCATE_TYPE Type,
|
|
|
|
+ IN EFI_MEMORY_TYPE MemoryType,
|
|
|
|
+ IN UINTN Pages,
|
|
|
|
+ OUT VOID **HostAddress,
|
|
|
|
+ IN UINT64 Attributes
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_FREE_BUFFER) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN UINTN Pages,
|
|
|
|
+ IN VOID *HostAddress
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_FLUSH) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This
|
2010-07-26 19:05:41 +00:00
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_GET_LOCATION) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ OUT UINTN *SegmentNumber,
|
|
|
|
+ OUT UINTN *BusNumber,
|
|
|
|
+ OUT UINTN *DeviceNumber,
|
|
|
|
+ OUT UINTN *FunctionNumber
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_ISA_IO 0x0002
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO 0x0004
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY 0x0008
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_VGA_IO 0x0010
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO 0x0020
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO 0x0040
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_IO 0x0100
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY 0x0200
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER 0x0400
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED 0x0800
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE 0x2000
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM 0x4000
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 0x10000
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000
|
|
|
|
+#define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 0x40000
|
|
|
|
+
|
|
|
|
+typedef enum {
|
|
|
|
+ EfiPciIoAttributeOperationGet,
|
|
|
|
+ EfiPciIoAttributeOperationSet,
|
|
|
|
+ EfiPciIoAttributeOperationEnable,
|
|
|
|
+ EfiPciIoAttributeOperationDisable,
|
|
|
|
+ EfiPciIoAttributeOperationSupported,
|
|
|
|
+ EfiPciIoAttributeOperationMaximum
|
|
|
|
+} EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION;
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_ATTRIBUTES) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation,
|
|
|
|
+ IN UINT64 Attributes,
|
|
|
|
+ OUT UINT64 *Result OPTIONAL
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN UINT8 BarIndex,
|
|
|
|
+ OUT UINT64 *Supports OPTIONAL,
|
|
|
|
+ OUT VOID **Resources OPTIONAL
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+typedef
|
|
|
|
+EFI_STATUS
|
|
|
|
+(EFIAPI *EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES) (
|
2010-07-26 21:07:04 +00:00
|
|
|
+ IN struct _EFI_PCI_IO *This,
|
2010-07-26 19:05:41 +00:00
|
|
|
+ IN UINT64 Attributes,
|
|
|
|
+ IN UINT8 BarIndex,
|
|
|
|
+ IN OUT UINT64 *Offset,
|
|
|
|
+ IN OUT UINT64 *Length
|
|
|
|
+ );
|
|
|
|
+
|
2010-07-26 21:07:04 +00:00
|
|
|
+typedef struct _EFI_PCI_IO {
|
2010-07-26 19:05:41 +00:00
|
|
|
+ EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollMem;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollIo;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_ACCESS Mem;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_ACCESS Io;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_COPY_MEM CopyMem;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_MAP Map;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_UNMAP Unmap;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_FREE_BUFFER FreeBuffer;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_FLUSH Flush;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_ATTRIBUTES Attributes;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes;
|
|
|
|
+ EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes;
|
|
|
|
+ UINT64 RomSize;
|
|
|
|
+ VOID *RomImage;
|
2010-07-26 21:07:04 +00:00
|
|
|
+} EFI_PCI_IO;
|
2010-07-26 19:05:41 +00:00
|
|
|
+
|
|
|
|
+#endif /* _EFI_PCI_IO_H */
|
2010-07-26 21:07:04 +00:00
|
|
|
diff --git a/lib/data.c b/lib/data.c
|
|
|
|
index 402c54d..bcb2d67 100644
|
|
|
|
--- a/lib/data.c
|
|
|
|
+++ b/lib/data.c
|
|
|
|
@@ -103,6 +103,7 @@ EFI_GUID PxeBaseCodeProtocol = EFI_PXE_BASE_CODE_PROTOCOL;
|
|
|
|
EFI_GUID PxeCallbackProtocol = EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL;
|
|
|
|
EFI_GUID NetworkInterfaceIdentifierProtocol = EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL;
|
|
|
|
EFI_GUID UiProtocol = EFI_UI_PROTOCOL;
|
|
|
|
+EFI_GUID PciIoProtocol = EFI_PCI_IO_PROTOCOL;
|
|
|
|
//
|
|
|
|
// File system information IDs
|
|
|
|
//
|
2010-07-26 19:05:41 +00:00
|
|
|
--
|
|
|
|
1.7.1.1
|
|
|
|
|