]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / OvmfPkg / Library / VirtioMmioDeviceLib / VirtioMmioDevice.h
index 3e4e5606ccad09dd8bf7cb8d476c0a7e2e46cb2f..7298cf582152b09e95677cab89ece99b6fe43008 100644 (file)
@@ -3,14 +3,9 @@
   Internal definitions for the VirtIo MMIO Device driver\r
 \r
   Copyright (C) 2013, ARM Ltd\r
+  Copyright (C) 2017, AMD Inc. All rights reserved.<BR>\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
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include <Library/IoLib.h>\r
 #include <Library/UefiLib.h>\r
 #include <Library/VirtioMmioDeviceLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
 \r
-#define VIRTIO_MMIO_DEVICE_SIGNATURE  SIGNATURE_32 ('V', 'M', 'I', 'O')\r
+#define VIRTIO_MMIO_DEVICE_SIGNATURE     SIGNATURE_32 ('V', 'M', 'I', 'O')\r
+#define VIRTIO_MMIO_DEVICE_VERSION_0_95  1\r
+#define VIRTIO_MMIO_DEVICE_VERSION_1_00  2\r
 \r
 typedef struct {\r
-  UINT32                 Signature;\r
-  VIRTIO_DEVICE_PROTOCOL VirtioDevice;\r
-  PHYSICAL_ADDRESS       BaseAddress;\r
+  UINT32                    Signature;\r
+  UINT32                    Version;\r
+  UINT16                    QueueNum;\r
+  VIRTIO_DEVICE_PROTOCOL    VirtioDevice;\r
+  PHYSICAL_ADDRESS          BaseAddress;\r
 } VIRTIO_MMIO_DEVICE;\r
 \r
 #define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \\r
@@ -45,34 +45,27 @@ typedef struct {
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioDeviceRead (\r
-  IN  VIRTIO_DEVICE_PROTOCOL    *This,\r
-  IN  UINTN                     FieldOFfset,\r
-  IN  UINTN                     FieldSize,\r
-  IN  UINTN                     BufferSize,\r
-  OUT VOID*                     Buffer\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
 VirtioMmioDeviceWrite (\r
-  IN  VIRTIO_DEVICE_PROTOCOL    *This,\r
-  IN  UINTN                     FieldOffset,\r
-  IN  UINTN                     FieldSize,\r
-  IN  UINT64                    Value\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
 VirtioMmioGetDeviceFeatures (\r
-  IN VIRTIO_DEVICE_PROTOCOL *This,\r
-  OUT UINT32                *DeviceFeatures\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-VirtioMmioGetQueueAddress (\r
-  IN  VIRTIO_DEVICE_PROTOCOL *This,\r
-  OUT UINT32                 *QueueAddress\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  OUT UINT64                 *DeviceFeatures\r
   );\r
 \r
 EFI_STATUS\r
@@ -92,56 +85,92 @@ VirtioMmioGetDeviceStatus (
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetQueueSize (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT16                  QueueSize\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN UINT16                  QueueSize\r
   );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetDeviceStatus (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT8                   DeviceStatus\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN UINT8                   DeviceStatus\r
   );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetQueueNotify (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT16                  QueueNotify\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN UINT16                  QueueNotify\r
   );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetQueueSel (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT16                  Sel\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN UINT16                  Sel\r
   );\r
 \r
 EFI_STATUS\r
+EFIAPI\r
 VirtioMmioSetQueueAddress (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT32                  Address\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN VRING                   *Ring,\r
+  IN UINT64                  RingBaseShift\r
   );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetQueueAlignment (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT32                  Alignment\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN UINT32                  Alignment\r
   );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetPageSize (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT32                  PageSize\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN UINT32                  PageSize\r
   );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetGuestFeatures (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT32                  Features\r
+  IN VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN UINT64                  Features\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioMmioAllocateSharedPages (\r
+  IN  VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN  UINTN                   NumPages,\r
+  OUT VOID                    **HostAddress\r
+  );\r
+\r
+VOID\r
+EFIAPI\r
+VirtioMmioFreeSharedPages (\r
+  IN  VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN  UINTN                   NumPages,\r
+  IN  VOID                    *HostAddress\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioMmioMapSharedBuffer (\r
+  IN      VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN      VIRTIO_MAP_OPERATION    Operation,\r
+  IN      VOID                    *HostAddress,\r
+  IN OUT  UINTN                   *NumberOfBytes,\r
+  OUT     EFI_PHYSICAL_ADDRESS    *DeviceAddress,\r
+  OUT     VOID                    **Mapping\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioMmioUnmapSharedBuffer (\r
+  IN  VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN  VOID                    *Mapping\r
   );\r
 \r
 #endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_\r