--- /dev/null
+/** @file\r
+\r
+ Internal definitions for the VirtIo PCI Device driver\r
+\r
+ Copyright (C) 2013, ARM Ltd\r
+\r
+ This program and the accompanying materials are licensed and made available\r
+ under the terms and conditions of the BSD License which accompanies this\r
+ distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _VIRTIO_PCI_DEVICE_DXE_H_\r
+#define _VIRTIO_PCI_DEVICE_DXE_H_\r
+\r
+#include <Protocol/ComponentName.h>\r
+#include <Protocol/DriverBinding.h>\r
+#include <Protocol/PciIo.h>\r
+#include <Protocol/VirtioDevice.h>\r
+\r
+#include <IndustryStandard/Virtio.h>\r
+\r
+#define VIRTIO_PCI_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'P', 'C', 'I')\r
+\r
+typedef struct {\r
+ UINT32 Signature;\r
+ VIRTIO_DEVICE_PROTOCOL VirtioDevice;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
+ UINT64 OriginalPciAttributes;\r
+ UINT32 DeviceSpecificConfigurationOffset;\r
+} VIRTIO_PCI_DEVICE;\r
+\r
+#define VIRTIO_PCI_DEVICE_FROM_VIRTIO_DEVICE(Device) \\r
+ CR (Device, VIRTIO_PCI_DEVICE, VirtioDevice, VIRTIO_PCI_DEVICE_SIGNATURE)\r
+\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciIoRead (\r
+ IN VIRTIO_PCI_DEVICE *Dev,\r
+ IN UINTN FieldOffset,\r
+ IN UINTN FieldSize,\r
+ IN UINTN BufferSize,\r
+ OUT VOID *Buffer\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciIoWrite (\r
+ IN VIRTIO_PCI_DEVICE *Dev,\r
+ IN UINTN FieldOffset,\r
+ IN UINTN FieldSize,\r
+ IN UINT64 Value\r
+ );\r
+\r
+/********************************************\r
+ * PCI Functions for VIRTIO_DEVICE_PROTOCOL\r
+ *******************************************/\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciDeviceRead (\r
+ IN VIRTIO_DEVICE_PROTOCOL *This,\r
+ IN UINTN FieldOffset,\r
+ IN UINTN FieldSize,\r
+ IN UINTN BufferSize,\r
+ OUT VOID *Buffer\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciDeviceWrite (\r
+ IN VIRTIO_DEVICE_PROTOCOL *This,\r
+ IN UINTN FieldOffset,\r
+ IN UINTN FieldSize,\r
+ IN UINT64 Value\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciGetDeviceFeatures (\r
+ IN VIRTIO_DEVICE_PROTOCOL *This,\r
+ OUT UINT32 *DeviceFeatures\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciGetQueueAddress (\r
+ IN VIRTIO_DEVICE_PROTOCOL *This,\r
+ OUT UINT32 *QueueAddress\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciGetQueueSize (\r
+ IN VIRTIO_DEVICE_PROTOCOL *This,\r
+ OUT UINT16 *QueueNumMax\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciSetQueueAlignment (\r
+ VIRTIO_DEVICE_PROTOCOL *This,\r
+ UINT32 Alignment\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciSetPageSize (\r
+ VIRTIO_DEVICE_PROTOCOL *This,\r
+ UINT32 PageSize\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciGetDeviceStatus (\r
+ IN VIRTIO_DEVICE_PROTOCOL *This,\r
+ OUT UINT8 *DeviceStatus\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciSetGuestFeatures (\r
+ IN VIRTIO_DEVICE_PROTOCOL *This,\r
+ IN UINT32 Features\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciSetQueueAddress (\r
+ VIRTIO_DEVICE_PROTOCOL *This,\r
+ UINT32 Address\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciSetQueueSel (\r
+ VIRTIO_DEVICE_PROTOCOL *This,\r
+ UINT16 Sel\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciSetQueueNotify (\r
+ VIRTIO_DEVICE_PROTOCOL *This,\r
+ UINT16 Index\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciSetQueueSize (\r
+ VIRTIO_DEVICE_PROTOCOL *This,\r
+ UINT16 Size\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioPciSetDeviceStatus (\r
+ VIRTIO_DEVICE_PROTOCOL *This,\r
+ UINT8 DeviceStatus\r
+ );\r
+\r
+#endif // _VIRTIO_PCI_DEVICE_DXE_H_\r