diff options
Diffstat (limited to 'OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h')
-rw-r--r-- | OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h new file mode 100644 index 000000000..188d873ae --- /dev/null +++ b/OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h @@ -0,0 +1,147 @@ +/** @file + + Internal definitions for the VirtIo MMIO Device driver + + Copyright (C) 2013, ARM Ltd + + 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. + +**/ + +#ifndef _VIRTIO_MMIO_DEVICE_INTERNAL_H_ +#define _VIRTIO_MMIO_DEVICE_INTERNAL_H_ + +#include <Protocol/VirtioDevice.h> + +#include <IndustryStandard/Virtio.h> + +#include <Library/DebugLib.h> +#include <Library/IoLib.h> +#include <Library/UefiLib.h> +#include <Library/VirtioMmioDeviceLib.h> + +#define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O') + +typedef struct { + UINT32 Signature; + VIRTIO_DEVICE_PROTOCOL VirtioDevice; + PHYSICAL_ADDRESS BaseAddress; +} VIRTIO_MMIO_DEVICE; + +#define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \ + CR (Device, VIRTIO_MMIO_DEVICE, VirtioDevice, VIRTIO_MMIO_DEVICE_SIGNATURE) + +#define VIRTIO_CFG_WRITE(Device, Offset, Val) \ + (MmioWrite32 (Device->BaseAddress + (Offset), Val)) +#define VIRTIO_CFG_READ(Device, Offset) \ + (MmioRead32 (Device->BaseAddress + (Offset))) + +EFI_STATUS +EFIAPI +VirtioMmioDeviceRead ( + 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 + ); + +EFI_STATUS +EFIAPI +VirtioMmioGetDeviceFeatures ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT32 *DeviceFeatures + ); + +EFI_STATUS +EFIAPI +VirtioMmioGetQueueAddress ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT32 *QueueAddress + ); + +EFI_STATUS +EFIAPI +VirtioMmioGetQueueSize ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT16 *QueueNumMax + ); + +EFI_STATUS +EFIAPI +VirtioMmioGetDeviceStatus ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT8 *DeviceStatus + ); + +EFI_STATUS +EFIAPI +VirtioMmioSetQueueSize ( + VIRTIO_DEVICE_PROTOCOL *This, + UINT16 QueueSize + ); + +EFI_STATUS +EFIAPI +VirtioMmioSetDeviceStatus ( + VIRTIO_DEVICE_PROTOCOL *This, + UINT8 DeviceStatus + ); + +EFI_STATUS +EFIAPI +VirtioMmioSetQueueNotify ( + VIRTIO_DEVICE_PROTOCOL *This, + UINT16 QueueNotify + ); + +EFI_STATUS +EFIAPI +VirtioMmioSetQueueSel ( + VIRTIO_DEVICE_PROTOCOL *This, + UINT16 Sel + ); + +EFI_STATUS +VirtioMmioSetQueueAddress ( + VIRTIO_DEVICE_PROTOCOL *This, + UINT32 Address + ); + +EFI_STATUS +EFIAPI +VirtioMmioSetQueueAlignment ( + VIRTIO_DEVICE_PROTOCOL *This, + UINT32 Alignment + ); + +EFI_STATUS +EFIAPI +VirtioMmioSetPageSize ( + VIRTIO_DEVICE_PROTOCOL *This, + UINT32 PageSize + ); + +EFI_STATUS +EFIAPI +VirtioMmioSetGuestFeatures ( + VIRTIO_DEVICE_PROTOCOL *This, + UINT32 Features + ); + +#endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_ |