X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=OvmfPkg%2FLibrary%2FVirtioMmioDeviceLib%2FVirtioMmioDevice.h;h=785876c75f82bf19455b78d5ff3b77f02aef71a6;hp=3e4e5606ccad09dd8bf7cb8d476c0a7e2e46cb2f;hb=HEAD;hpb=6fb4e772a0ad14399532201d1b9ecb811c9c7262 diff --git a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h index 3e4e5606cc..7298cf5821 100644 --- a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h +++ b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h @@ -3,14 +3,9 @@ Internal definitions for the VirtIo MMIO Device driver Copyright (C) 2013, ARM Ltd + Copyright (C) 2017, AMD Inc. All rights reserved.
- This program and the accompanying materials are licensed and made available - under the terms and conditions of the BSD License which accompanies this - distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT - WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -25,13 +20,18 @@ #include #include #include +#include -#define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O') +#define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O') +#define VIRTIO_MMIO_DEVICE_VERSION_0_95 1 +#define VIRTIO_MMIO_DEVICE_VERSION_1_00 2 typedef struct { - UINT32 Signature; - VIRTIO_DEVICE_PROTOCOL VirtioDevice; - PHYSICAL_ADDRESS BaseAddress; + UINT32 Signature; + UINT32 Version; + UINT16 QueueNum; + VIRTIO_DEVICE_PROTOCOL VirtioDevice; + PHYSICAL_ADDRESS BaseAddress; } VIRTIO_MMIO_DEVICE; #define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \ @@ -45,34 +45,27 @@ typedef struct { EFI_STATUS EFIAPI VirtioMmioDeviceRead ( - IN VIRTIO_DEVICE_PROTOCOL *This, - IN UINTN FieldOFfset, - IN UINTN FieldSize, - IN UINTN BufferSize, - OUT VOID* Buffer + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN FieldOFfset, + IN UINTN FieldSize, + IN UINTN BufferSize, + OUT VOID *Buffer ); EFI_STATUS EFIAPI VirtioMmioDeviceWrite ( - IN VIRTIO_DEVICE_PROTOCOL *This, - IN UINTN FieldOffset, - IN UINTN FieldSize, - IN UINT64 Value + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN FieldOffset, + IN UINTN FieldSize, + IN UINT64 Value ); EFI_STATUS EFIAPI VirtioMmioGetDeviceFeatures ( - IN VIRTIO_DEVICE_PROTOCOL *This, - OUT UINT32 *DeviceFeatures - ); - -EFI_STATUS -EFIAPI -VirtioMmioGetQueueAddress ( - IN VIRTIO_DEVICE_PROTOCOL *This, - OUT UINT32 *QueueAddress + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT64 *DeviceFeatures ); EFI_STATUS @@ -92,56 +85,92 @@ VirtioMmioGetDeviceStatus ( EFI_STATUS EFIAPI VirtioMmioSetQueueSize ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT16 QueueSize + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 QueueSize ); EFI_STATUS EFIAPI VirtioMmioSetDeviceStatus ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT8 DeviceStatus + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT8 DeviceStatus ); EFI_STATUS EFIAPI VirtioMmioSetQueueNotify ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT16 QueueNotify + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 QueueNotify ); EFI_STATUS EFIAPI VirtioMmioSetQueueSel ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT16 Sel + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Sel ); EFI_STATUS +EFIAPI VirtioMmioSetQueueAddress ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT32 Address + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VRING *Ring, + IN UINT64 RingBaseShift ); EFI_STATUS EFIAPI VirtioMmioSetQueueAlignment ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT32 Alignment + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT32 Alignment ); EFI_STATUS EFIAPI VirtioMmioSetPageSize ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT32 PageSize + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT32 PageSize ); EFI_STATUS EFIAPI VirtioMmioSetGuestFeatures ( - VIRTIO_DEVICE_PROTOCOL *This, - UINT32 Features + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT64 Features + ); + +EFI_STATUS +EFIAPI +VirtioMmioAllocateSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN NumPages, + OUT VOID **HostAddress + ); + +VOID +EFIAPI +VirtioMmioFreeSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN NumPages, + IN VOID *HostAddress + ); + +EFI_STATUS +EFIAPI +VirtioMmioMapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VIRTIO_MAP_OPERATION Operation, + IN VOID *HostAddress, + IN OUT UINTN *NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ); + +EFI_STATUS +EFIAPI +VirtioMmioUnmapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VOID *Mapping ); #endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_