3 Internal definitions for the VirtIo MMIO Device driver
5 Copyright (C) 2013, ARM Ltd
6 Copyright (C) 2017, AMD Inc. All rights reserved.<BR>
8 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #ifndef _VIRTIO_MMIO_DEVICE_INTERNAL_H_
13 #define _VIRTIO_MMIO_DEVICE_INTERNAL_H_
15 #include <Protocol/VirtioDevice.h>
17 #include <IndustryStandard/Virtio.h>
19 #include <Library/DebugLib.h>
20 #include <Library/IoLib.h>
21 #include <Library/UefiLib.h>
22 #include <Library/VirtioMmioDeviceLib.h>
23 #include <Library/MemoryAllocationLib.h>
25 #define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O')
29 VIRTIO_DEVICE_PROTOCOL VirtioDevice
;
30 PHYSICAL_ADDRESS BaseAddress
;
33 #define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \
34 CR (Device, VIRTIO_MMIO_DEVICE, VirtioDevice, VIRTIO_MMIO_DEVICE_SIGNATURE)
36 #define VIRTIO_CFG_WRITE(Device, Offset, Val) \
37 (MmioWrite32 (Device->BaseAddress + (Offset), Val))
38 #define VIRTIO_CFG_READ(Device, Offset) \
39 (MmioRead32 (Device->BaseAddress + (Offset)))
43 VirtioMmioDeviceRead (
44 IN VIRTIO_DEVICE_PROTOCOL
*This
,
53 VirtioMmioDeviceWrite (
54 IN VIRTIO_DEVICE_PROTOCOL
*This
,
62 VirtioMmioGetDeviceFeatures (
63 IN VIRTIO_DEVICE_PROTOCOL
*This
,
64 OUT UINT64
*DeviceFeatures
69 VirtioMmioGetQueueSize (
70 IN VIRTIO_DEVICE_PROTOCOL
*This
,
71 OUT UINT16
*QueueNumMax
76 VirtioMmioGetDeviceStatus (
77 IN VIRTIO_DEVICE_PROTOCOL
*This
,
78 OUT UINT8
*DeviceStatus
83 VirtioMmioSetQueueSize (
84 IN VIRTIO_DEVICE_PROTOCOL
*This
,
90 VirtioMmioSetDeviceStatus (
91 IN VIRTIO_DEVICE_PROTOCOL
*This
,
97 VirtioMmioSetQueueNotify (
98 IN VIRTIO_DEVICE_PROTOCOL
*This
,
104 VirtioMmioSetQueueSel (
105 IN VIRTIO_DEVICE_PROTOCOL
*This
,
110 VirtioMmioSetQueueAddress (
111 IN VIRTIO_DEVICE_PROTOCOL
*This
,
113 IN UINT64 RingBaseShift
118 VirtioMmioSetQueueAlignment (
119 IN VIRTIO_DEVICE_PROTOCOL
*This
,
125 VirtioMmioSetPageSize (
126 IN VIRTIO_DEVICE_PROTOCOL
*This
,
132 VirtioMmioSetGuestFeatures (
133 IN VIRTIO_DEVICE_PROTOCOL
*This
,
139 VirtioMmioAllocateSharedPages (
140 IN VIRTIO_DEVICE_PROTOCOL
*This
,
142 OUT VOID
**HostAddress
147 VirtioMmioFreeSharedPages (
148 IN VIRTIO_DEVICE_PROTOCOL
*This
,
155 VirtioMmioMapSharedBuffer (
156 IN VIRTIO_DEVICE_PROTOCOL
*This
,
157 IN VIRTIO_MAP_OPERATION Operation
,
158 IN VOID
*HostAddress
,
159 IN OUT UINTN
*NumberOfBytes
,
160 OUT EFI_PHYSICAL_ADDRESS
*DeviceAddress
,
166 VirtioMmioUnmapSharedBuffer (
167 IN VIRTIO_DEVICE_PROTOCOL
*This
,
171 #endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_