]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / OvmfPkg / Library / VirtioMmioDeviceLib / VirtioMmioDevice.h
CommitLineData
6fb4e772
OM
1/** @file\r
2\r
3 Internal definitions for the VirtIo MMIO Device driver\r
4\r
5 Copyright (C) 2013, ARM Ltd\r
084cfc1a 6 Copyright (C) 2017, AMD Inc. All rights reserved.<BR>\r
6fb4e772 7\r
b26f0cf9 8 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6fb4e772
OM
9\r
10**/\r
11\r
12#ifndef _VIRTIO_MMIO_DEVICE_INTERNAL_H_\r
13#define _VIRTIO_MMIO_DEVICE_INTERNAL_H_\r
14\r
15#include <Protocol/VirtioDevice.h>\r
16\r
17#include <IndustryStandard/Virtio.h>\r
18\r
19#include <Library/DebugLib.h>\r
20#include <Library/IoLib.h>\r
21#include <Library/UefiLib.h>\r
22#include <Library/VirtioMmioDeviceLib.h>\r
084cfc1a 23#include <Library/MemoryAllocationLib.h>\r
6fb4e772 24\r
ac0a286f 25#define VIRTIO_MMIO_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'M', 'I', 'O')\r
08293e43
GH
26#define VIRTIO_MMIO_DEVICE_VERSION_0_95 1\r
27#define VIRTIO_MMIO_DEVICE_VERSION_1_00 2\r
28\r
6fb4e772 29typedef struct {\r
ac0a286f
MK
30 UINT32 Signature;\r
31 UINT32 Version;\r
32 UINT16 QueueNum;\r
33 VIRTIO_DEVICE_PROTOCOL VirtioDevice;\r
34 PHYSICAL_ADDRESS BaseAddress;\r
6fb4e772
OM
35} VIRTIO_MMIO_DEVICE;\r
36\r
37#define VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE(Device) \\r
38 CR (Device, VIRTIO_MMIO_DEVICE, VirtioDevice, VIRTIO_MMIO_DEVICE_SIGNATURE)\r
39\r
40#define VIRTIO_CFG_WRITE(Device, Offset, Val) \\r
41 (MmioWrite32 (Device->BaseAddress + (Offset), Val))\r
42#define VIRTIO_CFG_READ(Device, Offset) \\r
43 (MmioRead32 (Device->BaseAddress + (Offset)))\r
44\r
45EFI_STATUS\r
46EFIAPI\r
47VirtioMmioDeviceRead (\r
ac0a286f
MK
48 IN VIRTIO_DEVICE_PROTOCOL *This,\r
49 IN UINTN FieldOFfset,\r
50 IN UINTN FieldSize,\r
51 IN UINTN BufferSize,\r
52 OUT VOID *Buffer\r
6fb4e772
OM
53 );\r
54\r
55EFI_STATUS\r
56EFIAPI\r
57VirtioMmioDeviceWrite (\r
ac0a286f
MK
58 IN VIRTIO_DEVICE_PROTOCOL *This,\r
59 IN UINTN FieldOffset,\r
60 IN UINTN FieldSize,\r
61 IN UINT64 Value\r
6fb4e772
OM
62 );\r
63\r
64EFI_STATUS\r
65EFIAPI\r
66VirtioMmioGetDeviceFeatures (\r
ac0a286f
MK
67 IN VIRTIO_DEVICE_PROTOCOL *This,\r
68 OUT UINT64 *DeviceFeatures\r
6fb4e772
OM
69 );\r
70\r
6fb4e772
OM
71EFI_STATUS\r
72EFIAPI\r
73VirtioMmioGetQueueSize (\r
74 IN VIRTIO_DEVICE_PROTOCOL *This,\r
75 OUT UINT16 *QueueNumMax\r
76 );\r
77\r
78EFI_STATUS\r
79EFIAPI\r
80VirtioMmioGetDeviceStatus (\r
81 IN VIRTIO_DEVICE_PROTOCOL *This,\r
82 OUT UINT8 *DeviceStatus\r
83 );\r
84\r
85EFI_STATUS\r
86EFIAPI\r
87VirtioMmioSetQueueSize (\r
ac0a286f 88 IN VIRTIO_DEVICE_PROTOCOL *This,\r
22701a3d 89 IN UINT16 QueueSize\r
6fb4e772
OM
90 );\r
91\r
92EFI_STATUS\r
93EFIAPI\r
94VirtioMmioSetDeviceStatus (\r
ac0a286f 95 IN VIRTIO_DEVICE_PROTOCOL *This,\r
22701a3d 96 IN UINT8 DeviceStatus\r
6fb4e772
OM
97 );\r
98\r
99EFI_STATUS\r
100EFIAPI\r
101VirtioMmioSetQueueNotify (\r
ac0a286f 102 IN VIRTIO_DEVICE_PROTOCOL *This,\r
22701a3d 103 IN UINT16 QueueNotify\r
6fb4e772
OM
104 );\r
105\r
106EFI_STATUS\r
107EFIAPI\r
108VirtioMmioSetQueueSel (\r
ac0a286f 109 IN VIRTIO_DEVICE_PROTOCOL *This,\r
22701a3d 110 IN UINT16 Sel\r
6fb4e772
OM
111 );\r
112\r
113EFI_STATUS\r
75e9154f 114EFIAPI\r
6fb4e772 115VirtioMmioSetQueueAddress (\r
07af4eee 116 IN VIRTIO_DEVICE_PROTOCOL *This,\r
53a4c604
BS
117 IN VRING *Ring,\r
118 IN UINT64 RingBaseShift\r
6fb4e772
OM
119 );\r
120\r
121EFI_STATUS\r
122EFIAPI\r
123VirtioMmioSetQueueAlignment (\r
ac0a286f 124 IN VIRTIO_DEVICE_PROTOCOL *This,\r
22701a3d 125 IN UINT32 Alignment\r
6fb4e772
OM
126 );\r
127\r
128EFI_STATUS\r
129EFIAPI\r
130VirtioMmioSetPageSize (\r
ac0a286f 131 IN VIRTIO_DEVICE_PROTOCOL *This,\r
22701a3d 132 IN UINT32 PageSize\r
6fb4e772
OM
133 );\r
134\r
135EFI_STATUS\r
136EFIAPI\r
137VirtioMmioSetGuestFeatures (\r
ac0a286f 138 IN VIRTIO_DEVICE_PROTOCOL *This,\r
22701a3d 139 IN UINT64 Features\r
6fb4e772
OM
140 );\r
141\r
084cfc1a
BS
142EFI_STATUS\r
143EFIAPI\r
144VirtioMmioAllocateSharedPages (\r
ac0a286f
MK
145 IN VIRTIO_DEVICE_PROTOCOL *This,\r
146 IN UINTN NumPages,\r
147 OUT VOID **HostAddress\r
084cfc1a
BS
148 );\r
149\r
150VOID\r
151EFIAPI\r
152VirtioMmioFreeSharedPages (\r
ac0a286f
MK
153 IN VIRTIO_DEVICE_PROTOCOL *This,\r
154 IN UINTN NumPages,\r
155 IN VOID *HostAddress\r
084cfc1a
BS
156 );\r
157\r
158EFI_STATUS\r
159EFIAPI\r
160VirtioMmioMapSharedBuffer (\r
ac0a286f
MK
161 IN VIRTIO_DEVICE_PROTOCOL *This,\r
162 IN VIRTIO_MAP_OPERATION Operation,\r
163 IN VOID *HostAddress,\r
164 IN OUT UINTN *NumberOfBytes,\r
165 OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,\r
166 OUT VOID **Mapping\r
084cfc1a
BS
167 );\r
168\r
169EFI_STATUS\r
170EFIAPI\r
171VirtioMmioUnmapSharedBuffer (\r
ac0a286f
MK
172 IN VIRTIO_DEVICE_PROTOCOL *This,\r
173 IN VOID *Mapping\r
084cfc1a
BS
174 );\r
175\r
6fb4e772 176#endif // _VIRTIO_MMIO_DEVICE_INTERNAL_H_\r